summaryrefslogtreecommitdiff
path: root/Toolchain/CMake/GNUToolchain.txt.in
diff options
context:
space:
mode:
Diffstat (limited to 'Toolchain/CMake/GNUToolchain.txt.in')
-rw-r--r--Toolchain/CMake/GNUToolchain.txt.in37
1 files changed, 37 insertions, 0 deletions
diff --git a/Toolchain/CMake/GNUToolchain.txt.in b/Toolchain/CMake/GNUToolchain.txt.in
new file mode 100644
index 0000000000..9a0a2efdc8
--- /dev/null
+++ b/Toolchain/CMake/GNUToolchain.txt.in
@@ -0,0 +1,37 @@
+list(APPEND CMAKE_MODULE_PATH "@SERENITY_SOURCE_DIR@/Toolchain/CMake")
+
+set(CMAKE_SYSTEM_NAME SerenityOS)
+set(CMAKE_SYSTEM_PROCESSOR "@SERENITY_ARCH@")
+
+set(SERENITYOS 1)
+set(triple @SERENITY_ARCH@-pc-serenity)
+set(TOOLCHAIN_PATH @SERENITY_SOURCE_DIR@/Toolchain/Local/@SERENITY_ARCH@/bin)
+set(TOOLCHAIN_PREFIX ${TOOLCHAIN_PATH}/${triple}-)
+
+# where to read from/write to
+set(CMAKE_SYSROOT @SERENITY_BUILD_DIR@/Root)
+set(CMAKE_STAGING_PREFIX @SERENITY_BUILD_DIR@/Root/usr/local)
+set(CMAKE_INSTALL_PREFIX @SERENITY_BUILD_DIR@/Root/usr/local)
+set(CMAKE_INSTALL_DATAROOTDIR @SERENITY_BUILD_DIR@/Root/usr/local/share)
+
+set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}gcc)
+set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}g++)
+set(CMAKE_ASM_COMPILER ${TOOLCHAIN_PREFIX}gcc)
+set(CMAKE_LINKER ${TOOLCHAIN_PREFIX}ld)
+set(CMAKE_RANLIB ${TOOLCHAIN_PREFIX}gcc-ranlib)
+set(CMAKE_STRIP ${TOOLCHAIN_PREFIX}strip)
+set(CMAKE_AR ${TOOLCHAIN_PREFIX}gcc-ar)
+set(CMAKE_OBJCOPY ${TOOLCHAIN_PREFIX}objcopy)
+set(CMAKE_CXXFILT ${TOOLCHAIN_PREFIX}c++filt)
+
+set(CMAKE_EXE_LINKER_FLAGS_INIT "-Wl,--hash-style=gnu,-z,relro,-z,now,-z,noexecstack,-z,max-page-size=0x1000,-z,separate-code")
+
+# FIXME: We could eliminate this setting by building LibC and support asm files (crti.o, crtn.o)
+# in a separate build stage before the main build to ensure that LibC is available
+# for the try_compile check for the main build.
+set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
+
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH)