Răsfoiți Sursa

Merge topic 'watcom-win16'

e194caa5a3 OpenWatcom: Add correct support for 16-bit Windows

Acked-by: Kitware Robot <[email protected]>
Merge-request: !8116
Brad King 2 ani în urmă
părinte
comite
d693c35ea6

+ 12 - 33
Modules/Platform/Windows-OpenWatcom.cmake

@@ -6,13 +6,8 @@ include_guard()
 
 set(CMAKE_BUILD_TYPE_INIT Debug)
 
-if(DEFINED CMAKE_SYSTEM_PROCESSOR AND CMAKE_SYSTEM_PROCESSOR STREQUAL "I86")
-  string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT " system windows")
-  string(APPEND CMAKE_MODULE_LINKER_FLAGS_INIT " system windows")
-else()
-  string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT " system nt_dll")
-  string(APPEND CMAKE_MODULE_LINKER_FLAGS_INIT " system nt_dll")
-endif()
+string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT " system nt_dll")
+string(APPEND CMAKE_MODULE_LINKER_FLAGS_INIT " system nt_dll")
 
 set(CMAKE_C_COMPILE_OPTIONS_DLL "-bd") # Note: This variable is a ';' separated list
 set(CMAKE_SHARED_LIBRARY_C_FLAGS "-bd") # ... while this is a space separated string.
@@ -28,39 +23,23 @@ else()
   set(_br_bm "-br -bm")
 endif()
 
-if(DEFINED CMAKE_SYSTEM_PROCESSOR AND CMAKE_SYSTEM_PROCESSOR STREQUAL "I86")
-  string(APPEND CMAKE_C_FLAGS_INIT " -bt=windows ")
-  string(APPEND CMAKE_CXX_FLAGS_INIT " -bt=windows ")
-else()
-  string(APPEND CMAKE_C_FLAGS_INIT " -bt=nt -dWIN32 ${_br_bm}")
-  string(APPEND CMAKE_CXX_FLAGS_INIT " -bt=nt -xs -dWIN32 ${_br_bm}")
-endif()
+string(APPEND CMAKE_C_FLAGS_INIT " -bt=nt -dWIN32 ${_br_bm}")
+string(APPEND CMAKE_CXX_FLAGS_INIT " -bt=nt -xs -dWIN32 ${_br_bm}")
 
 unset(__WINDOWS_WATCOM_CMP0136)
 unset(_br_bm)
 
 macro(__windows_open_watcom lang)
-  if(DEFINED CMAKE_SYSTEM_PROCESSOR AND CMAKE_SYSTEM_PROCESSOR STREQUAL "I86")
-    if(NOT CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES)
-      set(CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES $ENV{WATCOM}/h $ENV{WATCOM}/h/win)
-    endif()
-    set(CMAKE_${lang}_CREATE_WIN32_EXE "system windows")
-    set(CMAKE_${lang}_CREATE_CONSOLE_EXE "system windows")
-
-    set(CMAKE_${lang}_COMPILE_OPTIONS_WATCOM_RUNTIME_LIBRARY_SingleThreaded  "")
-    set(CMAKE_${lang}_COMPILE_OPTIONS_WATCOM_RUNTIME_LIBRARY_SingleThreadedDLL "")
-    set(CMAKE_${lang}_COMPILE_OPTIONS_WATCOM_RUNTIME_LIBRARY_MultiThreaded "")
-    set(CMAKE_${lang}_COMPILE_OPTIONS_WATCOM_RUNTIME_LIBRARY_MultiThreadedDLL "")
-  else()
+  if(CMAKE_CROSSCOMPILING)
     if(NOT CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES)
       set(CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES $ENV{WATCOM}/h $ENV{WATCOM}/h/nt)
     endif()
