Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build-tools/scripts/generate-pinvoke-tables.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ MY_DIR="$(dirname $0)"
HOST="$(uname | tr A-Z a-z)"

NATIVE_DIR="${MY_DIR}/../../src/native"
MONODROID_SOURCE_DIR="${NATIVE_DIR}/monodroid"
MONODROID_SOURCE_DIR="${NATIVE_DIR}/pinvoke-override"
GENERATOR_SOURCE="${MONODROID_SOURCE_DIR}/generate-pinvoke-tables.cc"
GENERATOR_BINARY="${MONODROID_SOURCE_DIR}/generate-pinvoke-tables"
TARGET_FILE="${MONODROID_SOURCE_DIR}/pinvoke-tables.include"
Expand Down
3 changes: 2 additions & 1 deletion src/native/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ file(REAL_PATH "../../" REPO_ROOT_DIR)
set(EXTERNAL_DIR "${REPO_ROOT_DIR}/external")
set(JAVA_INTEROP_SRC_PATH "${EXTERNAL_DIR}/Java.Interop/src/java-interop")
set(LIBUNWIND_SOURCE_DIR "${EXTERNAL_DIR}/libunwind")

set(ROBIN_MAP_DIR "${EXTERNAL_DIR}/robin-map")

#
# Include directories
Expand Down Expand Up @@ -449,6 +449,7 @@ add_subdirectory(java-interop)
add_subdirectory(xamarin-app-stub)
add_subdirectory(runtime-base)
add_subdirectory(tracing)
add_subdirectory(pinvoke-override)

if(DEBUG_BUILD)
add_subdirectory(xamarin-debug-app-helper)
Expand Down
12 changes: 7 additions & 5 deletions src/native/java-interop/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,12 @@ target_compile_options(
${XA_COMMON_CXX_ARGS}
)

set_target_properties(
${LIB_NAME}
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
)
if(DEBUG_BUILD)
set_target_properties(
${LIB_NAME}
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
)
endif()

xa_add_compile_definitions(${LIB_NAME})
1 change: 1 addition & 0 deletions src/native/libstub/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ endmacro()

xa_add_stub_library(c)
xa_add_stub_library(m)
xa_add_stub_library(z)

# These two are used by the marshal methods tracing library when linking libxamarin-app.so
xa_add_stub_library(log)
Expand Down
12 changes: 7 additions & 5 deletions src/native/lz4/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,12 @@ target_include_directories(
"$<BUILD_INTERFACE:${LZ4_INCLUDE_DIR}>"
)

set_target_properties(
${LIB_NAME}
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
)
if(DEBUG_BUILD)
set_target_properties(
${LIB_NAME}
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
)
endif()

xa_add_compile_definitions(${LIB_NAME})
167 changes: 93 additions & 74 deletions src/native/monodroid/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ include(CheckCXXSymbolExists)
# Paths

set(BIONIC_SOURCES_DIR "${REPO_ROOT_DIR}/src-ThirdParty/bionic")
set(ROBIN_MAP_DIR "${EXTERNAL_DIR}/robin-map")
set(BUILD_STATIC_LIBRARY OFF)

if(DEBUG_BUILD)
# Convince NDK to really optimize our Debug builds. Without this, NDK's cmake toolchain definition
Expand All @@ -17,6 +17,8 @@ if(DEBUG_BUILD)
set(XA_COMPILER_FLAGS_DEBUG "-fno-limit-debug-info -O2")
set(CMAKE_C_FLAGS_DEBUG ${XA_COMPILER_FLAGS_DEBUG})
set(CMAKE_CXX_FLAGS_DEBUG ${XA_COMPILER_FLAGS_DEBUG})
elseif(NOT ANALYZERS_ENABLED)
set(BUILD_STATIC_LIBRARY ON)
endif()

# Library directories
Expand All @@ -42,13 +44,15 @@ endif()
# Sources
string(TOLOWER ${CMAKE_BUILD_TYPE} XAMARIN_MONO_ANDROID_SUFFIX)
set(XAMARIN_MONO_ANDROID_LIB "mono-android${CHECKED_BUILD_INFIX}.${XAMARIN_MONO_ANDROID_SUFFIX}")
set(XAMARIN_MONO_ANDROID_STATIC_LIB "${XAMARIN_MONO_ANDROID_LIB}-static")

