Refactor sigchild
[platform/core/appfw/launchpad.git] / CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
2 SET (this_target_pool launchpad_pool)
3 SET (this_target_loader launchpad_loader)
4 SET (this_target_lib launchpad)
5 SET (VERSION_MAJOR 0)
6
7 INCLUDE(FindPkgConfig)
8 PKG_CHECK_MODULES(${this_target_pool} REQUIRED
9         dlog
10         libsystemd-daemon
11         security-manager
12         bundle
13         gio-2.0
14         ttrace
15         vconf
16         libtzplatform-config
17         )
18
19 FOREACH(flag ${${this_target_pool}_CFLAGS})
20         SET(EXTRA_CFLAGS_pool "${EXTRA_CFLAGS_pool} ${flag}")
21 ENDFOREACH(flag)
22
23 PKG_CHECK_MODULES(${this_target_loader} REQUIRED
24         dlog
25         ecore
26         elementary
27         security-manager
28         bundle
29         aul
30         vconf
31         )
32
33 FOREACH(flag ${${this_target_loader}_CFLAGS})
34         SET(EXTRA_CFLAGS_loader "${EXTRA_CFLAGS_loader} ${flag}")
35 ENDFOREACH(flag)
36
37 PKG_CHECK_MODULES(${this_target_lib} REQUIRED
38         dlog
39         bundle
40         aul
41         security-manager
42         )
43
44 FOREACH(flag ${${this_target_lib}_CFLAGS})
45         SET(EXTRA_CFLAGS_lib "${EXTRA_CFLAGS_lib} ${flag}")
46 ENDFOREACH(flag)
47
48 SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -Wl,-zdefs" )
49 SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -fvisibility=hidden")
50 SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -fPIE")
51 SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -fdata-sections -ffunction-sections -Wl,--gc-sections")
52 SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -D_FILE_OFFSET_BITS=64")
53 SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -Werror")
54
55 SET(EXTRA_CFLAGS_pool "${EXTRA_CFLAGS_pool} ${EXTRA_CFLAGS_common}")
56 SET(EXTRA_CFLAGS_loader "${EXTRA_CFLAGS_loader} ${EXTRA_CFLAGS_common}")
57 SET(EXTRA_CFLAGS_lib "${EXTRA_CFLAGS_lib} ${EXTRA_CFLAGS_common}")
58
59 SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
60 SET(CMAKE_C_FLAGS_RELEASE "-O2")
61 SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
62
63 ADD_DEFINITIONS("-DSHARE_PREFIX=\"/usr/share/aul\"")
64 IF(_APPFW_FEATURE_PRIORITY_CHANGE)
65         ADD_DEFINITIONS("-D_APPFW_FEATURE_PRIORITY_CHANGE")
66 ENDIF(_APPFW_FEATURE_PRIORITY_CHANGE)
67
68 ADD_DEFINITIONS("-DLAUNCHPAD_LOG")
69 ADD_DEFINITIONS("-DPRELOAD_ACTIVATE")
70 ADD_DEFINITIONS("-DPREEXEC_ACTIVATE")
71 #ADD_DEFINITIONS("-DPERF_ACTIVATE")
72
73 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/inc)
74
75 # launchpad-loader
76 SET(LAUNCHPAD_LOADER "launchpad-loader")
77 SET(${LAUNCHPAD_LOADER}_SOURCE_FILES
78         src/launchpad_loader.c
79         src/launchpad_common.c
80         src/launchpad_lib.c
81         )
82 ADD_EXECUTABLE(${LAUNCHPAD_LOADER} ${${LAUNCHPAD_LOADER}_SOURCE_FILES})
83
84 # To support 2.x applications which use their own shared libraries.
85 # Since we cannot set LD_LIBRARY_PATH directly by security issue, we make the
86 # dynamic linker looks in the CWD forcely.
87 TARGET_LINK_LIBRARIES(${LAUNCHPAD_LOADER} "-ldl -Wl,-rpath,:")
88 TARGET_LINK_LIBRARIES(${LAUNCHPAD_LOADER} ${${this_target_loader}_LDFLAGS} "-pie")
89 SET_TARGET_PROPERTIES(${LAUNCHPAD_LOADER} PROPERTIES COMPILE_FLAGS ${EXTRA_CFLAGS_loader})
90 SET_TARGET_PROPERTIES(${LAUNCHPAD_LOADER}
91         PROPERTIES SKIP_BUILD_RPATH TRUE
92         ) # remove rpath option that is automatically generated by cmake.
93 INSTALL(TARGETS ${LAUNCHPAD_LOADER} DESTINATION bin)
94
95 # launchpad-process-pool
96 SET(LAUNCHPAD_PROCESS_POOL "launchpad-process-pool")
97 SET(${LAUNCHPAD_PROCESS_POOL}_SOURCE_FILES
98         src/launchpad.c
99         src/launchpad_common.c
100         src/loader_info.c
101         src/launcher_info.c
102         src/debugger_info.c
103         src/launchpad_debug.c
104         src/launchpad_signal.c
105         )
106 ADD_EXECUTABLE(${LAUNCHPAD_PROCESS_POOL} ${${LAUNCHPAD_PROCESS_POOL}_SOURCE_FILES})
107
108 TARGET_LINK_LIBRARIES(${LAUNCHPAD_PROCESS_POOL} ${${this_target_pool}_LDFLAGS} "-pie")
109 SET_TARGET_PROPERTIES(${LAUNCHPAD_PROCESS_POOL} PROPERTIES COMPILE_FLAGS ${EXTRA_CFLAGS_pool})
110 SET_TARGET_PROPERTIES(${LAUNCHPAD_PROCESS_POOL}
111         PROPERTIES SKIP_BUILD_RPATH TRUE
112         ) # remove rpath option that is automatically generated by cmake.
113
114 CONFIGURE_FILE(packaging/default.debugger.in packaging/default.debugger @ONLY)
115 INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/packaging/default.debugger DESTINATION share/aul)
116 INSTALL(TARGETS ${LAUNCHPAD_PROCESS_POOL} DESTINATION bin)
117
118 CONFIGURE_FILE(packaging/default.loader.in packaging/default.loader @ONLY)
119 INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/packaging/default.loader DESTINATION share/aul)
120
121 # liblaunchpad
122 SET(LAUNCHPAD_LIB "launchpad")
123 ADD_LIBRARY(${LAUNCHPAD_LIB} SHARED
124                 src/launchpad_lib.c
125                 src/launchpad_common.c
126                 )
127 SET_TARGET_PROPERTIES(${LAUNCHPAD_LIB} PROPERTIES SOVERSION ${VERSION_MAJOR})
128 SET_TARGET_PROPERTIES(${LAUNCHPAD_LIB} PROPERTIES VERSION ${VERSION})
129 SET_TARGET_PROPERTIES(${LAUNCHPAD_LIB} PROPERTIES COMPILE_FLAGS ${EXTRA_CFLAGS_lib})
130 TARGET_LINK_LIBRARIES(${LAUNCHPAD_LIB} ${${this_target_lib}_LDFLAGS} "-ldl")
131
132 INSTALL(TARGETS ${LAUNCHPAD_LIB} DESTINATION ${LIB_INSTALL_DIR} COMPONENT RuntimeLibraries)
133 INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/inc/launchpad.h DESTINATION include/launchpad)
134 CONFIGURE_FILE(launchpad.pc.in launchpad.pc @ONLY)
135 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/launchpad.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
136
137
138