From 9bfd5652e865505ae73f5ae3ba70f384d7418e84 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 14 Jul 2025 13:07:01 +0000 Subject: build: upgrade x86-64 toolchain --- cmake/Platforms/x86_64.cmake | 78 ++++++++++++++++++++++++++++++-------------- 1 file changed, 54 insertions(+), 24 deletions(-) (limited to 'cmake') diff --git a/cmake/Platforms/x86_64.cmake b/cmake/Platforms/x86_64.cmake index e0518b5..29af020 100644 --- a/cmake/Platforms/x86_64.cmake +++ b/cmake/Platforms/x86_64.cmake @@ -1,35 +1,65 @@ -execute_process(COMMAND "x86_64-pc-elf-g++" "-mno-red-zone" "-print-file-name=crtbegin.o" - OUTPUT_VARIABLE CRT_BEGIN - ERROR_QUIET -) -string(STRIP "${CRT_BEGIN}" CRT_BEGIN) -mark_as_advanced(CRT_BEGIN) +include_guard(GLOBAL) -string(REGEX REPLACE "/crtbegin.o" "" CMAKE_SYSROOT "${CRT_BEGIN}") -mark_as_advanced(CMAKE_SYSROOT) +macro(find_compiler_file NAME OUTPUT_VARIABLE) + execute_process(COMMAND + "${CMAKE_CXX_COMPILER}" + "-mno-red-zone" + "-print-file-name=${NAME}" + OUTPUT_STRIP_TRAILING_WHITESPACE + OUTPUT_VARIABLE "${OUTPUT_VARIABLE}" + ERROR_QUIET + ) + mark_as_advanced("${OUTPUT_VARIABLE}") +endmacro() -set(SYSTEM_NAME "Generic") +set(PLATFORM_TARGET "x86_64-pc-elf") set(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY") -set(CMAKE_C_COMPILER "x86_64-pc-elf-gcc") -set(CMAKE_CXX_COMPILER "x86_64-pc-elf-g++") +set(CMAKE_SYSTEM_NAME "Generic-ELF") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_ASM_COMPILER_TARGET "${PLATFORM_TARGET}") +set(CMAKE_CXX_COMPILER_TARGET "${PLATFORM_TARGET}") + +find_program(CMAKE_ASM_COMPILER "${CMAKE_ASM_COMPILER_TARGET}-gcc" REQUIRED) +find_program(CMAKE_CXX_COMPILER "${CMAKE_CXX_COMPILER_TARGET}-g++" REQUIRED) + +set(CMAKE_CXX_FLAGS_INIT +"-mno-red-zone \ +-mcmodel=large \ +-fno-rtti \ +-fno-exceptions \ +-ffunction-sections \ +-fdata-sections" +) -set(CMAKE_CXX_FLAGS_INIT "-m64 -mno-red-zone -mcmodel=large -fno-rtti -fno-exceptions -ffunction-sections -fdata-sections") set(CMAKE_CXX_FLAGS_DEBUG "-ggdb3") set(CMAKE_ASM_FLAGS_DEBUG "-ggdb3") -set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-ggdb3") -set(CMAKE_ASM_FLAGS_RELWITHDEBINFO "-ggdb3") + +set(CMAKE_ASM_FLAGS_MINSIZEREL "-Os -DNDEBUG -ggdb3") +set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG -ggdb3") + +set(CMAKE_ASM_FLAGS_RELEASE "-O3 -DNDEBUG -ggdb3") +set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG -ggdb3") + +set(CMAKE_ASM_FLAGS_RELWITHDEBINFO "-O2 -DNDEBUG -ggdb3") +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -DNDEBUG -ggdb3") + set(CMAKE_EXE_LINKER_FLAGS_INIT "-nostartfiles -Wl,--gc-sections") + +find_compiler_file("crtbegin.o" CRT_BEGIN_PATH) +find_compiler_file("crtend.o" CRT_END_PATH) + set(CMAKE_CXX_LINK_EXECUTABLE - " \ - \ - \ - \ - ${CMAKE_SYSROOT}/crtbegin.o \ - \ - -o \ - \ - -lgcc \ - ${CMAKE_SYSROOT}/crtend.o" +" \ + \ + \ + \ +${CRT_BEGIN_PATH} \ + \ +-o \ + \ +-lgcc \ +${CRT_END_PATH}" ) -- cgit v1.2.3