summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlouist103 <35883445+louist103@users.noreply.github.com>2025-06-22 18:36:36 +0000
committerGitHub <noreply@github.com>2025-06-22 14:36:36 -0400
commit33f20ca367dc036291df9cb9a9304c542deb66f9 (patch)
tree523eb476fb480f6600a8a28b53e0176ddf8b4e1d
parent34eb6a7d1744a019794abc0e66d988bfe4762184 (diff)
Windows ARM64 support (#40)
* WIP ARM64 * Add O2 to release
-rw-r--r--CMakeLists.txt22
-rw-r--r--OTRExporter/CMakeLists.txt150
2 files changed, 59 insertions, 113 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6223a17..2da1670 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -9,17 +9,17 @@ project(OTRExporter C CXX)
################################################################################
# Set target arch type if empty. Visual studio solution generator provides it.
################################################################################
-if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
- if(NOT CMAKE_VS_PLATFORM_NAME)
- set(CMAKE_VS_PLATFORM_NAME "x64")
- endif()
- message("${CMAKE_VS_PLATFORM_NAME} architecture in use")
-
- if(NOT ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64"
- OR "${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32"))
- message(FATAL_ERROR "${CMAKE_VS_PLATFORM_NAME} arch is not supported!")
- endif()
-endif()
+#if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
+# if(NOT CMAKE_VS_PLATFORM_NAME)
+# set(CMAKE_VS_PLATFORM_NAME "x64")
+# endif()
+# message("${CMAKE_VS_PLATFORM_NAME} architecture in use")
+#
+# if(NOT ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64"
+# OR "${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32"))
+# message(FATAL_ERROR "${CMAKE_VS_PLATFORM_NAME} arch is not supported!")
+# endif()
+#endif()
################################################################################
# Global configuration types
diff --git a/OTRExporter/CMakeLists.txt b/OTRExporter/CMakeLists.txt
index 72cc734..5812d4b 100644
--- a/OTRExporter/CMakeLists.txt
+++ b/OTRExporter/CMakeLists.txt
@@ -83,73 +83,47 @@ endif()
set(ROOT_NAMESPACE OTRExporter)
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
- set_target_properties(${PROJECT_NAME} PROPERTIES
- VS_GLOBAL_KEYWORD "Win32Proj"
- )
- if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
- set_target_properties(${PROJECT_NAME} PROPERTIES
- INTERPROCEDURAL_OPTIMIZATION_RELEASE "TRUE"
- )
- elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
- set_target_properties(${PROJECT_NAME} PROPERTIES
- INTERPROCEDURAL_OPTIMIZATION_RELEASE "TRUE"
- )
- endif()
+ set_target_properties(${PROJECT_NAME} PROPERTIES
+ INTERPROCEDURAL_OPTIMIZATION_RELEASE "TRUE"
+ )
endif()
################################################################################
# MSVC runtime library
################################################################################
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
get_property(MSVC_RUNTIME_LIBRARY_DEFAULT TARGET ${PROJECT_NAME} PROPERTY MSVC_RUNTIME_LIBRARY)
- if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32" OR "${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
- string(CONCAT "MSVC_RUNTIME_LIBRARY_STR"
- $<$<CONFIG:Debug>:
- MultiThreadedDebug
- >
- $<$<CONFIG:Release>:
- MultiThreaded
- >
- $<$<NOT:$<OR:$<CONFIG:Debug>,$<CONFIG:Release>>>:${MSVC_RUNTIME_LIBRARY_DEFAULT}>
- )
- endif()
+ string(CONCAT "MSVC_RUNTIME_LIBRARY_STR"
+ $<$<CONFIG:Debug>:
+ MultiThreadedDebug
+ >
+ $<$<CONFIG:Release>:
+ MultiThreaded
+ >
+ $<$<NOT:$<OR:$<CONFIG:Debug>,$<CONFIG:Release>>>:${MSVC_RUNTIME_LIBRARY_DEFAULT}>
+ )
set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY ${MSVC_RUNTIME_LIBRARY_STR})
endif()
################################################################################
# Compile definitions
################################################################################
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
- if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
- target_compile_definitions(${PROJECT_NAME} PRIVATE
- "$<$<CONFIG:Debug>:"
- "_DEBUG"
- ">"
- "$<$<CONFIG:Release>:"
- "NDEBUG"
- ">"
- "_CONSOLE;"
- "_CRT_SECURE_NO_WARNINGS;"
- STORMLIB_NO_AUTO_LINK
- )
- elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
- target_compile_definitions(${PROJECT_NAME} PRIVATE
- "$<$<CONFIG:Debug>:"
- "_DEBUG;"
- "_CRT_SECURE_NO_WARNINGS"
- ">"
- "$<$<CONFIG:Release>:"
- "NDEBUG"
- ">"
- "WIN32;"
- "_CONSOLE;"
- STORMLIB_NO_AUTO_LINK
- )
- endif()
+ target_compile_definitions(${PROJECT_NAME} PRIVATE
+ "$<$<CONFIG:Debug>:"
+ "_DEBUG"
+ ">"
+ "$<$<CONFIG:Release>:"
+ "NDEBUG"
+ ">"
+ "_CONSOLE;"
+ "_CRT_SECURE_NO_WARNINGS;"
+ STORMLIB_NO_AUTO_LINK
+ )
endif()
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU|Clang|AppleClang")
target_compile_definitions(${PROJECT_NAME} PRIVATE
"$<$<CONFIG:Debug>:"
- "_DEBUG"
+ "_DEBUG"
">"
"$<$<CONFIG:Release>:"
"NDEBUG"
@@ -189,67 +163,39 @@ FetchContent_MakeAvailable(StormLib)
target_include_directories(${PROJECT_NAME} PRIVATE ${stormlib_SOURCE_DIR}/src)
if(MSVC)
- if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
- target_compile_options(${PROJECT_NAME} PRIVATE
- $<$<CONFIG:Debug>:
+ target_compile_options(${PROJECT_NAME} PRIVATE
+ $<$<CONFIG:Debug>:
/Od;
/Oi-
- >
- $<$<CONFIG:Release>:
- /Oi;
- /Gy
- >
- /permissive-;
- /sdl;
- /W3;
- ${DEFAULT_CXX_DEBUG_INFORMATION_FORMAT};
- ${DEFAULT_CXX_EXCEPTION_HANDLING}
- )
- elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
- target_compile_options(${PROJECT_NAME} PRIVATE
- $<$<CONFIG:Debug>:
- /Od;
- /Oi-
- >
- $<$<CONFIG:Release>:
- /Oi;
- /Gy
- >
- /permissive-;
- /sdl;
- /W3;
- ${DEFAULT_CXX_DEBUG_INFORMATION_FORMAT};
- ${DEFAULT_CXX_EXCEPTION_HANDLING}
- )
- endif()
- if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
- target_link_options(${PROJECT_NAME} PRIVATE
- $<$<CONFIG:Release>:
- /OPT:REF;
- /OPT:ICF
- >
- /SUBSYSTEM:CONSOLE
- )
- elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
- target_link_options(${PROJECT_NAME} PRIVATE
- $<$<CONFIG:Release>:
- /DEBUG;
- /OPT:REF;
- /OPT:ICF;
- /INCREMENTAL:NO
- >
- /SUBSYSTEM:CONSOLE
- )
- endif()
+ >
+ $<$<CONFIG:Release>:
+ /Oi;
+ /Gy
+ /O2
+ >
+ /permissive-;
+ /sdl;
+ /W3;
+ ${DEFAULT_CXX_DEBUG_INFORMATION_FORMAT};
+ ${DEFAULT_CXX_EXCEPTION_HANDLING}
+ )
+ target_link_options(${PROJECT_NAME} PRIVATE
+ $<$<CONFIG:Release>:
+ /OPT:REF;
+ /OPT:ICF
+ /INCREMENTAL:NO
+ >
+ /SUBSYSTEM:CONSOLE
+ )
endif()
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU|Clang|AppleClang")
target_compile_options(${PROJECT_NAME} PRIVATE
- -Wall -Wextra -Wno-error
+ -Wall -Wextra -Wno-error
-Wno-unused-parameter
-Wno-unused-function
-Wno-unused-variable
- -Wno-missing-field-initializers
+ -Wno-missing-field-initializers
-Wno-parentheses
-Wno-narrowing
$<$<COMPILE_LANGUAGE:CXX>:-Wno-deprecated-enum-enum-conversion>