1 # This is the top-level CMakeLists.txt file for the libical project.
3 # Pass the following variables to cmake to control the build:
4 # (See doc/UsingLibical.txt for more information)
6 # -DICAL_ERRORS_ARE_FATAL=[true|false]
7 # Set to make icalerror_* calls abort instead of internally signaling an error
10 # -DNO_WARN_DEPRECATED=[true|false]
11 # Set if you DO NOT WANT to see deprecated messages.
14 # -DICAL_ALLOW_EMPTY_PROPERTIES=[true|false]
15 # Set to prevent empty properties from being replaced with X-LIC-ERROR properties.
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"
23 # -DUSE_BUILTIN_TZDATA=[true|false]
24 # Set to build using our own timezone data.
25 # Default=false (use the system timezone data)
27 # -DSTATIC_LIBRARY=[true|false]
28 # Set to build static libraries only.
29 # Default=false (build shared and static libs)
34 cmake_minimum_required(VERSION 2.4)
35 #cannot use the following line with cmake 2.4.x
36 #cmake_policy(VERSION 2.6)
38 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
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})
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}")
54 set(PROJECT_VERSION "${LIBICAL_LIB_MAJOR_VERSION}.${LIBICAL_LIB_MINOR_VERSION}")
55 set(PROJECT_URL "http://freeassociation.sf.net/")
59 add_definitions(-DLIBICAL_STATIC)
60 set(LIBRARY_TYPE STATIC)
62 set(LIBRARY_TYPE SHARED)
65 # must have Perl to create the derived stuff
66 find_package(Perl REQUIRED)
68 # make msvc less verbose
71 add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DYY_NO_UNISTD_H)
73 add_definitions(-DBIG_ENDIAN=0 -DLITTLE_ENDIAN=1 -DBYTE_ORDER=BIG_ENDIAN)
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)
81 # set the output paths
82 set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
84 set(LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH} )
85 set(LIB_INSTALL_DIR lib)
86 set(BIN_INSTALL_DIR bin)
88 set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib )
92 set(CMAKE_INSTALL_NAME_DIR ${LIB_DESTINATION})
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)
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)
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)
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)
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)
145 include(ConfigureChecks.cmake)
146 add_definitions(-DHAVE_CONFIG_H)
147 configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
149 set(INSTALL_TARGETS_DEFAULT_ARGS
150 RUNTIME DESTINATION ${BIN_INSTALL_DIR}
151 LIBRARY DESTINATION ${LIB_INSTALL_DIR}
152 ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
155 ################# build subdirs ########################
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)
168 ########### create and install pkg-config file #########
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}")
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)