@@ -253,6 +253,12 @@ foreach(header ${HEADERS})
253
253
configure_file ("${header} " "${PROJECT_BINARY_DIR} /out/inc/${_header_path} " COPYONLY )
254
254
endforeach ()
255
255
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
+
256
262
# Objs that exist in both libcpmt[d][01].lib and msvcprt[d].lib.
257
263
set (IMPLIB_SOURCES
258
264
${CMAKE_CURRENT_LIST_DIR} /src/asan_noop.cpp
@@ -264,8 +270,6 @@ set(IMPLIB_SOURCES
264
270
${CMAKE_CURRENT_LIST_DIR} /src/syserror_import_lib.cpp
265
271
${CMAKE_CURRENT_LIST_DIR} /src/vector_algorithms.cpp
266
272
${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
269
273
)
270
274
271
275
# The following files are linked in msvcp140[d][_clr].dll.
@@ -447,6 +451,12 @@ include_directories(BEFORE
447
451
"${TOOLSET_ROOT_DIR} /crt/src/vcruntime"
448
452
)
449
453
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
+
450
460
function (add_stl_dlls D_SUFFIX THIS_CONFIG_DEFINITIONS THIS_CONFIG_COMPILE_OPTIONS GL_FLAG THIS_CONFIG_LINK_OPTIONS)
451
461
# msvcp140.dll
452
462
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
538
548
539
549
# import library
540
550
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)
542
552
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)
543
553
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>" )
544
554
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
555
565
add_library (libcpmt${FLAVOR_SUFFIX} STATIC ${HEADERS} ${IMPLIB_SOURCES} ${SOURCES} ${INITIALIZER_SOURCES} ${STATIC_SOURCES} )
556
566
target_compile_definitions (libcpmt${FLAVOR_SUFFIX} PRIVATE "${THIS_CONFIG_DEFINITIONS} ;_ANNOTATE_VECTOR;_ANNOTATE_STRING" )
557
567
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)
559
569
endfunction ()
560
570
561
571
add_stl_statics("" "_ITERATOR_DEBUG_LEVEL=0" "${VCLIBS_RELEASE_OPTIONS} " )
0 commit comments