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