Skip to content

Commit 7342fba

Browse files
strega-nil-msstrega-nilStephanTLavavej
authored
[aliasobj] just build the alias objects once (#2743)
Co-authored-by: Nicole Mazzuca <[email protected]> Co-authored-by: Stephan T. Lavavej <[email protected]>
1 parent d8d8a6b commit 7342fba

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

stl/CMakeLists.txt

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,12 @@ foreach(header ${HEADERS})
253253
configure_file("${header}" "${PROJECT_BINARY_DIR}/out/inc/${_header_path}" COPYONLY)
254254
endforeach()
255255

256+
# Objs that implement aliases; these are completely independent of the configuration
257+
set(ALIAS_SOURCES_X86_X64
258+
${CMAKE_CURRENT_LIST_DIR}/src/alias_init_once_begin_initialize.asm
259+
${CMAKE_CURRENT_LIST_DIR}/src/alias_init_once_complete.asm
260+
)
261+
256262
# Objs that exist in both libcpmt[d][01].lib and msvcprt[d].lib.
257263
set(IMPLIB_SOURCES
258264
${CMAKE_CURRENT_LIST_DIR}/src/asan_noop.cpp
@@ -264,8 +270,6 @@ set(IMPLIB_SOURCES
264270
${CMAKE_CURRENT_LIST_DIR}/src/syserror_import_lib.cpp
265271
${CMAKE_CURRENT_LIST_DIR}/src/vector_algorithms.cpp
266272
${CMAKE_CURRENT_LIST_DIR}/src/xonce2.cpp
267-
${CMAKE_CURRENT_LIST_DIR}/src/alias_init_once_begin_initialize.asm
268-
${CMAKE_CURRENT_LIST_DIR}/src/alias_init_once_complete.asm
269273
)
270274

271275
# The following files are linked in msvcp140[d][_clr].dll.
@@ -447,6 +451,12 @@ include_directories(BEFORE
447451
"${TOOLSET_ROOT_DIR}/crt/src/vcruntime"
448452
)
449453

454+
if(VCLIBS_TARGET_ARCHITECTURE MATCHES "^(x86|x64)$")
455+
add_library(stl_alias_objects OBJECT ${ALIAS_SOURCES_X86_X64})
456+
else()
457+
add_library(stl_alias_objects INTERFACE)
458+
endif()
459+
450460
function(add_stl_dlls D_SUFFIX THIS_CONFIG_DEFINITIONS THIS_CONFIG_COMPILE_OPTIONS GL_FLAG THIS_CONFIG_LINK_OPTIONS)
451461
# msvcp140.dll
452462
add_library(msvcp${D_SUFFIX}_objects OBJECT ${DLL_SOURCES} ${SOURCES})
@@ -538,7 +548,7 @@ function(add_stl_dlls D_SUFFIX THIS_CONFIG_DEFINITIONS THIS_CONFIG_COMPILE_OPTIO
538548

539549
# import library
540550
add_library(msvcp${D_SUFFIX}_implib STATIC ${HEADERS})
541-
target_link_libraries(msvcp${D_SUFFIX}_implib msvcp${D_SUFFIX}_implib_objects)
551+
target_link_libraries(msvcp${D_SUFFIX}_implib stl_alias_objects msvcp${D_SUFFIX}_implib_objects)
542552
add_dependencies(msvcp${D_SUFFIX}_implib msvcp${D_SUFFIX} msvcp_1${D_SUFFIX} msvcp_2${D_SUFFIX} msvcp${D_SUFFIX}_atomic_wait msvcp${D_SUFFIX}_codecvt_ids)
543553
set_target_properties(msvcp${D_SUFFIX}_implib PROPERTIES STATIC_LIBRARY_OPTIONS "/NOLOGO;/NODEFAULTLIB;/IGNORE:4006;$<TARGET_LINKER_FILE:msvcp${D_SUFFIX}>;$<TARGET_LINKER_FILE:msvcp_1${D_SUFFIX}>;$<TARGET_LINKER_FILE:msvcp_2${D_SUFFIX}>;$<TARGET_LINKER_FILE:msvcp${D_SUFFIX}_codecvt_ids>;$<TARGET_LINKER_FILE:msvcp${D_SUFFIX}_atomic_wait>")
544554
set_target_properties(msvcp${D_SUFFIX}_implib PROPERTIES ARCHIVE_OUTPUT_NAME "msvcprt${D_SUFFIX}")
@@ -555,7 +565,7 @@ function(add_stl_statics FLAVOR_SUFFIX THIS_CONFIG_DEFINITIONS THIS_CONFIG_COMPI
555565
add_library(libcpmt${FLAVOR_SUFFIX} STATIC ${HEADERS} ${IMPLIB_SOURCES} ${SOURCES} ${INITIALIZER_SOURCES} ${STATIC_SOURCES})
556566
target_compile_definitions(libcpmt${FLAVOR_SUFFIX} PRIVATE "${THIS_CONFIG_DEFINITIONS};_ANNOTATE_VECTOR;_ANNOTATE_STRING")
557567
target_compile_options(libcpmt${FLAVOR_SUFFIX} PRIVATE "${THIS_CONFIG_COMPILE_OPTIONS};$<$<COMPILE_LANGUAGE:CXX>:/EHsc>")
558-
target_link_libraries(libcpmt${FLAVOR_SUFFIX} PRIVATE Boost::math libcpmt${FLAVOR_SUFFIX}_eha)
568+
target_link_libraries(libcpmt${FLAVOR_SUFFIX} PRIVATE Boost::math stl_alias_objects libcpmt${FLAVOR_SUFFIX}_eha)
559569
endfunction()
560570

561571
add_stl_statics("" "_ITERATOR_DEBUG_LEVEL=0" "${VCLIBS_RELEASE_OPTIONS}")

0 commit comments

Comments
 (0)