# Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception set(HEADERS ${CMAKE_CURRENT_LIST_DIR}/inc/__msvc_all_public_headers.hpp ${CMAKE_CURRENT_LIST_DIR}/inc/__msvc_system_error_abi.hpp ${CMAKE_CURRENT_LIST_DIR}/inc/__msvc_tzdb.hpp ${CMAKE_CURRENT_LIST_DIR}/inc/__msvc_xlocinfo_types.hpp ${CMAKE_CURRENT_LIST_DIR}/inc/algorithm ${CMAKE_CURRENT_LIST_DIR}/inc/any ${CMAKE_CURRENT_LIST_DIR}/inc/array ${CMAKE_CURRENT_LIST_DIR}/inc/atomic ${CMAKE_CURRENT_LIST_DIR}/inc/barrier ${CMAKE_CURRENT_LIST_DIR}/inc/bit ${CMAKE_CURRENT_LIST_DIR}/inc/bitset ${CMAKE_CURRENT_LIST_DIR}/inc/cassert ${CMAKE_CURRENT_LIST_DIR}/inc/ccomplex ${CMAKE_CURRENT_LIST_DIR}/inc/cctype ${CMAKE_CURRENT_LIST_DIR}/inc/cerrno ${CMAKE_CURRENT_LIST_DIR}/inc/cfenv ${CMAKE_CURRENT_LIST_DIR}/inc/cfloat ${CMAKE_CURRENT_LIST_DIR}/inc/charconv ${CMAKE_CURRENT_LIST_DIR}/inc/chrono ${CMAKE_CURRENT_LIST_DIR}/inc/cinttypes ${CMAKE_CURRENT_LIST_DIR}/inc/ciso646 ${CMAKE_CURRENT_LIST_DIR}/inc/climits ${CMAKE_CURRENT_LIST_DIR}/inc/clocale ${CMAKE_CURRENT_LIST_DIR}/inc/cmath ${CMAKE_CURRENT_LIST_DIR}/inc/codecvt ${CMAKE_CURRENT_LIST_DIR}/inc/compare ${CMAKE_CURRENT_LIST_DIR}/inc/complex ${CMAKE_CURRENT_LIST_DIR}/inc/concepts ${CMAKE_CURRENT_LIST_DIR}/inc/condition_variable ${CMAKE_CURRENT_LIST_DIR}/inc/coroutine ${CMAKE_CURRENT_LIST_DIR}/inc/csetjmp ${CMAKE_CURRENT_LIST_DIR}/inc/csignal ${CMAKE_CURRENT_LIST_DIR}/inc/cstdalign ${CMAKE_CURRENT_LIST_DIR}/inc/cstdarg ${CMAKE_CURRENT_LIST_DIR}/inc/cstdbool ${CMAKE_CURRENT_LIST_DIR}/inc/cstddef ${CMAKE_CURRENT_LIST_DIR}/inc/cstdint ${CMAKE_CURRENT_LIST_DIR}/inc/cstdio ${CMAKE_CURRENT_LIST_DIR}/inc/cstdlib ${CMAKE_CURRENT_LIST_DIR}/inc/cstring ${CMAKE_CURRENT_LIST_DIR}/inc/ctgmath ${CMAKE_CURRENT_LIST_DIR}/inc/ctime ${CMAKE_CURRENT_LIST_DIR}/inc/cuchar ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/8859_1 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/8859_10 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/8859_13 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/8859_14 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/8859_15 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/8859_16 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/8859_2 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/8859_3 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/8859_4 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/8859_5 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/8859_6 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/8859_7 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/8859_8 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/8859_9 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/baltic ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/big5 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp037 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp1006 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp1026 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp1250 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp1251 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp1252 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp1253 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp1254 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp1255 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp1256 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp1257 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp1258 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp424 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp437 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp500 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp737 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp775 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp850 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp852 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp855 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp856 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp857 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp860 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp861 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp862 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp863 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp864 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp865 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp866 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp869 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp874 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp875 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp932 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp936 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp949 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cp950 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/cyrillic ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/ebcdic ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/euc ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/euc_0208 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/gb12345 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/gb2312 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/greek ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/iceland ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/jis ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/jis0201 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/jis_0208 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/ksc5601 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/latin2 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/one_one ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/roman ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/sjis ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/sjis_0208 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/turkish ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/utf16 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/utf8 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/utf8_utf16 ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/wbuffer ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/wstring ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/xjis ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/xone_byte ${CMAKE_CURRENT_LIST_DIR}/inc/cvt/xtwo_byte ${CMAKE_CURRENT_LIST_DIR}/inc/cwchar ${CMAKE_CURRENT_LIST_DIR}/inc/cwctype ${CMAKE_CURRENT_LIST_DIR}/inc/deque ${CMAKE_CURRENT_LIST_DIR}/inc/exception ${CMAKE_CURRENT_LIST_DIR}/inc/execution ${CMAKE_CURRENT_LIST_DIR}/inc/experimental/coroutine ${CMAKE_CURRENT_LIST_DIR}/inc/experimental/deque ${CMAKE_CURRENT_LIST_DIR}/inc/experimental/filesystem ${CMAKE_CURRENT_LIST_DIR}/inc/experimental/forward_list ${CMAKE_CURRENT_LIST_DIR}/inc/experimental/generator ${CMAKE_CURRENT_LIST_DIR}/inc/experimental/list ${CMAKE_CURRENT_LIST_DIR}/inc/experimental/map ${CMAKE_CURRENT_LIST_DIR}/inc/experimental/resumable ${CMAKE_CURRENT_LIST_DIR}/inc/experimental/set ${CMAKE_CURRENT_LIST_DIR}/inc/experimental/string ${CMAKE_CURRENT_LIST_DIR}/inc/experimental/unordered_map ${CMAKE_CURRENT_LIST_DIR}/inc/experimental/unordered_set ${CMAKE_CURRENT_LIST_DIR}/inc/experimental/vector ${CMAKE_CURRENT_LIST_DIR}/inc/filesystem ${CMAKE_CURRENT_LIST_DIR}/inc/format ${CMAKE_CURRENT_LIST_DIR}/inc/forward_list ${CMAKE_CURRENT_LIST_DIR}/inc/fstream ${CMAKE_CURRENT_LIST_DIR}/inc/functional ${CMAKE_CURRENT_LIST_DIR}/inc/future ${CMAKE_CURRENT_LIST_DIR}/inc/hash_map ${CMAKE_CURRENT_LIST_DIR}/inc/hash_set ${CMAKE_CURRENT_LIST_DIR}/inc/header-units.json ${CMAKE_CURRENT_LIST_DIR}/inc/initializer_list ${CMAKE_CURRENT_LIST_DIR}/inc/iomanip ${CMAKE_CURRENT_LIST_DIR}/inc/ios ${CMAKE_CURRENT_LIST_DIR}/inc/iosfwd ${CMAKE_CURRENT_LIST_DIR}/inc/iostream ${CMAKE_CURRENT_LIST_DIR}/inc/iso646.h ${CMAKE_CURRENT_LIST_DIR}/inc/istream ${CMAKE_CURRENT_LIST_DIR}/inc/iterator ${CMAKE_CURRENT_LIST_DIR}/inc/latch ${CMAKE_CURRENT_LIST_DIR}/inc/limits ${CMAKE_CURRENT_LIST_DIR}/inc/list ${CMAKE_CURRENT_LIST_DIR}/inc/locale ${CMAKE_CURRENT_LIST_DIR}/inc/map ${CMAKE_CURRENT_LIST_DIR}/inc/memory ${CMAKE_CURRENT_LIST_DIR}/inc/memory_resource ${CMAKE_CURRENT_LIST_DIR}/inc/mutex ${CMAKE_CURRENT_LIST_DIR}/inc/new ${CMAKE_CURRENT_LIST_DIR}/inc/numbers ${CMAKE_CURRENT_LIST_DIR}/inc/numeric ${CMAKE_CURRENT_LIST_DIR}/inc/optional ${CMAKE_CURRENT_LIST_DIR}/inc/ostream ${CMAKE_CURRENT_LIST_DIR}/inc/queue ${CMAKE_CURRENT_LIST_DIR}/inc/random ${CMAKE_CURRENT_LIST_DIR}/inc/ranges ${CMAKE_CURRENT_LIST_DIR}/inc/ratio ${CMAKE_CURRENT_LIST_DIR}/inc/regex ${CMAKE_CURRENT_LIST_DIR}/inc/scoped_allocator ${CMAKE_CURRENT_LIST_DIR}/inc/semaphore ${CMAKE_CURRENT_LIST_DIR}/inc/set ${CMAKE_CURRENT_LIST_DIR}/inc/shared_mutex ${CMAKE_CURRENT_LIST_DIR}/inc/source_location ${CMAKE_CURRENT_LIST_DIR}/inc/span ${CMAKE_CURRENT_LIST_DIR}/inc/spanstream ${CMAKE_CURRENT_LIST_DIR}/inc/sstream ${CMAKE_CURRENT_LIST_DIR}/inc/stack ${CMAKE_CURRENT_LIST_DIR}/inc/stdatomic.h ${CMAKE_CURRENT_LIST_DIR}/inc/stdexcept ${CMAKE_CURRENT_LIST_DIR}/inc/stop_token ${CMAKE_CURRENT_LIST_DIR}/inc/streambuf ${CMAKE_CURRENT_LIST_DIR}/inc/string ${CMAKE_CURRENT_LIST_DIR}/inc/string_view ${CMAKE_CURRENT_LIST_DIR}/inc/strstream ${CMAKE_CURRENT_LIST_DIR}/inc/syncstream ${CMAKE_CURRENT_LIST_DIR}/inc/system_error ${CMAKE_CURRENT_LIST_DIR}/inc/thread ${CMAKE_CURRENT_LIST_DIR}/inc/tuple ${CMAKE_CURRENT_LIST_DIR}/inc/type_traits ${CMAKE_CURRENT_LIST_DIR}/inc/typeindex ${CMAKE_CURRENT_LIST_DIR}/inc/typeinfo ${CMAKE_CURRENT_LIST_DIR}/inc/unordered_map ${CMAKE_CURRENT_LIST_DIR}/inc/unordered_set ${CMAKE_CURRENT_LIST_DIR}/inc/use_ansi.h ${CMAKE_CURRENT_LIST_DIR}/inc/utility ${CMAKE_CURRENT_LIST_DIR}/inc/valarray ${CMAKE_CURRENT_LIST_DIR}/inc/variant ${CMAKE_CURRENT_LIST_DIR}/inc/vector ${CMAKE_CURRENT_LIST_DIR}/inc/version ${CMAKE_CURRENT_LIST_DIR}/inc/xatomic.h ${CMAKE_CURRENT_LIST_DIR}/inc/xatomic_wait.h ${CMAKE_CURRENT_LIST_DIR}/inc/xbit_ops.h ${CMAKE_CURRENT_LIST_DIR}/inc/xcall_once.h ${CMAKE_CURRENT_LIST_DIR}/inc/xcharconv.h ${CMAKE_CURRENT_LIST_DIR}/inc/xcharconv_ryu.h ${CMAKE_CURRENT_LIST_DIR}/inc/xcharconv_ryu_tables.h ${CMAKE_CURRENT_LIST_DIR}/inc/xerrc.h ${CMAKE_CURRENT_LIST_DIR}/inc/xfacet ${CMAKE_CURRENT_LIST_DIR}/inc/xfilesystem_abi.h ${CMAKE_CURRENT_LIST_DIR}/inc/xhash ${CMAKE_CURRENT_LIST_DIR}/inc/xiosbase ${CMAKE_CURRENT_LIST_DIR}/inc/xkeycheck.h ${CMAKE_CURRENT_LIST_DIR}/inc/xlocale ${CMAKE_CURRENT_LIST_DIR}/inc/xlocbuf ${CMAKE_CURRENT_LIST_DIR}/inc/xlocinfo ${CMAKE_CURRENT_LIST_DIR}/inc/xlocmes ${CMAKE_CURRENT_LIST_DIR}/inc/xlocmon ${CMAKE_CURRENT_LIST_DIR}/inc/xlocnum ${CMAKE_CURRENT_LIST_DIR}/inc/xloctime ${CMAKE_CURRENT_LIST_DIR}/inc/xmemory ${CMAKE_CURRENT_LIST_DIR}/inc/xnode_handle.h ${CMAKE_CURRENT_LIST_DIR}/inc/xpolymorphic_allocator.h ${CMAKE_CURRENT_LIST_DIR}/inc/xsmf_control.h ${CMAKE_CURRENT_LIST_DIR}/inc/xstddef ${CMAKE_CURRENT_LIST_DIR}/inc/xstring ${CMAKE_CURRENT_LIST_DIR}/inc/xthreads.h ${CMAKE_CURRENT_LIST_DIR}/inc/xtimec.h ${CMAKE_CURRENT_LIST_DIR}/inc/xtr1common ${CMAKE_CURRENT_LIST_DIR}/inc/xtree ${CMAKE_CURRENT_LIST_DIR}/inc/xutility ${CMAKE_CURRENT_LIST_DIR}/inc/ymath.h ${CMAKE_CURRENT_LIST_DIR}/inc/yvals.h ${CMAKE_CURRENT_LIST_DIR}/inc/yvals_core.h ) foreach(header ${HEADERS}) file(RELATIVE_PATH _header_path "${CMAKE_CURRENT_LIST_DIR}/inc" "${header}") configure_file("${header}" "${PROJECT_BINARY_DIR}/out/inc/${_header_path}" COPYONLY) endforeach() # Objs that exist in both libcpmt[d][01].lib and msvcprt[d].lib. set(IMPLIB_SOURCES ${CMAKE_CURRENT_LIST_DIR}/src/filesystem.cpp ${CMAKE_CURRENT_LIST_DIR}/src/format.cpp ${CMAKE_CURRENT_LIST_DIR}/src/locale0_implib.cpp ${CMAKE_CURRENT_LIST_DIR}/src/nothrow.cpp ${CMAKE_CURRENT_LIST_DIR}/src/sharedmutex.cpp ${CMAKE_CURRENT_LIST_DIR}/src/syserror_import_lib.cpp ${CMAKE_CURRENT_LIST_DIR}/src/vector_algorithms.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xonce2.cpp ) # The following files are linked in msvcp140[d][_clr].dll. set(DLL_SOURCES ${CMAKE_CURRENT_LIST_DIR}/src/dllmain.cpp ${CMAKE_CURRENT_LIST_DIR}/src/instances.cpp ) # Sources that must not be compiled with /GL, since they contain CRT initializers. set(INITIALIZER_SOURCES ${CMAKE_CURRENT_LIST_DIR}/src/winapisupp.cpp ) set(SOURCES ${CMAKE_CURRENT_LIST_DIR}/src/StlCompareStringA.cpp ${CMAKE_CURRENT_LIST_DIR}/src/StlCompareStringW.cpp ${CMAKE_CURRENT_LIST_DIR}/src/StlLCMapStringA.cpp ${CMAKE_CURRENT_LIST_DIR}/src/StlLCMapStringW.cpp ${CMAKE_CURRENT_LIST_DIR}/src/_tolower.cpp ${CMAKE_CURRENT_LIST_DIR}/src/_toupper.cpp ${CMAKE_CURRENT_LIST_DIR}/src/atomic.cpp ${CMAKE_CURRENT_LIST_DIR}/src/cerr.cpp ${CMAKE_CURRENT_LIST_DIR}/src/cin.cpp ${CMAKE_CURRENT_LIST_DIR}/src/clog.cpp ${CMAKE_CURRENT_LIST_DIR}/src/cond.cpp ${CMAKE_CURRENT_LIST_DIR}/src/cout.cpp ${CMAKE_CURRENT_LIST_DIR}/src/cthread.cpp ${CMAKE_CURRENT_LIST_DIR}/src/filesys.cpp ${CMAKE_CURRENT_LIST_DIR}/src/fiopen.cpp ${CMAKE_CURRENT_LIST_DIR}/src/future.cpp ${CMAKE_CURRENT_LIST_DIR}/src/iomanip.cpp ${CMAKE_CURRENT_LIST_DIR}/src/ios.cpp ${CMAKE_CURRENT_LIST_DIR}/src/iosptrs.cpp ${CMAKE_CURRENT_LIST_DIR}/src/iostream.cpp ${CMAKE_CURRENT_LIST_DIR}/src/locale.cpp ${CMAKE_CURRENT_LIST_DIR}/src/locale0.cpp ${CMAKE_CURRENT_LIST_DIR}/src/multprec.cpp ${CMAKE_CURRENT_LIST_DIR}/src/mutex.cpp ${CMAKE_CURRENT_LIST_DIR}/src/pplerror.cpp ${CMAKE_CURRENT_LIST_DIR}/src/ppltasks.cpp ${CMAKE_CURRENT_LIST_DIR}/src/raisehan.cpp ${CMAKE_CURRENT_LIST_DIR}/src/stdhndlr.cpp ${CMAKE_CURRENT_LIST_DIR}/src/stdthrow.cpp ${CMAKE_CURRENT_LIST_DIR}/src/syserror.cpp ${CMAKE_CURRENT_LIST_DIR}/src/taskscheduler.cpp ${CMAKE_CURRENT_LIST_DIR}/src/thread0.cpp ${CMAKE_CURRENT_LIST_DIR}/src/uncaught_exception.cpp ${CMAKE_CURRENT_LIST_DIR}/src/uncaught_exceptions.cpp ${CMAKE_CURRENT_LIST_DIR}/src/ushcerr.cpp ${CMAKE_CURRENT_LIST_DIR}/src/ushcin.cpp ${CMAKE_CURRENT_LIST_DIR}/src/ushclog.cpp ${CMAKE_CURRENT_LIST_DIR}/src/ushcout.cpp ${CMAKE_CURRENT_LIST_DIR}/src/ushiostr.cpp ${CMAKE_CURRENT_LIST_DIR}/src/wcerr.cpp ${CMAKE_CURRENT_LIST_DIR}/src/wcin.cpp ${CMAKE_CURRENT_LIST_DIR}/src/wclog.cpp ${CMAKE_CURRENT_LIST_DIR}/src/wcout.cpp ${CMAKE_CURRENT_LIST_DIR}/src/winapinls.cpp ${CMAKE_CURRENT_LIST_DIR}/src/wiostrea.cpp ${CMAKE_CURRENT_LIST_DIR}/src/wlocale.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xalloc.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xcosh.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xdateord.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xdint.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xdnorm.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xdscale.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xdtento.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xdtest.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xdunscal.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xexp.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xfcosh.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xfdint.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xfdnorm.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xfdscale.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xfdtento.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xfdtest.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xfdunsca.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xferaise.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xfexp.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xfprec.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xfsinh.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xfvalues.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xgetwctype.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xlcosh.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xldint.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xldscale.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xldtento.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xldtest.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xldunsca.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xlexp.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xlgamma.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xlocale.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xlock.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xlpoly.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xlprec.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xlsinh.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xlvalues.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xmbtowc.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xmtx.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xnotify.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xonce.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xpoly.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xprec.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xrngabort.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xrngdev.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xsinh.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xstod.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xstof.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xstoflt.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xstol.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xstold.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xstoll.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xstopfx.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xstoul.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xstoull.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xstoxflt.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xstrcoll.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xstrxfrm.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xthrow.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xtime.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xtowlower.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xtowupper.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xvalues.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xwcscoll.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xwcsxfrm.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xwctomb.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xwstod.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xwstof.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xwstoflt.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xwstold.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xwstopfx.cpp ${CMAKE_CURRENT_LIST_DIR}/src/xwstoxfl.cpp ) set(EHA_SOURCES ${CMAKE_CURRENT_LIST_DIR}/src/excptptr.cpp ) set(SOURCES_SATELLITE_1 ${CMAKE_CURRENT_LIST_DIR}/src/memory_resource.cpp ) set(SOURCES_SATELLITE_2 ${CMAKE_CURRENT_LIST_DIR}/src/special_math.cpp ) set(SOURCES_SATELLITE_ATOMIC_WAIT ${CMAKE_CURRENT_LIST_DIR}/src/atomic_wait.cpp ${CMAKE_CURRENT_LIST_DIR}/src/parallel_algorithms.cpp ${CMAKE_CURRENT_LIST_DIR}/src/syncstream.cpp ${CMAKE_CURRENT_LIST_DIR}/src/tzdb.cpp ) set(SOURCES_SATELLITE_CODECVT_IDS ${CMAKE_CURRENT_LIST_DIR}/src/ulocale.cpp ) # Objs that exist only in libcpmt[d][01].lib. set(STATIC_SOURCES ${SOURCES_SATELLITE_1} ${SOURCES_SATELLITE_2} ${SOURCES_SATELLITE_ATOMIC_WAIT} ${SOURCES_SATELLITE_CODECVT_IDS} ) # Objs that exist in all satellite DLLs set(SATELLITE_DLL_SOURCES ${CMAKE_CURRENT_LIST_DIR}/src/dllmain_satellite.cpp ) add_library(std_init_once_begin_initialize OBJECT IMPORTED) add_library(std_init_once_complete OBJECT IMPORTED) set_target_properties(std_init_once_begin_initialize PROPERTIES IMPORTED_OBJECTS "${CMAKE_CURRENT_LIST_DIR}/aliases/${VCLIBS_I386_OR_AMD64}/std_init_once_begin_initialize.obj") set_target_properties(std_init_once_complete PROPERTIES IMPORTED_OBJECTS "${CMAKE_CURRENT_LIST_DIR}/aliases/${VCLIBS_I386_OR_AMD64}/std_init_once_complete.obj") add_compile_definitions(_CRTBLD _VCRT_ALLOW_INTERNALS _HAS_OLD_IOSTREAMS_MEMBERS=1 _STL_CONCRT_SUPPORT) include_directories(BEFORE "${CMAKE_CURRENT_LIST_DIR}/inc" "${TOOLSET_ROOT_DIR}/crt/src/concrt" "${TOOLSET_ROOT_DIR}/crt/src/vcruntime" ) function(add_stl_dlls D_SUFFIX THIS_CONFIG_DEFINITIONS THIS_CONFIG_COMPILE_OPTIONS GL_FLAG THIS_CONFIG_LINK_OPTIONS) # msvcp140.dll add_library(msvcp${D_SUFFIX}_objects OBJECT ${DLL_SOURCES} ${SOURCES}) target_compile_definitions(msvcp${D_SUFFIX}_objects PRIVATE "CRTDLL2;_DLL;${THIS_CONFIG_DEFINITIONS}") target_compile_options(msvcp${D_SUFFIX}_objects PRIVATE "${THIS_CONFIG_COMPILE_OPTIONS};${GL_FLAG};/EHsc") add_library(msvcp${D_SUFFIX}_init_objects OBJECT ${INITIALIZER_SOURCES}) target_compile_definitions(msvcp${D_SUFFIX}_init_objects PRIVATE "CRTDLL2;_DLL;${THIS_CONFIG_DEFINITIONS}") target_compile_options(msvcp${D_SUFFIX}_init_objects PRIVATE "${THIS_CONFIG_COMPILE_OPTIONS};/EHsc") add_library(msvcp${D_SUFFIX}_eha_objects OBJECT ${EHA_SOURCES}) target_compile_definitions(msvcp${D_SUFFIX}_eha_objects PRIVATE "CRTDLL2;_DLL;${THIS_CONFIG_DEFINITIONS}") target_compile_options(msvcp${D_SUFFIX}_eha_objects PRIVATE "${THIS_CONFIG_COMPILE_OPTIONS};${GL_FLAG};/EHa") add_library(msvcp${D_SUFFIX} SHARED) target_link_libraries(msvcp${D_SUFFIX} PRIVATE msvcp${D_SUFFIX}_eha_objects msvcp${D_SUFFIX}_objects msvcp${D_SUFFIX}_init_objects "${TOOLSET_LIB}/vcruntime${D_SUFFIX}.lib" "${TOOLSET_LIB}/msvcrt${D_SUFFIX}.lib" "ucrt${D_SUFFIX}.lib") set_target_properties(msvcp${D_SUFFIX} PROPERTIES ARCHIVE_OUTPUT_NAME "msvcp140_base${D_SUFFIX}${VCLIBS_SUFFIX}") set_target_properties(msvcp${D_SUFFIX} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") set_target_properties(msvcp${D_SUFFIX} PROPERTIES OUTPUT_NAME "msvcp140${D_SUFFIX}${VCLIBS_SUFFIX}") target_link_options(msvcp${D_SUFFIX} PRIVATE "${THIS_CONFIG_LINK_OPTIONS}") # import library 'statics' add_library(msvcp${D_SUFFIX}_implib_objects OBJECT ${IMPLIB_SOURCES}) target_compile_definitions(msvcp${D_SUFFIX}_implib_objects PRIVATE "_DLL;${THIS_CONFIG_DEFINITIONS}") target_compile_options(msvcp${D_SUFFIX}_implib_objects PRIVATE "${THIS_CONFIG_COMPILE_OPTIONS};/EHsc") # No /GL! add_library(msvcp${D_SUFFIX}_satellite_objects OBJECT ${SATELLITE_DLL_SOURCES}) target_compile_options(msvcp${D_SUFFIX}_satellite_objects PRIVATE "${THIS_CONFIG_COMPILE_OPTIONS};${GL_FLAG};/EHsc") target_compile_definitions(msvcp${D_SUFFIX}_satellite_objects PRIVATE "_DLL;${THIS_CONFIG_DEFINITIONS}") # msvcp140_1.dll (the memory_resource satellite) add_library(msvcp_1${D_SUFFIX}_objects OBJECT ${SOURCES_SATELLITE_1}) target_compile_definitions(msvcp_1${D_SUFFIX}_objects PRIVATE "_BUILDING_SATELLITE_1;_DLL;${THIS_CONFIG_DEFINITIONS}") target_compile_options(msvcp_1${D_SUFFIX}_objects PRIVATE "${THIS_CONFIG_COMPILE_OPTIONS};${GL_FLAG};/EHsc") add_library(msvcp_1${D_SUFFIX} SHARED) target_link_libraries(msvcp_1${D_SUFFIX} PRIVATE msvcp_1${D_SUFFIX}_objects msvcp${D_SUFFIX}_satellite_objects "msvcp${D_SUFFIX}" "${TOOLSET_LIB}/vcruntime${D_SUFFIX}.lib" "${TOOLSET_LIB}/msvcrt${D_SUFFIX}.lib" "ucrt${D_SUFFIX}.lib") set_target_properties(msvcp_1${D_SUFFIX} PROPERTIES ARCHIVE_OUTPUT_NAME "msvcp140_1${D_SUFFIX}${VCLIBS_SUFFIX}") set_target_properties(msvcp_1${D_SUFFIX} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") set_target_properties(msvcp_1${D_SUFFIX} PROPERTIES OUTPUT_NAME "msvcp140_1${D_SUFFIX}${VCLIBS_SUFFIX}") target_link_options(msvcp_1${D_SUFFIX} PRIVATE "${THIS_CONFIG_LINK_OPTIONS}") # msvcp140_2.dll (the special math satellite) add_library(msvcp_2${D_SUFFIX}_objects OBJECT ${SOURCES_SATELLITE_2}) target_compile_definitions(msvcp_2${D_SUFFIX}_objects PRIVATE "_BUILDING_SATELLITE_2;_DLL;${THIS_CONFIG_DEFINITIONS}") target_compile_options(msvcp_2${D_SUFFIX}_objects PRIVATE "${THIS_CONFIG_COMPILE_OPTIONS};${GL_FLAG};/EHsc") target_link_libraries(msvcp_2${D_SUFFIX}_objects PRIVATE Boost::math) add_library(msvcp_2${D_SUFFIX} SHARED) target_link_libraries(msvcp_2${D_SUFFIX} PRIVATE msvcp_2${D_SUFFIX}_objects msvcp${D_SUFFIX}_satellite_objects msvcp${D_SUFFIX}_implib_objects std_init_once_begin_initialize std_init_once_complete "msvcp${D_SUFFIX}" "${TOOLSET_LIB}/vcruntime${D_SUFFIX}.lib" "${TOOLSET_LIB}/msvcrt${D_SUFFIX}.lib" "ucrt${D_SUFFIX}.lib") set_target_properties(msvcp_2${D_SUFFIX} PROPERTIES ARCHIVE_OUTPUT_NAME "msvcp140_2${D_SUFFIX}${VCLIBS_SUFFIX}") set_target_properties(msvcp_2${D_SUFFIX} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") set_target_properties(msvcp_2${D_SUFFIX} PROPERTIES OUTPUT_NAME "msvcp140_2${D_SUFFIX}${VCLIBS_SUFFIX}") target_link_options(msvcp_2${D_SUFFIX} PRIVATE "${THIS_CONFIG_LINK_OPTIONS}") # msvcp140_atomic_wait.dll (the atomic wait satellite) add_library(msvcp${D_SUFFIX}_atomic_wait_objects OBJECT ${SOURCES_SATELLITE_ATOMIC_WAIT}) target_compile_definitions(msvcp${D_SUFFIX}_atomic_wait_objects PRIVATE "_BUILDING_SATELLITE_ATOMIC_WAIT;_DLL;${THIS_CONFIG_DEFINITIONS}") target_compile_options(msvcp${D_SUFFIX}_atomic_wait_objects PRIVATE "${THIS_CONFIG_COMPILE_OPTIONS};${GL_FLAG};/EHsc") # generate the .def for msvcp140_atomic_wait.dll set(_ATOMIC_WAIT_OUTPUT_NAME "msvcp140${D_SUFFIX}_atomic_wait${VCLIBS_SUFFIX}") string(TOUPPER "${_ATOMIC_WAIT_OUTPUT_NAME}" _ATOMIC_WAIT_OUTPUT_NAME_UPPER) set(_ATOMIC_WAIT_DEF_NAME "${CMAKE_BINARY_DIR}/msvcp_atomic_wait${D_SUFFIX}.def") set(_ATOMIC_WAIT_DEF_FILE_SRC "${CMAKE_CURRENT_LIST_DIR}/src/msvcp_atomic_wait.src") set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${_ATOMIC_WAIT_DEF_FILE_SRC}") file(READ "${_ATOMIC_WAIT_DEF_FILE_SRC}" _ATOMIC_WAIT_SRC_CONTENTS) string(REPLACE "LIBRARYNAME" "${_ATOMIC_WAIT_OUTPUT_NAME_UPPER}" _ATOMIC_WAIT_DEF_CONTENTS "${_ATOMIC_WAIT_SRC_CONTENTS}") file(WRITE "${_ATOMIC_WAIT_DEF_NAME}" "${_ATOMIC_WAIT_DEF_CONTENTS}") add_library(msvcp${D_SUFFIX}_atomic_wait SHARED "${_ATOMIC_WAIT_DEF_NAME}") target_link_libraries(msvcp${D_SUFFIX}_atomic_wait PRIVATE msvcp${D_SUFFIX}_atomic_wait_objects msvcp${D_SUFFIX}_satellite_objects msvcp${D_SUFFIX}_implib_objects "msvcp${D_SUFFIX}" "${TOOLSET_LIB}/vcruntime${D_SUFFIX}.lib" "${TOOLSET_LIB}/msvcrt${D_SUFFIX}.lib" "ucrt${D_SUFFIX}.lib" "advapi32.lib") set_target_properties(msvcp${D_SUFFIX}_atomic_wait PROPERTIES ARCHIVE_OUTPUT_NAME "msvcp140_atomic_wait${D_SUFFIX}${VCLIBS_SUFFIX}") set_target_properties(msvcp${D_SUFFIX}_atomic_wait PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") set_target_properties(msvcp${D_SUFFIX}_atomic_wait PROPERTIES OUTPUT_NAME "${_ATOMIC_WAIT_OUTPUT_NAME}") target_link_options(msvcp${D_SUFFIX}_atomic_wait PRIVATE "${THIS_CONFIG_LINK_OPTIONS}") # msvcp140_codecvt_ids.dll add_library(msvcp${D_SUFFIX}_codecvt_ids_objects OBJECT ${SOURCES_SATELLITE_CODECVT_IDS}) target_compile_definitions(msvcp${D_SUFFIX}_codecvt_ids_objects PRIVATE "_BUILDING_SATELLITE_CODECVT_IDS;_DLL;${THIS_CONFIG_DEFINITIONS}") target_compile_options(msvcp${D_SUFFIX}_codecvt_ids_objects PRIVATE "${THIS_CONFIG_COMPILE_OPTIONS};${GL_FLAG};/EHsc") add_library(msvcp${D_SUFFIX}_codecvt_ids SHARED) target_link_libraries(msvcp${D_SUFFIX}_codecvt_ids PRIVATE msvcp${D_SUFFIX}_codecvt_ids_objects msvcp${D_SUFFIX}_satellite_objects "msvcp${D_SUFFIX}" "${TOOLSET_LIB}/vcruntime${D_SUFFIX}.lib" "${TOOLSET_LIB}/msvcrt${D_SUFFIX}.lib" "ucrt${D_SUFFIX}.lib") set_target_properties(msvcp${D_SUFFIX}_codecvt_ids PROPERTIES ARCHIVE_OUTPUT_NAME "msvcp140_codecvt_ids${D_SUFFIX}${VCLIBS_SUFFIX}") set_target_properties(msvcp${D_SUFFIX}_codecvt_ids PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") set_target_properties(msvcp${D_SUFFIX}_codecvt_ids PROPERTIES OUTPUT_NAME "msvcp140${D_SUFFIX}_codecvt_ids${VCLIBS_SUFFIX}") target_link_options(msvcp${D_SUFFIX}_codecvt_ids PRIVATE "${THIS_CONFIG_LINK_OPTIONS}") # import library add_library(msvcp${D_SUFFIX}_implib STATIC ${HEADERS}) target_link_libraries(msvcp${D_SUFFIX}_implib msvcp${D_SUFFIX}_implib_objects std_init_once_begin_initialize std_init_once_complete) 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) set_target_properties(msvcp${D_SUFFIX}_implib PROPERTIES STATIC_LIBRARY_OPTIONS "/NOLOGO;/NODEFAULTLIB;/IGNORE:4006;$;$;$;$;$") set_target_properties(msvcp${D_SUFFIX}_implib PROPERTIES ARCHIVE_OUTPUT_NAME "msvcprt${D_SUFFIX}") endfunction() add_stl_dlls("" "" "${VCLIBS_RELEASE_OPTIONS}" "/GL" "/LTCG;/opt:ref,icf") add_stl_dlls("d" "_DEBUG" "${VCLIBS_DEBUG_OPTIONS}" "" "/opt:ref,noicf") function(add_stl_statics FLAVOR_SUFFIX THIS_CONFIG_DEFINITIONS THIS_CONFIG_COMPILE_OPTIONS) add_library(libcpmt${FLAVOR_SUFFIX}_eha OBJECT ${EHA_SOURCES}) target_compile_definitions(libcpmt${FLAVOR_SUFFIX}_eha PRIVATE "${THIS_CONFIG_DEFINITIONS}") target_compile_options(libcpmt${FLAVOR_SUFFIX}_eha PRIVATE "${THIS_CONFIG_COMPILE_OPTIONS};/EHa") add_library(libcpmt${FLAVOR_SUFFIX} STATIC ${HEADERS} ${IMPLIB_SOURCES} ${SOURCES} ${INITIALIZER_SOURCES} ${STATIC_SOURCES}) target_compile_definitions(libcpmt${FLAVOR_SUFFIX} PRIVATE "${THIS_CONFIG_DEFINITIONS}") target_compile_options(libcpmt${FLAVOR_SUFFIX} PRIVATE "${THIS_CONFIG_COMPILE_OPTIONS};/EHsc") target_link_libraries(libcpmt${FLAVOR_SUFFIX} PRIVATE Boost::math libcpmt${FLAVOR_SUFFIX}_eha std_init_once_begin_initialize std_init_once_complete) endfunction() add_stl_statics("" "_ITERATOR_DEBUG_LEVEL=0" "${VCLIBS_RELEASE_OPTIONS}") add_stl_statics("1" "_ITERATOR_DEBUG_LEVEL=1" "${VCLIBS_RELEASE_OPTIONS}") add_stl_statics("d" "_DEBUG;_ITERATOR_DEBUG_LEVEL=2" "${VCLIBS_DEBUG_OPTIONS}") add_stl_statics("d1" "_DEBUG;_ITERATOR_DEBUG_LEVEL=1" "${VCLIBS_DEBUG_OPTIONS}") add_stl_statics("d0" "_DEBUG;_ITERATOR_DEBUG_LEVEL=0" "${VCLIBS_DEBUG_OPTIONS}")