https://git.reactos.org/?p=reactos.git;a=commitdiff;h=bf95874c2dde1c4f8b9bd599f1898e0960b19839

commit bf95874c2dde1c4f8b9bd599f1898e0960b19839
Author:     Timo Kreuzer <timo.kreu...@reactos.org>
AuthorDate: Wed May 22 20:48:04 2024 +0300
Commit:     Timo Kreuzer <timo.kreu...@reactos.org>
CommitDate: Sun Oct 20 14:12:25 2024 +0300

    [REACTOS] Improve handling of non-standard names
    
    - Link oldnames instead of defining names
    - Define _CRT_DECLARE_NONSTDC_NAMES to 1 where needed
    - Remove header hacks
---
 base/services/dhcpcsvc/CMakeLists.txt                      | 2 +-
 dll/3rdparty/libtirpc/CMakeLists.txt                       | 3 ++-
 dll/cpl/appwiz/CMakeLists.txt                              | 2 +-
 dll/win32/kernel32/winnls/string/locale.c                  | 1 +
 dll/win32/shell32/CMakeLists.txt                           | 2 +-
 dll/win32/wininet/CMakeLists.txt                           | 3 +--
 drivers/filesystems/ext2/CMakeLists.txt                    | 2 +-
 modules/rosapps/applications/cmdutils/touch/CMakeLists.txt | 1 +
 modules/rosapps/applications/net/ncftp/CMakeLists.txt      | 7 ++++++-
 sdk/include/crt/crtdefs.h                                  | 7 +++----
 sdk/include/crt/string.h                                   | 9 ---------
 sdk/lib/3rdparty/stlport/CMakeLists.txt                    | 5 +++++
 sdk/lib/3rdparty/zlib/CMakeLists.txt                       | 1 +
 sdk/lib/gcc-compat/CMakeLists.txt                          | 2 +-
 sdk/lib/rtl/actctx.c                                       | 1 +
 sdk/tools/wpp/CMakeLists.txt                               | 5 +++++
 16 files changed, 31 insertions(+), 22 deletions(-)

diff --git a/base/services/dhcpcsvc/CMakeLists.txt 
b/base/services/dhcpcsvc/CMakeLists.txt
index add998f0f5a..1726d94bd09 100644
--- a/base/services/dhcpcsvc/CMakeLists.txt
+++ b/base/services/dhcpcsvc/CMakeLists.txt
@@ -1,5 +1,4 @@
 
-add_definitions(-Dtzset=_tzset)
 include_directories(include)
 spec2def(dhcpcsvc.dll dhcpcsvc.spec ADD_IMPORTLIB)
 
@@ -27,6 +26,7 @@ add_library(dhcpcsvc MODULE
     dhcpcsvc.rc
     ${CMAKE_CURRENT_BINARY_DIR}/dhcpcsvc.def)
 
+target_link_libraries(dhcpcsvc oldnames)
 set_module_type(dhcpcsvc win32dll)
 add_importlibs(dhcpcsvc ws2_32 iphlpapi advapi32 msvcrt kernel32 ntdll)
 add_pch(dhcpcsvc include/rosdhcp.h "${PCH_SKIP_SOURCE}")
diff --git a/dll/3rdparty/libtirpc/CMakeLists.txt 
b/dll/3rdparty/libtirpc/CMakeLists.txt
index a0cb36ce8eb..ce96dc50dbf 100644
--- a/dll/3rdparty/libtirpc/CMakeLists.txt
+++ b/dll/3rdparty/libtirpc/CMakeLists.txt
@@ -2,7 +2,7 @@ spec2def(libtirpc.dll libtirpc/libtirpc.spec ADD_IMPORTLIB)
 
 remove_definitions(-D_WIN32_WINNT=0x502)
 add_definitions(-D_WIN32_WINNT=0x600)
-add_definitions(-DUNICODE -D_WIN32 -DPORTMAP -Dstrdup=_strdup 
-D_CRT_NONSTDC_NO_DEPRECATE=1)
+add_definitions(-DUNICODE -D_WIN32 -DPORTMAP -D_CRT_NONSTDC_NO_DEPRECATE=1)
 
 include_directories(${REACTOS_SOURCE_DIR}/dll/3rdparty/libtirpc/tirpc)
 
@@ -106,6 +106,7 @@ else()
 endif()
 
 set_module_type(libtirpc win32dll)
