tizen 2.3 release
[framework/appfw/slp-pkgmgr.git] / comm / CMakeLists.txt
1 ### Description
2 # Communication modules for pkg-mgr client lib and server process
3 # By Youmin Ha <youmin.ha@samsung.com>
4
5 cmake_minimum_required(VERSION 2.6)
6 #set(CMAKE_SKIP_BUILD_RPATH true)
7 set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
8
9
10 ### Versioning
11 if(DEFINED ${VERSION}) 
12         message("VERSION: ${VERSION}")
13 else()
14         message("VERSION is not defined. set it as 0.1.0")
15         set(VERSION 0.1.0)
16 endif()
17 if(DEFINED ${VERSION_MAJOR})
18         message("VERSION_MAJOR: ${VERSION_MAJOR}")
19 else()
20         message( "VERSION_MAJOR is not defined. set it as 0")
21         set(VERSION_MAJOR 0)
22 endif()
23 message(STATUS "version/major : ${VERSION} / ${VERSION_MAJOR}")
24
25 ### Get required CFLAGS, LDFLAGS from pkg-config
26
27 include(FindPkgConfig)
28 pkg_check_modules(comm_pkgs REQUIRED dbus-1 glib-2.0 dbus-glib-1 gio-2.0 gio-unix-2.0 dlog pkgmgr-info)
29
30 foreach(flag ${comm_pkgs_CFLAGS})
31         set(comm_pkgs_CFLAGS_str "${comm_pkgs_CFLAGS_str} ${flag}")
32 endforeach()
33
34
35 ### Set current binary dir to be included (for generated *.h files)
36 include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
37
38 ### Create dbus-glib bindings headers (client/server) from xml by dbus-binding-tool
39
40 # comm_pkg_mgr : package manger interface (client - package manager process)
41 add_custom_target(comm_pkg_mgr_client_dbus_bindings.h
42         COMMAND dbus-binding-tool --prefix=pkgmgr --mode=glib-client 
43                         ${CMAKE_CURRENT_SOURCE_DIR}/comm_pkg_mgr.xml 
44                         --output=${CMAKE_CURRENT_BINARY_DIR}/comm_pkg_mgr_client_dbus_bindings.h
45         )
46 add_custom_target(comm_pkg_mgr_server_dbus_bindings.h
47         COMMAND dbus-binding-tool --prefix=pkgmgr --mode=glib-server
48                         ${CMAKE_CURRENT_SOURCE_DIR}/comm_pkg_mgr.xml 
49                         --output=${CMAKE_CURRENT_BINARY_DIR}/comm_pkg_mgr_server_dbus_bindings.h
50         )
51
52 #GDBUS specific code
53 add_custom_command(OUTPUT comm_pkg_mgr_client_gdbus_generated.c comm_pkg_mgr_client_gdbus_generated.h
54         COMMAND gdbus-codegen --generate-c-code comm_pkg_mgr_client_gdbus_generated
55                         --interface-prefix pkgmgr ${CMAKE_CURRENT_SOURCE_DIR}/comm_pkg_mgr.xml
56         )
57
58 # comm_status_broadcast : status broadcast interface (client - backend process)
59 add_custom_target(comm_status_broadcast_client_dbus_bindings.h
60         COMMAND dbus-binding-tool --prefix=status_broadcast --mode=glib-client 
61                         ${CMAKE_CURRENT_SOURCE_DIR}/comm_status_broadcast.xml 
62                         --output=${CMAKE_CURRENT_BINARY_DIR}/comm_status_broadcast_client_dbus_bindings.h
63         )
64 add_custom_target(comm_status_broadcast_server_dbus_bindings.h
65         COMMAND dbus-binding-tool --prefix=status_broadcast --mode=glib-server
66                         ${CMAKE_CURRENT_SOURCE_DIR}/comm_status_broadcast.xml 
67                         --output=${CMAKE_CURRENT_BINARY_DIR}/comm_status_broadcast_server_dbus_bindings.h
68         )
69
70 ### Create marshaller header/source for signal (client must use this)
71 add_custom_target(comm_status_broadcast_signal_marshaller.h
72                 COMMAND glib-genmarshal --header ${CMAKE_CURRENT_SOURCE_DIR}/comm_status_broadcast_signal_marshaller.list > ${CMAKE_CURRENT_BINARY_DIR}/comm_status_broadcast_signal_marshaller.h
73                 )
74 add_custom_target(comm_status_broadcast_signal_marshaller.c
75                 COMMAND glib-genmarshal --body ${CMAKE_CURRENT_SOURCE_DIR}/comm_status_broadcast_signal_marshaller.list > ${CMAKE_CURRENT_BINARY_DIR}/comm_status_broadcast_signal_marshaller.c
76                 )
77 set_source_files_properties(comm_status_broadcast_signal_marshaller.c PROPERTIES GENERATED true)  # This source is generated during build time, so this property must be set
78
79
80
81
82
83 ### Build modules
84
85 ## client for apps
86 # Send request, get status signal
87 add_library(pkgmgr_installer_client SHARED
88                 comm_client_gdbus.c
89                 comm_pkg_mgr_client_gdbus_generated.c
90                 #${CMAKE_CURRENT_BINARY_DIR}/comm_status_broadcast_signal_marshaller.c
91                 )
92 set_target_properties(pkgmgr_installer_client PROPERTIES SOVERSION ${VERSION_MAJOR})
93 set_target_properties(pkgmgr_installer_client PROPERTIES VERSION ${VERSION})
94 set_target_properties(pkgmgr_installer_client PROPERTIES COMPILE_FLAGS "${comm_pkgs_CFLAGS_str}")
95 target_link_libraries(pkgmgr_installer_client ${comm_pkgs_LDFLAGS})
96 #add_dependencies(pkgmgr_installer_client comm_pkg_mgr_client_dbus_bindings.h comm_status_broadcast_client_dbus_bindings.h comm_status_broadcast_signal_marshaller.h comm_status_broadcast_signal_marshaller.c)
97 add_dependencies(pkgmgr_installer_client comm_pkg_mgr_client_gdbus_generated.h comm_pkg_mgr_client_gdbus_generated.c)
98
99 ## pkg-mgr server for PMS
100 # Get request
101 add_library(pkgmgr_installer_pkg_mgr_server STATIC
102                 comm_pkg_mgr_server.c
103                 )
104 set_target_properties(pkgmgr_installer_pkg_mgr_server PROPERTIES SOVERSION ${VERSION_MAJOR})
105 set_target_properties(pkgmgr_installer_pkg_mgr_server PROPERTIES VERSION ${VERSION})
106 set_target_properties(pkgmgr_installer_pkg_mgr_server PROPERTIES COMPILE_FLAGS "${comm_pkgs_CFLAGS_str}")
107 target_link_libraries(pkgmgr_installer_pkg_mgr_server ${comm_pkgs_LDFLAGS})
108 add_dependencies(pkgmgr_installer_pkg_mgr_server comm_pkg_mgr_server_dbus_bindings.h)
109
110 ## status-broadcast server for backend/downloader
111 # Send signal
112 add_library(pkgmgr_installer_status_broadcast_server SHARED
113                 comm_status_broadcast_server_dbus.c
114         )
115 set_target_properties(pkgmgr_installer_status_broadcast_server PROPERTIES SOVERSION ${VERSION_MAJOR})
116 set_target_properties(pkgmgr_installer_status_broadcast_server PROPERTIES VERSION ${VERSION})
117 set_target_properties(pkgmgr_installer_status_broadcast_server PROPERTIES COMPILE_FLAGS "${comm_pkgs_CFLAGS_str}")
118 target_link_libraries(pkgmgr_installer_status_broadcast_server ${comm_pkgs_LDFLAGS})
119 add_dependencies(pkgmgr_installer_status_broadcast_server comm_status_broadcast_server_dbus_bindings.h)
120
121
122 ## comm_socket
123 # Internal lib
124 add_library(comm_socket STATIC comm_socket.c)
125 set_target_properties(comm_socket PROPERTIES COMPILE_FLAGS "${comm_pkgs_CFLAGS_str}")
126 #target_link_libraries(comm_socket)
127
128 ## pkgmgr_installer object (by youmin.ha)
129 # This library is for installer backend
130 add_library(pkgmgr_installer SHARED pkgmgr_installer.c)
131 set_target_properties(pkgmgr_installer PROPERTIES SOVERSION ${VERSION_MAJOR})
132 set_target_properties(pkgmgr_installer PROPERTIES VERSION ${VERSION})
133 set_target_properties(pkgmgr_installer PROPERTIES COMPILE_FLAGS "${comm_pkgs_CFLAGS_str}")
134 target_link_libraries(pkgmgr_installer pkgmgr_installer_status_broadcast_server ${comm_pkgs_LDFLAGS})
135
136
137 ### Create pc file
138 configure_file(pkgmgr-installer-client.pc.in ${CMAKE_CURRENT_BINARY_DIR}/pkgmgr-installer-client.pc @ONLY)
139 configure_file(pkgmgr-installer-status-broadcast-server.pc.in ${CMAKE_CURRENT_BINARY_DIR}/pkgmgr-installer-status-broadcast-server.pc @ONLY)
140 configure_file(pkgmgr-installer.pc.in ${CMAKE_CURRENT_BINARY_DIR}/pkgmgr-installer.pc @ONLY)
141
142
143 ## Install
144 INSTALL(TARGETS 
145                         pkgmgr_installer_client 
146                         pkgmgr_installer_status_broadcast_server
147                         pkgmgr_installer
148                 DESTINATION lib
149                 COMPONENT RuntimeLibraries)
150 INSTALL(FILES 
151                         comm_client.h 
152                         comm_status_broadcast_server.h
153                         comm_config.h
154                         pkgmgr_installer.h
155                 DESTINATION include/pkgmgr)
156
157
158 INSTALL(FILES 
159                 ${CMAKE_CURRENT_BINARY_DIR}/pkgmgr-installer-client.pc 
160                 ${CMAKE_CURRENT_BINARY_DIR}/pkgmgr-installer-status-broadcast-server.pc 
161                 ${CMAKE_CURRENT_BINARY_DIR}/pkgmgr-installer.pc 
162                 DESTINATION lib/pkgconfig)
163
164
165
166
167 ## test
168 add_subdirectory(test)
169
170