2 # Communication modules for pkg-mgr client lib and server process
3 # By Youmin Ha <youmin.ha@samsung.com>
5 cmake_minimum_required(VERSION 2.6)
6 #set(CMAKE_SKIP_BUILD_RPATH true)
7 set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
11 if(DEFINED ${VERSION})
12 message("VERSION: ${VERSION}")
14 message("VERSION is not defined. set it as 0.1.0")
17 if(DEFINED ${VERSION_MAJOR})
18 message("VERSION_MAJOR: ${VERSION_MAJOR}")
20 message( "VERSION_MAJOR is not defined. set it as 0")
23 message(STATUS "version/major : ${VERSION} / ${VERSION_MAJOR}")
25 ### Get required CFLAGS, LDFLAGS from pkg-config
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)
30 foreach(flag ${comm_pkgs_CFLAGS})
31 set(comm_pkgs_CFLAGS_str "${comm_pkgs_CFLAGS_str} ${flag}")
35 ### Set current binary dir to be included (for generated *.h files)
36 include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
38 ### Create dbus-glib bindings headers (client/server) from xml by dbus-binding-tool
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
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
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
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
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
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
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
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
86 # Send request, get status signal
87 add_library(pkgmgr_installer_client SHARED
89 comm_pkg_mgr_client_gdbus_generated.c
90 #${CMAKE_CURRENT_BINARY_DIR}/comm_status_broadcast_signal_marshaller.c
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)
99 ## pkg-mgr server for PMS
101 add_library(pkgmgr_installer_pkg_mgr_server STATIC
102 comm_pkg_mgr_server.c
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)
110 ## status-broadcast server for backend/downloader
112 add_library(pkgmgr_installer_status_broadcast_server SHARED
113 comm_status_broadcast_server_dbus.c
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)
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)
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})
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)
145 pkgmgr_installer_client
146 pkgmgr_installer_status_broadcast_server
149 COMPONENT RuntimeLibraries)
152 comm_status_broadcast_server.h
155 DESTINATION include/pkgmgr)
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)
168 add_subdirectory(test)