+target_link_libraries(libtirpc oldnames)
 add_importlibs(libtirpc user32 advapi32 kernel32_vista ws2_32 msvcrt kernel32 
ntdll)
 add_delay_importlibs(libtirpc secur32)
 add_pch(libtirpc precomp.h SOURCE)
diff --git a/dll/cpl/appwiz/CMakeLists.txt b/dll/cpl/appwiz/CMakeLists.txt
index 5afee76d7d8..a10165acfc1 100644
--- a/dll/cpl/appwiz/CMakeLists.txt
+++ b/dll/cpl/appwiz/CMakeLists.txt
@@ -2,7 +2,7 @@
 remove_definitions(-D_WIN32_WINNT=0x502)
 add_definitions(-D_WIN32_WINNT=0x600)
 
-add_definitions(-D__WINESRC__)
+add_definitions(-D__WINESRC__ -D_CRT_DECLARE_NONSTDC_NAMES=1)
 include_directories(BEFORE ${REACTOS_SOURCE_DIR}/sdk/include/reactos/wine)
 spec2def(appwiz.cpl appwiz.spec)
 
diff --git a/dll/win32/kernel32/winnls/string/locale.c 
b/dll/win32/kernel32/winnls/string/locale.c
index 2eff3d10b07..f7d327e2142 100644
--- a/dll/win32/kernel32/winnls/string/locale.c
+++ b/dll/win32/kernel32/winnls/string/locale.c
@@ -30,6 +30,7 @@ DEBUG_CHANNEL(nls);
 #include "lcformat_private.h"
 #ifdef __REACTOS__
     #include "japanese.h"
