Clean up dependency
[platform/core/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(installer_client_pkgs REQUIRED glib-2.0 gio-2.0 gio-unix-2.0 dlog)
29 foreach(flag ${installer_client_pkgs_CFLAGS})
30         set(installer_client_pkgs_CFLAGS_str "${installer_client_pkgs_CFLAGS_str} ${flag}")
31 endforeach()
32
33 pkg_check_modules(comm_pkgs REQUIRED glib-2.0 dbus-glib-1 dlog cynara-client cynara-creds-dbus cynara-session)
34 foreach(flag ${comm_pkgs_CFLAGS})
35         set(comm_pkgs_CFLAGS_str "${comm_pkgs_CFLAGS_str} ${flag}")
36 endforeach()
37
38 pkg_check_modules(broadcast_server_pkgs REQUIRED dbus-1 dlog)
39 foreach(flag ${broadcast_server_pkgs_CFLAGS})
40         set(broadcast_server_pkgs_CFLAGS_str "${broadcast_server_pkgs_CFLAGS_str} ${flag}")
41 endforeach()
42
43 pkg_check_modules(installer_pkgs REQUIRED glib-2.0 dbus-1 dlog pkgmgr-info)
44 foreach(flag ${installer_pkgs_CFLAGS})
45         set(installer_pkgs_CFLAGS_str "${installer_pkgs_CFLAGS_str} ${flag}")
46 endforeach()
47
48 ### Set current binary dir to be included (for generated *.h files)
49 include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
50
51 ### Create dbus-glib bindings headers (client/server) from xml by dbus-binding-tool
52
53 # comm_pkg_mgr : package manger interface (client - package manager process)
54 add_custom_target(comm_pkg_mgr_server_dbus_bindings.h
55         COMMAND dbus-binding-tool --prefix=pkgmgr --mode=glib-server
56                         ${CMAKE_CURRENT_SOURCE_DIR}/comm_pkg_mgr.xml 
57                         --output=${CMAKE_CURRENT_BINARY_DIR}/comm_pkg_mgr_server_dbus_bindings.h
58         )
59
60 #GDBUS specific code
61 add_custom_command(OUTPUT comm_pkg_mgr_client_gdbus_generated.c comm_pkg_mgr_client_gdbus_generated.h
62         COMMAND gdbus-codegen --generate-c-code comm_pkg_mgr_client_gdbus_generated
63                         --interface-prefix pkgmgr ${CMAKE_CURRENT_SOURCE_DIR}/comm_pkg_mgr.xml
64         )
65
66 add_custom_target(comm_status_broadcast_server_dbus_bindings.h
67         COMMAND dbus-binding-tool --prefix=status_broadcast --mode=glib-server
68                         ${CMAKE_CURRENT_SOURCE_DIR}/comm_status_broadcast.xml 
69                         --output=${CMAKE_CURRENT_BINARY_DIR}/comm_status_broadcast_server_dbus_bindings.h
70         )
71
72
73 ### Build modules
74
75 ## client for apps
76 # Send request, get status signal
77 add_library(pkgmgr_installer_client SHARED
78                 comm_client_gdbus.c
79                 comm_pkg_mgr_client_gdbus_generated.c
80                 )
81 set_target_properties(pkgmgr_installer_client PROPERTIES SOVERSION ${VERSION_MAJOR})
82 set_target_properties(pkgmgr_installer_client PROPERTIES VERSION ${VERSION})
83 set_target_properties(pkgmgr_installer_client PROPERTIES COMPILE_FLAGS "${installer_client_pkgs_CFLAGS_str}")
84 target_link_libraries(pkgmgr_installer_client ${installer_client_pkgs_LDFLAGS})
85 add_dependencies(pkgmgr_installer_client comm_pkg_mgr_client_gdbus_generated.h comm_pkg_mgr_client_gdbus_generated.c)
86
87 ## pkg-mgr server for PMS
88 # Get request
89 add_library(pkgmgr_installer_pkg_mgr_server STATIC
90                 comm_pkg_mgr_server.c)
91 set_target_properties(pkgmgr_installer_pkg_mgr_server PROPERTIES SOVERSION ${VERSION_MAJOR})
92 set_target_properties(pkgmgr_installer_pkg_mgr_server PROPERTIES VERSION ${VERSION})
93 set_target_properties(pkgmgr_installer_pkg_mgr_server PROPERTIES COMPILE_FLAGS "${comm_pkgs_CFLAGS_str}")
94 target_link_libraries(pkgmgr_installer_pkg_mgr_server ${comm_pkgs_LDFLAGS})
95 add_dependencies(pkgmgr_installer_pkg_mgr_server comm_pkg_mgr_server_dbus_bindings.h)
96
97 ## status-broadcast server for backend/downloader
98 # Send signal
99 add_library(pkgmgr_installer_status_broadcast_server SHARED
100                 comm_status_broadcast_server_dbus.c
101         )
102 set_target_properties(pkgmgr_installer_status_broadcast_server PROPERTIES SOVERSION ${VERSION_MAJOR})
103 set_target_properties(pkgmgr_installer_status_broadcast_server PROPERTIES VERSION ${VERSION})
104 set_target_properties(pkgmgr_installer_status_broadcast_server PROPERTIES COMPILE_FLAGS "${broadcast_server_pkgs_CFLAGS_str}")
105 target_link_libraries(pkgmgr_installer_status_broadcast_server ${broadcast_server_pkgs_LDFLAGS})
106 add_dependencies(pkgmgr_installer_status_broadcast_server comm_status_broadcast_server_dbus_bindings.h)
107
108
109 ## pkgmgr_installer object (by youmin.ha)
110 # This library is for installer backend
111 add_library(pkgmgr_installer SHARED pkgmgr_installer.c)
112 set_target_properties(pkgmgr_installer PROPERTIES SOVERSION ${VERSION_MAJOR})
113 set_target_properties(pkgmgr_installer PROPERTIES VERSION ${VERSION})
114 set_target_properties(pkgmgr_installer PROPERTIES COMPILE_FLAGS "${installer_pkgs_CFLAGS_str}")
115 target_link_libraries(pkgmgr_installer pkgmgr_installer_status_broadcast_server ${installer_pkgs_LDFLAGS})
116
117
118 ### Create pc file
119 configure_file(pkgmgr-installer-client.pc.in ${CMAKE_CURRENT_BINARY_DIR}/pkgmgr-installer-client.pc @ONLY)
120 configure_file(pkgmgr-installer-status-broadcast-server.pc.in ${CMAKE_CURRENT_BINARY_DIR}/pkgmgr-installer-status-broadcast-server.pc @ONLY)
121 configure_file(pkgmgr-installer.pc.in ${CMAKE_CURRENT_BINARY_DIR}/pkgmgr-installer.pc @ONLY)
122
123
124 ## Install
125 INSTALL(TARGETS 
126                         pkgmgr_installer_client 
127                         pkgmgr_installer_status_broadcast_server
128                         pkgmgr_installer
129             DESTINATION ${LIB_INSTALL_DIR}
130                 COMPONENT RuntimeLibraries)
131 INSTALL(FILES 
132                         comm_client.h 
133                         comm_status_broadcast_server.h
134                         comm_config.h
135                         pkgmgr_installer.h
136                 DESTINATION include/pkgmgr)
137
138
139 INSTALL(FILES 
140                 ${CMAKE_CURRENT_BINARY_DIR}/pkgmgr-installer-client.pc 
141                 ${CMAKE_CURRENT_BINARY_DIR}/pkgmgr-installer-status-broadcast-server.pc 
142                 ${CMAKE_CURRENT_BINARY_DIR}/pkgmgr-installer.pc 
143         DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)