diff --git a/dll/win32/ucrtbase/CMakeLists.txt b/dll/win32/ucrtbase/CMakeLists.txt index 7001c9e0e25..e22d60db0aa 100644 --- a/dll/win32/ucrtbase/CMakeLists.txt +++ b/dll/win32/ucrtbase/CMakeLists.txt @@ -21,9 +21,13 @@ set_entrypoint(ucrtbase __acrt_DllMain 12) target_link_libraries(ucrtbase ucrt ucrtsupport + vcruntime wine ) +# Implicitly link to vcstartup +target_link_libraries(libucrtbase vcstartup) + if(MSVC) target_link_libraries(ucrtbase runtmchk) else() diff --git a/sdk/lib/CMakeLists.txt b/sdk/lib/CMakeLists.txt index e50c21cad8c..e3344d8c621 100644 --- a/sdk/lib/CMakeLists.txt +++ b/sdk/lib/CMakeLists.txt @@ -55,6 +55,7 @@ add_subdirectory(tzlib) add_subdirectory(ucrt) add_subdirectory(udmihelp) add_subdirectory(uuid) +add_subdirectory(vcruntime) add_subdirectory(wdmguid) else() diff --git a/sdk/lib/ucrt/CMakeLists.txt b/sdk/lib/ucrt/CMakeLists.txt index a10b7b60029..f6fdd2b5e2a 100644 --- a/sdk/lib/ucrt/CMakeLists.txt +++ b/sdk/lib/ucrt/CMakeLists.txt @@ -102,7 +102,6 @@ include(stdio/stdio.cmake) include(stdlib/stdlib.cmake) include(string/string.cmake) include(time/time.cmake) -include(vcruntime/vcruntime.cmake) add_library(ucrt OBJECT ${UCRT_CONIO_SOURCES} @@ -128,5 +127,5 @@ add_library(ucrt OBJECT ${UCRT_VCRUNTIME_SOURCES} ) -#target_link_libraries(ucrt pseh) +target_link_libraries(ucrt vcruntime) add_dependencies(ucrt psdk asm) diff --git a/sdk/lib/ucrt/float/float.cmake b/sdk/lib/ucrt/float/float.cmake index a0306235771..a1b5174d50a 100644 --- a/sdk/lib/ucrt/float/float.cmake +++ b/sdk/lib/ucrt/float/float.cmake @@ -1,4 +1,4 @@ list(APPEND UCRT_FLOAT_SOURCES - float/_fltused.c + # TBD ) diff --git a/sdk/lib/ucrt/startup/startup.cmake b/sdk/lib/ucrt/startup/startup.cmake index 4bf94341ace..9bc9b454df7 100644 --- a/sdk/lib/ucrt/startup/startup.cmake +++ b/sdk/lib/ucrt/startup/startup.cmake @@ -1,6 +1,5 @@ list(APPEND UCRT_STARTUP_SOURCES - startup/__scrt_uninitialize_crt.cpp startup/abort.cpp startup/argv_data.cpp startup/argv_parsing.cpp diff --git a/sdk/lib/ucrt/vcruntime/vcruntime.cmake b/sdk/lib/ucrt/vcruntime/vcruntime.cmake deleted file mode 100644 index dc610565944..00000000000 --- a/sdk/lib/ucrt/vcruntime/vcruntime.cmake +++ /dev/null @@ -1,19 +0,0 @@ - -list(APPEND UCRT_VCRUNTIME_SOURCES - vcruntime/__report_gsfailure.c - vcruntime/__report_rangecheckfailure.c - vcruntime/__security_init_cookie.c - vcruntime/__vcrt_init.c - vcruntime/initializers.cpp - vcruntime/isa_available.cpp -) - -if(${ARCH} STREQUAL "i386") - list(APPEND UCRT_VCRUNTIME_SOURCES - vcruntime/i386/__security_check_cookie.s - ) -elseif(${ARCH} STREQUAL "amd64") - list(APPEND UCRT_VCRUNTIME_SOURCES - vcruntime/amd64/__security_check_cookie.s - ) -endif() diff --git a/sdk/lib/vcruntime/CMakeLists.txt b/sdk/lib/vcruntime/CMakeLists.txt new file mode 100644 index 00000000000..3c7076acafd --- /dev/null +++ b/sdk/lib/vcruntime/CMakeLists.txt @@ -0,0 +1,71 @@ + +# 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) + +# 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() + +list(APPEND VCRT_COMMON_SOURCES + __report_gsfailure.c + __report_rangecheckfailure.c + __security_init_cookie.c + __vcrt_init.c + _fltused.c + initializers.cpp + isa_available.cpp +) + +list(APPEND VCRT_RUNTIME_SOURCES + # TBD +) + +list(APPEND VCRT_STARTUP_SOURCES + __scrt_uninitialize_crt.cpp +) + +if(${ARCH} STREQUAL "i386") + list(APPEND VCRT_COMMON_SOURCES + i386/__security_check_cookie.s + ) +elseif(${ARCH} STREQUAL "amd64") + list(APPEND VCRT_COMMON_SOURCES + amd64/__security_check_cookie.s + ) +endif() + +# Common between vcstartup and vcruntime +add_library(vcrt_common ${VCRT_COMMON_SOURCES}) +target_compile_definitions(vcrt_common PRIVATE + _CORECRT_BUILD + _CRT_DECLARE_GLOBAL_VARIABLES_DIRECTLY +) +target_link_libraries(vcrt_common ${PSEH_LIB}) +add_dependencies(vcrt_common psdk) + +# Runtime library (linked into ucrtbase) +add_library(vcruntime ${VCRT_RUNTIME_SOURCES} $) +target_compile_definitions(vcruntime PRIVATE + _CORECRT_BUILD + _CRT_DECLARE_GLOBAL_VARIABLES_DIRECTLY +) +target_link_libraries(vcruntime ${PSEH_LIB}) +target_include_directories(vcruntime INTERFACE inc) + +# Startup library (inked into executables, linking to ucrtbase) +add_library(vcstartup ${VCRT_STARTUP_SOURCES} $) +target_compile_definitions(vcstartup PRIVATE + _CORECRT_BUILD + _CRT_DECLARE_GLOBAL_VARIABLES_DIRECTLY +) +target_link_libraries(vcstartup ${PSEH_LIB} libucrtbase libkernel32) diff --git a/sdk/lib/ucrt/vcruntime/__report_gsfailure.c b/sdk/lib/vcruntime/__report_gsfailure.c similarity index 100% rename from sdk/lib/ucrt/vcruntime/__report_gsfailure.c rename to sdk/lib/vcruntime/__report_gsfailure.c diff --git a/sdk/lib/ucrt/vcruntime/__report_rangecheckfailure.c b/sdk/lib/vcruntime/__report_rangecheckfailure.c similarity index 100% rename from sdk/lib/ucrt/vcruntime/__report_rangecheckfailure.c rename to sdk/lib/vcruntime/__report_rangecheckfailure.c diff --git a/sdk/lib/ucrt/startup/__scrt_uninitialize_crt.cpp b/sdk/lib/vcruntime/__scrt_uninitialize_crt.cpp similarity index 100% rename from sdk/lib/ucrt/startup/__scrt_uninitialize_crt.cpp rename to sdk/lib/vcruntime/__scrt_uninitialize_crt.cpp diff --git a/sdk/lib/ucrt/vcruntime/__security_init_cookie.c b/sdk/lib/vcruntime/__security_init_cookie.c similarity index 96% rename from sdk/lib/ucrt/vcruntime/__security_init_cookie.c rename to sdk/lib/vcruntime/__security_init_cookie.c index 7488aec954d..54edfa745cb 100644 --- a/sdk/lib/ucrt/vcruntime/__security_init_cookie.c +++ b/sdk/lib/vcruntime/__security_init_cookie.c @@ -8,9 +8,7 @@ // SPDX-License-Identifier: MIT // -#include -#include -#include +#include #ifdef _WIN64 #define DEFAULT_SECURITY_COOKIE 0x00002B992DDFA232ull diff --git a/sdk/lib/ucrt/vcruntime/__vcrt_init.c b/sdk/lib/vcruntime/__vcrt_init.c similarity index 100% rename from sdk/lib/ucrt/vcruntime/__vcrt_init.c rename to sdk/lib/vcruntime/__vcrt_init.c diff --git a/sdk/lib/ucrt/float/_fltused.c b/sdk/lib/vcruntime/_fltused.c similarity index 100% rename from sdk/lib/ucrt/float/_fltused.c rename to sdk/lib/vcruntime/_fltused.c diff --git a/sdk/lib/ucrt/vcruntime/amd64/__security_check_cookie.s b/sdk/lib/vcruntime/amd64/__security_check_cookie.s similarity index 100% rename from sdk/lib/ucrt/vcruntime/amd64/__security_check_cookie.s rename to sdk/lib/vcruntime/amd64/__security_check_cookie.s diff --git a/sdk/lib/ucrt/vcruntime/i386/__security_check_cookie.s b/sdk/lib/vcruntime/i386/__security_check_cookie.s similarity index 100% rename from sdk/lib/ucrt/vcruntime/i386/__security_check_cookie.s rename to sdk/lib/vcruntime/i386/__security_check_cookie.s diff --git a/sdk/lib/ucrt/inc/internal_shared.h b/sdk/lib/vcruntime/inc/internal_shared.h similarity index 100% rename from sdk/lib/ucrt/inc/internal_shared.h rename to sdk/lib/vcruntime/inc/internal_shared.h diff --git a/sdk/lib/ucrt/inc/nt.h b/sdk/lib/vcruntime/inc/nt.h similarity index 100% rename from sdk/lib/ucrt/inc/nt.h rename to sdk/lib/vcruntime/inc/nt.h diff --git a/sdk/lib/ucrt/inc/ntrtl.h b/sdk/lib/vcruntime/inc/ntrtl.h similarity index 100% rename from sdk/lib/ucrt/inc/ntrtl.h rename to sdk/lib/vcruntime/inc/ntrtl.h diff --git a/sdk/lib/ucrt/inc/nturtl.h b/sdk/lib/vcruntime/inc/nturtl.h similarity index 100% rename from sdk/lib/ucrt/inc/nturtl.h rename to sdk/lib/vcruntime/inc/nturtl.h diff --git a/sdk/lib/ucrt/vcruntime/initializers.cpp b/sdk/lib/vcruntime/initializers.cpp similarity index 100% rename from sdk/lib/ucrt/vcruntime/initializers.cpp rename to sdk/lib/vcruntime/initializers.cpp diff --git a/sdk/lib/ucrt/vcruntime/isa_available.cpp b/sdk/lib/vcruntime/isa_available.cpp similarity index 100% rename from sdk/lib/ucrt/vcruntime/isa_available.cpp rename to sdk/lib/vcruntime/isa_available.cpp