+    #define strcasecmp _stricmp
 #endif
 
 INT WINAPI CompareStringEx(LPCWSTR locale, DWORD flags, LPCWSTR str1, INT len1,
diff --git a/dll/win32/shell32/CMakeLists.txt b/dll/win32/shell32/CMakeLists.txt
index 7226ba4105d..d7f7672f581 100644
--- a/dll/win32/shell32/CMakeLists.txt
+++ b/dll/win32/shell32/CMakeLists.txt
@@ -118,7 +118,7 @@ add_typelib(shell32_shldisp.idl)
 set_source_files_properties(shell32.rc PROPERTIES OBJECT_DEPENDS 
${CMAKE_CURRENT_BINARY_DIR}/shell32_shldisp.tlb)
 
 set_module_type(shell32 win32dll UNICODE)
-target_link_libraries(shell32 shellmenu shelldesktop wine uuid recyclebin 
cpprt atl_classes)
+target_link_libraries(shell32 shellmenu shelldesktop wine uuid recyclebin 
cpprt atl_classes oldnames)
 add_delay_importlibs(shell32 powrprof shdocvw devmgr winspool.drv winmm mpr 
uxtheme ole32 oleaut32 userenv browseui version fmifs)
 add_importlibs(shell32 advapi32 gdi32 user32 comctl32 comdlg32 shlwapi msvcrt 
kernel32 ntdll)
 add_dependencies(shell32 stdole2) # shell32_shldisp.tlb needs stdole2.tlb
diff --git a/dll/win32/wininet/CMakeLists.txt b/dll/win32/wininet/CMakeLists.txt
index 6b041deb423..73449f9f8b4 100644
--- a/dll/win32/wininet/CMakeLists.txt
+++ b/dll/win32/wininet/CMakeLists.txt
@@ -8,8 +8,7 @@ add_definitions(
 
 add_definitions(
     -D__WINESRC__
-    -D_WINE
-    -Dclose=_close)
+    -D_WINE)
 
 spec2def(wininet.dll wininet.spec ADD_IMPORTLIB)
 
diff --git a/drivers/filesystems/ext2/CMakeLists.txt 
b/drivers/filesystems/ext2/CMakeLists.txt
index e427a1580d3..7f9eb56bcf6 100644
--- a/drivers/filesystems/ext2/CMakeLists.txt
+++ b/drivers/filesystems/ext2/CMakeLists.txt
@@ -108,7 +108,7 @@ if(CMAKE_C_COMPILER_ID STREQUAL "Clang")
 endif()
 
 target_link_libraries(ext2fs memcmp ${PSEH_LIB})
-add_definitions(-D__KERNEL__ -D_CRT_NO_POSIX_ERROR_CODES)
+add_definitions(-D__KERNEL__ -D_CRT_NO_POSIX_ERROR_CODES 
-D_CRT_DECLARE_NONSTDC_NAMES=1)
 set_module_type(ext2fs kernelmodedriver)
 add_importlibs(ext2fs ntoskrnl hal)
 add_pch(ext2fs inc/ext2fs.h SOURCE)
diff --git a/modules/rosapps/applications/cmdutils/touch/CMakeLists.txt 
b/modules/rosapps/applications/cmdutils/touch/CMakeLists.txt
index c2d5bd00407..c4212ecdf9b 100644
--- a/modules/rosapps/applications/cmdutils/touch/CMakeLists.txt
+++ b/modules/rosapps/applications/cmdutils/touch/CMakeLists.txt
@@ -1,5 +1,6 @@
 
 add_executable(touch err.c touch.c touch.rc)
+target_compile_definitions(touch PRIVATE _CRT_DECLARE_NONSTDC_NAMES=1)
 target_link_libraries(touch getopt)
 set_module_type(touch win32cui)
 add_importlibs(touch msvcrt kernel32)
diff --git a/modules/rosapps/applications/net/ncftp/CMakeLists.txt 
b/modules/rosapps/applications/net/ncftp/CMakeLists.txt
index 7b080fbb687..5124f770c54 100644
--- a/modules/rosapps/applications/net/ncftp/CMakeLists.txt
+++ b/modules/rosapps/applications/net/ncftp/CMakeLists.txt
@@ -70,7 +70,12 @@ list(APPEND SOURCE
 
 add_executable(ncftp ${SOURCE} ncftp.rc)
 set_module_type(ncftp win32cui)
-target_compile_definitions(ncftp PRIVATE HAVE_UTIME_H HAVE_UNISTD_H)
+target_compile_definitions(ncftp PRIVATE
+    HAVE_UTIME_H
+    HAVE_UNISTD_H
+    _CRT_DECLARE_NONSTDC_NAMES=1
+    strcasecmp=_stricmp
+)
 if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
     target_compile_options(ncftp PRIVATE -Wno-unused-but-set-variable)
 endif()
diff --git a/sdk/include/crt/crtdefs.h b/sdk/include/crt/crtdefs.h
index 6eb0acae37a..2eeb6a7fbd7 100644
--- a/sdk/include/crt/crtdefs.h
+++ b/sdk/include/crt/crtdefs.h
@@ -33,10 +33,9 @@
 #pragma pack(push,_CRT_PACKING)
 
 /* Disable non-ANSI C definitions if compiling with __STDC__ */
-//HACK: Disabled
-//#if __STDC__
-//#define NO_OLDNAMES
-//#endif
+#if (!defined _CRT_DECLARE_NONSTDC_NAMES || !_CRT_DECLARE_NONSTDC_NAMES) && 
(defined _CRT_DECLARE_NONSTDC_NAMES || __STDC__)
+#define NO_OLDNAMES
+#endif
 
 
 /** Properties ***************************************************************/
diff --git a/sdk/include/crt/string.h b/sdk/include/crt/string.h
index aaa9c52f038..db962ae1c27 100644
--- a/sdk/include/crt/string.h
+++ b/sdk/include/crt/string.h
@@ -575,9 +575,6 @@ extern "C" {
     _In_z_ const char *_Str,
     _In_ size_t _MaxCount);
 
-//  __CRT_INLINE int __cdecl strncasecmp (const char *__sz1, const char 
*__sz2, size_t __sizeMaxCompare) { return _strnicmp (__sz1, __sz2, 
__sizeMaxCompare); }
-//  __CRT_INLINE int __cdecl strcasecmp (const char *__sz1, const char *__sz2) 
{ return _stricmp (__sz1, __sz2); }
-
   _CRTIMP
   _CRT_NONSTDC_DEPRECATE(_strnset)
   char*
@@ -1138,11 +1135,5 @@ extern "C" {
 }
 #endif
 
-// HACK
-#define strcasecmp _stricmp
-#define strncasecmp _strnicmp
-#define stricmp _stricmp
-#define wcsicmp _wcsicmp
-
 #include <sec_api/string_s.h>
 #endif
diff --git a/sdk/lib/3rdparty/stlport/CMakeLists.txt 
b/sdk/lib/3rdparty/stlport/CMakeLists.txt
index 2fb3f5643a5..1643459fd9c 100644
--- a/sdk/lib/3rdparty/stlport/CMakeLists.txt
+++ b/sdk/lib/3rdparty/stlport/CMakeLists.txt
@@ -51,6 +51,11 @@ target_compile_definitions(stlport PRIVATE
     _STLP_USE_EXCEPTIONS _DLL __USE_CRTIMP
     _BUILD_STLPORT NATIVE_CPP_INCLUDE=${REACTOS_SOURCE_DIR}/sdk/include/c++)
 
+target_compile_definitions(stlport PUBLIC
+    _CRT_DECLARE_NONSTDC_NAMES=1
+    _CRT_NONSTDC_NO_DEPRECATE
+)
+
 target_include_directories(stlport INTERFACE 
"$<$<COMPILE_LANGUAGE:CXX>:${REACTOS_SOURCE_DIR}/sdk/include/c++/stlport>")
 target_compile_definitions(stlport INTERFACE 
"$<$<COMPILE_LANGUAGE:CXX>:NATIVE_CPP_INCLUDE=${REACTOS_SOURCE_DIR}/sdk/include/c++>")
 set_target_cpp_properties(stlport WITH_EXCEPTIONS WITH_RTTI)
diff --git a/sdk/lib/3rdparty/zlib/CMakeLists.txt 
b/sdk/lib/3rdparty/zlib/CMakeLists.txt
index a10936ea05a..af42ff93b48 100644
--- a/sdk/lib/3rdparty/zlib/CMakeLists.txt
+++ b/sdk/lib/3rdparty/zlib/CMakeLists.txt
@@ -34,6 +34,7 @@ list(APPEND MINIZIP_SOURCE
 
 if(CMAKE_CROSSCOMPILING)
     add_library(zlib ${SOURCE} ${SOLO_SOURCE})
+    target_link_libraries(zlib oldnames)
     target_include_directories(zlib PRIVATE 
${REACTOS_SOURCE_DIR}/sdk/include/reactos/libs/zlib)
     add_library(zlib_solo ${SOLO_SOURCE})
     target_compile_definitions(zlib_solo PRIVATE Z_SOLO)
diff --git a/sdk/lib/gcc-compat/CMakeLists.txt 
b/sdk/lib/gcc-compat/CMakeLists.txt
index ef0f86354c2..6e2b269f802 100644
--- a/sdk/lib/gcc-compat/CMakeLists.txt
+++ b/sdk/lib/gcc-compat/CMakeLists.txt
@@ -12,4 +12,4 @@ set_target_cpp_properties(stdc++compat WITH_EXCEPTIONS)
 add_dependencies(stdc++compat xdk)
 target_link_libraries(stdc++compat libmsvcrt)
 remove_target_compile_option(stdc++compat 
"$<$<AND:$<COMPILE_LANGUAGE:CXX>,$<NOT:$<IN_LIST:cppstl,$<TARGET_PROPERTY:LINK_LIBRARIES>>>>:-nostdinc>")
-target_compile_definitions(stdc++compat PRIVATE 
"$<$<COMPILE_LANGUAGE:CXX>:PAL_STDCPP_COMPAT>")
+target_compile_definitions(stdc++compat PRIVATE 
"$<$<COMPILE_LANGUAGE:CXX>:PAL_STDCPP_COMPAT>" _CRT_DECLARE_NONSTDC_NAMES=1)
diff --git a/sdk/lib/rtl/actctx.c b/sdk/lib/rtl/actctx.c
index 4eb9579edff..540d5ff511f 100644
--- a/sdk/lib/rtl/actctx.c
+++ b/sdk/lib/rtl/actctx.c
@@ -37,6 +37,7 @@
 #define ARRAY_SIZE(a) (sizeof(a)/sizeof((a)[0]))
 #define wcsnicmp _wcsnicmp
 #define swprintf _snwprintf
+#define wcsicmp _wcsicmp
 
 #undef RT_MANIFEST
 #undef CREATEPROCESS_MANIFEST_RESOURCE_ID
diff --git a/sdk/tools/wpp/CMakeLists.txt b/sdk/tools/wpp/CMakeLists.txt
index 11999c26949..7802b8debeb 100644
--- a/sdk/tools/wpp/CMakeLists.txt
+++ b/sdk/tools/wpp/CMakeLists.txt
@@ -1,4 +1,9 @@
 
+add_definitions(
+    -D_CRT_DECLARE_NONSTDC_NAMES=1
+    -D_CRT_NONSTDC_NO_DEPRECATE
+)
+
 if(MSVC)
     if(MSVC_VERSION LESS 1900)
         add_definitions(

Reply via email to