summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2013-05-04 21:39:27 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2013-05-04 21:39:27 +0000
commitfec6336699f34758d3e6cb41b2edf902fedb9035 (patch)
tree8256c1dbf3ca7c9e58a3dbecf07cf826fb2e0ce2 /CMakeLists.txt
parent7dbffd7e2b0067e834801617c5c486e3177f6709 (diff)
downloadlibical-fec6336699f34758d3e6cb41b2edf902fedb9035.tar.gz
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt114
1 files changed, 88 insertions, 26 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 62ed129..f740ac5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,14 +3,18 @@
# Pass the following variables to cmake to control the build:
# (See doc/UsingLibical.txt for more information)
#
-# -DICAL_ERRORS_ARE_FATAL=[true|false]
+# -DICAL_ERRORS_ARE_FATAL=[true|false]
# Set to make icalerror_* calls abort instead of internally signaling an error
-# Default=true
+# Default=false
#
# -DNO_WARN_DEPRECATED=[true|false]
# Set if you DO NOT WANT to see deprecated messages.
# Default=true
#
+# -DICAL_ALLOW_EMPTY_PROPERTIES=[true|false]
+# Set to prevent empty properties from being replaced with X-LIC-ERROR properties.
+# Default=false
+#
# -DICAL_UNIX_NEWLINE=[true|false]
# Set to terminate each line with the RFC2445 specified line terminator "\\n";
# else it will terminate lines with "\\n\\r"
@@ -20,33 +24,72 @@
# Set to build using our own timezone data.
# Default=false (use the system timezone data)
#
+# -DSTATIC_LIBRARY=[true|false]
+# Set to build static libraries only.
+# Default=false (build shared and static libs)
+#
+# -DGOBJECT_INTROSPECTION=[true|false]
+# Set to build GObject introspection "typelib" files
+# Requires GObject Introspection development package v0.6.7 or higher
+# Default=false (do not generate the introspection files)
+#
+# -DUSE_32BIT_TIME_T=[true|false]
+# Set to build using a 32bit time_t (ignored unless building with MSVC on Windows)
+# Default=false (use the default size of time_t)
+#
project(libical)
cmake_minimum_required(VERSION 2.4)
-#cannot use the following line with cmake 2.4.x
-#cmake_policy(VERSION 2.6)
+if(COMMAND cmake_policy)
+ cmake_policy(SET CMP0003 NEW)
+ cmake_policy(SET CMP0005 OLD)
+endif(COMMAND cmake_policy)
+
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
-set(LIBICAL_LIB_MAJOR_VERSION "0")
-set(LIBICAL_LIB_MINOR_VERSION "43")
+enable_testing()
+
+if(WINCE)
+ find_package(Wcecompat REQUIRED)
+ include_directories(${WCECOMPAT_INCLUDE_DIR})
+ set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${WCECOMPAT_INCLUDE_DIR})
+ set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${WCECOMPAT_LIBRARIES})
+endif(WINCE)
+
+set(LIBICAL_LIB_MAJOR_VERSION "1")
+set(LIBICAL_LIB_MINOR_VERSION "0")
set(LIBICAL_LIB_PATCH_VERSION "0")
-set(LIBICAL_LIB_VERSION_STRING "${LIBICAL_LIB_MAJOR_VERSION}.${LIBICAL_LIB_MINOR_VERSION}.${LIBICAL_LIB_PATCH_VERSION}")
+set(LIBICAL_LIB_VERSION_STRING
+ "${LIBICAL_LIB_MAJOR_VERSION}.${LIBICAL_LIB_MINOR_VERSION}.${LIBICAL_LIB_PATCH_VERSION}"
+)
set(PROJECT_VERSION "${LIBICAL_LIB_MAJOR_VERSION}.${LIBICAL_LIB_MINOR_VERSION}")
set(PROJECT_URL "http://freeassociation.sf.net/")
+if(STATIC_LIBRARY)
+ set(LIBICAL_STATIC 1)
+ add_definitions(-DLIBICAL_STATIC)
+ set(LIBRARY_TYPE STATIC)
+else(STATIC_LIBRARY)
+ set(LIBRARY_TYPE SHARED)
+endif(STATIC_LIBRARY)
+
# must have Perl to create the derived stuff
find_package(Perl REQUIRED)
-# make msvc less verbose
+# MSVC specific definitions
if(WIN32)
if(MSVC)
- add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
+ add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DYY_NO_UNISTD_H)
+ if(USE_32BIT_TIME_T)
+ add_definitions(-D_USE_32BIT_TIME_T)
+ endif(USE_32BIT_TIME_T)
endif(MSVC)
add_definitions(-DBIG_ENDIAN=0 -DLITTLE_ENDIAN=1 -DBYTE_ORDER=BIG_ENDIAN)
endif(WIN32)
-set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" )
+set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)")
set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE STRING "Library directory name" FORCE)
set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE STRING "Include directory name" FORCE)
set(SHARE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share" CACHE STRING "Share directory name" FORCE)
@@ -54,19 +97,19 @@ set(SHARE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share" CACHE STRING "Share direct
# set the output paths
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
if(WIN32)
- set(LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH} )
+ set(LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH})
set(LIB_INSTALL_DIR lib)
set(BIN_INSTALL_DIR bin)
else(WIN32)
- set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib )
+ set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib)
endif(WIN32)
-IF(APPLE)
+if(APPLE)
set(CMAKE_INSTALL_NAME_DIR ${LIB_DESTINATION})
-ENDIF(APPLE)
+endif(APPLE)
if(NOT DEFINED ICAL_ERRORS_ARE_FATAL)
- set(ICAL_ERRORS_ARE_FATAL 1)
+ set(ICAL_ERRORS_ARE_FATAL 0)
else(NOT DEFINED ICAL_ERRORS_ARE_FATAL)
if(ICAL_ERRORS_ARE_FATAL)
set(ICAL_ERRORS_ARE_FATAL 1)
@@ -85,6 +128,16 @@ else(NOT DEFINED ICAL_UNIX_NEWLINE)
endif(ICAL_UNIX_NEWLINE)
endif(NOT DEFINED ICAL_UNIX_NEWLINE)
+if(NOT DEFINED ICAL_ALLOW_EMPTY_PROPERTIES)
+ set(ICAL_ALLOW_EMPTY_PROPERTIES 0)
+else(NOT DEFINED ICAL_ALLOW_EMPTY_PROPERTIES)
+ if(ICAL_ALLOW_EMPTY_PROPERTIES)
+ set(ICAL_ALLOW_EMPTY_PROPERTIES 1)
+ else(ICAL_ALLOW_EMPTY_PROPERTIES)
+ set(ICAL_ALLOW_EMPTY_PROPERTIES 0)
+ endif(ICAL_ALLOW_EMPTY_PROPERTIES)
+endif(NOT DEFINED ICAL_ALLOW_EMPTY_PROPERTIES)
+
if(NOT DEFINED NO_WARN_DEPRECATED)
set(NO_WARN_DEPRECATED 1)
else(NOT DEFINED NO_WARN_DEPRECATED)
@@ -115,7 +168,17 @@ set(INSTALL_TARGETS_DEFAULT_ARGS
ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
)
-################# build targets ########################
+if(GOBJECT_INTROSPECTION)
+ set(MIN_GOBJECT_INTROSPECTION "0.6.7")
+ find_package(GObjectIntrospection ${MIN_GOBJECT_INTROSPECTION})
+ if(INTROSPECTION_FOUND)
+ set(HAVE_INTROSPECTION TRUE)
+ else(INTROSPECTION_FOUND)
+ 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)")
+ endif(INTROSPECTION_FOUND)
+endif(GOBJECT_INTROSPECTION)
+
+################# build subdirs ########################
add_subdirectory(design-data)
add_subdirectory(doc)
@@ -128,15 +191,14 @@ if(USE_BUILTIN_TZDATA)
add_subdirectory(zoneinfo)
endif(USE_BUILTIN_TZDATA)
-############# install stuff ######################
+########### create and install pkg-config file #########
+set(VERSION "${PROJECT_VERSION}")
+set(prefix "${CMAKE_INSTALL_PREFIX}")
+set(exec_prefix "\${prefix}")
+set(libdir "\${exec_prefix}/lib")
+set(includedir "\${prefix}/include")
+set(PTHREAD_LIBS "${CMAKE_THREAD_LIBS_INIT}")
-if(NOT WIN32) # pkgconfig file
- set(VERSION "${PROJECT_VERSION}")
- set(prefix "${CMAKE_INSTALL_PREFIX}")
- set(exec_prefix "\${prefix}")
- set(libdir "\${exec_prefix}/lib")
- set(includedir "\${prefix}/include")
- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libical.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libical.pc @ONLY)
- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libical.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
-endif(NOT WIN32)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libical.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libical.pc @ONLY)
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libical.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)