@@ -8,7 +8,7 @@ include(CheckCXXSymbolExists)
88# Paths
99
1010set (BIONIC_SOURCES_DIR "${REPO_ROOT_DIR} /src-ThirdParty/bionic" )
11- set (ROBIN_MAP_DIR " ${EXTERNAL_DIR} /robin-map" )
11+ set (BUILD_STATIC_LIBRARY OFF )
1212
1313if (DEBUG_BUILD)
1414 # Convince NDK to really optimize our Debug builds. Without this, NDK's cmake toolchain definition
@@ -17,6 +17,8 @@ if(DEBUG_BUILD)
1717 set (XA_COMPILER_FLAGS_DEBUG "-fno-limit-debug-info -O2" )
1818 set (CMAKE_C_FLAGS_DEBUG ${XA_COMPILER_FLAGS_DEBUG} )
1919 set (CMAKE_CXX_FLAGS_DEBUG ${XA_COMPILER_FLAGS_DEBUG} )
20+ elseif (NOT ANALYZERS_ENABLED)
21+ set (BUILD_STATIC_LIBRARY ON )
2022endif ()
2123
2224# Library directories
@@ -42,6 +44,7 @@ endif()
4244# Sources
4345string (TOLOWER ${CMAKE_BUILD_TYPE} XAMARIN_MONO_ANDROID_SUFFIX)
4446set (XAMARIN_MONO_ANDROID_LIB "mono-android${CHECKED_BUILD_INFIX} .${XAMARIN_MONO_ANDROID_SUFFIX} " )
47+ set (XAMARIN_MONO_ANDROID_STATIC_LIB "${XAMARIN_MONO_ANDROID_LIB} -static" )
4548set (XAMARIN_MONO_ANDROID_PERFETTO_LIB "mono-android-perfetto.${XAMARIN_MONO_ANDROID_SUFFIX} " )
4649
4750list (APPEND XAMARIN_MONODROID_COMMON_SOURCES
@@ -50,6 +53,7 @@ list(APPEND XAMARIN_MONODROID_COMMON_SOURCES
5053 embedded-assemblies-zip.cc
5154 embedded-assemblies.cc
5255 globals.cc
56+ internal -pinvokes.cc
5357 jni-remapping.cc
5458 mono-log -adapter.cc
5559 monodroid-glue.cc
@@ -60,9 +64,7 @@ list(APPEND XAMARIN_MONODROID_COMMON_SOURCES
6064 osbridge.cc
6165 pinvoke-override-api.cc
6266 runtime-util.cc
63- timing.cc
6467 timezones.cc
65- timing-internal .cc
6668 xamarin_getifaddrs.cc
6769)
6870
@@ -99,9 +101,22 @@ add_clang_check_sources("${LOCAL_CLANG_CHECK_SOURCES}")
99101# Build
100102configure_file (host-config.h.in ${CMAKE_CURRENT_BINARY_DIR} /include /host-config.h)
101103
102- macro (set_common_monodroid_properties TARGET )
104+ add_library (
105+ ${XAMARIN_MONO_ANDROID_LIB}
106+ SHARED ${XAMARIN_MONODROID_SOURCES}
107+ )
108+
109+ if (BUILD_STATIC_LIBRARY)
110+ add_library (
111+ ${XAMARIN_MONO_ANDROID_STATIC_LIB}
112+ STATIC
113+ ${XAMARIN_MONODROID_SOURCES}
114+ )
115+ endif ()
116+
117+ macro (lib_target_options TARGET_NAME)
103118 target_compile_definitions (
104- ${TARGET }
119+ ${TARGET_NAME }
105120 PRIVATE
106121 HAVE_CONFIG_H
107122 HAVE_LZ4
@@ -114,38 +129,45 @@ macro(set_common_monodroid_properties TARGET)
114129
115130 if (DONT_INLINE)
116131 target_compile_definitions (
117- ${TARGET }
132+ ${TARGET_NAME }
118133 PRIVATE
119134 NO_INLINE
120135 )
121136 endif ()
122137
123138 if (DEBUG_BUILD AND NOT DISABLE_DEBUG)
124139 target_compile_definitions (
125- ${TARGET }
140+ ${TARGET_NAME }
126141 PRIVATE
127142 DEBUG
128143 )
129144 endif ()
130145
146+ if (ENABLE_TIMING)
147+ target_compile_definitions (
148+ ${TARGET_NAME}
149+ PRIVATE
150+ MONODROID_TIMING
151+ )
152+ endif ()
153+
131154 target_compile_options (
132- ${TARGET }
155+ ${TARGET_NAME }
133156 PRIVATE
134157 ${XA_DEFAULT_SYMBOL_VISIBILITY}
135158 ${XA_COMMON_CXX_ARGS}
136159 )
137160
138161 target_include_directories (
139- ${TARGET } BEFORE
162+ ${TARGET_NAME } BEFORE
140163 PRIVATE
141- ${CMAKE_CURRENT_BINARY_DIR} /include /
142- ${NATIVE_TRACING_INCLUDE_DIRS}
164+ ${CMAKE_CURRENT_BINARY_DIR} /include
143165 ${EXTERNAL_DIR}
144166 ${ROBIN_MAP_DIR} /include
145167 )
146168
147169 target_include_directories (
148- ${TARGET }
170+ ${TARGET_NAME }
149171 SYSTEM PRIVATE
150172 ${SYSROOT_CXX_INCLUDE_DIR}
151173 ${MONO_RUNTIME_INCLUDE_DIR}
@@ -154,67 +176,71 @@ macro(set_common_monodroid_properties TARGET)
154176 )
155177
156178 target_link_directories (
157- ${TARGET }
179+ ${TARGET_NAME }
158180 PRIVATE
159181 ${NET_RUNTIME_DIR} /native
160182 )
161183
162184 target_link_options (
163- ${TARGET }
185+ ${TARGET_NAME }
164186 PRIVATE
165187 ${XA_DEFAULT_SYMBOL_VISIBILITY}
166188 ${XA_COMMON_CXX_LINKER_ARGS}
167189 ${XA_CXX_DSO_LINKER_ARGS}
168190 )
169- endmacro ()
191+
192+ target_link_libraries (
193+ ${TARGET_NAME}
194+ ${LINK_LIBS}
195+ xa::xamarin-app
196+ xa::runtime-base
197+ xa::java-interop
198+ xa::lz4
199+ -lmonosgen-2.0
200+ -llog
201+ )
202+ endmacro ()
170203
171204if (NOT ENABLE_PERFETTO)
172205 add_library (
173206 ${XAMARIN_MONO_ANDROID_LIB}
174207 SHARED ${XAMARIN_MONODROID_SOURCES}
175208 )
176209
177- set_common_monodroid_properties(${XAMARIN_MONO_ANDROID_LIB} )
178- xa_add_compile_definitions(${XAMARIN_MONO_ANDROID_LIB} )
210+ if (BUILD_STATIC_LIBRARY)
211+ lib_target_options(${XAMARIN_MONO_ANDROID_STATIC_LIB} )
212+ xa_add_compile_definitions(${XAMARIN_MONO_ANDROID_STATIC_LIB} )
179213
180- if (ENABLE_TIMING)
181- target_compile_definitions (
182- ${XAMARIN_MONO_ANDROID_LIB }
183- PRIVATE
184- MONODROID_TIMING
214+ target_link_libraries (
215+ ${XAMARIN_MONO_ANDROID_STATIC_LIB}
216+ ${LINK_LIBS }
217+ ${SHARED_LIB_NAME}
218+ xa::pinvoke-override-precompiled
185219 )
186220 endif ()
187221
222+ lib_target_options(${XAMARIN_MONO_ANDROID_LIB} )
223+ xa_add_compile_definitions(${XAMARIN_MONO_ANDROID_LIB} )
224+
188225 target_link_libraries (
189226 ${XAMARIN_MONO_ANDROID_LIB}
190227 ${LINK_LIBS}
191- xa::xamarin-app
192228 ${SHARED_LIB_NAME}
193- xa::runtime-base
194- xa::java-interop
195- xa::lz4
196- -lmonosgen-2.0
197- -llog
229+ xa::pinvoke-override-precompiled
198230 )
199231else ()
200232 add_library (
201233 ${XAMARIN_MONO_ANDROID_PERFETTO_LIB}
202234 SHARED ${XAMARIN_MONODROID_PERFETTO_SOURCES}
203235 )
204236
205- set_common_monodroid_properties (${XAMARIN_MONO_ANDROID_PERFETTO_LIB} )
237+ lib_target_options (${XAMARIN_MONO_ANDROID_PERFETTO_LIB} )
206238 xa_add_compile_definitions(${XAMARIN_MONO_ANDROID_PERFETTO_LIB} )
207239
208240 target_link_libraries (
209241 ${XAMARIN_MONO_ANDROID_PERFETTO_LIB}
210242 ${LINK_LIBS}
211- xa::xamarin-app
212243 xa::shared-no -abi
213- xa::runtime-base
214- xa::java-interop
215- xa::lz4
216- -lmonosgen-2.0
217- -llog
244+ xa::pinvoke-override-precompiled
218245 )
219246endif ()
220-
0 commit comments