aboutsummaryrefslogtreecommitdiff
path: root/cmake/Platforms
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/Platforms')
-rw-r--r--cmake/Platforms/x86_64.cmake62
1 files changed, 34 insertions, 28 deletions
diff --git a/cmake/Platforms/x86_64.cmake b/cmake/Platforms/x86_64.cmake
index e0518b5..b17fec8 100644
--- a/cmake/Platforms/x86_64.cmake
+++ b/cmake/Platforms/x86_64.cmake
@@ -1,35 +1,41 @@
-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)
-
-string(REGEX REPLACE "/crtbegin.o" "" CMAKE_SYSROOT "${CRT_BEGIN}")
-mark_as_advanced(CMAKE_SYSROOT)
+include_guard(GLOBAL)
-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}-g++" REQUIRED)
+find_program(CMAKE_CXX_COMPILER "${CMAKE_CXX_COMPILER_TARGET}-g++" REQUIRED)
+
+set(CMAKE_CXX_FLAGS_INIT
+ "-mno-red-zone"
+ "-mcmodel=kernel"
+ "-fno-pie"
+ "-fno-rtti"
+ "-fno-exceptions"
+ "-fno-use-cxa-atexit"
+ "-ffunction-sections"
+ "-fdata-sections"
+)
+
+list(JOIN CMAKE_CXX_FLAGS_INIT " " CMAKE_CXX_FLAGS_INIT)
+
+set(CMAKE_EXE_LINKER_FLAGS_INIT "-Wl,--gc-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_EXE_LINKER_FLAGS_INIT "-nostartfiles -Wl,--gc-sections")
-set(CMAKE_CXX_LINK_EXECUTABLE
- "<CMAKE_CXX_COMPILER> \
- <FLAGS> \
- <CMAKE_CXX_LINK_FLAGS> \
- <LINK_FLAGS> \
- ${CMAKE_SYSROOT}/crtbegin.o \
- <OBJECTS> \
- -o <TARGET> \
- <LINK_LIBRARIES> \
- -lgcc \
- ${CMAKE_SYSROOT}/crtend.o"
-)
+
+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")