* Statically linking coreclr and clrjit in single file host.
* setting g_hmodCoreCLR on Unix
* System.Globalization.Native.lib must build with coreclr to be linkable with it
* Always use system unwind libs on FREEBSD
* no DllMain when coreclr is statically linked
* Handle cases when coreclr configuration is different from libraries
* Adding and using PAL_GetPalHostModule
target_link_libraries(coreclr PUBLIC ${CORECLR_LIBRARIES} ${CLRJIT_STATIC} cee_wks)
target_sources(coreclr_static PUBLIC $<TARGET_OBJECTS:cee_wks_core>)
target_link_libraries(coreclr_static PUBLIC ${CORECLR_LIBRARIES} clrjit_static cee_wks_mergeable)
+target_compile_definitions(coreclr_static PUBLIC CORECLR_EMBEDDED)
# Create the runtime module index header file containing the coreclr build id
# for xplat and the timestamp/size on Windows.
#include <dbgenginemetrics.h>
-// Globals
-extern HINSTANCE g_hThisInst;
+#if !defined(CROSSGEN_COMPILE) && !defined(CORECLR_EMBEDDED)
-// Locals.
BOOL STDMETHODCALLTYPE EEDllMain( // TRUE on success, FALSE on error.
HINSTANCE hInst, // Instance handle of the loaded module.
DWORD dwReason, // Reason for loading.
- LPVOID lpReserved); // Unused.
+ LPVOID lpReserved); // Unused.
-#ifndef CROSSGEN_COMPILE
//*****************************************************************************
// Handle lifetime of loaded library.
//*****************************************************************************
return EEDllMain((HINSTANCE)hInstance, dwReason, lpReserved);
}
-#endif // CROSSGEN_COMPILE
+#endif // !defined(CROSSGEN_COMPILE) && !defined(CORECLR_EMBEDDED)
+
+// Globals
+extern HINSTANCE g_hThisInst;
HINSTANCE GetModuleInst()
{
IN NATIVE_LIBRARY_HANDLE dl_handle);
PALIMPORT
+HMODULE
+PALAPI
+PAL_GetPalHostModule();
+
+PALIMPORT
FARPROC
PALAPI
PAL_GetProcAddressDirect(
return retValue;
}
+/*++
+Function:
+ PAL_GetPalHostModule
+
+ Returns the module that hosts the PAL.
+ That is typically:
+ - coreclr.dll when coreclr is dynamically linked
+ - containing executable in the statically linked case
+--*/
+HMODULE
+PALAPI
+PAL_GetPalHostModule()
+{
+ return (HMODULE)LOADGetPalLibrary();
+}
+
/*
Function:
PAL_GetProcAddressDirect
{
g_fEEInit = true;
+#if CORECLR_EMBEDDED
+
+#ifdef TARGET_WINDOWS
+ HINSTANCE curModule = WszGetModuleHandle(NULL);
+#else
+ HINSTANCE curModule = PAL_GetPalHostModule();
+#endif
+
+ g_hmodCoreCLR = curModule;
+ g_hThisInst = curModule;
+#endif
+
#ifndef CROSSGEN_COMPILE
// We cache the SystemInfo for anyone to use throughout the life of the EE.
return EXCEPTION_EXECUTE_HANDLER;
}
+#if !defined(CORECLR_EMBEDDED)
+
//*****************************************************************************
// This is the part of the old-style DllMain that initializes the
// stuff that the EE team works on. It's called from the real DllMain
return TRUE;
}
+#endif // !defined(CORECLR_EMBEDDED)
+
struct TlsDestructionMonitor
{
~TlsDestructionMonitor()
// All patched helpers should fit into one page.
// If you hit this assert on retail build, there is most likely problem with BBT script.
+ _ASSERTE_ALL_BUILDS("clr/src/VM/threads.cpp", (BYTE*)JIT_PatchedCodeLast - (BYTE*)JIT_PatchedCodeStart > (ptrdiff_t)0);
_ASSERTE_ALL_BUILDS("clr/src/VM/threads.cpp", (BYTE*)JIT_PatchedCodeLast - (BYTE*)JIT_PatchedCodeStart < (ptrdiff_t)GetOsPageSize());
#ifdef FEATURE_WRITEBARRIER_COPY
:DoGen
set __ExtraCmakeParams=%__ExtraCmakeParams% "-DCMAKE_SYSTEM_VERSION=10.0" "-DCLI_CMAKE_HOST_VER=%__HostVersion%" "-DCLI_CMAKE_COMMON_HOST_VER=%__AppHostVersion%" "-DCLI_CMAKE_HOST_FXR_VER=%__HostFxrVersion%"
set __ExtraCmakeParams=%__ExtraCmakeParams% "-DCLI_CMAKE_HOST_POLICY_VER=%__HostPolicyVersion%" "-DCLI_CMAKE_PKG_RID=%cm_BaseRid%" "-DCLI_CMAKE_COMMIT_HASH=%__LatestCommit%" "-DCLR_CMAKE_HOST_ARCH=%__Arch%"
-set __ExtraCmakeParams=%__ExtraCmakeParams% "-DCORECLR_ARTIFACTS=%__CoreClrArtifacts% " "-DNATIVE_LIBS_ARTIFACTS=%__NativeLibsArtifacts%"
+set __ExtraCmakeParams=%__ExtraCmakeParams% "-DCORECLR_ARTIFACTS=%__CoreClrArtifacts% " "-DRUNTIME_CONFIG=%__RuntimeConfiguration%" "-DNATIVE_LIBS_ARTIFACTS=%__NativeLibsArtifacts%"
set __ExtraCmakeParams=%__ExtraCmakeParams% "-DRUNTIME_FLAVOR=%__RuntimeFlavor% "
set __ExtraCmakeParams=%__ExtraCmakeParams% "-DCMAKE_INSTALL_PREFIX=%__CMakeBinDir%" "-DCLI_CMAKE_RESOURCE_DIR=%__ResourcesDir%" "-DCLR_ENG_NATIVE_DIR=%__sourceDir%\..\..\..\eng\native"
if /i [%1] == [coreclrartifacts] (set __CoreClrArtifacts=%2&&shift&&shift&goto Arg_Loop)
if /i [%1] == [nativelibsartifacts] (set __NativeLibsArtifacts=%2&&shift&&shift&goto Arg_Loop)
if /i [%1] == [runtimeflavor] (set __RuntimeFlavor=%2&&shift&&shift&goto Arg_Loop)
+if /i [%1] == [runtimeconfiguration] (set __RuntimeConfiguration=%2&&shift&&shift&goto Arg_Loop)
shift
../bundle_marker.cpp
./hostfxr_resolver.cpp
./hostpolicy_resolver.cpp
+ ../../hostpolicy/static/coreclr_resolver.cpp
)
set(HEADERS
../../../hostfxr_resolver.h
)
-list(APPEND SOURCES $<TARGET_OBJECTS:libhostfxr_static> $<TARGET_OBJECTS:libhostpolicy_static>)
+add_definitions(-D_NO_ASYNCRTIMP)
+add_definitions(-D_NO_PPLXIMP)
+add_definitions(-DEXPORT_SHARED_API=1)
+add_definitions(-DHOSTPOLICY_EMBEDDED)
+
+
+include(../../fxr/files.cmake)
+include(../../hostpolicy/files.cmake)
+include(../../hostcommon/files.cmake)
if(CLR_CMAKE_TARGET_WIN32)
list(APPEND SOURCES
add_definitions(-DFEATURE_APPHOST=1)
add_definitions(-DFEATURE_STATIC_HOST=1)
-# Disable manifest generation into the file .exe on Windows
if(CLR_CMAKE_TARGET_WIN32)
- set_property(TARGET ${PROJECT_NAME} PROPERTY
- LINK_FLAGS "/MANIFEST:NO"
+ # Disable manifest generation into the file .exe on Windows
+ add_linker_flag("/MANIFEST:NO")
+
+ get_property(ALL_COMPILE_OPTIONS TARGET ${PROJECT_NAME} PROPERTY COMPILE_OPTIONS)
+ string(TOUPPER ${RUNTIME_CONFIG} UPPERCASE_RUNTIME_CONFIG)
+
+ # make sure that certain compiler and linker settings match the runtime config
+ # we need to ensure that to be able to link with coreclr in mixed builds (ex: Debug with Release runtime)
+ if(UPPERCASE_RUNTIME_CONFIG STREQUAL DEBUG OR UPPERCASE_RUNTIME_CONFIG STREQUAL CHECKED)
+ # add_compile_options(/MTd)
+ # per-config options will win, so we have to use this syntax to override
+ set_property(TARGET ${PROJECT_NAME} PROPERTY
+ COMPILE_OPTIONS "${ALL_COMPILE_OPTIONS};$<$<CONFIG:DEBUG>:/MTd>"
+ )
+
+ remove_definitions(-DNDEBUG)
+ add_definitions(-DDEBUG -D_DEBUG -D_DBG)
+
+ # ignore runtime libraries that could have been added so far based on the config
+ add_linker_flag("/NODEFAULTLIB:ucrt.lib")
+ add_linker_flag("/NODEFAULTLIB:libucrt.lib")
+ add_linker_flag("/NODEFAULTLIB:libcmt.lib")
+
+ # make sure we use statically linked crt
+ add_linker_flag("/DEFAULTLIB:libucrtd.lib")
+ else()
+ # add_compile_options(/MT)
+ # per-config options will win, so we have to use this syntax to override
+ set_property(TARGET ${PROJECT_NAME} PROPERTY
+ COMPILE_OPTIONS "${ALL_COMPILE_OPTIONS};$<$<CONFIG:DEBUG>:/MT>"
)
+
+ remove_definitions(-DDEBUG -D_DEBUG -D_DBG)
+ add_definitions(-DNDEBUG)
+
+ # Force uCRT to be dynamically linked for Release build
+ add_linker_flag("/NODEFAULTLIB:libucrt.lib")
+ add_linker_flag("/DEFAULTLIB:ucrt.lib")
+ endif()
+
+ # Incremental linking results in the linker inserting extra padding and routing function calls via thunks that can break the
+ # invariants (e.g. size of region between Jit_PatchedCodeLast-Jit_PatchCodeStart needs to fit in a page).
+ add_linker_flag("/INCREMENTAL:NO")
endif()
# Specify non-default Windows libs to be used for Arm/Arm64 builds
if(CLR_CMAKE_TARGET_WIN32)
set(CORECLR_LIBRARIES
- # Disable superhost on Win32 for now.
- # ${CORECLR_STATIC_LIB_LOCATION}/coreclr_static.lib
- ${STATIC_MT_CRT_LIB}
- ${STATIC_MT_VCRT_LIB}
+ ${CORECLR_STATIC_LIB_LOCATION}/coreclr_static.lib
+ ${CORECLR_STATIC_LIB_LOCATION}/System.Globalization.Native.lib
kernel32.lib
advapi32.lib
ole32.lib
bcrypt.lib
RuntimeObject.lib
)
-elseif(CLR_CMAKE_TARGET_LINUX)
+else()
set(CORECLR_LIBRARIES
${CORECLR_STATIC_LIB_LOCATION}/libcoreclr_static.a
+ ${CORECLR_STATIC_LIB_LOCATION}/libSystem.Globalization.Native.a
${CORECLR_STATIC_LIB_LOCATION}/libcoreclrpal.a
${CORECLR_STATIC_LIB_LOCATION}/libpalrt.a
${CORECLR_STATIC_LIB_LOCATION}/libeventprovider.a
${CORECLR_STATIC_LIB_LOCATION}/libnativeresourcestring.a
)
+endif()
- # currently linking coreclr into the singlefilehost is only supported on linux
- # the following code here would be needed if/when BSD and OSX are supported too
- #
- # if(CLR_CMAKE_TARGET_OSX)
- # find_library(COREFOUNDATION CoreFoundation)
- # find_library(CORESERVICES CoreServices)
- # find_library(SECURITY Security)
- # find_library(SYSTEM System)
- #
- # LIST(APPEND CORECLR_LIBRARIES
- # ${COREFOUNDATION}
- # ${CORESERVICES}
- # ${SECURITY}
- # ${SYSTEM}
- # )
- # endif(CLR_CMAKE_TARGET_OSX)
- #
- # if(CLR_CMAKE_TARGET_NETBSD)
- # find_library(KVM kvm)
- #
- # LIST(APPEND CORECLR_LIBRARIES
- # ${KVM}
- # )
- # endif(CLR_CMAKE_TARGET_NETBSD)
-endif(CLR_CMAKE_TARGET_WIN32)
+if(CLR_CMAKE_TARGET_OSX)
+ find_library(COREFOUNDATION CoreFoundation)
+ find_library(CORESERVICES CoreServices)
+ find_library(SECURITY Security)
+ find_library(SYSTEM System)
+
+ LIST(APPEND CORECLR_LIBRARIES
+ ${COREFOUNDATION}
+ ${CORESERVICES}
+ ${SECURITY}
+ ${SYSTEM}
+ )
+endif(CLR_CMAKE_TARGET_OSX)
+
+if(CLR_CMAKE_TARGET_NETBSD)
+ find_library(KVM kvm)
+
+ LIST(APPEND CORECLR_LIBRARIES
+ ${KVM}
+ )
+endif(CLR_CMAKE_TARGET_NETBSD)
-# Path like: artifacts/bin/native/net5.0-Linux-Release-arm/
-set(NATIVE_LIBS_LOCATION "${NATIVE_LIBS_ARTIFACTS}")
-message ("Looking for native libs at location: '${NATIVE_LIBS_LOCATION}'.")
+# On *BSD, we always use the libunwind that's part of the OS
+if(CLR_CMAKE_TARGET_FREEBSD)
+ set(CLR_CMAKE_USE_SYSTEM_LIBUNWIND 1)
+endif()
-# If/when OSX and *BSD are supported, they should also use the libunwind that's part of the OS
if(CLR_CMAKE_USE_SYSTEM_LIBUNWIND)
find_unwind_libs(UNWIND_LIBS)
)
endif()
+# Path like: artifacts/bin/native/net5.0-Linux-Release-arm/
+set(NATIVE_LIBS_LOCATION "${NATIVE_LIBS_ARTIFACTS}")
+message ("Looking for native libs at location: '${NATIVE_LIBS_LOCATION}'.")
+
if(NOT CLR_CMAKE_TARGET_LINUX)
set(NATIVE_LIBS
# Native libs linked into singlefilehost is supported only on Linux for now.
)
else()
set(NATIVE_LIBS
- ${NATIVE_LIBS_LOCATION}/libSystem.Globalization.Native.a
${NATIVE_LIBS_LOCATION}/libSystem.IO.Compression.Native.a
${NATIVE_LIBS_LOCATION}/libSystem.Native.a
${NATIVE_LIBS_LOCATION}/libSystem.Net.Security.Native.a
set_property(TARGET singlefilehost PROPERTY ENABLE_EXPORTS 1)
target_link_libraries(singlefilehost
- libhostcommon
${CORECLR_LIBRARIES}
${START_WHOLE_ARCHIVE}
project(${DOTNET_PROJECT_NAME})
-if(CLR_CMAKE_HOST_WIN32)
- add_compile_options($<$<CONFIG:RelWithDebInfo>:/MT>)
- add_compile_options($<$<CONFIG:Release>:/MT>)
- add_compile_options($<$<CONFIG:Debug>:/MTd>)
-else()
- add_compile_options(-fvisibility=hidden)
-endif()
-
include(${CMAKE_CURRENT_LIST_DIR}/setup.cmake)
# Include directories
# Licensed to the .NET Foundation under one or more agreements.
# The .NET Foundation licenses this file to you under the MIT license.
-add_subdirectory(static)
add_subdirectory(standalone)
--- /dev/null
+# Licensed to the .NET Foundation under one or more agreements.
+# The .NET Foundation licenses this file to you under the MIT license.
+
+# Include directories
+include_directories(${CMAKE_CURRENT_LIST_DIR}/../json)
+include_directories(${CMAKE_CURRENT_LIST_DIR}/../fxr)
+
+# CMake does not recommend using globbing since it messes with the freshness checks
+list(APPEND SOURCES
+ ${CMAKE_CURRENT_LIST_DIR}/command_line.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/corehost_init.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/hostfxr.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/fx_muxer.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/fx_resolver.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/fx_resolver.messages.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/framework_info.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/host_context.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/sdk_info.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/sdk_resolver.cpp
+)
+
+list(APPEND HEADERS
+ ${CMAKE_CURRENT_LIST_DIR}/../corehost_context_contract.h
+ ${CMAKE_CURRENT_LIST_DIR}/../hostpolicy.h
+ ${CMAKE_CURRENT_LIST_DIR}/../fx_definition.h
+ ${CMAKE_CURRENT_LIST_DIR}/../fx_reference.h
+ ${CMAKE_CURRENT_LIST_DIR}/../roll_fwd_on_no_candidate_fx_option.h
+ ${CMAKE_CURRENT_LIST_DIR}/command_line.h
+ ${CMAKE_CURRENT_LIST_DIR}/corehost_init.h
+ ${CMAKE_CURRENT_LIST_DIR}/fx_muxer.h
+ ${CMAKE_CURRENT_LIST_DIR}/fx_resolver.h
+ ${CMAKE_CURRENT_LIST_DIR}/framework_info.h
+ ${CMAKE_CURRENT_LIST_DIR}/host_context.h
+ ${CMAKE_CURRENT_LIST_DIR}/sdk_info.h
+ ${CMAKE_CURRENT_LIST_DIR}/sdk_resolver.h
+)
+
set(DOTNET_PROJECT_NAME "hostfxr")
-# Include directories
-include_directories(../../json)
-include_directories(../../fxr)
-
# CMake does not recommend using globbing since it messes with the freshness checks
set(SOURCES
./hostpolicy_resolver.cpp
- $<TARGET_OBJECTS:libhostfxr_static>
)
set(HEADERS
- ../command_line.h
- ../corehost_init.h
- ../fx_muxer.h
- ../fx_resolver.h
- ../framework_info.h
- ../host_context.h
- ../sdk_info.h
- ../sdk_resolver.h
../hostpolicy_resolver.h
)
+include(../files.cmake)
+
if(CLR_CMAKE_TARGET_WIN32)
list(APPEND SOURCES
hostfxr.def)
+++ /dev/null
-# Licensed to the .NET Foundation under one or more agreements.
-# The .NET Foundation licenses this file to you under the MIT license.
-
-project(hostfxr_static)
-
-set(DOTNET_PROJECT_NAME "hostfxr_static")
-
-# Include directories
-include_directories(../../json)
-include_directories(../../fxr)
-
-# CMake does not recommend using globbing since it messes with the freshness checks
-set(SOURCES
- ../command_line.cpp
- ../corehost_init.cpp
- ../hostfxr.cpp
- ../fx_muxer.cpp
- ../fx_resolver.cpp
- ../fx_resolver.messages.cpp
- ../framework_info.cpp
- ../host_context.cpp
- ../sdk_info.cpp
- ../sdk_resolver.cpp
-)
-
-set(HEADERS
- ../../corehost_context_contract.h
- ../../hostpolicy.h
- ../../fx_definition.h
- ../../fx_reference.h
- ../../roll_fwd_on_no_candidate_fx_option.h
- ../command_line.h
- ../corehost_init.h
- ../fx_muxer.h
- ../fx_resolver.h
- ../framework_info.h
- ../host_context.h
- ../sdk_info.h
- ../sdk_resolver.h
-)
-
-set(SKIP_VERSIONING 1)
-set(BUILD_OBJECT_LIBRARY 1)
-include(../../lib_static.cmake)
set(DOTNET_PROJECT_NAME "hostcommon")
-# Include directories
-include_directories(../fxr)
-include_directories(../json)
-
-# CMake does not recommend using globbing since it messes with the freshness checks
-set(SOURCES
- ../json_parser.cpp
- ../deps_format.cpp
- ../deps_entry.cpp
- ../host_startup_info.cpp
- ../roll_forward_option.cpp
- ../fx_definition.cpp
- ../fx_reference.cpp
- ../fxr/fx_ver.cpp
- ../version.cpp
- ../version_compatibility_range.cpp
- ../runtime_config.cpp
- ../bundle/info.cpp
- ../bundle/reader.cpp
- ../bundle/header.cpp
-)
-
-set(HEADERS
- ../json_parser.h
- ../deps_format.h
- ../deps_entry.h
- ../host_startup_info.h
- ../roll_forward_option.h
- ../fx_definition.h
- ../fx_reference.h
- ../fxr/fx_ver.h
- ../version.h
- ../version_compatibility_range.h
- ../runtime_config.h
- ../bundle/info.h
- ../bundle/reader.h
- ../bundle/header.h
-)
+include(files.cmake)
set(SKIP_VERSIONING 1)
include(../lib_static.cmake)
--- /dev/null
+# Licensed to the .NET Foundation under one or more agreements.
+# The .NET Foundation licenses this file to you under the MIT license.
+
+# Include directories
+include_directories(${CMAKE_CURRENT_LIST_DIR}/../fxr)
+include_directories(${CMAKE_CURRENT_LIST_DIR}/../json)
+
+# CMake does not recommend using globbing since it messes with the freshness checks
+list(APPEND SOURCES
+ ${CMAKE_CURRENT_LIST_DIR}/../json_parser.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/../deps_format.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/../deps_entry.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/../host_startup_info.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/../roll_forward_option.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/../fx_definition.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/../fx_reference.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/../fxr/fx_ver.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/../version.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/../version_compatibility_range.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/../runtime_config.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/../bundle/info.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/../bundle/reader.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/../bundle/header.cpp
+)
+
+list(APPEND HEADERS
+ ${CMAKE_CURRENT_LIST_DIR}/../json_parser.h
+ ${CMAKE_CURRENT_LIST_DIR}/../deps_format.h
+ ${CMAKE_CURRENT_LIST_DIR}/../deps_entry.h
+ ${CMAKE_CURRENT_LIST_DIR}/../host_startup_info.h
+ ${CMAKE_CURRENT_LIST_DIR}/../roll_forward_option.h
+ ${CMAKE_CURRENT_LIST_DIR}/../fx_definition.h
+ ${CMAKE_CURRENT_LIST_DIR}/../fx_reference.h
+ ${CMAKE_CURRENT_LIST_DIR}/../fxr/fx_ver.h
+ ${CMAKE_CURRENT_LIST_DIR}/../version.h
+ ${CMAKE_CURRENT_LIST_DIR}/../version_compatibility_range.h
+ ${CMAKE_CURRENT_LIST_DIR}/../runtime_config.h
+ ${CMAKE_CURRENT_LIST_DIR}/../bundle/info.h
+ ${CMAKE_CURRENT_LIST_DIR}/../bundle/reader.h
+ ${CMAKE_CURRENT_LIST_DIR}/../bundle/header.h
+)
+
+
# Licensed to the .NET Foundation under one or more agreements.
# The .NET Foundation licenses this file to you under the MIT license.
-add_subdirectory(static)
add_subdirectory(standalone)
--- /dev/null
+# Licensed to the .NET Foundation under one or more agreements.
+# The .NET Foundation licenses this file to you under the MIT license.
+
+# Include directories
+include_directories(${CMAKE_CURRENT_LIST_DIR}/../fxr)
+include_directories(${CMAKE_CURRENT_LIST_DIR}/../json)
+
+# CMake does not recommend using globbing since it messes with the freshness checks
+list(APPEND SOURCES
+ ${CMAKE_CURRENT_LIST_DIR}/args.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/breadcrumbs.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/coreclr.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/deps_resolver.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/hostpolicy_context.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/hostpolicy.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/hostpolicy_init.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/../bundle/dir_utils.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/../bundle/extractor.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/../bundle/file_entry.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/../bundle/manifest.cpp
+ ${CMAKE_CURRENT_LIST_DIR}/../bundle/runner.cpp
+)
+
+list(APPEND HEADERS
+ ${CMAKE_CURRENT_LIST_DIR}/args.h
+ ${CMAKE_CURRENT_LIST_DIR}/breadcrumbs.h
+ ${CMAKE_CURRENT_LIST_DIR}/coreclr.h
+ ${CMAKE_CURRENT_LIST_DIR}/deps_resolver.h
+ ${CMAKE_CURRENT_LIST_DIR}/hostpolicy_context.h
+ ${CMAKE_CURRENT_LIST_DIR}/hostpolicy_init.h
+ ${CMAKE_CURRENT_LIST_DIR}/../hostpolicy.h
+ ${CMAKE_CURRENT_LIST_DIR}/../corehost_context_contract.h
+ ${CMAKE_CURRENT_LIST_DIR}/../bundle/dir_utils.h
+ ${CMAKE_CURRENT_LIST_DIR}/../bundle/extractor.h
+ ${CMAKE_CURRENT_LIST_DIR}/../bundle/file_entry.h
+ ${CMAKE_CURRENT_LIST_DIR}/../bundle/manifest.h
+ ${CMAKE_CURRENT_LIST_DIR}/../bundle/runner.h
+ ${CMAKE_CURRENT_LIST_DIR}/../../coreclr_resolver.h
+)
+
set(DOTNET_PROJECT_NAME "hostpolicy")
-# Include directories
-include_directories(../../fxr)
-include_directories(../../json)
-
-# CMake does not recommend using globbing since it messes with the freshness checks
set(SOURCES
- ../args.cpp
- ../breadcrumbs.cpp
- ../coreclr.cpp
- ../deps_resolver.cpp
- ../hostpolicy_context.cpp
- ../hostpolicy.cpp
- ../hostpolicy_init.cpp
- ../../bundle/dir_utils.cpp
- ../../bundle/extractor.cpp
- ../../bundle/file_entry.cpp
- ../../bundle/manifest.cpp
- ../../bundle/runner.cpp
./coreclr_resolver.cpp
)
-set(HEADERS
- ../args.h
- ../breadcrumbs.h
- ../coreclr.h
- ../deps_resolver.h
- ../hostpolicy_context.h
- ../hostpolicy_init.h
- ../../hostpolicy.h
- ../../corehost_context_contract.h
- ../../bundle/dir_utils.h
- ../../bundle/extractor.h
- ../../bundle/file_entry.h
- ../../bundle/manifest.h
- ../../bundle/runner.h
- ../../../coreclr_resolver.h
-)
-
+include(../files.cmake)
if(CLR_CMAKE_TARGET_WIN32)
list(APPEND SOURCES
+++ /dev/null
-# Licensed to the .NET Foundation under one or more agreements.
-# The .NET Foundation licenses this file to you under the MIT license.
-
-project(hostpolicy_static)
-
-set(DOTNET_PROJECT_NAME "hostpolicy_static")
-
-# Include directories
-include_directories(../../fxr)
-include_directories(../../json)
-
-# CMake does not recommend using globbing since it messes with the freshness checks
-set(SOURCES
- ../args.cpp
- ../breadcrumbs.cpp
- ../coreclr.cpp
- ../deps_resolver.cpp
- ../hostpolicy_context.cpp
- ../hostpolicy.cpp
- ../hostpolicy_init.cpp
- ../../bundle/dir_utils.cpp
- ../../bundle/extractor.cpp
- ../../bundle/file_entry.cpp
- ../../bundle/manifest.cpp
- ../../bundle/runner.cpp
- ./coreclr_resolver.cpp
-)
-
-set(HEADERS
- ../args.h
- ../breadcrumbs.h
- ../coreclr.h
- ../deps_resolver.h
- ../hostpolicy_context.h
- ../hostpolicy_init.h
- ../../hostpolicy.h
- ../../corehost_context_contract.h
- ../../bundle/dir_utils.h
- ../../bundle/extractor.h
- ../../bundle/file_entry.h
- ../../bundle/manifest.h
- ../../bundle/runner.h
- ../../../coreclr_resolver.h
-)
-
-set(SKIP_VERSIONING 1)
-set(BUILD_OBJECT_LIBRARY 1)
-include(../../lib_static.cmake)
-
-add_definitions(-DHOSTPOLICY_EMBEDDED)
}
-#if !defined(TARGET_LINUX)
-
-bool coreclr_resolver_t::resolve_coreclr(const pal::string_t& libcoreclr_path, coreclr_resolver_contract_t& coreclr_resolver_contract)
-{
- pal::string_t coreclr_dll_path(libcoreclr_path);
- append_path(&coreclr_dll_path, LIBCORECLR_NAME);
-
- if (!pal::load_library(&coreclr_dll_path, &coreclr_resolver_contract.coreclr))
- {
- return false;
- }
-
- coreclr_resolver_contract.coreclr_initialize = reinterpret_cast<coreclr_initialize_fn>(pal::get_symbol(coreclr_resolver_contract.coreclr, "coreclr_initialize"));
- coreclr_resolver_contract.coreclr_shutdown = reinterpret_cast<coreclr_shutdown_fn>(pal::get_symbol(coreclr_resolver_contract.coreclr, "coreclr_shutdown_2"));
- coreclr_resolver_contract.coreclr_execute_assembly = reinterpret_cast<coreclr_execute_assembly_fn>(pal::get_symbol(coreclr_resolver_contract.coreclr, "coreclr_execute_assembly"));
- coreclr_resolver_contract.coreclr_create_delegate = reinterpret_cast<coreclr_create_delegate_fn>(pal::get_symbol(coreclr_resolver_contract.coreclr, "coreclr_create_delegate"));
-
- assert(coreclr_resolver_contract.coreclr_initialize != nullptr
- && coreclr_resolver_contract.coreclr_shutdown != nullptr
- && coreclr_resolver_contract.coreclr_execute_assembly != nullptr
- && coreclr_resolver_contract.coreclr_create_delegate != nullptr);
-
- return true;
-}
-
-#else
-
bool coreclr_resolver_t::resolve_coreclr(const pal::string_t& libcoreclr_path, coreclr_resolver_contract_t& coreclr_resolver_contract)
{
coreclr_resolver_contract.coreclr = nullptr;
return true;
}
-
-#endif
<BuildArgs>$(BuildArgs) coreclrartifacts $(CoreCLRArtifactsPath)</BuildArgs>
<BuildArgs>$(BuildArgs) nativelibsartifacts $(LibrariesArtifactsPath)/bin/native/$(NetCoreAppCurrent)-$(TargetOS)-$(LibrariesConfiguration)-$(TargetArchitecture)</BuildArgs>
<BuildArgs>$(BuildArgs) runtimeflavor $(RuntimeFlavor)</BuildArgs>
+ <BuildArgs>$(BuildArgs) runtimeconfiguration $(RuntimeConfiguration)</BuildArgs>
</PropertyGroup>
<!--
<SingleFileHostIncludeFilename Include="libSystem.Net.Security.Native.dylib" />
<SingleFileHostIncludeFilename Include="libSystem.Security.Cryptography.Native.Apple.dylib" />
<SingleFileHostIncludeFilename Include="libSystem.Security.Cryptography.Native.OpenSsl.dylib" />
- <SingleFileHostIncludeFilename Include="libclrjit.dylib" />
- <SingleFileHostIncludeFilename Include="libcoreclr.dylib" />
<!-- Windows -->
<SingleFileHostIncludeFilename Include="clrcompression.dll" />
- <SingleFileHostIncludeFilename Include="clrjit.dll" />
- <SingleFileHostIncludeFilename Include="coreclr.dll" />
<SingleFileHostIncludeFilename Include="mscordaccore.dll" />
</ItemGroup>
set_target_properties(System.Globalization.Native-Static PROPERTIES OUTPUT_NAME System.Globalization.Native CLEAN_DIRECT_OUTPUT 1)
-install (TARGETS System.Globalization.Native-Static DESTINATION .)
+if (GEN_SHARED_LIB)
+ # this builds with libs to check for libs-level warnings
+ install (TARGETS System.Globalization.Native-Static DESTINATION .)
+else()
+ # this one builds with coreclr and used by singlefilehost.
+ # it needs to build with coreclr in order to be linkable with it on Windows
+ # coreclr and static libraries must match because linker does not permit mixing modules
+ # with different C runtimes (i.e. Debug vs. Release)
+ install (TARGETS System.Globalization.Native-Static DESTINATION lib)
+endif()
if(NOT CLR_CMAKE_TARGET_OSX AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS AND NOT CLR_CMAKE_TARGET_ANDROID)
if (GEN_SHARED_LIB)