summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
blob: 15735c75e1b7de08c32375b3e6551c16bad94e5f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
SET (this_target_pool launchpad_pool)
SET (this_target_loader launchpad_loader)
SET (this_target_lib launchpad)
SET (VERSION_MAJOR 0)

INCLUDE(FindPkgConfig)
PKG_CHECK_MODULES(${this_target_pool} REQUIRED
	dlog
	libsystemd-daemon
	security-manager
	bundle
	gio-2.0
	ttrace
	vconf
	libtzplatform-config
	)

FOREACH(flag ${${this_target_pool}_CFLAGS})
	SET(EXTRA_CFLAGS_pool "${EXTRA_CFLAGS_pool} ${flag}")
ENDFOREACH(flag)

PKG_CHECK_MODULES(${this_target_loader} REQUIRED
	dlog
	ecore
	elementary
	security-manager
	bundle
	aul
	vconf
	buxton2
	libsystemd-daemon
	)

FOREACH(flag ${${this_target_loader}_CFLAGS})
	SET(EXTRA_CFLAGS_loader "${EXTRA_CFLAGS_loader} ${flag}")
ENDFOREACH(flag)

PKG_CHECK_MODULES(${this_target_lib} REQUIRED
	dlog
	bundle
	aul
	security-manager
	)

FOREACH(flag ${${this_target_lib}_CFLAGS})
	SET(EXTRA_CFLAGS_lib "${EXTRA_CFLAGS_lib} ${flag}")
ENDFOREACH(flag)

SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -Wl,-zdefs" )
SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -fvisibility=hidden")
SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -fPIE")
SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -fdata-sections -ffunction-sections -Wl,--gc-sections")
SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -D_FILE_OFFSET_BITS=64")
SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -Werror")

SET(EXTRA_CFLAGS_pool "${EXTRA_CFLAGS_pool} ${EXTRA_CFLAGS_common}")
SET(EXTRA_CFLAGS_loader "${EXTRA_CFLAGS_loader} ${EXTRA_CFLAGS_common}")
SET(EXTRA_CFLAGS_lib "${EXTRA_CFLAGS_lib} ${EXTRA_CFLAGS_common}")

SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
SET(CMAKE_C_FLAGS_RELEASE "-O2")
SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")

ADD_DEFINITIONS("-DSHARE_PREFIX=\"/usr/share/aul\"")
IF(_APPFW_FEATURE_PRIORITY_CHANGE)
	ADD_DEFINITIONS("-D_APPFW_FEATURE_PRIORITY_CHANGE")
ENDIF(_APPFW_FEATURE_PRIORITY_CHANGE)

ADD_DEFINITIONS("-DLAUNCHPAD_LOG")
ADD_DEFINITIONS("-DPRELOAD_ACTIVATE")
ADD_DEFINITIONS("-DPREEXEC_ACTIVATE")
#ADD_DEFINITIONS("-DPERF_ACTIVATE")

INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/inc)

# launchpad-loader
SET(LAUNCHPAD_LOADER "launchpad-loader")
SET(${LAUNCHPAD_LOADER}_SOURCE_FILES
	src/launchpad_loader.c
	src/launchpad_common.c
	src/launchpad_lib.c
	)
ADD_EXECUTABLE(${LAUNCHPAD_LOADER} ${${LAUNCHPAD_LOADER}_SOURCE_FILES})

# To support 2.x applications which use their own shared libraries.
# Since we cannot set LD_LIBRARY_PATH directly by security issue, we make the
# dynamic linker looks in the CWD forcely.
TARGET_LINK_LIBRARIES(${LAUNCHPAD_LOADER} "-ldl -Wl,-rpath,:")
TARGET_LINK_LIBRARIES(${LAUNCHPAD_LOADER} ${${this_target_loader}_LDFLAGS} "-pie")
SET_TARGET_PROPERTIES(${LAUNCHPAD_LOADER} PROPERTIES COMPILE_FLAGS ${EXTRA_CFLAGS_loader})
SET_TARGET_PROPERTIES(${LAUNCHPAD_LOADER}
	PROPERTIES SKIP_BUILD_RPATH TRUE
	) # remove rpath option that is automatically generated by cmake.
INSTALL(TARGETS ${LAUNCHPAD_LOADER} DESTINATION bin)

# launchpad-process-pool
SET(LAUNCHPAD_PROCESS_POOL "launchpad-process-pool")
SET(${LAUNCHPAD_PROCESS_POOL}_SOURCE_FILES
	src/launchpad.c
	src/launchpad_common.c
	src/loader_info.c
	src/launcher_info.c
	src/debugger_info.c
	src/launchpad_debug.c
	src/launchpad_signal.c
	)
ADD_EXECUTABLE(${LAUNCHPAD_PROCESS_POOL} ${${LAUNCHPAD_PROCESS_POOL}_SOURCE_FILES})

TARGET_LINK_LIBRARIES(${LAUNCHPAD_PROCESS_POOL} ${${this_target_pool}_LDFLAGS} "-pie")
SET_TARGET_PROPERTIES(${LAUNCHPAD_PROCESS_POOL} PROPERTIES COMPILE_FLAGS ${EXTRA_CFLAGS_pool})
SET_TARGET_PROPERTIES(${LAUNCHPAD_PROCESS_POOL}
	PROPERTIES SKIP_BUILD_RPATH TRUE
	) # remove rpath option that is automatically generated by cmake.

CONFIGURE_FILE(packaging/default.debugger.in packaging/default.debugger @ONLY)
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/packaging/default.debugger DESTINATION share/aul)
INSTALL(TARGETS ${LAUNCHPAD_PROCESS_POOL} DESTINATION bin)

CONFIGURE_FILE(packaging/default.loader.in packaging/default.loader @ONLY)
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/packaging/default.loader DESTINATION share/aul)

# liblaunchpad
SET(LAUNCHPAD_LIB "launchpad")
ADD_LIBRARY(${LAUNCHPAD_LIB} SHARED
		src/launchpad_lib.c
		src/launchpad_common.c
		)
SET_TARGET_PROPERTIES(${LAUNCHPAD_LIB} PROPERTIES SOVERSION ${VERSION_MAJOR})
SET_TARGET_PROPERTIES(${LAUNCHPAD_LIB} PROPERTIES VERSION ${VERSION})
SET_TARGET_PROPERTIES(${LAUNCHPAD_LIB} PROPERTIES COMPILE_FLAGS ${EXTRA_CFLAGS_lib})
TARGET_LINK_LIBRARIES(${LAUNCHPAD_LIB} ${${this_target_lib}_LDFLAGS} "-ldl")

INSTALL(TARGETS ${LAUNCHPAD_LIB} DESTINATION ${LIB_INSTALL_DIR} COMPONENT RuntimeLibraries)
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/inc/launchpad.h DESTINATION include/launchpad)
CONFIGURE_FILE(launchpad.pc.in launchpad.pc @ONLY)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/launchpad.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)