set(XAMARIN_MONODROID_SOURCES
debug-constants.cc
debug.cc
embedded-assemblies-zip.cc
embedded-assemblies.cc
globals.cc
internal-pinvokes.cc
jni-remapping.cc
mono-log-adapter.cc
monodroid-glue.cc
Expand All @@ -58,9 +62,7 @@ set(XAMARIN_MONODROID_SOURCES
osbridge.cc
pinvoke-override-api.cc
runtime-util.cc
timing.cc
timezones.cc
timing-internal.cc
xamarin_getifaddrs.cc
)

Expand Down Expand Up @@ -93,90 +95,107 @@ add_library(
SHARED ${XAMARIN_MONODROID_SOURCES}
)

target_compile_definitions(
${XAMARIN_MONO_ANDROID_LIB}
PRIVATE
HAVE_CONFIG_H
HAVE_LZ4
JI_DLL_EXPORT
JI_NO_VISIBILITY
MONO_DLL_EXPORT
NET
TSL_NO_EXCEPTIONS
)

if(DONT_INLINE)
target_compile_definitions(
${XAMARIN_MONO_ANDROID_LIB}
PRIVATE
NO_INLINE
if(BUILD_STATIC_LIBRARY)
add_library(
${XAMARIN_MONO_ANDROID_STATIC_LIB}
STATIC
${XAMARIN_MONODROID_SOURCES}
)
endif()

if(DEBUG_BUILD AND NOT DISABLE_DEBUG)
macro(lib_target_options TARGET_NAME)
target_compile_definitions(
${XAMARIN_MONO_ANDROID_LIB}
${TARGET_NAME}
PRIVATE
DEBUG
HAVE_CONFIG_H
HAVE_LZ4
JI_DLL_EXPORT
JI_NO_VISIBILITY
MONO_DLL_EXPORT
NET
TSL_NO_EXCEPTIONS
)
endif()

if (ENABLE_TIMING)
target_compile_definitions(
${XAMARIN_MONO_ANDROID_LIB}
if(DONT_INLINE)
target_compile_definitions(
${TARGET_NAME}
PRIVATE
NO_INLINE
)
endif()

if(DEBUG_BUILD AND NOT DISABLE_DEBUG)
target_compile_definitions(
${TARGET_NAME}
PRIVATE
DEBUG
)
endif()

if (ENABLE_TIMING)
target_compile_definitions(
${TARGET_NAME}
PRIVATE
MONODROID_TIMING
)
endif()

target_compile_options(
${TARGET_NAME}
PRIVATE
MONODROID_TIMING
${XA_DEFAULT_SYMBOL_VISIBILITY}
${XA_COMMON_CXX_ARGS}
)
endif()

target_compile_options(
${XAMARIN_MONO_ANDROID_LIB}
PRIVATE
${XA_DEFAULT_SYMBOL_VISIBILITY}
${XA_COMMON_CXX_ARGS}
)

target_include_directories(
${XAMARIN_MONO_ANDROID_LIB} BEFORE
PRIVATE
${CMAKE_CURRENT_BINARY_DIR}/include
${EXTERNAL_DIR}
${ROBIN_MAP_DIR}/include
)
target_include_directories(
${TARGET_NAME} BEFORE
PRIVATE
${CMAKE_CURRENT_BINARY_DIR}/include
${EXTERNAL_DIR}
${ROBIN_MAP_DIR}/include
)

target_include_directories(
${XAMARIN_MONO_ANDROID_LIB}
SYSTEM PRIVATE
${SYSROOT_CXX_INCLUDE_DIR}
${MONO_RUNTIME_INCLUDE_DIR}
${NATIVE_TRACING_INCLUDE_DIRS}
${LIBUNWIND_INCLUDE_DIRS}
)
target_include_directories(
${TARGET_NAME}
SYSTEM PRIVATE
${SYSROOT_CXX_INCLUDE_DIR}
${MONO_RUNTIME_INCLUDE_DIR}
${NATIVE_TRACING_INCLUDE_DIRS}
${LIBUNWIND_INCLUDE_DIRS}
)

target_link_directories(
${XAMARIN_MONO_ANDROID_LIB}
PRIVATE
${NET_RUNTIME_DIR}/native
)
target_link_directories(
${TARGET_NAME}
PRIVATE
${NET_RUNTIME_DIR}/native
)

target_link_options(
${XAMARIN_MONO_ANDROID_LIB}
PRIVATE
${XA_DEFAULT_SYMBOL_VISIBILITY}
${XA_COMMON_CXX_LINKER_ARGS}
${XA_CXX_DSO_LINKER_ARGS}
)
target_link_options(
${TARGET_NAME}
PRIVATE
${XA_DEFAULT_SYMBOL_VISIBILITY}
${XA_COMMON_CXX_LINKER_ARGS}
${XA_CXX_DSO_LINKER_ARGS}
)

target_link_libraries(
${XAMARIN_MONO_ANDROID_LIB}
${LINK_LIBS}
xa::xamarin-app
${SHARED_LIB_NAME}
xa::runtime-base
xa::java-interop
xa::lz4
-lmonosgen-2.0
-llog
)
target_link_libraries(
${TARGET_NAME}
${LINK_LIBS}
xa::xamarin-app
${SHARED_LIB_NAME}
xa::runtime-base
xa::java-interop
xa::pinvoke-override-precompiled
xa::lz4
-lmonosgen-2.0
-llog
)
endmacro ()

lib_target_options(${XAMARIN_MONO_ANDROID_LIB})
xa_add_compile_definitions(${XAMARIN_MONO_ANDROID_LIB})

if(BUILD_STATIC_LIBRARY)
lib_target_options(${XAMARIN_MONO_ANDROID_STATIC_LIB})
xa_add_compile_definitions(${XAMARIN_MONO_ANDROID_STATIC_LIB})
endif()
3 changes: 2 additions & 1 deletion src/native/monodroid/embedded-assemblies.cc
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
#include "xamarin-app.hh"
#include "cpp-util.hh"
#include "monodroid-glue-internal.hh"
#include "monodroid-state.hh"
#include "startup-aware-lock.hh"
#include "timing-internal.hh"
#include "search.hh"
Expand Down Expand Up @@ -179,7 +180,7 @@ EmbeddedAssemblies::map_runtime_file (XamarinAndroidBundledAssembly& file) noexc
close (fd);
}

if (MonodroidRuntime::is_startup_in_progress ()) {
if (MonodroidState::is_startup_in_progress ()) {
file.data = static_cast<uint8_t*>(map_info.area);
} else {
uint8_t *expected_null = nullptr;
Expand Down
Loading