summaryrefslogtreecommitdiff
path: root/NativeLauncher/CMakeLists.txt
blob: f8a1697002fbab3f075b24ab38834d397a8ebbf8 (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
141
142
143
144
145
146
147
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
PROJECT("dotnet-tools")

MESSAGE("CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")

IF(DEFINED NO_TIZEN)
	SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -DNO_TIZEN")
ELSE(DEFINED NO_TIZEN)
	INCLUDE(FindPkgConfig)
	PKG_CHECK_MODULES(${PROJECT_NAME} REQUIRED aul pkgmgr-info pkgmgr-installer dlog ecore bundle dlog launchpad elementary glib-2.0 capi-appfw-app-control capi-appfw-service-application)
ENDIF(DEFINED NO_TIZEN)

FOREACH(flag ${${PROJECT_NAME}_CFLAGS})
	SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
ENDFOREACH(flag)

IF(DEFINED LAUNCHER_CONFIG_PATH)
	SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -DLAUNCHER_CONFIG_PATH=${LAUNCHER_CONFIG_PATH}")
ENDIF(DEFINED LAUNCHER_CONFIG_PATH)

IF(DEFINED CORECLR_LAUNCHER_ASSEMBLY_PATH)
	SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -DCORECLR_LAUNCHER_ASSEMBLY_PATH=${CORECLR_LAUNCHER_ASSEMBLY_PATH}")
ENDIF(DEFINED CORECLR_LAUNCHER_ASSEMBLY_PATH)

IF(DEFINED DEVICE_API_DIR)
	SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -DDEVICE_API_DIR=${DEVICE_API_DIR}")
ENDIF(DEFINED DEVICE_API_DIR)

IF(DEFINED RUNTIME_DIR)
	SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -DRUNTIME_DIR=${RUNTIME_DIR}")
ENDIF(DEFINED RUNTIME_DIR)

IF(DEFINED CROSSGEN_PATH)
	SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -DCROSSGEN_PATH=${CROSSGEN_PATH}")
ENDIF(DEFINED CROSSGEN_PATH)

IF(DEFINED VERSION)
	SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -DVERSION=${VERSION}")
ENDIF(DEFINED VERSION)

IF(DEFINED NATIVE_LIB_DIR)
	SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -DNATIVE_LIB_DIR=${NATIVE_LIB_DIR}")
ENDIF(DEFINED NATIVE_LIB_DIR)

IF(USE_MANAGED_LAUNCHER STREQUAL "ENABLE")
	ADD_DEFINITIONS("-DUSE_MANAGED_LAUNCHER")
ENDIF(USE_MANAGED_LAUNCHER)

OPTION(NOT_USE_FUNCTION "Remove build warning" OFF)
IF(NOT_USE_FUNCTION)
	ADD_DEFINITIONS("-DNOT_USE_FUNCTION")
ENDIF(NOT_USE_FUNCTION)


SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -pthread -std=c++11 -Wl,--no-as-needed -ggdb")
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -Wl,-zdefs" )
#SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden")
#SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fPIE")
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fdata-sections -ffunction-sections -Wl,--gc-sections")
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -D_FILE_OFFSET_BITS=64")
#SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -DLAUNCHING_TIME_MEASURE")

SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
SET(CMAKE_CXX_FLAGS_DEBUG "-O2 -g")
SET(CMAKE_CXX_FLAGS_RELEASE "-O2")
SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")

#SET(${PROJECT_NAME}_LDFLAGS ${${PROJECT_NAME}_LDFLAGS} "-pie")

INCLUDE_DIRECTORIES(inc launcher util)

SET(DOTNET_LAUNCHER "dotnet-launcher")
SET(${DOTNET_LAUNCHER}_SOURCE_FILES
	launcher/main.cc
	util/utils.cc
	launcher/launcher.cc
	launcher/dotnet/dotnet_launcher.cc
)
ADD_EXECUTABLE(${DOTNET_LAUNCHER} ${${DOTNET_LAUNCHER}_SOURCE_FILES})
SET_TARGET_PROPERTIES(${DOTNET_LAUNCHER} 	PROPERTIES COMPILE_FLAGS "-fPIE")


SET(SCD_LAUNCHER "scd-launcher")
SET(${SCD_LAUNCHER}_SOURCE_FILES
	launcher/dotnet/scd_launcher.cc
)
ADD_EXECUTABLE(${SCD_LAUNCHER} ${${SCD_LAUNCHER}_SOURCE_FILES})
SET_TARGET_PROPERTIES(${SCD_LAUNCHER} 	PROPERTIES COMPILE_FLAGS "-fPIE")


IF(NOT DEFINED NO_TIZEN)
	TARGET_LINK_LIBRARIES(${SCD_LAUNCHER} capi-appfw-app-control dlog appcore-agent)
ENDIF(NOT DEFINED NO_TIZEN)
TARGET_LINK_LIBRARIES(${SCD_LAUNCHER} ${${PROJECT_NAME}_LDFLAGS} "-pie -ldl -lpthread")


IF(NOT DEFINED NO_TIZEN)
	TARGET_LINK_LIBRARIES(${DOTNET_LAUNCHER} aul)
ENDIF(NOT DEFINED NO_TIZEN)
TARGET_LINK_LIBRARIES(${DOTNET_LAUNCHER} ${${PROJECT_NAME}_LDFLAGS} "-pie -ldl -lpthread")

SET_TARGET_PROPERTIES(${DOTNET_LAUNCHER}
	PROPERTIES SKIP_BUILD_RPATH TRUE
) # remove rpath option that is automatically generated by cmake.

SET(NITOOL "nitool")
SET(${NITOOL}_SOURCE_FILES
	util/utils.cc
	installer-plugin/common.cc
	installer-plugin/nitool.cc
)
ADD_EXECUTABLE(${NITOOL} ${${NITOOL}_SOURCE_FILES})
SET_TARGET_PROPERTIES(${NITOOL} 	PROPERTIES COMPILE_FLAGS "-fPIE")
TARGET_LINK_LIBRARIES(${NITOOL} ${${PROJECT_NAME}_LDFLAGS} "-pie")

SET(INSTALLER_PLUGIN "ui-application")
SET(${INSTALLER_PLUGIN}_SOURCE_FILES
	util/utils.cc
	installer-plugin/common.cc
	installer-plugin/ui-application.cc
)
ADD_LIBRARY(${INSTALLER_PLUGIN} SHARED ${${INSTALLER_PLUGIN}_SOURCE_FILES})
SET_TARGET_PROPERTIES(${INSTALLER_PLUGIN} 	PROPERTIES COMPILE_FLAGS "-fPIC")
TARGET_LINK_LIBRARIES(${INSTALLER_PLUGIN} ${${PROJECT_NAME}_LDFLAGS})


SET(PREFER_DOTNET_AOT_PLUGIN "prefer_dotnet_aot_plugin")
SET(${PREFER_DOTNET_AOT_PLUGIN}_SOURCE_FILES
	util/utils.cc
	installer-plugin/common.cc
	installer-plugin/prefer_dotnet_aot_plugin.cc
)
ADD_LIBRARY(${PREFER_DOTNET_AOT_PLUGIN} SHARED ${${PREFER_DOTNET_AOT_PLUGIN}_SOURCE_FILES})
SET_TARGET_PROPERTIES(${PREFER_DOTNET_AOT_PLUGIN} 	PROPERTIES COMPILE_FLAGS "-fPIC")
TARGET_LINK_LIBRARIES(${PREFER_DOTNET_AOT_PLUGIN} ${${PROJECT_NAME}_LDFLAGS})


IF(NOT DEFINED NO_TIZEN)
	INSTALL(TARGETS ${DOTNET_LAUNCHER} DESTINATION ${BINDIR})
        INSTALL(TARGETS ${SCD_LAUNCHER} DESTINATION ${BINDIR})
	INSTALL(TARGETS ${NITOOL} DESTINATION ${BINDIR})
	INSTALL(TARGETS ${INSTALLER_PLUGIN} DESTINATION ${INSTALL_PLUGIN_DIR})
	INSTALL(TARGETS ${PREFER_DOTNET_AOT_PLUGIN} DESTINATION ${INSTALL_MDPLUGIN_DIR})
	INSTALL(FILES dotnet.loader DESTINATION ${LOADERDIR})
	INSTALL(FILES dotnet.launcher DESTINATION ${LOADERDIR})
	INSTALL(FILES dotnet.debugger DESTINATION ${LOADERDIR})
ENDIF(NOT DEFINED NO_TIZEN)