1project(dbus-lib)
2
3SET(DBUS_DIR ${CMAKE_SOURCE_DIR}/../dbus)
4
5configure_file(${DBUS_DIR}/dbus-arch-deps.h.in ${CMAKE_CURRENT_BINARY_DIR}/dbus-arch-deps.h )
6
7add_definitions(-DDBUS_COMPILATION)
8
9set (dbusinclude_HEADERS
10	${DBUS_DIR}/dbus.h
11	${DBUS_DIR}/dbus-address.h
12	${DBUS_DIR}/dbus-bus.h
13	${DBUS_DIR}/dbus-connection.h
14	${DBUS_DIR}/dbus-errors.h
15	${DBUS_DIR}/dbus-macros.h
16	${DBUS_DIR}/dbus-memory.h
17	${DBUS_DIR}/dbus-message.h
18	${DBUS_DIR}/dbus-misc.h
19	${DBUS_DIR}/dbus-pending-call.h
20	${DBUS_DIR}/dbus-protocol.h
21	${DBUS_DIR}/dbus-server.h
22	${DBUS_DIR}/dbus-shared.h
23	${DBUS_DIR}/dbus-signature.h
24	${DBUS_DIR}/dbus-syntax.h
25	${DBUS_DIR}/dbus-threads.h
26	${DBUS_DIR}/dbus-types.h
27	dbus-arch-deps.h
28)
29
30### source code that goes in the installed client library
31### and is specific to library functionality
32set (DBUS_LIB_SOURCES
33	${DBUS_DIR}/dbus-address.c
34	${DBUS_DIR}/dbus-auth.c
35	${DBUS_DIR}/dbus-bus.c
36	${DBUS_DIR}/dbus-connection.c
37	${DBUS_DIR}/dbus-credentials.c
38	${DBUS_DIR}/dbus-errors.c
39	${DBUS_DIR}/dbus-keyring.c
40	${DBUS_DIR}/dbus-marshal-header.c
41	${DBUS_DIR}/dbus-marshal-byteswap.c
42	${DBUS_DIR}/dbus-marshal-recursive.c
43	${DBUS_DIR}/dbus-marshal-validate.c
44	${DBUS_DIR}/dbus-message.c
45	${DBUS_DIR}/dbus-misc.c
46	${DBUS_DIR}/dbus-nonce.c
47	${DBUS_DIR}/dbus-object-tree.c
48	${DBUS_DIR}/dbus-pending-call.c
49	${DBUS_DIR}/dbus-resources.c
50	${DBUS_DIR}/dbus-server.c
51	${DBUS_DIR}/dbus-server-socket.c
52	${DBUS_DIR}/dbus-server-debug-pipe.c
53	${DBUS_DIR}/dbus-sha.c
54	${DBUS_DIR}/dbus-signature.c
55	${DBUS_DIR}/dbus-syntax.c
56	${DBUS_DIR}/dbus-timeout.c
57	${DBUS_DIR}/dbus-threads.c
58	${DBUS_DIR}/dbus-transport.c
59	${DBUS_DIR}/dbus-transport-socket.c
60	${DBUS_DIR}/dbus-watch.c
61)
62
63
64if(UNIX)
65	set (DBUS_LIB_SOURCES ${DBUS_LIB_SOURCES} 
66		${DBUS_DIR}/dbus-transport-unix.c
67		${DBUS_DIR}/dbus-server-unix.c
68	)
69else(UNIX)
70	set (DBUS_LIB_SOURCES ${DBUS_LIB_SOURCES} 
71		${DBUS_DIR}/dbus-transport-win.c
72		${DBUS_DIR}/dbus-server-win.c
73	)
74endif(UNIX)
75
76set (DBUS_LIB_HEADERS
77	${DBUS_DIR}/dbus-auth.h
78	${DBUS_DIR}/dbus-connection-internal.h
79	${DBUS_DIR}/dbus-credentials.h
80	${DBUS_DIR}/dbus-keyring.h
81	${DBUS_DIR}/dbus-marshal-header.h
82	${DBUS_DIR}/dbus-marshal-byteswap.h
83	${DBUS_DIR}/dbus-marshal-recursive.h
84	${DBUS_DIR}/dbus-marshal-validate.h
85	${DBUS_DIR}/dbus-message-internal.h
86	${DBUS_DIR}/dbus-message-private.h
87	${DBUS_DIR}/dbus-misc.h
88	${DBUS_DIR}/dbus-object-tree.h
89	${DBUS_DIR}/dbus-protocol.h
90	${DBUS_DIR}/dbus-resources.h
91	${DBUS_DIR}/dbus-server-debug-pipe.h
92	${DBUS_DIR}/dbus-server-protected.h
93	${DBUS_DIR}/dbus-server-unix.h
94	${DBUS_DIR}/dbus-sha.h
95	${DBUS_DIR}/dbus-timeout.h
96	${DBUS_DIR}/dbus-threads.h
97	${DBUS_DIR}/dbus-threads-internal.h
98	${DBUS_DIR}/dbus-transport.h
99	${DBUS_DIR}/dbus-transport-protected.h
100	${DBUS_DIR}/dbus-watch.h
101	${CMAKE_BINARY_DIR}/config.h
102)
103if(UNIX)
104	set (DBUS_LIB_HEADERS ${DBUS_LIB_HEADERS} 
105		${DBUS_DIR}/dbus-transport-unix.h
106	)
107else(UNIX)
108	set (DBUS_LIB_HEADERS ${DBUS_LIB_HEADERS} 
109		${DBUS_DIR}/dbus-transport-win.h
110	)
111endif(UNIX)
112
113
114### source code that goes in the installed client library
115### AND is generic utility functionality used by the 
116### daemon or test programs (all symbols in here should 
117### be underscore-prefixed)
118set (DBUS_SHARED_SOURCES
119	${DBUS_DIR}/dbus-dataslot.c
120	${DBUS_DIR}/dbus-file.c
121	${DBUS_DIR}/dbus-hash.c
122	${DBUS_DIR}/dbus-internals.c
123	${DBUS_DIR}/dbus-list.c
124	${DBUS_DIR}/dbus-marshal-basic.c
125	${DBUS_DIR}/dbus-memory.c
126	${DBUS_DIR}/dbus-mempool.c
127	${DBUS_DIR}/dbus-string.c
128	${DBUS_DIR}/dbus-sysdeps.c
129	${DBUS_DIR}/dbus-pipe.c
130)
131
132set (DBUS_SHARED_HEADERS
133	${DBUS_DIR}/dbus-dataslot.h
134	${DBUS_DIR}/dbus-file.h
135	${DBUS_DIR}/dbus-hash.h
136	${DBUS_DIR}/dbus-internals.h
137	${DBUS_DIR}/dbus-list.h
138	${DBUS_DIR}/dbus-marshal-basic.h
139	${DBUS_DIR}/dbus-mempool.h
140	${DBUS_DIR}/dbus-string.h
141	${DBUS_DIR}/dbus-string-private.h
142	${DBUS_DIR}/dbus-pipe.h
143	${DBUS_DIR}/dbus-sysdeps.h
144)
145
146### source code that is generic utility functionality used
147### by the bus daemon or test apps, but is NOT included
148### in the D-BUS client library (all symbols in here 
149### should be underscore-prefixed but don't really need 
150### to be unless they move to DBUS_SHARED_SOURCES later)
151set (DBUS_UTIL_SOURCES
152	${DBUS_DIR}/dbus-auth-script.c
153	${DBUS_DIR}/dbus-auth-util.c
154	${DBUS_DIR}/dbus-credentials-util.c
155	${DBUS_DIR}/dbus-mainloop.c
156	${DBUS_DIR}/dbus-marshal-byteswap-util.c
157	${DBUS_DIR}/dbus-marshal-recursive-util.c
158	${DBUS_DIR}/dbus-marshal-validate-util.c
159	${DBUS_DIR}/dbus-message-factory.c
160	${DBUS_DIR}/dbus-message-util.c
161	${DBUS_DIR}/dbus-shell.c
162	${DBUS_DIR}/dbus-socket-set.c
163	${DBUS_DIR}/dbus-socket-set-poll.c
164	${DBUS_DIR}/dbus-string-util.c
165	${DBUS_DIR}/dbus-sysdeps-util.c
166)
167
168if (DBUS_BUILD_TESTS)
169	set (DBUS_UTIL_SOURCES 
170		${DBUS_UTIL_SOURCES}
171		${DBUS_DIR}/dbus-test.c
172	)
173endif (DBUS_BUILD_TESTS)
174
175set (DBUS_UTIL_HEADERS
176	${DBUS_DIR}/dbus-auth-script.h
177	${DBUS_DIR}/dbus-mainloop.h
178	${DBUS_DIR}/dbus-message-factory.h
179	${DBUS_DIR}/dbus-shell.h
180	${DBUS_DIR}/dbus-socket-set.h
181	${DBUS_DIR}/dbus-spawn.h
182	${DBUS_DIR}/dbus-test.h
183)
184
185### platform specific settings
186if (WIN32)
187	set (DBUS_SHARED_SOURCES ${DBUS_SHARED_SOURCES} 
188		${DBUS_DIR}/dbus-file-win.c
189		${DBUS_DIR}/dbus-sysdeps-win.c
190		${DBUS_DIR}/dbus-pipe-win.c
191		${DBUS_DIR}/dbus-sysdeps-thread-win.c
192	)
193	set (DBUS_SHARED_HEADERS ${DBUS_SHARED_HEADERS} 
194		${DBUS_DIR}/dbus-sockets-win.h
195		${DBUS_DIR}/dbus-sysdeps-win.h
196	)
197	set (DBUS_UTIL_SOURCES ${DBUS_UTIL_SOURCES}
198		${DBUS_DIR}/dbus-spawn-win.c
199		${DBUS_DIR}/dbus-sysdeps-util-win.c
200	)
201	if(WINCE)
202	set (DBUS_SHARED_SOURCES ${DBUS_SHARED_SOURCES}
203		${DBUS_DIR}/dbus-sysdeps-wince-glue.c
204	)
205	set (DBUS_SHARED_HEADERS ${DBUS_SHARED_HEADERS}
206		${DBUS_DIR}/dbus-sysdeps-wince-glue.h
207	)
208	endif(WINCE)
209else (WIN32)
210	set (DBUS_SHARED_SOURCES ${DBUS_SHARED_SOURCES} 
211		${DBUS_DIR}/dbus-file-unix.c
212		${DBUS_DIR}/dbus-pipe-unix.c
213		${DBUS_DIR}/dbus-sysdeps-unix.c
214		${DBUS_DIR}/dbus-sysdeps-pthread.c
215		${DBUS_DIR}/dbus-userdb.c
216        ${DBUS_DIR}/sd-daemon.c
217	)
218	set (DBUS_SHARED_HEADERS ${DBUS_SHARED_HEADERS} 
219		${DBUS_DIR}/dbus-server-unix.h
220		${DBUS_DIR}/dbus-transport-unix.h
221		${DBUS_DIR}/dbus-sysdeps-unix.h
222		${DBUS_DIR}/dbus-userdb.h
223        ${DBUS_DIR}/sd-daemon.h
224	)
225	set (DBUS_UTIL_SOURCES ${DBUS_UTIL_SOURCES}
226		${DBUS_DIR}/dbus-spawn.c
227		${DBUS_DIR}/dbus-userdb-util.c
228		${DBUS_DIR}/dbus-sysdeps-util-unix.c
229	)
230endif (WIN32)
231
232set(libdbus_SOURCES
233	${DBUS_LIB_SOURCES}
234	${DBUS_SHARED_SOURCES}
235)
236
237set(libdbus_HEADERS 
238	${DBUS_LIB_HEADERS}
239	${DBUS_SHARED_HEADERS}
240)
241if (MSVC)
242    set (BUILD_FILEVERSION ${DBUS_MAJOR_VERSION},${DBUS_MINOR_VERSION},${DBUS_MICRO_VERSION},${DBUS_PATCH_VERSION})
243    set (BUILD_TIMESTAMP ${DBUS_BUILD_TIMESTAMP})
244    
245    configure_file(${DBUS_DIR}/versioninfo.rc.in ${CMAKE_CURRENT_BINARY_DIR}/versioninfo.rc)
246    file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/afxres.h "")
247    list(APPEND libdbus_SOURCES versioninfo.rc)
248    set_source_files_properties(versioninfo.rc COMPILE_FLAGS "-D__LINE__=1")
249endif (MSVC)
250
251if(MSVC_IDE)
252	project_source_group(${GROUP_CODE} DBUS_LIB_SOURCES DBUS_LIB_HEADERS)
253	project_source_group(${GROUP_CODE} DBUS_SHARED_SOURCES DBUS_SHARED_HEADERS)
254	project_source_group(${GROUP_CODE} DBUS_UTIL_SOURCES DBUS_UTIL_SOURCES)
255endif(MSVC_IDE)
256
257### Client library
258
259add_library(dbus-1 SHARED
260			${libdbus_SOURCES}
261			${libdbus_HEADERS}
262)
263if(WIN32)
264    if(WINCE)
265        target_link_libraries(dbus-1 ws2)
266    else(WINCE)
267        target_link_libraries(dbus-1 ws2_32 advapi32 netapi32)
268    endif(WINCE)
269else(WIN32)
270    target_link_libraries(dbus-1 ${CMAKE_THREAD_LIBS_INIT})
271endif(WIN32)
272
273install_targets(/lib dbus-1 )
274install_files(/include/dbus FILES ${dbusinclude_HEADERS})
275
276### Internal library, used for the daemon, tools and tests, compiled statically.
277
278add_library(dbus-internal ${DBUS_INTERNAL_ADD_LIBRARY_OPTIONS}
279			${DBUS_LIB_SOURCES}
280			${DBUS_LIB_HEADERS}
281			${DBUS_SHARED_SOURCES}
282			${DBUS_SHARED_HEADERS}
283			${DBUS_UTIL_SOURCES}
284			${DBUS_UTIL_HEADERS}
285)
286target_link_libraries(dbus-internal)
287set_target_properties(dbus-internal PROPERTIES COMPILE_FLAGS ${DBUS_INTERNAL_LIBRARY_DEFINITIONS})
288if(WIN32)
289    if(WINCE)
290        target_link_libraries(dbus-internal ws2)
291    else(WINCE)
292        target_link_libraries(dbus-internal ws2_32 advapi32 netapi32)
293    endif(WINCE)
294else(WIN32)
295    target_link_libraries(dbus-internal ${CMAKE_THREAD_LIBS_INIT})
296endif(WIN32)
297
298if (DBUS_BUILD_TESTS)
299	set (TESTS_ENVIRONMENT "DBUS_TEST_DATA=${CMAKE_SOURCE_DIR}/test/data DBUS_TEST_HOMEDIR=${CMAKE_BUILD_DIR}/dbus")
300	ADD_EXECUTABLE(dbus-test ${CMAKE_SOURCE_DIR}/../dbus/dbus-test-main.c)
301	target_link_libraries(dbus-test ${DBUS_INTERNAL_LIBRARIES})
302	add_test(dbus-test ${EXECUTABLE_OUTPUT_PATH}/dbus-test ${CMAKE_SOURCE_DIR}/../test/data)
303	set_target_properties(dbus-test PROPERTIES COMPILE_FLAGS ${DBUS_INTERNAL_CLIENT_DEFINITIONS})
304ENDIF (DBUS_BUILD_TESTS)
305
306if (UNIX)
307# set version info
308ENDIF (UNIX)
309
310
311## mop up the gcov files
312#clean-local:
313#/bin/rm *.bb *.bbg *.da *.gcov .libs/*.da .libs/*.bbg || true
314