Skip to content

Commit c0d2402

Browse files
committed
Merge branch 'main' into dev/grendel/perfetto-integration
* main: Native runtime reorganization (#9113)
2 parents fb2caa9 + c42b48d commit c0d2402

38 files changed

+2328
-2702
lines changed

build-tools/scripts/generate-pinvoke-tables.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ MY_DIR="$(dirname $0)"
33
HOST="$(uname | tr A-Z a-z)"
44

55
NATIVE_DIR="${MY_DIR}/../../src/native"
6-
MONODROID_SOURCE_DIR="${NATIVE_DIR}/monodroid"
6+
MONODROID_SOURCE_DIR="${NATIVE_DIR}/pinvoke-override"
77
GENERATOR_SOURCE="${MONODROID_SOURCE_DIR}/generate-pinvoke-tables.cc"
88
GENERATOR_BINARY="${MONODROID_SOURCE_DIR}/generate-pinvoke-tables"
99
TARGET_FILE="${MONODROID_SOURCE_DIR}/pinvoke-tables.include"

src/native/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ file(REAL_PATH "../../" REPO_ROOT_DIR)
150150
set(EXTERNAL_DIR "${REPO_ROOT_DIR}/external")
151151
set(JAVA_INTEROP_SRC_PATH "${EXTERNAL_DIR}/Java.Interop/src/java-interop")
152152
set(LIBUNWIND_SOURCE_DIR "${EXTERNAL_DIR}/libunwind")
153-
153+
set(ROBIN_MAP_DIR "${EXTERNAL_DIR}/robin-map")
154154

155155
#
156156
# Include directories
@@ -476,6 +476,7 @@ add_subdirectory(java-interop)
476476
add_subdirectory(xamarin-app-stub)
477477
add_subdirectory(runtime-base)
478478
add_subdirectory(tracing)
479+
add_subdirectory(pinvoke-override)
479480

480481
if(DEBUG_BUILD)
481482
add_subdirectory(xamarin-debug-app-helper)

src/native/java-interop/CMakeLists.txt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,12 @@ target_compile_options(
3737
${XA_COMMON_CXX_ARGS}
3838
)
3939

40-
set_target_properties(
41-
${LIB_NAME}
42-
PROPERTIES
43-
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
44-
)
40+
if(DEBUG_BUILD)
41+
set_target_properties(
42+
${LIB_NAME}
43+
PROPERTIES
44+
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
45+
)
46+
endif()
4547

4648
xa_add_compile_definitions(${LIB_NAME})

src/native/libstub/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ endmacro()
3838

3939
xa_add_stub_library(c)
4040
xa_add_stub_library(m)
41+
xa_add_stub_library(z)
4142

4243
# These two are used by the marshal methods tracing library when linking libxamarin-app.so
4344
xa_add_stub_library(log)

src/native/lz4/CMakeLists.txt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,12 @@ target_include_directories(
3030
"$<BUILD_INTERFACE:${LZ4_INCLUDE_DIR}>"
3131
)
3232

33-
set_target_properties(
34-
${LIB_NAME}
35-
PROPERTIES
36-
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
37-
)
33+
if(DEBUG_BUILD)
34+
set_target_properties(
35+
${LIB_NAME}
36+
PROPERTIES
37+
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
38+
)
39+
endif()
3840

3941
xa_add_compile_definitions(${LIB_NAME})

src/native/monodroid/CMakeLists.txt

Lines changed: 62 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ include(CheckCXXSymbolExists)
88
# Paths
99

1010
set(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

1313
if(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)
2022
endif()
2123

2224
# Library directories
@@ -42,6 +44,7 @@ endif()
4244
# Sources
4345
string(TOLOWER ${CMAKE_BUILD_TYPE} XAMARIN_MONO_ANDROID_SUFFIX)
4446
set(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")
4548
set(XAMARIN_MONO_ANDROID_PERFETTO_LIB "mono-android-perfetto.${XAMARIN_MONO_ANDROID_SUFFIX}")
4649

4750
list(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
100102
configure_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

171204
if(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
)
199231
else()
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
)
219246
endif()
220-

src/native/monodroid/embedded-assemblies.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
#include "xamarin-app.hh"
3434
#include "cpp-util.hh"
3535
#include "monodroid-glue-internal.hh"
36+
#include "monodroid-state.hh"
3637
#include "startup-aware-lock.hh"
3738
#include "timing-internal.hh"
3839
#include "search.hh"
@@ -179,7 +180,7 @@ EmbeddedAssemblies::map_runtime_file (XamarinAndroidBundledAssembly& file) noexc
179180
close (fd);
180181
}
181182

182-
if (MonodroidRuntime::is_startup_in_progress ()) {
183+
if (MonodroidState::is_startup_in_progress ()) {
183184
file.data = static_cast<uint8_t*>(map_info.area);
184185
} else {
185186
uint8_t *expected_null = nullptr;

0 commit comments

Comments
 (0)