2 include_directories(include/internal/mingw-w64)
4 list(APPEND MSVCRTEX_SOURCE
11 stdio/acrt_iob_func.c)
13 if(CMAKE_C_COMPILER_ID STREQUAL "Clang")
14 # Clang performs some optimizations requiring those funtions
15 list(APPEND MSVCRTEX_SOURCE
21 if(ARCH STREQUAL "i386")
22 # Clang wants __aulldiv for its optimizations
23 list(APPEND MSVCRTEX_ASM_SOURCE
24 except/i386/chkstk_asm.s
25 except/i386/chkstk_ms.s
26 math/i386/alldiv_asm.s
27 math/i386/aulldiv_asm.s
29 if (CMAKE_C_COMPILER_ID STREQUAL "Clang" AND NOT MSVC)
30 list(APPEND MSVCRTEX_ASM_SOURCE
33 list(APPEND MSVCRTEX_SOURCE
36 elseif(ARCH STREQUAL "amd64")
37 list(APPEND MSVCRTEX_ASM_SOURCE
38 except/amd64/chkstk_ms.s)
39 elseif(ARCH STREQUAL "arm")
40 list(APPEND MSVCRTEX_SOURCE
42 math/arm/__rt_sdiv64_worker.c
44 math/arm/__rt_udiv64_worker.c
45 math/arm/__rt_div_worker.h
57 list(APPEND MSVCRTEX_ASM_SOURCE
58 except/arm/chkstk_asm.s
59 math/arm/__rt_sdiv64.s
61 math/arm/__rt_udiv64.s
65 set_source_files_properties(${MSVCRTEX_ASM_SOURCE} PROPERTIES COMPILE_DEFINITIONS "_DLL;_MSVCRTEX_")
66 add_asm_files(msvcrtex_asm ${MSVCRTEX_ASM_SOURCE})
68 add_library(msvcrtex OBJECT ${MSVCRTEX_SOURCE} ${msvcrtex_asm})
69 target_compile_definitions(msvcrtex PRIVATE _DLL _MSVCRTEX_)
71 if(MSVC AND (ARCH STREQUAL "i386"))
72 # user32.dll needs this as a stand-alone object file
73 add_asm_files(ftol2_asm math/i386/ftol2_asm.s)
74 add_library(ftol2_sse OBJECT ${ftol2_asm})
75 target_compile_definitions(ftol2_sse PRIVATE $<TARGET_PROPERTY:msvcrtex,COMPILE_DEFINITIONS>)
76 set_target_properties(ftol2_sse PROPERTIES LINKER_LANGUAGE C)
80 if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID STREQUAL "Clang")
81 target_compile_options(msvcrtex PRIVATE $<$<COMPILE_LANGUAGE:C>:-Wno-main>)
83 target_compile_options(msvcrtex PRIVATE -fno-lto)
87 set_source_files_properties(startup/crtdll.c PROPERTIES COMPILE_DEFINITIONS CRTDLL)
88 set_source_files_properties(startup/crtexe.c
89 startup/wcrtexe.c PROPERTIES COMPILE_DEFINITIONS _M_CEE_PURE)
92 target_link_libraries(msvcrtex oldnames)
95 add_dependencies(msvcrtex psdk asm)