diff --git a/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Wasm.targets b/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Wasm.targets
index b6b47b8a7cc5d9..8c5565cf8c7cc9 100644
--- a/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Wasm.targets
+++ b/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Wasm.targets
@@ -36,7 +36,7 @@
-
+
diff --git a/src/coreclr/nativeaot/Runtime/CMakeLists.txt b/src/coreclr/nativeaot/Runtime/CMakeLists.txt
index 61e15d3b5a1fd0..c68697f292d997 100644
--- a/src/coreclr/nativeaot/Runtime/CMakeLists.txt
+++ b/src/coreclr/nativeaot/Runtime/CMakeLists.txt
@@ -1,3 +1,10 @@
+project(Runtime)
+
+set(FEATURE_PORTABLE_HELPERS 0)
+if(CLR_CMAKE_TARGET_ARCH_WASM)
+ set(FEATURE_PORTABLE_HELPERS 1)
+endif()
+
set(GC_DIR ../../gc)
set(GC_WKS_SVR_SOURCES
@@ -88,9 +95,11 @@ set(STANDALONEGC_ENABLED_SOURCES
clrgc.enabled.cpp
)
-set(FULL_RUNTIME_SOURCES
- ThunksMapping.cpp
-)
+if(FEATURE_PORTABLE_HELPERS)
+ list(APPEND COMMON_RUNTIME_SOURCES ${RUNTIME_DIR}/portable/AllocFast.cpp)
+else()
+ list(APPEND COMMON_RUNTIME_SOURCES ThunksMapping.cpp)
+endif()
include_directories(inc)
@@ -146,15 +155,17 @@ if (WIN32)
${GC_DIR}/windows/gcenv.windows.cpp
)
- list(APPEND FULL_RUNTIME_SOURCES windows/CoffNativeCodeManager.cpp)
-
- if(CLR_CMAKE_TARGET_ARCH_ARM64)
- list(APPEND FULL_RUNTIME_SOURCES
- ../../unwinder/arm64/unwinder.cpp
- )
- include_directories(../../inc)
- include_directories(../../unwinder)
- include_directories(../../unwinder/arm64)
+ if(NOT FEATURE_PORTABLE_HELPERS)
+ list(APPEND COMMON_RUNTIME_SOURCES windows/CoffNativeCodeManager.cpp)
+
+ if(CLR_CMAKE_TARGET_ARCH_ARM64)
+ list(APPEND COMMON_RUNTIME_SOURCES
+ ../../unwinder/arm64/unwinder.cpp
+ )
+ include_directories(../../inc)
+ include_directories(../../unwinder)
+ include_directories(../../unwinder/arm64)
+ endif()
endif()
set(ASM_SUFFIX asm)
@@ -221,35 +232,37 @@ else()
)
endif()
- list(APPEND FULL_RUNTIME_SOURCES
- unix/HardwareExceptions.cpp
- unix/NativeContext.cpp
- unix/UnixSignals.cpp
- unix/UnwindHelpers.cpp
- unix/UnixNativeCodeManager.cpp
- )
-
- include(${CLR_SRC_NATIVE_DIR}/external/llvm-libunwind.cmake)
-
- set(NATIVEAOT_LOCALIZE_LIBUNWIND_SYMBOLS OFF)
- if(CLR_CMAKE_TARGET_UNIX AND NOT CLR_CMAKE_TARGET_APPLE AND NOT CLR_CMAKE_TARGET_ARCH_WASM)
- set(NATIVEAOT_LOCALIZE_LIBUNWIND_SYMBOLS ON)
- endif()
-
- if(NATIVEAOT_LOCALIZE_LIBUNWIND_SYMBOLS)
- # Build the bundled libunwind implementation and the runtime unwinder code
- # that references it into one relocatable object. The runtime sources are
- # part of the partial link so their references to libunwind's implementation
- # symbols are resolved before those symbols are localized.
- set(NATIVEAOT_PRIVATE_LIBUNWIND_SOURCES
+ if(NOT FEATURE_PORTABLE_HELPERS)
+ list(APPEND COMMON_RUNTIME_SOURCES
+ unix/HardwareExceptions.cpp
+ unix/NativeContext.cpp
+ unix/UnixSignals.cpp
unix/UnwindHelpers.cpp
unix/UnixNativeCodeManager.cpp
- ${LLVM_LIBUNWIND_SOURCES}
- ${LLVM_LIBUNWIND_ASM_SOURCES})
- list(REMOVE_ITEM FULL_RUNTIME_SOURCES unix/UnwindHelpers.cpp unix/UnixNativeCodeManager.cpp)
- else()
- list(APPEND FULL_RUNTIME_SOURCES ${LLVM_LIBUNWIND_SOURCES})
- set(RUNTIME_SOURCES_ARCH_ASM ${LLVM_LIBUNWIND_ASM_SOURCES})
+ )
+
+ include(${CLR_SRC_NATIVE_DIR}/external/llvm-libunwind.cmake)
+
+ set(NATIVEAOT_LOCALIZE_LIBUNWIND_SYMBOLS OFF)
+ if(CLR_CMAKE_TARGET_UNIX AND NOT CLR_CMAKE_TARGET_APPLE AND NOT CLR_CMAKE_TARGET_ARCH_WASM)
+ set(NATIVEAOT_LOCALIZE_LIBUNWIND_SYMBOLS ON)
+ endif()
+
+ if(NATIVEAOT_LOCALIZE_LIBUNWIND_SYMBOLS)
+ # Build the bundled libunwind implementation and the runtime unwinder code
+ # that references it into one relocatable object. The runtime sources are
+ # part of the partial link so their references to libunwind's implementation
+ # symbols are resolved before those symbols are localized.
+ set(NATIVEAOT_PRIVATE_LIBUNWIND_SOURCES
+ unix/UnwindHelpers.cpp
+ unix/UnixNativeCodeManager.cpp
+ ${LLVM_LIBUNWIND_SOURCES}
+ ${LLVM_LIBUNWIND_ASM_SOURCES})
+ list(REMOVE_ITEM COMMON_RUNTIME_SOURCES unix/UnwindHelpers.cpp unix/UnixNativeCodeManager.cpp)
+ else()
+ list(APPEND COMMON_RUNTIME_SOURCES ${LLVM_LIBUNWIND_SOURCES})
+ set(RUNTIME_SOURCES_ARCH_ASM ${LLVM_LIBUNWIND_ASM_SOURCES})
+ endif()
endif()
set(ASM_SUFFIX S)
@@ -291,16 +304,24 @@ if (CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_AMD64)
)
endif (CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_AMD64)
-list(APPEND RUNTIME_SOURCES_ARCH_ASM
- ${RUNTIME_DIR}/${ARCH_SOURCES_DIR}/AllocFast.${ASM_SUFFIX}
- ${ARCH_SOURCES_DIR}/DispatchResolve.${ASM_SUFFIX}
- ${ARCH_SOURCES_DIR}/ExceptionHandling.${ASM_SUFFIX}
- ${ARCH_SOURCES_DIR}/GcProbe.${ASM_SUFFIX}
- ${RUNTIME_DIR}/${ARCH_SOURCES_DIR}/MiscStubs.${ASM_SUFFIX}
- ${ARCH_SOURCES_DIR}/PInvoke.${ASM_SUFFIX}
- ${ARCH_SOURCES_DIR}/UniversalTransition.${ASM_SUFFIX}
- ${RUNTIME_DIR}/${ARCH_SOURCES_DIR}/WriteBarriers.${ASM_SUFFIX}
-)
+if(NOT FEATURE_PORTABLE_HELPERS)
+ list(APPEND RUNTIME_SOURCES_ARCH_ASM
+ ${RUNTIME_DIR}/${ARCH_SOURCES_DIR}/AllocFast.${ASM_SUFFIX}
+ ${ARCH_SOURCES_DIR}/DispatchResolve.${ASM_SUFFIX}
+ ${ARCH_SOURCES_DIR}/ExceptionHandling.${ASM_SUFFIX}
+ ${ARCH_SOURCES_DIR}/GcProbe.${ASM_SUFFIX}
+ ${RUNTIME_DIR}/${ARCH_SOURCES_DIR}/MiscStubs.${ASM_SUFFIX}
+ ${ARCH_SOURCES_DIR}/PInvoke.${ASM_SUFFIX}
+ ${ARCH_SOURCES_DIR}/UniversalTransition.${ASM_SUFFIX}
+ ${RUNTIME_DIR}/${ARCH_SOURCES_DIR}/WriteBarriers.${ASM_SUFFIX}
+ )
+
+ if(CLR_CMAKE_TARGET_APPLE)
+ list(APPEND RUNTIME_SOURCES_ARCH_ASM
+ ${ARCH_SOURCES_DIR}/ThunkPoolThunks.${ASM_SUFFIX}
+ )
+ endif()
+endif()
# Add architecture specific folder for looking up headers.
convert_to_absolute_path(ARCH_SOURCES_DIR ${ARCH_SOURCES_DIR})
@@ -379,7 +400,6 @@ set(NATIVEAOT_RUNTIME_DIR ${CMAKE_CURRENT_SOURCE_DIR})
list(APPEND COMMON_RUNTIME_SOURCES ${GC_HEADERS})
convert_to_absolute_path(COMMON_RUNTIME_SOURCES ${COMMON_RUNTIME_SOURCES})
-convert_to_absolute_path(FULL_RUNTIME_SOURCES ${FULL_RUNTIME_SOURCES})
convert_to_absolute_path(GC_WKS_SVR_SOURCES ${GC_WKS_SVR_SOURCES})
convert_to_absolute_path(STANDALONEGC_DISABLED_SOURCES ${STANDALONEGC_DISABLED_SOURCES})
convert_to_absolute_path(STANDALONEGC_ENABLED_SOURCES ${STANDALONEGC_ENABLED_SOURCES})
@@ -388,12 +408,6 @@ convert_to_absolute_path(RUNTIME_SOURCES_ARCH_ASM ${RUNTIME_SOURCES_ARCH_ASM})
convert_to_absolute_path(VXSORT_SOURCES ${VXSORT_SOURCES})
convert_to_absolute_path(DUMMY_VXSORT_SOURCES ${DUMMY_VXSORT_SOURCES})
-if(NOT CLR_CMAKE_TARGET_ARCH_WASM)
- add_subdirectory(Full)
-else()
- add_subdirectory(Portable)
-endif()
-
if(FEATURE_PERFTRACING)
add_subdirectory(eventpipe)
endif()
@@ -407,3 +421,187 @@ if(NOT CLR_CMAKE_TARGET_ARCH_WASM)
add_subdirectory(datadescriptor)
endif()
+
+if(FEATURE_PORTABLE_HELPERS)
+ add_definitions(-DFEATURE_PORTABLE_HELPERS)
+else()
+ set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+ if(NOT CLR_CMAKE_TARGET_APPLE)
+ add_definitions(-DFEATURE_RX_THUNKS)
+ endif()
+
+ if(CLR_CMAKE_TARGET_WIN32 AND CLR_CMAKE_HOST_ARCH_ARM64)
+ # Needed to include AsmOffsets.inc
+ include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR})
+ preprocess_files(RUNTIME_SOURCES_ARCH_ASM ${RUNTIME_SOURCES_ARCH_ASM})
+ endif()
+endif()
+
+if(NATIVEAOT_PRIVATE_LIBUNWIND_SOURCES)
+ add_library(Runtime.PrivateLibunwind OBJECT ${NATIVEAOT_PRIVATE_LIBUNWIND_SOURCES})
+
+ set(NATIVEAOT_PRIVATE_LIBUNWIND_OBJECT "${CMAKE_CURRENT_BINARY_DIR}/Runtime.PrivateLibunwind.o")
+ set(NATIVEAOT_PRIVATE_LIBUNWIND_SYMBOLS "${CMAKE_CURRENT_BINARY_DIR}/Runtime.PrivateLibunwind.localize")
+ set(NATIVEAOT_PRIVATE_LIBUNWIND_SYMBOLS_UNSORTED "${CMAKE_CURRENT_BINARY_DIR}/Runtime.PrivateLibunwind.localize.unsorted")
+ # The relocatable object includes runtime-owned objects so their references to
+ # libunwind implementation symbols are resolved before localization. The
+ # localize list is generated only from the bundled libunwind source objects.
+ set(NATIVEAOT_PRIVATE_LIBUNWIND_SYMBOL_OBJECTS "$,EXCLUDE,.*(UnwindHelpers|UnixNativeCodeManager)\\.cpp\\.o$>")
+
+ add_custom_command(
+ OUTPUT "${NATIVEAOT_PRIVATE_LIBUNWIND_OBJECT}"
+ COMMAND "${CMAKE_COMMAND}" -E rm -f
+ "${NATIVEAOT_PRIVATE_LIBUNWIND_OBJECT}"
+ "${NATIVEAOT_PRIVATE_LIBUNWIND_SYMBOLS_UNSORTED}"
+ # Generate the objcopy symbol list from libunwind-owned object files only.
+ COMMAND sh -c "nm_tool=\"$1\" && shift && \"$nm_tool\" --extern-only --defined-only --format=just-symbols \"$@\" > \"$0\""
+ "${NATIVEAOT_PRIVATE_LIBUNWIND_SYMBOLS_UNSORTED}"
+ "${CMAKE_NM}"
+ ${NATIVEAOT_PRIVATE_LIBUNWIND_SYMBOL_OBJECTS}
+ COMMAND sort -u -o
+ "${NATIVEAOT_PRIVATE_LIBUNWIND_SYMBOLS}"
+ "${NATIVEAOT_PRIVATE_LIBUNWIND_SYMBOLS_UNSORTED}"
+ COMMAND "${CMAKE_COMMAND}" -E rm -f
+ "${NATIVEAOT_PRIVATE_LIBUNWIND_SYMBOLS_UNSORTED}"
+ COMMAND "${CMAKE_LINKER}" -r $ -o "${NATIVEAOT_PRIVATE_LIBUNWIND_OBJECT}"
+ COMMAND "${CMAKE_OBJCOPY}"
+ "--localize-symbols=${NATIVEAOT_PRIVATE_LIBUNWIND_SYMBOLS}"
+ "${NATIVEAOT_PRIVATE_LIBUNWIND_OBJECT}"
+ DEPENDS
+ Runtime.PrivateLibunwind
+ $
+ BYPRODUCTS "${NATIVEAOT_PRIVATE_LIBUNWIND_SYMBOLS}"
+ COMMENT "Privatizing NativeAOT libunwind symbols"
+ COMMAND_EXPAND_LISTS
+ VERBATIM
+ )
+ set_source_files_properties("${NATIVEAOT_PRIVATE_LIBUNWIND_OBJECT}" PROPERTIES
+ EXTERNAL_OBJECT TRUE
+ GENERATED TRUE)
+endif()
+
+get_compile_definitions(DEFINITIONS)
+set(ASM_OFFSETS_CSPP ${NATIVEAOT_RUNTIME_DIR}/../Runtime.Base/src/AsmOffsets.cspp)
+
+if(WIN32)
+ set(COMPILER_LANGUAGE "")
+ set(PREPROCESSOR_FLAGS -EP -nologo)
+ set(ASM_OFFSETS_CPP ${NATIVEAOT_RUNTIME_DIR}/windows/AsmOffsets.cpp)
+else()
+ set(COMPILER_LANGUAGE -x c++)
+ set(PREPROCESSOR_FLAGS -E -P)
+ set(ASM_OFFSETS_CPP ${NATIVEAOT_RUNTIME_DIR}/unix/AsmOffsets.cpp)
+endif()
+
+if(NOT FEATURE_PORTABLE_HELPERS)
+ add_custom_command(
+ COMMAND ${CMAKE_CXX_COMPILER} ${DEFINITIONS} ${PREPROCESSOR_FLAGS} -I"${NATIVEAOT_RUNTIME_DIR}" -I"${ARCH_SOURCES_DIR}" "${ASM_OFFSETS_CPP}" >"${CMAKE_CURRENT_BINARY_DIR}/AsmOffsets.inc"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AsmOffsets.inc"
+ DEPENDS "${ASM_OFFSETS_CPP}" "${NATIVEAOT_RUNTIME_DIR}/AsmOffsets.h"
+ COMMENT "Generating AsmOffsets.inc"
+ )
+
+ set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/AsmOffsets.inc" PROPERTIES GENERATED TRUE)
+
+ # Both runtime archives share AsmOffsets.inc and the assembler helpers.
+ add_custom_target(
+ RuntimeAsmHelpers
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AsmOffsets.inc"
+ )
+
+ add_library(Runtime.AsmHelpers OBJECT ${RUNTIME_SOURCES_ARCH_ASM})
+ add_dependencies(Runtime.AsmHelpers RuntimeAsmHelpers)
+endif()
+
+add_library(Runtime.GC.Workstation OBJECT ${GC_WKS_SVR_SOURCES})
+if(FEATURE_PERFTRACING)
+ add_dependencies(Runtime.GC.Workstation aot_eventing_headers)
+endif()
+set_target_properties(Runtime.GC.Workstation PROPERTIES UNITY_BUILD ON UNITY_BUILD_BATCH_SIZE 0)
+if(CLR_CMAKE_TARGET_WIN32)
+ # GC objects are archived into the runtime libraries and must not reference an external compiler PDB.
+ set_target_properties(Runtime.GC.Workstation PROPERTIES MSVC_DEBUG_INFORMATION_FORMAT Embedded)
+endif()
+
+add_library(Runtime.WorkstationGC STATIC
+ ${COMMON_RUNTIME_SOURCES}
+ ${NATIVEAOT_PRIVATE_LIBUNWIND_OBJECT}
+ $)
+if(FEATURE_PERFTRACING)
+ add_dependencies(Runtime.WorkstationGC aot_eventing_headers)
+endif()
+target_link_libraries(Runtime.WorkstationGC PRIVATE aotminipal)
+if(NOT CLR_CMAKE_TARGET_ARCH_WASM)
+ target_link_libraries(Runtime.WorkstationGC PRIVATE nativeaot_cdac_contract_descriptor nativeaot_gc_wks_descriptor)
+endif()
+if(NOT FEATURE_PORTABLE_HELPERS)
+ target_link_libraries(Runtime.WorkstationGC PRIVATE Runtime.AsmHelpers)
+endif()
+install_static_library(Runtime.WorkstationGC aotsdk nativeaot)
+
+if(FEATURE_MULTITHREADING AND NOT CLR_CMAKE_TARGET_ARCH_WASM)
+ add_library(Runtime.GC.Server OBJECT ${GC_WKS_SVR_SOURCES})
+ if(FEATURE_PERFTRACING)
+ add_dependencies(Runtime.GC.Server aot_eventing_headers)
+ endif()
+ target_compile_definitions(Runtime.GC.Server PRIVATE FEATURE_SVR_GC SERVER_GC)
+ set_target_properties(Runtime.GC.Server PROPERTIES UNITY_BUILD ON UNITY_BUILD_BATCH_SIZE 0)
+ if(CLR_CMAKE_TARGET_WIN32)
+ set_target_properties(Runtime.GC.Server PROPERTIES MSVC_DEBUG_INFORMATION_FORMAT Embedded)
+ endif()
+
+ add_library(Runtime.ServerGC STATIC
+ ${COMMON_RUNTIME_SOURCES}
+ ${NATIVEAOT_PRIVATE_LIBUNWIND_OBJECT}
+ $
+ $)
+ if(FEATURE_PERFTRACING)
+ add_dependencies(Runtime.ServerGC aot_eventing_headers)
+ endif()
+ target_link_libraries(Runtime.ServerGC PRIVATE aotminipal nativeaot_cdac_contract_descriptor nativeaot_gc_wks_descriptor nativeaot_gc_svr_descriptor Runtime.AsmHelpers)
+ target_compile_definitions(Runtime.ServerGC PRIVATE FEATURE_SVR_GC)
+ install_static_library(Runtime.ServerGC aotsdk nativeaot)
+endif()
+
+add_library(standalonegc-disabled STATIC ${STANDALONEGC_DISABLED_SOURCES})
+if(FEATURE_PERFTRACING)
+ add_dependencies(standalonegc-disabled aot_eventing_headers)
+endif()
+if(FEATURE_EVENT_TRACE AND CLR_CMAKE_TARGET_WIN32)
+ add_dependencies(standalonegc-disabled aot_etw_headers)
+endif()
+install_static_library(standalonegc-disabled aotsdk nativeaot)
+
+if(NOT CLR_CMAKE_TARGET_ARCH_WASM)
+ add_library(standalonegc-enabled STATIC ${STANDALONEGC_ENABLED_SOURCES})
+ if(FEATURE_PERFTRACING)
+ add_dependencies(standalonegc-enabled aot_eventing_headers)
+ endif()
+ if(FEATURE_EVENT_TRACE AND CLR_CMAKE_TARGET_WIN32)
+ add_dependencies(standalonegc-enabled aot_etw_headers)
+ endif()
+ install_static_library(standalonegc-enabled aotsdk nativeaot)
+endif()
+
+if(CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_AMD64)
+ add_library(Runtime.VxsortEnabled STATIC ${VXSORT_SOURCES})
+ add_library(Runtime.VxsortDisabled STATIC ${DUMMY_VXSORT_SOURCES})
+ install_static_library(Runtime.VxsortEnabled aotsdk nativeaot)
+ install_static_library(Runtime.VxsortDisabled aotsdk nativeaot)
+endif()
+
+if(CLR_CMAKE_TARGET_WIN32)
+ set_target_properties(aotminipal PROPERTIES
+ COMPILE_PDB_NAME "aotminipal"
+ COMPILE_PDB_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/$")
+endif()
+install_static_library(aotminipal aotsdk nativeaot)
+
+add_custom_command(
+ # AsmOffsets.cs is consumed later by the managed build.
+ TARGET Runtime.WorkstationGC
+ POST_BUILD
+ COMMAND ${CMAKE_CXX_COMPILER} ${COMPILER_LANGUAGE} ${DEFINITIONS} ${PREPROCESSOR_FLAGS}
+ -I"${ARCH_SOURCES_DIR}" "${ASM_OFFSETS_CSPP}" >"${CMAKE_CURRENT_BINARY_DIR}/AsmOffsets.cs"
+)
diff --git a/src/coreclr/nativeaot/Runtime/Full/CMakeLists.txt b/src/coreclr/nativeaot/Runtime/Full/CMakeLists.txt
deleted file mode 100644
index 97208a6b5504d6..00000000000000
--- a/src/coreclr/nativeaot/Runtime/Full/CMakeLists.txt
+++ /dev/null
@@ -1,201 +0,0 @@
-project(Runtime)
-
-# Full version of the runtime is required by the JIT CodeGen.
-# The low-level helpers can be implemented in assembly code.
-
-# Include auto-generated files on include path
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
-if (CLR_CMAKE_TARGET_APPLE)
- list(APPEND RUNTIME_SOURCES_ARCH_ASM
- ${ARCH_SOURCES_DIR}/ThunkPoolThunks.${ASM_SUFFIX}
- )
-else()
- add_definitions(-DFEATURE_RX_THUNKS)
-endif()
-
-if (CLR_CMAKE_TARGET_WIN32)
- if (CLR_CMAKE_HOST_ARCH_ARM OR CLR_CMAKE_HOST_ARCH_ARM64)
- # Needed to include AsmOffsets.inc
- include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR})
- preprocess_files(RUNTIME_SOURCES_ARCH_ASM ${RUNTIME_SOURCES_ARCH_ASM})
- endif()
-endif (CLR_CMAKE_TARGET_WIN32)
-
-if(NATIVEAOT_PRIVATE_LIBUNWIND_SOURCES)
- add_library(Runtime.PrivateLibunwind OBJECT ${NATIVEAOT_PRIVATE_LIBUNWIND_SOURCES})
-
- set(NATIVEAOT_PRIVATE_LIBUNWIND_OBJECT "${CMAKE_CURRENT_BINARY_DIR}/Runtime.PrivateLibunwind.o")
- set(NATIVEAOT_PRIVATE_LIBUNWIND_SYMBOLS "${CMAKE_CURRENT_BINARY_DIR}/Runtime.PrivateLibunwind.localize")
- set(NATIVEAOT_PRIVATE_LIBUNWIND_SYMBOLS_UNSORTED "${CMAKE_CURRENT_BINARY_DIR}/Runtime.PrivateLibunwind.localize.unsorted")
- # The relocatable object includes runtime-owned objects so their references to
- # libunwind implementation symbols are resolved before localization. The
- # localize list is generated only from the bundled libunwind source objects.
- set(NATIVEAOT_PRIVATE_LIBUNWIND_SYMBOL_OBJECTS "$,EXCLUDE,.*(UnwindHelpers|UnixNativeCodeManager)\\.cpp\\.o$>")
-
- add_custom_command(
- OUTPUT "${NATIVEAOT_PRIVATE_LIBUNWIND_OBJECT}"
- COMMAND "${CMAKE_COMMAND}" -E rm -f
- "${NATIVEAOT_PRIVATE_LIBUNWIND_OBJECT}"
- "${NATIVEAOT_PRIVATE_LIBUNWIND_SYMBOLS_UNSORTED}"
- # Generate the objcopy symbol list from libunwind-owned object files only.
- COMMAND sh -c "nm_tool=\"$1\" && shift && \"$nm_tool\" --extern-only --defined-only --format=just-symbols \"$@\" > \"$0\""
- "${NATIVEAOT_PRIVATE_LIBUNWIND_SYMBOLS_UNSORTED}"
- "${CMAKE_NM}"
- ${NATIVEAOT_PRIVATE_LIBUNWIND_SYMBOL_OBJECTS}
- COMMAND sort -u -o
- "${NATIVEAOT_PRIVATE_LIBUNWIND_SYMBOLS}"
- "${NATIVEAOT_PRIVATE_LIBUNWIND_SYMBOLS_UNSORTED}"
- COMMAND "${CMAKE_COMMAND}" -E rm -f
- "${NATIVEAOT_PRIVATE_LIBUNWIND_SYMBOLS_UNSORTED}"
- COMMAND "${CMAKE_LINKER}" -r $ -o "${NATIVEAOT_PRIVATE_LIBUNWIND_OBJECT}"
- COMMAND "${CMAKE_OBJCOPY}"
- "--localize-symbols=${NATIVEAOT_PRIVATE_LIBUNWIND_SYMBOLS}"
- "${NATIVEAOT_PRIVATE_LIBUNWIND_OBJECT}"
- DEPENDS
- Runtime.PrivateLibunwind
- $
- BYPRODUCTS "${NATIVEAOT_PRIVATE_LIBUNWIND_SYMBOLS}"
- COMMENT "Privatizing NativeAOT libunwind symbols"
- COMMAND_EXPAND_LISTS
- VERBATIM
- )
- set_source_files_properties("${NATIVEAOT_PRIVATE_LIBUNWIND_OBJECT}" PROPERTIES
- EXTERNAL_OBJECT TRUE
- GENERATED TRUE)
-endif()
-
-add_library(Runtime.GC.Workstation OBJECT ${GC_WKS_SVR_SOURCES})
-if(FEATURE_PERFTRACING)
- add_dependencies(Runtime.GC.Workstation aot_eventing_headers)
-endif()
-set_target_properties(Runtime.GC.Workstation PROPERTIES UNITY_BUILD ON UNITY_BUILD_BATCH_SIZE 0)
-
-if(FEATURE_MULTITHREADING)
- add_library(Runtime.GC.Server OBJECT ${GC_WKS_SVR_SOURCES})
- if(FEATURE_PERFTRACING)
- add_dependencies(Runtime.GC.Server aot_eventing_headers)
- endif()
- target_compile_definitions(Runtime.GC.Server PRIVATE FEATURE_SVR_GC SERVER_GC)
- set_target_properties(Runtime.GC.Server PROPERTIES UNITY_BUILD ON UNITY_BUILD_BATCH_SIZE 0)
-endif()
-
-if (CLR_CMAKE_TARGET_WIN32)
- # Embed debug info in the object files (/Z7) rather than referencing an external
- # compiler PDB. CMake does not assign a compile PDB to OBJECT libraries, so the
- # objects archived into Runtime.WorkstationGC/Runtime.ServerGC would otherwise
- # reference a vc140.pdb that is absent when these static libs are statically
- # linked by the AOT compiler publish projects, producing LNK4099.
- set_target_properties(Runtime.GC.Workstation PROPERTIES MSVC_DEBUG_INFORMATION_FORMAT Embedded)
- if(FEATURE_MULTITHREADING)
- set_target_properties(Runtime.GC.Server PROPERTIES MSVC_DEBUG_INFORMATION_FORMAT Embedded)
- endif()
-endif (CLR_CMAKE_TARGET_WIN32)
-
-add_library(Runtime.WorkstationGC STATIC
- ${COMMON_RUNTIME_SOURCES}
- ${FULL_RUNTIME_SOURCES}
- ${NATIVEAOT_PRIVATE_LIBUNWIND_OBJECT}
- ${RUNTIME_ARCH_ASM_OBJECTS}
- $)
-if(FEATURE_PERFTRACING)
- add_dependencies(Runtime.WorkstationGC aot_eventing_headers)
-endif()
-target_link_libraries(Runtime.WorkstationGC PRIVATE aotminipal nativeaot_cdac_contract_descriptor nativeaot_gc_wks_descriptor)
-
-if(FEATURE_MULTITHREADING)
- add_library(Runtime.ServerGC STATIC
- ${COMMON_RUNTIME_SOURCES}
- ${FULL_RUNTIME_SOURCES}
- ${NATIVEAOT_PRIVATE_LIBUNWIND_OBJECT}
- ${RUNTIME_ARCH_ASM_OBJECTS}
- $
- $)
- if(FEATURE_PERFTRACING)
- add_dependencies(Runtime.ServerGC aot_eventing_headers)
- endif()
- target_link_libraries(Runtime.ServerGC PRIVATE aotminipal nativeaot_cdac_contract_descriptor nativeaot_gc_wks_descriptor nativeaot_gc_svr_descriptor)
- target_compile_definitions(Runtime.ServerGC PRIVATE FEATURE_SVR_GC)
-endif()
-add_library(standalonegc-disabled STATIC ${STANDALONEGC_DISABLED_SOURCES})
-if(FEATURE_PERFTRACING)
- add_dependencies(standalonegc-disabled aot_eventing_headers)
-endif()
-add_library(standalonegc-enabled STATIC ${STANDALONEGC_ENABLED_SOURCES})
-if(FEATURE_PERFTRACING)
- add_dependencies(standalonegc-enabled aot_eventing_headers)
-endif()
-if(FEATURE_EVENT_TRACE)
- if(CLR_CMAKE_TARGET_WIN32)
- add_dependencies(standalonegc-disabled aot_etw_headers)
- add_dependencies(standalonegc-enabled aot_etw_headers)
- endif()
-endif()
-
-if (CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_AMD64)
- add_library(Runtime.VxsortEnabled STATIC ${VXSORT_SOURCES})
- add_library(Runtime.VxsortDisabled STATIC ${DUMMY_VXSORT_SOURCES})
-endif (CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_AMD64)
-
-if (CLR_CMAKE_TARGET_WIN32)
- set_target_properties(aotminipal PROPERTIES
- COMPILE_PDB_NAME "aotminipal"
- COMPILE_PDB_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/$")
-endif (CLR_CMAKE_TARGET_WIN32)
-
-# Get the current list of definitions
-get_compile_definitions(DEFINITIONS)
-
-set(ASM_OFFSETS_CSPP ${NATIVEAOT_RUNTIME_DIR}/../Runtime.Base/src/AsmOffsets.cspp)
-
-if(WIN32)
- set(COMPILER_LANGUAGE "")
- set(PREPROCESSOR_FLAGS -EP -nologo)
- set(ASM_OFFSETS_CPP ${NATIVEAOT_RUNTIME_DIR}/windows/AsmOffsets.cpp)
-else()
- set(COMPILER_LANGUAGE -x c++)
- set(PREPROCESSOR_FLAGS -E -P)
- set(ASM_OFFSETS_CPP ${NATIVEAOT_RUNTIME_DIR}/unix/AsmOffsets.cpp)
-endif()
-
-add_custom_command(
- # The AsmOffsets.cs is consumed later by the managed build
- TARGET Runtime.WorkstationGC
- POST_BUILD
- COMMAND ${CMAKE_CXX_COMPILER} ${COMPILER_LANGUAGE} ${DEFINITIONS} ${PREPROCESSOR_FLAGS}
- -I"${ARCH_SOURCES_DIR}" "${ASM_OFFSETS_CSPP}" >"${CMAKE_CURRENT_BINARY_DIR}/AsmOffsets.cs"
-)
-
-add_custom_command(
- COMMAND ${CMAKE_CXX_COMPILER} ${DEFINITIONS} ${PREPROCESSOR_FLAGS} -I"${NATIVEAOT_RUNTIME_DIR}" -I"${ARCH_SOURCES_DIR}" "${ASM_OFFSETS_CPP}" >"${CMAKE_CURRENT_BINARY_DIR}/AsmOffsets.inc"
- OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AsmOffsets.inc"
- DEPENDS "${ASM_OFFSETS_CPP}" "${NATIVEAOT_RUNTIME_DIR}/AsmOffsets.h"
- COMMENT "Generating AsmOffsets.inc"
-)
-
-set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/AsmOffsets.inc" PROPERTIES GENERATED TRUE)
-
-# Runtime.WorkstationGC and Runtime.ServerGC share AsmOffsets.inc and assembler helpers (for Windows ARM/ARM64).
-# Avoid a race condition by adding this target as a dependency for both libraries.
-add_custom_target(
- RuntimeAsmHelpers
- DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AsmOffsets.inc"
-)
-
-add_library(Runtime.AsmHelpers OBJECT ${RUNTIME_SOURCES_ARCH_ASM})
-add_dependencies(Runtime.AsmHelpers RuntimeAsmHelpers)
-
-target_link_libraries(Runtime.WorkstationGC PRIVATE Runtime.AsmHelpers)
-if(FEATURE_MULTITHREADING)
- target_link_libraries(Runtime.ServerGC PRIVATE Runtime.AsmHelpers)
- install_static_library(Runtime.ServerGC aotsdk nativeaot)
-endif()
-
-install_static_library(Runtime.WorkstationGC aotsdk nativeaot)
-install_static_library(standalonegc-disabled aotsdk nativeaot)
-install_static_library(standalonegc-enabled aotsdk nativeaot)
-install_static_library(aotminipal aotsdk nativeaot)
-if (CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_AMD64)
- install_static_library(Runtime.VxsortEnabled aotsdk nativeaot)
- install_static_library(Runtime.VxsortDisabled aotsdk nativeaot)
-endif (CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_AMD64)
diff --git a/src/coreclr/nativeaot/Runtime/Portable/CMakeLists.txt b/src/coreclr/nativeaot/Runtime/Portable/CMakeLists.txt
deleted file mode 100644
index d380efc5294c99..00000000000000
--- a/src/coreclr/nativeaot/Runtime/Portable/CMakeLists.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-project(PortableRuntime)
-
-# Portable version of the runtime is designed to be used with WASM.
-# It should be written in pure C/C++, with no assembly code.
-
-add_definitions(-DFEATURE_PORTABLE_HELPERS)
-
-add_library(Runtime.GC.Workstation OBJECT ${GC_WKS_SVR_SOURCES})
-add_dependencies(Runtime.GC.Workstation aot_eventing_headers)
-set_target_properties(Runtime.GC.Workstation PROPERTIES UNITY_BUILD ON UNITY_BUILD_BATCH_SIZE 0)
-
-add_library(PortableRuntime STATIC
- ${COMMON_RUNTIME_SOURCES}
- ${RUNTIME_DIR}/portable/AllocFast.cpp
- ${PORTABLE_RUNTIME_SOURCES}
- $)
-target_link_libraries(PortableRuntime PRIVATE aotminipal)
-add_dependencies(PortableRuntime aot_eventing_headers)
-
-add_library(standalonegc-disabled STATIC ${STANDALONEGC_DISABLED_SOURCES})
-add_dependencies(standalonegc-disabled aot_eventing_headers)
-
-# Get the current list of definitions
-get_compile_definitions(DEFINITIONS)
-set(ASM_OFFSETS_CSPP ${NATIVEAOT_RUNTIME_DIR}/../Runtime.Base/src/AsmOffsets.cspp)
-
-if(WIN32)
- set(COMPILER_LANGUAGE "")
- set(PREPROCESSOR_FLAGS -EP -nologo)
- set(ASM_OFFSETS_CPP ${NATIVEAOT_RUNTIME_DIR}/windows/AsmOffsets.cpp)
-
- set_target_properties(aotminipal PROPERTIES
- COMPILE_PDB_NAME "aotminipal"
- COMPILE_PDB_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/$")
-else()
- set(COMPILER_LANGUAGE -x c++)
- set(PREPROCESSOR_FLAGS -E -P)
- set(ASM_OFFSETS_CPP ${NATIVEAOT_RUNTIME_DIR}/unix/AsmOffsets.cpp)
-endif()
-
-add_custom_command(
- # The AsmOffsetsPortable.cs is consumed later by the managed build
- TARGET PortableRuntime
- POST_BUILD
- COMMAND ${CMAKE_CXX_COMPILER} ${COMPILER_LANGUAGE} ${DEFINITIONS} ${PREPROCESSOR_FLAGS} -I"${ARCH_SOURCES_DIR}" "${ASM_OFFSETS_CSPP}" >"${CMAKE_CURRENT_BINARY_DIR}/AsmOffsetsPortable.cs"
-)
-
-install_static_library(PortableRuntime aotsdk nativeaot)
-install_static_library(standalonegc-disabled aotsdk nativeaot)
-install_static_library(aotminipal aotsdk nativeaot)
diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj b/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj
index c4d54f9ba0b469..7ceffcab62b17b 100644
--- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj
+++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj
@@ -533,11 +533,8 @@
Common\TransitionBlock.cs
-
-
-
-
-
+
+
diff --git a/src/coreclr/nativeaot/Test.CoreLib/src/Test.CoreLib.csproj b/src/coreclr/nativeaot/Test.CoreLib/src/Test.CoreLib.csproj
index 6f43e30cf95900..acccde8d8fd8f2 100644
--- a/src/coreclr/nativeaot/Test.CoreLib/src/Test.CoreLib.csproj
+++ b/src/coreclr/nativeaot/Test.CoreLib/src/Test.CoreLib.csproj
@@ -62,7 +62,7 @@
-
+