Changed tab indentation to whitespace indentation
[opensync.git] / CMakeLists.txt
blob06e590dcc54a17af1bc99bd6ef34f00c2101afe3
1 PROJECT( libopensync C )
3 SET( OPENSYNC_VERSION_MAJOR "0" )
4 SET( OPENSYNC_VERSION_MINOR "39" )
5 SET( OPENSYNC_SVN_REVISION "$Rev$")
6 STRING( REGEX REPLACE "Rev: " "" OPENSYNC_SVN_REVISION ${OPENSYNC_SVN_REVISION} )
7 STRING( REGEX REPLACE "^\\$" "" OPENSYNC_SVN_REVISION ${OPENSYNC_SVN_REVISION} )
8 STRING( REGEX REPLACE " \\$$" "" OPENSYNC_SVN_REVISION ${OPENSYNC_SVN_REVISION} )
11 # The most recent interface number that this library implements.
12 #UPDATE: If any interface have been added, removed or changed since
13 #UPDATE: the last update increment CURRENT.
14 SET( OPENSYNC_LIBVERSION_CURRENT 1 )
16 # The implementation number of the CURRENT interface.
17 # UPDATE: Increment only if the library code has changed at all, since
18 # UPDATE: last release.
19 # UPDATE: Set REVISION to 0 if any interface have been added, removed or
20 # UPDATE: changed since the last update.
21 SET( OPENSYNC_LIBVERSION_REVISION 0 )
23 # The difference between the newest and the oldest interfaces.
24 # UPDATE: If any interface have been added since the last public
25 # UPDATE: release, then increment.
26 # UPDATE: If any interface have been removed since the last release
27 # UPDATE: reset to 0.
28 SET( OPENSYNC_LIBVERSION_AGE 0 )
31 # The range of implemention CURRENT - AGE is the SOVERSION
32 MATH( EXPR OPENSYNC_LIBVERSION_SOVERSION "${OPENSYNC_LIBVERSION_CURRENT} - ${OPENSYNC_LIBVERSION_AGE}" )
34 SET( OPENSYNC_LIBVERSION_VERSION "${OPENSYNC_LIBVERSION_SOVERSION}.${OPENSYNC_LIBVERSION_REVISION}.${OPENSYNC_LIBVERSION_AGE}" )
36 IF ( $ENV{OPENSYNC_RELEASE} )
37         SET( OPENSYNC_VERSION "${OPENSYNC_VERSION_MAJOR}.${OPENSYNC_VERSION_MINOR}" )   
38 ELSE ( $ENV{OPENSYNC_RELEASE} )
39         SET( OPENSYNC_VERSION "${OPENSYNC_VERSION_MAJOR}.${OPENSYNC_VERSION_MINOR}-r${OPENSYNC_SVN_REVISION}" ) 
40 ENDIF ( $ENV{OPENSYNC_RELEASE} )
42 SET( OPENSYNC_PLUGINVERSION ${OPENSYNC_LIBVERSION_SOVERSION} )
44 ################################################        
46 SET( CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_SOURCE_DIR}/cmake/modules )
48 CMAKE_MINIMUM_REQUIRED( VERSION 2.4.4 )
50 IF(COMMAND cmake_policy)
51   cmake_policy(SET CMP0003 NEW)
52 ENDIF(COMMAND cmake_policy)
54 INCLUDE( Documentation )
55 INCLUDE( OpenSyncDefaults )
56 INCLUDE( OpenSyncPackaging )
58 INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} "${CMAKE_CURRENT_SOURCE_DIR}/opensync" ${CMAKE_CURRENT_SOURCE_DIR} )
60 ###############################################
62 FIND_PACKAGE( GLIB2 REQUIRED )
63 FIND_PACKAGE( GTHREAD2 REQUIRED )
64 FIND_PACKAGE( GMODULE2 REQUIRED )
65 FIND_PACKAGE( Sqlite3 REQUIRED )
66 FIND_PACKAGE( LibXml2 REQUIRED )
67 FIND_PACKAGE( LibXslt REQUIRED )
68 FIND_PACKAGE( LibExslt REQUIRED )
69 FIND_PACKAGE( SWIG )    
70 FIND_PACKAGE( PythonLibs )
71 FIND_PACKAGE( Check )
73 # test configuration
75 OPTION( OPENSYNC_UNITTESTS "enable testing" OFF )
76 IF ( CHECK_FOUND )
77         SET( OPENSYNC_UNITTESTS ON )
78 ELSE ( CHECK_FOUND )
79         SET( OPENSYNC_UNITTESTS OFF )
80 ENDIF ( CHECK_FOUND )
82 # sub directories
84 ADD_SUBDIRECTORY( opensync )
85 ADD_SUBDIRECTORY( formats )
86 ADD_SUBDIRECTORY( tools )
87 ADD_SUBDIRECTORY( misc )
88 ADD_SUBDIRECTORY( cmake )
90 #ADD_SUBDIRECTORY( docs/example-plugin/src/ ) 
92 OPTION( ENABLE_WRAPPER "enable wrapper" OFF )
93 IF ( SWIG_FOUND )
94         ADD_SUBDIRECTORY( wrapper )
95         SET( ENABLE_WRAPPER ON )
96 ELSE ( SWIG_FOUND )
97         SET( ENABLE_WRAPPER OFF )
98 ENDIF ( SWIG_FOUND )
100 IF ( OPENSYNC_UNITTESTS )
101         INCLUDE( Testing )
102         ADD_SUBDIRECTORY( tests )
103 ENDIF ( OPENSYNC_UNITTESTS )
105 IF ( CMAKE_SYSTEM_NAME MATCHES SunOS )
106         SET( HAVE_SOLARIS 1 )
107 ENDIF (CMAKE_SYSTEM_NAME MATCHES SunOS )
109 ############################################## 
110 MARK_AS_ADVANCED ( CLEAR BUILD_DOCUMENTATION )
112 IF ( BUILD_DOCUMENTATION )
113         IF ( DOXYGEN_DOT_EXECUTABLE )
114                 SET( HAVE_DOT "YES" )
115         ENDIF ( DOXYGEN_DOT_EXECUTABLE )
116         CONFIGURE_FILE( "Doxyfile.in" "Doxyfile" )
117         CONFIGURE_FILE( "misc/doxygen.css" "misc/doxygen.css" )
118         ADD_CUSTOM_TARGET( DoxygenDoc ${DOXYGEN_EXECUTABLE} )
119 ENDIF ( BUILD_DOCUMENTATION )
121 INCLUDE( CheckFunctionExists )
122 CHECK_FUNCTION_EXISTS( flock HAVE_FLOCK )
124 # add uninstall target
125 CONFIGURE_FILE( "${CMAKE_SOURCE_DIR}/cmake/modules/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY)
127 ADD_CUSTOM_TARGET(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
129 CONFIGURE_FILE( "config.h.cmake" "config.h" )
130 CONFIGURE_FILE( "libopensync.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/libopensync.pc" )
132 ########## INSTALL ##############################
133         
134 INSTALL( FILES "${CMAKE_CURRENT_BINARY_DIR}/libopensync.pc" DESTINATION ${LIBDATA_INSTALL_DIR}/pkgconfig/ )     
136 ### CPack ########################################
138 OPENSYNC_PACKAGE( ${PROJECT_NAME} ${OPENSYNC_VERSION} )
140 ######## configuration status output ###############
141 INCLUDE( ShowStatus )
142 MESSAGE( STATUS "==================================================" )
143 SHOW_STATUS( OPENSYNC_UNITTESTS "enable testing\t\t" )
144 SHOW_STATUS( ENABLE_WRAPPER "build wrapper\t\t" )
145 SHOW_STATUS( BUILD_DOCUMENTATION "build documentation\t\t" )