bump to 1.0.0 and clean up spec file
[platform/upstream/libical.git] / src / libical / CMakeLists.txt
1 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/icalversion.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/icalversion.h @ONLY)
2
3 include_directories(
4   ${CMAKE_BINARY_DIR}
5   ${CMAKE_BINARY_DIR}/src
6   ${CMAKE_SOURCE_DIR}/src
7   ${CMAKE_SOURCE_DIR}/src/libical
8   ${CMAKE_BINARY_DIR}/src/libical
9 )
10
11 if(WIN32)
12   if(MSVC)
13     add_definitions(-DBUILD_LIBICALDLL)
14   endif(MSVC)
15 endif(WIN32)
16
17 configure_file(icalerror.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/icalerror.h)
18
19 set(PACKAGE_DATA_DIR "\\\"${CMAKE_INSTALL_PREFIX}/share/libical\\\"")
20 add_definitions(-DPACKAGE_DATA_DIR="${PACKAGE_DATA_DIR}")
21
22 set(ICALSCRIPTS ${CMAKE_SOURCE_DIR}/scripts/)
23
24 set(PROPERTYDEPS
25   ${ICALSCRIPTS}/mkderivedproperties.pl
26   ${CMAKE_SOURCE_DIR}/design-data/properties.csv
27   ${CMAKE_SOURCE_DIR}/design-data/value-types.csv
28   ${CMAKE_SOURCE_DIR}/src/libical/icalderivedproperty.h.in
29   ${CMAKE_SOURCE_DIR}/src/libical/icalderivedproperty.c.in
30 )
31
32 add_custom_command(
33   OUTPUT
34   ${CMAKE_BINARY_DIR}/src/libical/icalderivedproperty.h
35   COMMAND
36   ${PERL_EXECUTABLE} -I ${ICALSCRIPTS} ${ICALSCRIPTS}/mkderivedproperties.pl
37     -i ${CMAKE_SOURCE_DIR}/src/libical/icalderivedproperty.h.in
38     -h ${CMAKE_SOURCE_DIR}/design-data/properties.csv
39     ${CMAKE_SOURCE_DIR}/design-data/value-types.csv >
40     ${CMAKE_BINARY_DIR}/src/libical/icalderivedproperty.h
41   DEPENDS ${PROPERTYDEPS}
42 )
43
44 add_custom_command(
45   OUTPUT
46   ${CMAKE_BINARY_DIR}/src/libical/icalderivedproperty.c
47   COMMAND
48   ${PERL_EXECUTABLE} -I${ICALSCRIPTS} ${ICALSCRIPTS}/mkderivedproperties.pl
49     -i ${CMAKE_SOURCE_DIR}/src/libical/icalderivedproperty.c.in
50     -c ${CMAKE_SOURCE_DIR}/design-data/properties.csv
51     ${CMAKE_SOURCE_DIR}/design-data/value-types.csv >
52     ${CMAKE_BINARY_DIR}/src/libical/icalderivedproperty.c
53     DEPENDS ${PROPERTYDEPS} ${CMAKE_BINARY_DIR}/src/libical/icalderivedproperty.h
54 )
55
56 set(PARAMETERDEPS
57   ${ICALSCRIPTS}/mkderivedparameters.pl
58   ${CMAKE_SOURCE_DIR}/design-data/parameters.csv
59   ${CMAKE_SOURCE_DIR}/src/libical/icalderivedparameter.c.in
60   ${CMAKE_SOURCE_DIR}/src/libical/icalderivedparameter.h.in
61 )
62
63 add_custom_command(
64   OUTPUT
65   ${CMAKE_BINARY_DIR}/src/libical/icalderivedparameter.h
66   COMMAND
67   ${PERL_EXECUTABLE} -I ${ICALSCRIPTS} ${ICALSCRIPTS}/mkderivedparameters.pl
68     -i ${CMAKE_SOURCE_DIR}/src/libical/icalderivedparameter.h.in
69     -h ${CMAKE_SOURCE_DIR}/design-data/parameters.csv >
70     ${CMAKE_BINARY_DIR}/src/libical/icalderivedparameter.h
71   DEPENDS ${PARAMETERDEPS}
72 )
73
74 add_custom_command(
75   OUTPUT
76   ${CMAKE_BINARY_DIR}/src/libical/icalderivedparameter.c
77   COMMAND
78   ${PERL_EXECUTABLE} -I ${ICALSCRIPTS} ${ICALSCRIPTS}/mkderivedparameters.pl
79     -i ${CMAKE_SOURCE_DIR}/src/libical/icalderivedparameter.c.in
80     -c ${CMAKE_SOURCE_DIR}/design-data/parameters.csv >
81     ${CMAKE_BINARY_DIR}/src/libical/icalderivedparameter.c
82   DEPENDS ${PARAMETERDEPS} ${CMAKE_BINARY_DIR}/src/libical/icalderivedparameter.h
83 )
84
85 set(RESTRICTIONDEPS
86   ${ICALSCRIPTS}/mkrestrictiontable.pl
87   ${CMAKE_SOURCE_DIR}/design-data/restrictions.csv
88   ${CMAKE_SOURCE_DIR}/src/libical/icalrestriction.c.in
89 )
90
91 file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/src/libical/)
92 add_custom_command(
93   OUTPUT
94   ${CMAKE_BINARY_DIR}/src/libical/icalrestriction.c
95   COMMAND
96   ${PERL_EXECUTABLE} -I ${ICALSCRIPTS} ${ICALSCRIPTS}/mkrestrictiontable.pl
97     -i ${CMAKE_SOURCE_DIR}/src/libical/icalrestriction.c.in
98     ${CMAKE_SOURCE_DIR}/design-data/restrictions.csv >
99     ${CMAKE_BINARY_DIR}/src/libical/icalrestriction.c
100   DEPENDS ${RESTRICTIONDEPS}
101 )
102
103 set(VALUEDEPS
104   ${ICALSCRIPTS}mkderivedvalues.pl
105   ${CMAKE_SOURCE_DIR}/design-data/value-types.csv
106   ${CMAKE_SOURCE_DIR}/src/libical/icalderivedvalue.c.in
107   ${CMAKE_SOURCE_DIR}/src/libical/icalderivedvalue.h.in
108 )
109
110 add_custom_command(
111   OUTPUT
112   ${CMAKE_BINARY_DIR}/src/libical/icalderivedvalue.h
113   COMMAND
114   ${PERL_EXECUTABLE} -I${ICALSCRIPTS} ${ICALSCRIPTS}/mkderivedvalues.pl
115     -i ${CMAKE_SOURCE_DIR}/src/libical/icalderivedvalue.h.in
116     -h ${CMAKE_SOURCE_DIR}/design-data/value-types.csv >
117     ${CMAKE_BINARY_DIR}/src/libical/icalderivedvalue.h
118   DEPENDS ${VALUEDEPS}
119 )
120
121 add_custom_command(
122   OUTPUT
123   ${CMAKE_BINARY_DIR}/src/libical/icalderivedvalue.c
124   COMMAND
125   ${PERL_EXECUTABLE} -I${ICALSCRIPTS} ${ICALSCRIPTS}/mkderivedvalues.pl
126     -i ${CMAKE_SOURCE_DIR}/src/libical/icalderivedvalue.c.in
127     -c ${CMAKE_SOURCE_DIR}/design-data/value-types.csv >
128     ${CMAKE_BINARY_DIR}/src/libical/icalderivedvalue.c
129   DEPENDS ${VALUEDEPS} ${CMAKE_BINARY_DIR}/src/libical/icalderivedvalue.h
130 )
131
132 if(WIN32)
133   set(TOPS "\"${CMAKE_SOURCE_DIR}\"")
134   set(TOPB "\"${CMAKE_BINARY_DIR}\"")
135 else(WIN32)
136   set(TOPS "${CMAKE_SOURCE_DIR}")
137   set(TOPB "${CMAKE_BINARY_DIR}")
138 endif(WIN32)
139
140 add_custom_command(
141   OUTPUT
142   ${CMAKE_BINARY_DIR}/src/libical/ical.h
143   COMMAND
144   ${CMAKE_COMMAND}
145     -DTOPS:FILEPATH=${TOPS}
146     -DTOPB:FILEPATH=${TOPB}
147     -DICAL_FILE_H_FILE:FILEPATH=${CMAKE_BINARY_DIR}/src/libical/ical.h
148     -P ${CMAKE_CURRENT_SOURCE_DIR}/ical_file.cmake
149   DEPENDS
150   ${CMAKE_BINARY_DIR}/src/libical/icalderivedproperty.h
151   ${CMAKE_BINARY_DIR}/src/libical/icalderivedparameter.h
152   ${CMAKE_BINARY_DIR}/src/libical/icalderivedvalue.h
153 )
154
155 add_custom_target(ical-header DEPENDS
156   ${CMAKE_BINARY_DIR}/src/libical/ical.h
157 )
158
159 macro(_list_prefix _outvar _listvar _prefix)
160   set(${_outvar})
161   foreach(_item IN LISTS ${_listvar})
162     list(APPEND ${_outvar} ${_prefix}${_item})
163   endforeach()
164 endmacro(_list_prefix)
165
166 # GObject Introspection
167 if(HAVE_INTROSPECTION)
168   include(GObjectIntrospectionMacros)
169   set(INTROSPECTION_GIRS)
170   #set(INTROSPECTION_SCANNER_ARGS "--add-include-path=${CMAKE_CURRENT_SOURCE_DIR}")
171   #set(INTROSPECTION_COMPILER_ARGS "--includedir=${CMAKE_CURRENT_SOURCE_DIR}")
172
173   set(libical_0_48_gir "libical")
174   set(libical_0_48_gir_VERSION "0.48")
175   set(INTROSPECTION_SCANNER_ARGS ${CMAKE_BINARY_DIR}/src/libical/ical.h)
176   set(libical_0_48_gir_LIBRARY "ical")
177   set(libical_0_48_gir_INCLUDES GObject-2.0)
178   get_directory_property(_tmp_includes ical_LIB_SRCS)
179   _list_prefix(_includes _tmp_includes "-L")
180   set(libical_0_48_gir_CFLAGS ${_includes})
181   set(libical_0_48_gir_LIBS ical)
182
183   list(APPEND INTROSPECTION_GIRS libical-0.48.gir)
184
185   gir_add_introspections(INTROSPECTION_GIRS)
186 endif()
187
188 ########### next target ###############
189
190 set(BUILT_COMBINEDHEADERS
191   ${CMAKE_BINARY_DIR}/src/libical/icalderivedparameter.h
192   ${CMAKE_BINARY_DIR}/src/libical/icalderivedproperty.h
193   ${CMAKE_BINARY_DIR}/src/libical/icalderivedvalue.h
194 )
195
196 set(BUILT_SOURCES
197   ${BUILT_COMBINEDHEADERS}
198   icalderivedparameter.c
199   icalderivedproperty.c
200   icalrestriction.c
201   icalderivedvalue.c
202 )
203
204 set(ical_LIB_SRCS
205   ${BUILT_SOURCES}
206   icalarray.c
207   icalarray.h
208   icalattach.h
209   icalattachimpl.h
210   icalattach.c
211   icalcomponent.c
212   icalcomponent.h
213   icalenums.c
214   icalenums.h
215   icalerror.c
216   icalmemory.c
217   icalmemory.h
218   icalmime.c
219   icalmime.h
220   icalparameter.c
221   icalparameter.h
222   icalparameterimpl.h
223   icalparser.c
224   icalparser.h
225   icalproperty.c
226   icalproperty.h
227   icalrecur.c
228   icalrecur.h
229   icalrestriction.h
230   icaltime.c
231   icaltime.h
232   icaltz-util.c
233   icaltz-util.h
234   icaltimezone.c
235   icaltimezone.h
236   icalduration.h
237   icalduration.c
238   icalperiod.h
239   icalperiod.c
240   icaltypes.c
241   icaltypes.h
242   icalvalue.c
243   icalvalue.h
244   icalvalueimpl.h
245   pvl.c
246   pvl.h
247   sspm.c
248   sspm.h
249   icallangbind.h
250   icallangbind.c
251   caldate.c
252   astime.h
253 )
254 if(WIN32)
255   if(MSVC)
256     list(APPEND ical_LIB_SRCS ../ical.def)
257   endif(MSVC)
258 endif(WIN32)
259
260 add_library(ical ${LIBRARY_TYPE} ${ical_LIB_SRCS})
261 add_library(ical-static STATIC ${ical_LIB_SRCS})
262
263 add_dependencies(ical ical-header)
264
265 target_link_libraries(ical ${CMAKE_THREAD_LIBS_INIT})
266
267 if(WINCE)
268   target_link_libraries(ical ${WCECOMPAT_LIBRARIES})
269 endif(WINCE)
270
271 if(MSVC)
272   set_target_properties(ical PROPERTIES OUTPUT_NAME "libical")
273   set_target_properties(ical-static PROPERTIES OUTPUT_NAME "libical-static")
274 else(MSVC)
275   set_target_properties(ical-static PROPERTIES OUTPUT_NAME "ical")
276 endif(MSVC)
277 set_target_properties(ical PROPERTIES
278   VERSION ${LIBICAL_LIB_VERSION_STRING}
279   SOVERSION ${LIBICAL_LIB_MAJOR_VERSION}
280 )
281 set_target_properties(ical PROPERTIES CLEAN_DIRECT_OUTPUT 1)
282 set_target_properties(ical-static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
283
284 install(TARGETS ical ical-static ${INSTALL_TARGETS_DEFAULT_ARGS})
285
286 ########### install files ###############
287
288 install(FILES ${CMAKE_SOURCE_DIR}/src/ical.h DESTINATION ${INCLUDE_INSTALL_DIR})
289
290 install(FILES
291   ${CMAKE_BINARY_DIR}/src/libical/ical.h
292   icalarray.h
293   icalattach.h
294   icalcomponent.h
295   ${CMAKE_BINARY_DIR}/src/libical/icalderivedparameter.h
296   ${CMAKE_BINARY_DIR}/src/libical/icalderivedproperty.h
297   ${CMAKE_BINARY_DIR}/src/libical/icalderivedvalue.h
298   icalduration.h
299   icalenums.h
300   ${CMAKE_BINARY_DIR}/src/libical/icalerror.h
301   icallangbind.h
302   icalmemory.h
303   icalmime.h
304   icalparameter.h
305   icalparser.h
306   icalperiod.h
307   icalproperty.h
308   icalrecur.h
309   icalrestriction.h
310   icaltime.h
311   icaltz-util.h
312   icaltimezone.h
313   icaltypes.h
314   icalvalue.h
315   pvl.h
316   sspm.h
317   DESTINATION
318   ${INCLUDE_INSTALL_DIR}/libical
319 )