-    set(CMAKE_${lang}_CREATE_WIN32_EXE "system nt_win")
-    set(CMAKE_${lang}_CREATE_CONSOLE_EXE "system nt")
-
-    set(CMAKE_${lang}_COMPILE_OPTIONS_WATCOM_RUNTIME_LIBRARY_SingleThreaded         "")
-    set(CMAKE_${lang}_COMPILE_OPTIONS_WATCOM_RUNTIME_LIBRARY_SingleThreadedDLL      -br)
-    set(CMAKE_${lang}_COMPILE_OPTIONS_WATCOM_RUNTIME_LIBRARY_MultiThreaded          -bm)
-    set(CMAKE_${lang}_COMPILE_OPTIONS_WATCOM_RUNTIME_LIBRARY_MultiThreadedDLL       -bm -br)
   endif()
+  set(CMAKE_${lang}_CREATE_WIN32_EXE "system nt_win")
+  set(CMAKE_${lang}_CREATE_CONSOLE_EXE "system nt")
+
+  set(CMAKE_${lang}_COMPILE_OPTIONS_WATCOM_RUNTIME_LIBRARY_SingleThreaded         "")
+  set(CMAKE_${lang}_COMPILE_OPTIONS_WATCOM_RUNTIME_LIBRARY_SingleThreadedDLL      -br)
+  set(CMAKE_${lang}_COMPILE_OPTIONS_WATCOM_RUNTIME_LIBRARY_MultiThreaded          -bm)
+  set(CMAKE_${lang}_COMPILE_OPTIONS_WATCOM_RUNTIME_LIBRARY_MultiThreadedDLL       -bm -br)
 endmacro()

+ 2 - 0
Modules/Platform/Windows3x-OpenWatcom-C.cmake

@@ -0,0 +1,2 @@
+include(Platform/Windows3x-OpenWatcom)
+__windows3x_open_watcom(C)

+ 2 - 0
Modules/Platform/Windows3x-OpenWatcom-CXX.cmake

@@ -0,0 +1,2 @@
+include(Platform/Windows3x-OpenWatcom)
+__windows3x_open_watcom(CXX)

+ 33 - 0
Modules/Platform/Windows3x-OpenWatcom.cmake

@@ -0,0 +1,33 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+# This module is shared by multiple languages; use include blocker.
+include_guard()
+
+set(CMAKE_BUILD_TYPE_INIT Debug)
+
+if(DEFINED CMAKE_SYSTEM_PROCESSOR AND CMAKE_SYSTEM_PROCESSOR STREQUAL "I86")
+  string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " system windows")
+  string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT " system windows")
+  string(APPEND CMAKE_MODULE_LINKER_FLAGS_INIT " system windows")
+else()
+  string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " system win386")
+  string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT " system win386")
+  string(APPEND CMAKE_MODULE_LINKER_FLAGS_INIT " system win386")
+endif()
+
+set(CMAKE_C_COMPILE_OPTIONS_DLL "-bd") # Note: This variable is a ';' separated list
+set(CMAKE_SHARED_LIBRARY_C_FLAGS "-bd") # ... while this is a space separated string.
+
+set(CMAKE_RC_COMPILER "rc")
+
+set(CMAKE_WATCOM_RUNTIME_LIBRARY_DEFAULT "")
+
+string(APPEND CMAKE_C_FLAGS_INIT " -bt=windows")
+string(APPEND CMAKE_CXX_FLAGS_INIT " -bt=windows -xs")
+
+macro(__windows3x_open_watcom lang)
+  if(NOT CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES)
+    set(CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES $ENV{WATCOM}/h $ENV{WATCOM}/h/win)
+  endif()
+endmacro()

+ 12 - 0
Modules/Platform/Windows3x.cmake

@@ -0,0 +1,12 @@
+set(CMAKE_STATIC_LIBRARY_PREFIX "")
+set(CMAKE_STATIC_LIBRARY_SUFFIX ".lib")
+set(CMAKE_SHARED_LIBRARY_PREFIX "")
+set(CMAKE_SHARED_LIBRARY_SUFFIX ".dll")
+set(CMAKE_IMPORT_LIBRARY_PREFIX "")
+set(CMAKE_IMPORT_LIBRARY_SUFFIX ".lib")
+set(CMAKE_EXECUTABLE_SUFFIX ".exe")
+set(CMAKE_LINK_LIBRARY_SUFFIX ".lib")
+set(CMAKE_DL_LIBS "")
+
+set(CMAKE_FIND_LIBRARY_PREFIXES "")
+set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib")