2 include_directories(include/internal/mingw-w64)
4 list(APPEND MSVCRTEX_SOURCE
12 stdio/acrt_iob_func.c)
14 if(CMAKE_C_COMPILER_ID STREQUAL "Clang")
15 # Clang performs some optimizations requiring those funtions
16 list(APPEND MSVCRTEX_SOURCE
24 if(ARCH STREQUAL "i386")
25 # Clang wants __aulldiv for its optimizations
26 list(APPEND MSVCRTEX_ASM_SOURCE
27 except/i386/chkstk_asm.s
28 except/i386/chkstk_ms.s
29 math/i386/alldiv_asm.s
30 math/i386/aulldiv_asm.s
32 if (CMAKE_C_COMPILER_ID STREQUAL "Clang" AND NOT MSVC)
33 list(APPEND MSVCRTEX_ASM_SOURCE
36 list(APPEND MSVCRTEX_SOURCE
39 if(MSVC AND DLL_EXPORT_VERSION LESS 0x600)
40 list(APPEND MSVCRTEX_ASM_SOURCE
41 except/i386/__CxxFrameHandler3.s)
42 list(APPEND MSVCRTEX_SOURCE
43 except/i386/CxxHandleV8Frame.c)
45 elseif(ARCH STREQUAL "amd64")
46 list(APPEND MSVCRTEX_ASM_SOURCE
47 except/amd64/chkstk_ms.s)
48 if(MSVC AND DLL_EXPORT_VERSION LESS 0x600)
49 list(APPEND MSVCRTEX_ASM_SOURCE
50 except/amd64/__CxxFrameHandler3.s
53 elseif(ARCH STREQUAL "arm")
54 list(APPEND MSVCRTEX_SOURCE
56 math/arm/__rt_sdiv64_worker.c
58 math/arm/__rt_udiv64_worker.c
59 math/arm/__rt_div_worker.h
71 list(APPEND MSVCRTEX_ASM_SOURCE
72 except/arm/chkstk_asm.s
73 math/arm/__rt_sdiv64.s
75 math/arm/__rt_udiv64.s
79 set_source_files_properties(${MSVCRTEX_ASM_SOURCE} PROPERTIES COMPILE_DEFINITIONS "_DLL;_MSVCRTEX_")
80 add_asm_files(msvcrtex_asm ${MSVCRTEX_ASM_SOURCE})
82 add_library(msvcrtex OBJECT ${MSVCRTEX_SOURCE} ${msvcrtex_asm})
83 target_compile_definitions(msvcrtex PRIVATE _DLL _MSVCRTEX_)
85 if(MSVC AND (ARCH STREQUAL "i386"))
86 # user32.dll needs this as a stand-alone object file
87 add_asm_files(ftol2_asm math/i386/ftol2_asm.s)
88 add_library(ftol2_sse OBJECT ${ftol2_asm})
89 target_compile_definitions(ftol2_sse PRIVATE $<TARGET_PROPERTY:msvcrtex,COMPILE_DEFINITIONS>)
90 set_target_properties(ftol2_sse PROPERTIES LINKER_LANGUAGE C)
94 if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID STREQUAL "Clang")
95 target_compile_options(msvcrtex PRIVATE $<$<COMPILE_LANGUAGE:C>:-Wno-main>)
97 target_compile_options(msvcrtex PRIVATE -fno-lto)
101 set_source_files_properties(startup/crtdll.c PROPERTIES COMPILE_DEFINITIONS CRTDLL)
102 set_source_files_properties(startup/crtexe.c
103 startup/wcrtexe.c PROPERTIES COMPILE_DEFINITIONS _M_CEE_PURE)
106 target_link_libraries(msvcrtex oldnames)
109 add_dependencies(msvcrtex psdk asm)