summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
blob: 62ed12956ae0399423c44474b013415e596bf942 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# This is the top-level CMakeLists.txt file for the libical project.
#
# Pass the following variables to cmake to control the build:
# (See doc/UsingLibical.txt for more information)
#
# -DICAL_ERRORS_ARE_FATAL=[true|false] 
#  Set to make icalerror_* calls abort instead of internally signaling an error
#  Default=true
#
# -DNO_WARN_DEPRECATED=[true|false]
#  Set if you DO NOT WANT to see deprecated messages.
#  Default=true
#
# -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"
#  Default=true
#
# -DUSE_BUILTIN_TZDATA=[true|false]
#  Set to build using our own timezone data.
#  Default=false (use the system timezone data)
#

project(libical)

cmake_minimum_required(VERSION 2.4)
#cannot use the following line with cmake 2.4.x
#cmake_policy(VERSION 2.6)

set(LIBICAL_LIB_MAJOR_VERSION "0")
set(LIBICAL_LIB_MINOR_VERSION "43")
set(LIBICAL_LIB_PATCH_VERSION "0")
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/")

# must have Perl to create the derived stuff
find_package(Perl REQUIRED)

# make msvc less verbose
if(WIN32)
  if(MSVC)
    add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
  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_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)

# set the output paths
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
if(WIN32)
  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 )
endif(WIN32)

IF(APPLE)
  set(CMAKE_INSTALL_NAME_DIR ${LIB_DESTINATION})
ENDIF(APPLE)

if(NOT DEFINED ICAL_ERRORS_ARE_FATAL)
  set(ICAL_ERRORS_ARE_FATAL 1)
else(NOT DEFINED ICAL_ERRORS_ARE_FATAL)
  if(ICAL_ERRORS_ARE_FATAL)
    set(ICAL_ERRORS_ARE_FATAL 1)
  else(ICAL_ERRORS_ARE_FATAL)
    set(ICAL_ERRORS_ARE_FATAL 0)
  endif(ICAL_ERRORS_ARE_FATAL)
endif(NOT DEFINED ICAL_ERRORS_ARE_FATAL)

if(NOT DEFINED ICAL_UNIX_NEWLINE)
  set(ICAL_UNIX_NEWLINE 1)
else(NOT DEFINED ICAL_UNIX_NEWLINE)
  if(ICAL_UNIX_NEWLINE)
    set(ICAL_UNIX_NEWLINE 1)
  else(ICAL_UNIX_NEWLINE)
    set(ICAL_UNIX_NEWLINE 0)
  endif(ICAL_UNIX_NEWLINE)
endif(NOT DEFINED ICAL_UNIX_NEWLINE)

if(NOT DEFINED NO_WARN_DEPRECATED)
  set(NO_WARN_DEPRECATED 1)
else(NOT DEFINED NO_WARN_DEPRECATED)
  if(NO_WARN_DEPRECATED)
    set(NO_WARN_DEPRECATED 1)
  else(NO_WARN_DEPRECATED)
    set(NO_WARN_DEPRECATED 0)
  endif(NO_WARN_DEPRECATED)
endif(NOT DEFINED NO_WARN_DEPRECATED)

if(NOT DEFINED USE_BUILTIN_TZDATA)
  set(USE_BUILTIN_TZDATA 0)
else(NOT DEFINED USE_BUILTIN_TZDATA)
  if(USE_BUILTIN_TZDATA)
    set(USE_BUILTIN_TZDATA 1)
  else(USE_BUILTIN_TZDATA)
    set(USE_BUILTIN_TZDATA 0)
  endif(USE_BUILTIN_TZDATA)
endif(NOT DEFINED USE_BUILTIN_TZDATA)

include(ConfigureChecks.cmake)
add_definitions(-DHAVE_CONFIG_H)
configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)

set(INSTALL_TARGETS_DEFAULT_ARGS
  RUNTIME DESTINATION ${BIN_INSTALL_DIR}
  LIBRARY DESTINATION ${LIB_INSTALL_DIR}
  ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
)

################# build targets ########################

add_subdirectory(design-data)
add_subdirectory(doc)
add_subdirectory(scripts)
add_subdirectory(test-data)
add_subdirectory(src)
add_subdirectory(examples)
if(USE_BUILTIN_TZDATA)
  # use our zoneinfo if cmake is passed -DUSE_BUILTIN_TZDATA
  add_subdirectory(zoneinfo)
endif(USE_BUILTIN_TZDATA)

############# install stuff ######################


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)