require db4-devel
[platform/upstream/libical.git] / CMakeLists.txt
1 # This is the top-level CMakeLists.txt file for the libical project.
2 #
3 # Pass the following variables to cmake to control the build:
4 # (See doc/UsingLibical.txt for more information)
5 #
6 # -DICAL_ERRORS_ARE_FATAL=[true|false]
7 #  Set to make icalerror_* calls abort instead of internally signaling an error
8 #  Default=false
9 #
10 # -DNO_WARN_DEPRECATED=[true|false]
11 #  Set if you DO NOT WANT to see deprecated messages.
12 #  Default=true
13 #
14 # -DICAL_ALLOW_EMPTY_PROPERTIES=[true|false]
15 #  Set to prevent empty properties from being replaced with X-LIC-ERROR properties.
16 #  Default=false
17 #
18 # -DICAL_UNIX_NEWLINE=[true|false]
19 #  Set to terminate each line with the RFC2445 specified line terminator "\\n";
20 #  else it will terminate lines with "\\n\\r"
21 #  Default=true
22 #
23 # -DUSE_BUILTIN_TZDATA=[true|false]
24 #  Set to build using our own timezone data.
25 #  Default=false (use the system timezone data)
26 #
27 # -DSTATIC_LIBRARY=[true|false]
28 #  Set to build static libraries only.
29 #  Default=false (build shared and static libs)
30 #
31 # -DGOBJECT_INTROSPECTION=[true|false]
32 #  Set to build GObject introspection "typelib" files
33 #  Requires GObject Introspection development package v0.6.7 or higher
34 #  Default=false (do not generate the introspection files)
35 #
36 # -DUSE_32BIT_TIME_T=[true|false]
37 #  Set to build using a 32bit time_t (ignored unless building with MSVC on Windows)
38 #  Default=false (use the default size of time_t)
39 #
40
41 project(libical)
42
43 cmake_minimum_required(VERSION 2.4)
44 if(COMMAND cmake_policy)
45   cmake_policy(SET CMP0003 NEW)
46   cmake_policy(SET CMP0005 OLD)
47 endif(COMMAND cmake_policy)
48
49 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
50
51 enable_testing()
52
53 if(WINCE)
54   find_package(Wcecompat REQUIRED)
55   include_directories(${WCECOMPAT_INCLUDE_DIR})
56   set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${WCECOMPAT_INCLUDE_DIR})
57   set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${WCECOMPAT_LIBRARIES})
58 endif(WINCE)
59
60 set(LIBICAL_LIB_MAJOR_VERSION "1")
61 set(LIBICAL_LIB_MINOR_VERSION "0")
62 set(LIBICAL_LIB_PATCH_VERSION "0")
63 set(LIBICAL_LIB_VERSION_STRING
64   "${LIBICAL_LIB_MAJOR_VERSION}.${LIBICAL_LIB_MINOR_VERSION}.${LIBICAL_LIB_PATCH_VERSION}"
65 )
66
67 set(PROJECT_VERSION "${LIBICAL_LIB_MAJOR_VERSION}.${LIBICAL_LIB_MINOR_VERSION}")
68 set(PROJECT_URL "http://freeassociation.sf.net/")
69
70 if(STATIC_LIBRARY)
71   set(LIBICAL_STATIC 1)
72   add_definitions(-DLIBICAL_STATIC)
73   set(LIBRARY_TYPE STATIC)
74 else(STATIC_LIBRARY)
75   set(LIBRARY_TYPE SHARED)
76 endif(STATIC_LIBRARY)
77
78 # must have Perl to create the derived stuff
79 find_package(Perl REQUIRED)
80
81 # MSVC specific definitions
82 if(WIN32)
83   if(MSVC)
84     add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DYY_NO_UNISTD_H)
85     if(USE_32BIT_TIME_T)
86       add_definitions(-D_USE_32BIT_TIME_T)
87     endif(USE_32BIT_TIME_T)
88   endif(MSVC)
89   add_definitions(-DBIG_ENDIAN=0 -DLITTLE_ENDIAN=1 -DBYTE_ORDER=BIG_ENDIAN)
90 endif(WIN32)
91
92 set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)")
93 set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE STRING "Library directory name" FORCE)
94 set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE STRING "Include directory name" FORCE)
95 set(SHARE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share" CACHE STRING "Share directory name" FORCE)
96
97 # set the output paths
98 set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
99 if(WIN32)
100   set(LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH})
101   set(LIB_INSTALL_DIR lib)
102   set(BIN_INSTALL_DIR bin)
103 else(WIN32)
104   set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib)
105 endif(WIN32)
106
107 if(APPLE)
108   set(CMAKE_INSTALL_NAME_DIR ${LIB_DESTINATION})
109 endif(APPLE)
110
111 if(NOT DEFINED ICAL_ERRORS_ARE_FATAL)
112   set(ICAL_ERRORS_ARE_FATAL 0)
113 else(NOT DEFINED ICAL_ERRORS_ARE_FATAL)
114   if(ICAL_ERRORS_ARE_FATAL)
115     set(ICAL_ERRORS_ARE_FATAL 1)
116   else(ICAL_ERRORS_ARE_FATAL)
117     set(ICAL_ERRORS_ARE_FATAL 0)
118   endif(ICAL_ERRORS_ARE_FATAL)
119 endif(NOT DEFINED ICAL_ERRORS_ARE_FATAL)
120
121 if(NOT DEFINED ICAL_UNIX_NEWLINE)
122   set(ICAL_UNIX_NEWLINE 1)
123 else(NOT DEFINED ICAL_UNIX_NEWLINE)
124   if(ICAL_UNIX_NEWLINE)
125     set(ICAL_UNIX_NEWLINE 1)
126   else(ICAL_UNIX_NEWLINE)
127     set(ICAL_UNIX_NEWLINE 0)
128   endif(ICAL_UNIX_NEWLINE)
129 endif(NOT DEFINED ICAL_UNIX_NEWLINE)
130
131 if(NOT DEFINED ICAL_ALLOW_EMPTY_PROPERTIES)
132   set(ICAL_ALLOW_EMPTY_PROPERTIES 0)
133 else(NOT DEFINED ICAL_ALLOW_EMPTY_PROPERTIES)
134   if(ICAL_ALLOW_EMPTY_PROPERTIES)
135     set(ICAL_ALLOW_EMPTY_PROPERTIES 1)
136   else(ICAL_ALLOW_EMPTY_PROPERTIES)
137     set(ICAL_ALLOW_EMPTY_PROPERTIES 0)
138   endif(ICAL_ALLOW_EMPTY_PROPERTIES)
139 endif(NOT DEFINED ICAL_ALLOW_EMPTY_PROPERTIES)
140
141 if(NOT DEFINED NO_WARN_DEPRECATED)
142   set(NO_WARN_DEPRECATED 1)
143 else(NOT DEFINED NO_WARN_DEPRECATED)
144   if(NO_WARN_DEPRECATED)
145     set(NO_WARN_DEPRECATED 1)
146   else(NO_WARN_DEPRECATED)
147     set(NO_WARN_DEPRECATED 0)
148   endif(NO_WARN_DEPRECATED)
149 endif(NOT DEFINED NO_WARN_DEPRECATED)
150
151 if(NOT DEFINED USE_BUILTIN_TZDATA)
152   set(USE_BUILTIN_TZDATA 0)
153 else(NOT DEFINED USE_BUILTIN_TZDATA)
154   if(USE_BUILTIN_TZDATA)
155     set(USE_BUILTIN_TZDATA 1)
156   else(USE_BUILTIN_TZDATA)
157     set(USE_BUILTIN_TZDATA 0)
158   endif(USE_BUILTIN_TZDATA)
159 endif(NOT DEFINED USE_BUILTIN_TZDATA)
160
161 include(ConfigureChecks.cmake)
162 add_definitions(-DHAVE_CONFIG_H)
163 configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
164
165 set(INSTALL_TARGETS_DEFAULT_ARGS
166   RUNTIME DESTINATION ${BIN_INSTALL_DIR}
167   LIBRARY DESTINATION ${LIB_INSTALL_DIR}
168   ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
169 )
170
171 if(GOBJECT_INTROSPECTION)
172   set(MIN_GOBJECT_INTROSPECTION "0.6.7")
173   find_package(GObjectIntrospection ${MIN_GOBJECT_INTROSPECTION})
174   if(INTROSPECTION_FOUND)
175     set(HAVE_INTROSPECTION TRUE)
176   else(INTROSPECTION_FOUND)
177     message(FATAL_ERROR "You requested to build with GObject Introspection but the necessary development package is missing or too low a version (version ${MIN_GOBJECT_INTROSPECTION} or higher is required)")
178   endif(INTROSPECTION_FOUND)
179 endif(GOBJECT_INTROSPECTION)
180
181 ################# build subdirs ########################
182
183 add_subdirectory(design-data)
184 add_subdirectory(doc)
185 add_subdirectory(scripts)
186 add_subdirectory(test-data)
187 add_subdirectory(src)
188 add_subdirectory(examples)
189 if(USE_BUILTIN_TZDATA)
190   # use our zoneinfo if cmake is passed -DUSE_BUILTIN_TZDATA
191   add_subdirectory(zoneinfo)
192 endif(USE_BUILTIN_TZDATA)
193
194 ########### create and install pkg-config file #########
195
196 set(VERSION "${PROJECT_VERSION}")
197 set(prefix "${CMAKE_INSTALL_PREFIX}")
198 set(exec_prefix "\${prefix}")
199 set(libdir "\${exec_prefix}/lib")
200 set(includedir "\${prefix}/include")
201 set(PTHREAD_LIBS "${CMAKE_THREAD_LIBS_INIT}")
202
203 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libical.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libical.pc @ONLY)
204 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libical.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)