mirror of
https://github.com/YimMenu/YimMenuV2.git
synced 2026-10-10 03:43:15 +08:00
45 lines
1.9 KiB
CMake
45 lines
1.9 KiB
CMake
# credits to @tupoy-ya for this
|
|
option(USE_GCC "Use MinGW toolchain with gcc compiler and uasm assembler.")
|
|
option(USE_CLANG "Use MinGW toolchain with clang compiler and uasm assembler. Clang support is experimental.")
|
|
|
|
if(USE_GCC OR USE_CLANG)
|
|
message(STATUS "Cross-compile is enabled. Using MinGW and uasm.")
|
|
|
|
set(TOOLCHAIN_PREFIX "x86_64-w64-mingw32" CACHE STRING "Set toolchain. Default: x86_64-w64-mingw32")
|
|
message(STATUS "Using ${TOOLCHAIN_PREFIX} toolchain")
|
|
set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32)
|
|
set(CMAKE_SYSTEM_NAME "Windows")
|
|
set(CMAKE_ASM_MASM_COMPILER "uasm")
|
|
|
|
set(CMAKE_C_COMPILER_TARGET x86_64-windows-gnu)
|
|
set(CMAKE_CXX_COMPILER_TARGET x86_64-windows-gnu)
|
|
set(CMAKE_Fortran_COMPILER ${TOOLCHAIN_PREFIX}-gfortran)
|
|
set(CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres)
|
|
|
|
# modify default behavior of FIND_XXX() commands
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
|
|
add_compile_options("$<$<COMPILE_LANGUAGE:ASM_MASM>:-win64${ASM_MASM_FLAGS}>")
|
|
add_link_options(-static)
|
|
add_compile_definitions(CROSSCOMPILING)
|
|
|
|
if(USE_GCC)
|
|
# Disable RTTI to work around libstdc++ issue https://stackoverflow.com/a/77025827
|
|
add_compile_options("$<$<COMPILE_LANGUAGE:CXX>:-fpermissive;-fno-rtti${CXX_FLAGS}>")
|
|
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)
|
|
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)
|
|
endif()
|
|
|
|
if(USE_CLANG)
|
|
message(STATUS "Using clang compiler.")
|
|
set(CMAKE_C_COMPILER clang)
|
|
set(CMAKE_CXX_COMPILER clang++)
|
|
|
|
# Disable RTTI to work around libstdc++ issue https://stackoverflow.com/a/77025827
|
|
add_compile_options("$<$<COMPILE_LANGUAGE:CXX>:-fuse-ld=lld;-femulated-tls;-fno-rtti${CXX_FLAGS}>")
|
|
add_link_options(-fuse-ld=lld -femulated-tls -fno-rtti)
|
|
endif()
|
|
|
|
endif() |