Skip to content

Commit

Permalink
Build static hostfxr library such that it doesn't require hostcommon.
Browse files Browse the repository at this point in the history
  • Loading branch information
rseanhall committed Oct 10, 2022
1 parent 957f76f commit d212e5d
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 16 deletions.
1 change: 1 addition & 0 deletions src/native/corehost/fxr/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@
# The .NET Foundation licenses this file to you under the MIT license.

add_subdirectory(standalone)
add_subdirectory(staticlib)
16 changes: 0 additions & 16 deletions src/native/corehost/fxr/standalone/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ else(CLR_CMAKE_TARGET_WIN32)
endif(CLR_CMAKE_TARGET_WIN32)

include(../../lib.cmake)
include(../../lib_static.cmake)

if(CLR_CMAKE_HOST_UNIX)
add_custom_target(hostfxr_exports DEPENDS ${EXPORTS_FILE})
Expand All @@ -38,23 +37,8 @@ if(CLR_CMAKE_HOST_UNIX)
set_property(TARGET hostfxr APPEND_STRING PROPERTY LINK_DEPENDS ${EXPORTS_FILE})
endif(CLR_CMAKE_HOST_UNIX)

# Copy static lib PDB to the project output directory
if (WIN32)
set_target_properties(libhostfxr PROPERTIES
COMPILE_PDB_NAME "libhostfxr"
COMPILE_PDB_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}"
)
endif(WIN32)

install_with_stripped_symbols(hostfxr TARGETS corehost)

# Only Windows creates a symbols file for static libs.
if (WIN32)
install_with_stripped_symbols(libhostfxr TARGETS corehost)
else()
install(TARGETS libhostfxr DESTINATION corehost)
endif(WIN32)

target_link_libraries(hostfxr libhostcommon)

if (CLR_CMAKE_TARGET_ARCH_ARMV6)
Expand Down
46 changes: 46 additions & 0 deletions src/native/corehost/fxr/staticlib/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Licensed to the .NET Foundation under one or more agreements.
# The .NET Foundation licenses this file to you under the MIT license.

project(hostfxr)

set(DOTNET_PROJECT_NAME "hostfxr")

# CMake does not recommend using globbing since it messes with the freshness checks
set(SOURCES
../standalone/hostpolicy_resolver.cpp
)

set(HEADERS
../hostpolicy_resolver.h
)

include(../../hostcommon/files.cmake)
include(../files.cmake)

include(../../hostmisc/hostmisc.cmake)
include(../../lib_static.cmake)

# Copy static lib PDB to the project output directory
if (WIN32)
set_target_properties(libhostfxr PROPERTIES
COMPILE_PDB_NAME "libhostfxr"
COMPILE_PDB_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}"
)
endif(WIN32)

if (MSVC)
# We ship libhostfxr.lib as a static library for external consumption, so
# LTCG must be disabled to ensure that non-MSVC toolchains can work with it.

target_compile_options(libhostfxr PRIVATE /GL-)

string(REPLACE "/LTCG" "" CMAKE_STATIC_LINKER_FLAGS_RELEASE ${CMAKE_STATIC_LINKER_FLAGS_RELEASE})
string(REPLACE "/LTCG" "" CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO ${CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO})
endif()

# Only Windows creates a symbols file for static libs.
if (WIN32)
install_with_stripped_symbols(libhostfxr TARGETS corehost)
else()
install(TARGETS libhostfxr DESTINATION corehost)
endif(WIN32)

0 comments on commit d212e5d

Please sign in to comment.