diff --git a/dll/win32/ucrtbase/CMakeLists.txt b/dll/win32/ucrtbase/CMakeLists.txt index c5ea55f2601..3953389c7e2 100644 --- a/dll/win32/ucrtbase/CMakeLists.txt +++ b/dll/win32/ucrtbase/CMakeLists.txt @@ -36,6 +36,7 @@ target_link_libraries(ucrtbase msvcrt_shared crtmath vcruntime + vcstartup chkstk wine ) diff --git a/sdk/lib/CMakeLists.txt b/sdk/lib/CMakeLists.txt index 0b465243be7..fbd79de8686 100644 --- a/sdk/lib/CMakeLists.txt +++ b/sdk/lib/CMakeLists.txt @@ -58,6 +58,7 @@ add_subdirectory(ucrt) add_subdirectory(udmihelp) add_subdirectory(uuid) add_subdirectory(vcruntime) +add_subdirectory(vcstartup) add_subdirectory(wine2ros) add_subdirectory(wdmguid) diff --git a/sdk/lib/vcruntime/CMakeLists.txt b/sdk/lib/vcruntime/CMakeLists.txt index 2829dd9d30a..c790b54daf9 100644 --- a/sdk/lib/vcruntime/CMakeLists.txt +++ b/sdk/lib/vcruntime/CMakeLists.txt @@ -11,49 +11,12 @@ if(DBG) add_compile_definitions(_DEBUG) # TODO: define this globally endif() -# Silence GCC/Clang warnings -if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR - CMAKE_C_COMPILER_ID STREQUAL "Clang") - add_compile_options( - -Wno-builtin-declaration-mismatch - -Wno-unused-function - ) -endif() - add_compile_definitions( _CORECRT_BUILD _CRT_DECLARE_GLOBAL_VARIABLES_DIRECTLY _NTSYSTEM_ ) -if(${ARCH} STREQUAL "i386") - list(APPEND VCRT_COMMON_ASM_SOURCES - i386/__security_check_cookie.s - i386/_chkesp.s - ) -elseif(${ARCH} STREQUAL "amd64") - list(APPEND VCRT_COMMON_ASM_SOURCES - amd64/__security_check_cookie.s - ) -endif() -add_asm_files(vcrt_common_asm ${VCRT_COMMON_ASM_SOURCES}) - -list(APPEND VCRT_COMMON_SOURCES - ${vcrt_common_asm} - __report_gsfailure.c - __report_rangecheckfailure.c - __security_init_cookie.c - _fltused.c - initializers.cpp - isa_available.cpp - tlssup.c -) - -# Common between vcstartup and vcruntime -add_library(vcrt_common ${VCRT_COMMON_SOURCES}) -target_link_libraries(vcrt_common ${PSEH_LIB}) -add_dependencies(vcrt_common psdk) - if(${ARCH} STREQUAL "i386") list(APPEND VCRT_SETJMP_SOURCES i386/longjmp.c @@ -94,34 +57,32 @@ add_asm_files(vcrt_setjmp_asm ${VCRT_SETJMP_ASM_SOURCES}) add_library(setjmp ${VCRT_SETJMP_SOURCES} ${vcrt_setjmp_asm}) add_dependencies(setjmp psdk asm) -list(APPEND VCRT_RUNTIME_SOURCES - ${vcrt_runtime_asm} + +if(${ARCH} STREQUAL "i386") + list(APPEND VCRUNTIME_ASM_SOURCES + i386/_chkesp.s + ) +elseif(${ARCH} STREQUAL "amd64") + list(APPEND VCRUNTIME_ASM_SOURCES + + ) +endif() +add_asm_files(vcruntime_asm ${VCRUNTIME_ASM_SOURCES}) + +list(APPEND VCRUNTIME_SOURCES + ${vcruntime_asm} __std_terminate.c __vcrt_init.c purecall.cpp ) if(${ARCH} STREQUAL "i386") - list(APPEND VCRT_RUNTIME_SOURCES + list(APPEND VCRUNTIME_SOURCES i386/_chkesp_failed.c ) endif() # Runtime library (linked into ucrtbase) -add_library(vcruntime ${VCRT_RUNTIME_SOURCES} $ $) +add_library(vcruntime ${VCRUNTIME_SOURCES} $) target_link_libraries(vcruntime ${PSEH_LIB}) target_include_directories(vcruntime INTERFACE inc) - -list(APPEND VCRT_STARTUP_SOURCES - __acrt_initialize_stub.cpp - __scrt_uninitialize_crt.cpp - __vcrt_init_stubs.c - _onexit.c - atexit.c - mainCRTStartup.cpp - wmainCRTStartup.cpp -) - -# Startup library (linked into executables, linking to ucrtbase) -add_library(vcstartup ${VCRT_STARTUP_SOURCES} $) -target_link_libraries(vcstartup ${PSEH_LIB} libucrtbase libkernel32) diff --git a/sdk/lib/vcstartup/CMakeLists.txt b/sdk/lib/vcstartup/CMakeLists.txt new file mode 100644 index 00000000000..5aaee70cb1b --- /dev/null +++ b/sdk/lib/vcstartup/CMakeLists.txt @@ -0,0 +1,61 @@ + +# Replace the old CRT include directory with the UCRT include directory +get_property(INCLUDE_DIRS DIRECTORY . PROPERTY INCLUDE_DIRECTORIES) +list(REMOVE_ITEM INCLUDE_DIRS "${REACTOS_SOURCE_DIR}/sdk/include/crt") +set_property(DIRECTORY . PROPERTY INCLUDE_DIRECTORIES ${INCLUDE_DIRS}) +include_directories(${REACTOS_SOURCE_DIR}/sdk/include/ucrt) + +include_directories(inc) + +if(DBG) + add_compile_definitions(_DEBUG) # TODO: define this globally +endif() + +# Silence GCC/Clang warnings +if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR + CMAKE_C_COMPILER_ID STREQUAL "Clang") + add_compile_options( + -Wno-builtin-declaration-mismatch + -Wno-unused-function + ) +endif() + +add_compile_definitions( + _CORECRT_BUILD + _CRT_DECLARE_GLOBAL_VARIABLES_DIRECTLY + _NTSYSTEM_ +) + +if(${ARCH} STREQUAL "i386") + list(APPEND VCSTARTUP_ASM_SOURCES + i386/__security_check_cookie.s + ) +elseif(${ARCH} STREQUAL "amd64") + list(APPEND VCSTARTUP_ASM_SOURCES + amd64/__security_check_cookie.s + ) +endif() +add_asm_files(vcstartup_asm ${VCSTARTUP_ASM_SOURCES}) + +list(APPEND VCSTARTUP_SOURCES + ${vcstartup_asm} + __acrt_initialize_stub.cpp + __report_gsfailure.c + __report_rangecheckfailure.c + __scrt_uninitialize_crt.cpp + __security_init_cookie.c + __vcrt_init_stubs.c + _fltused.c + _onexit.c + atexit.c + initializers.cpp + isa_available.cpp + mainCRTStartup.cpp + tlssup.c + wmainCRTStartup.cpp +) + +# Startup library (linked into executables, linking to ucrtbase) +add_library(vcstartup ${VCSTARTUP_SOURCES}) +target_link_libraries(vcstartup ${PSEH_LIB} libkernel32) +target_include_directories(vcstartup PRIVATE $) diff --git a/sdk/lib/vcruntime/__acrt_initialize_stub.cpp b/sdk/lib/vcstartup/__acrt_initialize_stub.cpp similarity index 100% rename from sdk/lib/vcruntime/__acrt_initialize_stub.cpp rename to sdk/lib/vcstartup/__acrt_initialize_stub.cpp diff --git a/sdk/lib/vcruntime/__report_gsfailure.c b/sdk/lib/vcstartup/__report_gsfailure.c similarity index 100% rename from sdk/lib/vcruntime/__report_gsfailure.c rename to sdk/lib/vcstartup/__report_gsfailure.c diff --git a/sdk/lib/vcruntime/__report_rangecheckfailure.c b/sdk/lib/vcstartup/__report_rangecheckfailure.c similarity index 100% rename from sdk/lib/vcruntime/__report_rangecheckfailure.c rename to sdk/lib/vcstartup/__report_rangecheckfailure.c diff --git a/sdk/lib/vcruntime/__scrt_uninitialize_crt.cpp b/sdk/lib/vcstartup/__scrt_uninitialize_crt.cpp similarity index 100% rename from sdk/lib/vcruntime/__scrt_uninitialize_crt.cpp rename to sdk/lib/vcstartup/__scrt_uninitialize_crt.cpp diff --git a/sdk/lib/vcruntime/__security_init_cookie.c b/sdk/lib/vcstartup/__security_init_cookie.c similarity index 100% rename from sdk/lib/vcruntime/__security_init_cookie.c rename to sdk/lib/vcstartup/__security_init_cookie.c diff --git a/sdk/lib/vcruntime/__vcrt_init_stubs.c b/sdk/lib/vcstartup/__vcrt_init_stubs.c similarity index 100% rename from sdk/lib/vcruntime/__vcrt_init_stubs.c rename to sdk/lib/vcstartup/__vcrt_init_stubs.c diff --git a/sdk/lib/vcruntime/_fltused.c b/sdk/lib/vcstartup/_fltused.c similarity index 100% rename from sdk/lib/vcruntime/_fltused.c rename to sdk/lib/vcstartup/_fltused.c diff --git a/sdk/lib/vcruntime/_onexit.c b/sdk/lib/vcstartup/_onexit.c similarity index 100% rename from sdk/lib/vcruntime/_onexit.c rename to sdk/lib/vcstartup/_onexit.c diff --git a/sdk/lib/vcruntime/amd64/__security_check_cookie.s b/sdk/lib/vcstartup/amd64/__security_check_cookie.s similarity index 100% rename from sdk/lib/vcruntime/amd64/__security_check_cookie.s rename to sdk/lib/vcstartup/amd64/__security_check_cookie.s diff --git a/sdk/lib/vcruntime/atexit.c b/sdk/lib/vcstartup/atexit.c similarity index 100% rename from sdk/lib/vcruntime/atexit.c rename to sdk/lib/vcstartup/atexit.c diff --git a/sdk/lib/vcruntime/commonCRTStartup.hpp b/sdk/lib/vcstartup/commonCRTStartup.hpp similarity index 100% rename from sdk/lib/vcruntime/commonCRTStartup.hpp rename to sdk/lib/vcstartup/commonCRTStartup.hpp diff --git a/sdk/lib/vcruntime/i386/__security_check_cookie.s b/sdk/lib/vcstartup/i386/__security_check_cookie.s similarity index 100% rename from sdk/lib/vcruntime/i386/__security_check_cookie.s rename to sdk/lib/vcstartup/i386/__security_check_cookie.s diff --git a/sdk/lib/vcruntime/initializers.cpp b/sdk/lib/vcstartup/initializers.cpp similarity index 100% rename from sdk/lib/vcruntime/initializers.cpp rename to sdk/lib/vcstartup/initializers.cpp diff --git a/sdk/lib/vcruntime/isa_available.cpp b/sdk/lib/vcstartup/isa_available.cpp similarity index 100% rename from sdk/lib/vcruntime/isa_available.cpp rename to sdk/lib/vcstartup/isa_available.cpp diff --git a/sdk/lib/vcruntime/mainCRTStartup.cpp b/sdk/lib/vcstartup/mainCRTStartup.cpp similarity index 100% rename from sdk/lib/vcruntime/mainCRTStartup.cpp rename to sdk/lib/vcstartup/mainCRTStartup.cpp diff --git a/sdk/lib/vcruntime/tlssup.c b/sdk/lib/vcstartup/tlssup.c similarity index 100% rename from sdk/lib/vcruntime/tlssup.c rename to sdk/lib/vcstartup/tlssup.c diff --git a/sdk/lib/vcruntime/wmainCRTStartup.cpp b/sdk/lib/vcstartup/wmainCRTStartup.cpp similarity index 100% rename from sdk/lib/vcruntime/wmainCRTStartup.cpp rename to sdk/lib/vcstartup/wmainCRTStartup.cpp