Imported Upstream version 0.48
[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
32 project(libical)
33
34 cmake_minimum_required(VERSION 2.4)
35 #cannot use the following line with cmake 2.4.x
36 #cmake_policy(VERSION 2.6)
37
38 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
39
40 enable_testing()
41
42 if(WINCE)
43   find_package(Wcecompat REQUIRED)
44   include_directories(${WCECOMPAT_INCLUDE_DIR})
45   set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${WCECOMPAT_INCLUDE_DIR})
46   set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${WCECOMPAT_LIBRARIES})
47 endif(WINCE)
48
49 set(LIBICAL_LIB_MAJOR_VERSION "0")
50 set(LIBICAL_LIB_MINOR_VERSION "48")
51 set(LIBICAL_LIB_PATCH_VERSION "0")
52 set(LIBICAL_LIB_VERSION_STRING "${LIBICAL_LIB_MAJOR_VERSION}.${LIBICAL_LIB_MINOR_VERSION}.${LIBICAL_LIB_PATCH_VERSION}")
53
54 set(PROJECT_VERSION "${LIBICAL_LIB_MAJOR_VERSION}.${LIBICAL_LIB_MINOR_VERSION}")
55 set(PROJECT_URL "http://freeassociation.sf.net/")
56
57 if(STATIC_LIBRARY)
58   set(LIBICAL_STATIC 1)
59   add_definitions(-DLIBICAL_STATIC)
60   set(LIBRARY_TYPE STATIC)
61 else(STATIC_LIBRARY)
62   set(LIBRARY_TYPE SHARED)
63 endif(STATIC_LIBRARY)
64
65 # must have Perl to create the derived stuff
66 find_package(Perl REQUIRED)
67
68 # make msvc less verbose
69 if(WIN32)
70   if(MSVC)
71     add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DYY_NO_UNISTD_H)
72   endif(MSVC)
73   add_definitions(-DBIG_ENDIAN=0 -DLITTLE_ENDIAN=1 -DBYTE_ORDER=BIG_ENDIAN)
74 endif(WIN32)
75
76 set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" )
77 set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE STRING "Library directory name" FORCE)
78 set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE STRING "Include directory name" FORCE)
79 set(SHARE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share" CACHE STRING "Share directory name" FORCE)
80
81 # set the output paths
82 set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
83 if(WIN32)
84   set(LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH} )
85   set(LIB_INSTALL_DIR lib)
86   set(BIN_INSTALL_DIR bin)
87 else(WIN32)
88   set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib )
89 endif(WIN32)
90
91 IF(APPLE)
92   set(CMAKE_INSTALL_NAME_DIR ${LIB_DESTINATION})
93 ENDIF(APPLE)
94
95 if(NOT DEFINED ICAL_ERRORS_ARE_FATAL)
96   set(ICAL_ERRORS_ARE_FATAL 0)
97 else(NOT DEFINED ICAL_ERRORS_ARE_FATAL)
98   if(ICAL_ERRORS_ARE_FATAL)
99     set(ICAL_ERRORS_ARE_FATAL 1)
100   else(ICAL_ERRORS_ARE_FATAL)
101     set(ICAL_ERRORS_ARE_FATAL 0)
102   endif(ICAL_ERRORS_ARE_FATAL)
103 endif(NOT DEFINED ICAL_ERRORS_ARE_FATAL)
104
105 if(NOT DEFINED ICAL_UNIX_NEWLINE)
106   set(ICAL_UNIX_NEWLINE 1)
107 else(NOT DEFINED ICAL_UNIX_NEWLINE)
108   if(ICAL_UNIX_NEWLINE)
109     set(ICAL_UNIX_NEWLINE 1)
110   else(ICAL_UNIX_NEWLINE)
111     set(ICAL_UNIX_NEWLINE 0)
112   endif(ICAL_UNIX_NEWLINE)
113 endif(NOT DEFINED ICAL_UNIX_NEWLINE)
114
115 if(NOT DEFINED ICAL_ALLOW_EMPTY_PROPERTIES)
116   set(ICAL_ALLOW_EMPTY_PROPERTIES 0)
117 else(NOT DEFINED ICAL_ALLOW_EMPTY_PROPERTIES)
118   if(ICAL_ALLOW_EMPTY_PROPERTIES)
119     set(ICAL_ALLOW_EMPTY_PROPERTIES 1)
120   else(ICAL_ALLOW_EMPTY_PROPERTIES)
121     set(ICAL_ALLOW_EMPTY_PROPERTIES 0)
122   endif(ICAL_ALLOW_EMPTY_PROPERTIES)
123 endif(NOT DEFINED ICAL_ALLOW_EMPTY_PROPERTIES)
124
125 if(NOT DEFINED NO_WARN_DEPRECATED)
126   set(NO_WARN_DEPRECATED 1)
127 else(NOT DEFINED NO_WARN_DEPRECATED)
128   if(NO_WARN_DEPRECATED)
129     set(NO_WARN_DEPRECATED 1)
130   else(NO_WARN_DEPRECATED)
131     set(NO_WARN_DEPRECATED 0)
132   endif(NO_WARN_DEPRECATED)
133 endif(NOT DEFINED NO_WARN_DEPRECATED)
134
135 if(NOT DEFINED USE_BUILTIN_TZDATA)
136   set(USE_BUILTIN_TZDATA 0)
137 else(NOT DEFINED USE_BUILTIN_TZDATA)
138   if(USE_BUILTIN_TZDATA)
139     set(USE_BUILTIN_TZDATA 1)
140   else(USE_BUILTIN_TZDATA)
141     set(USE_BUILTIN_TZDATA 0)
142   endif(USE_BUILTIN_TZDATA)
143 endif(NOT DEFINED USE_BUILTIN_TZDATA)
144
145 include(ConfigureChecks.cmake)
146 add_definitions(-DHAVE_CONFIG_H)
147 configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
148
149 set(INSTALL_TARGETS_DEFAULT_ARGS
150   RUNTIME DESTINATION ${BIN_INSTALL_DIR}
151   LIBRARY DESTINATION ${LIB_INSTALL_DIR}
152   ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
153 )
154
155 ################# build subdirs ########################
156
157 add_subdirectory(design-data)
158 add_subdirectory(doc)
159 add_subdirectory(scripts)
160 add_subdirectory(test-data)
161 add_subdirectory(src)
162 add_subdirectory(examples)
163 if(USE_BUILTIN_TZDATA)
164   # use our zoneinfo if cmake is passed -DUSE_BUILTIN_TZDATA
165   add_subdirectory(zoneinfo)
166 endif(USE_BUILTIN_TZDATA)
167
168 ########### create and install pkg-config file #########
169
170 set(VERSION "${PROJECT_VERSION}")
171 set(prefix "${CMAKE_INSTALL_PREFIX}")
172 set(exec_prefix "\${prefix}")
173 set(libdir "\${exec_prefix}/lib")
174 set(includedir "\${prefix}/include")
175 set(PTHREAD_LIBS "${CMAKE_THREAD_LIBS_INIT}")
176
177 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libical.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libical.pc @ONLY)
178 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libical.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)