From 555989e74aaefefc7090334c459d3798de520954 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Sat, 21 Mar 2026 10:35:09 +0000 Subject: [PATCH] cmake: build all programs as position-independent by default --- CMakeLists.txt | 3 +++ arch/x86_64/Platform/Rosetta.cmake | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index dd5a3f5..f16246f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,9 @@ cmake_minimum_required(VERSION 3.14) project(Rosetta C CXX ASM) +include(CheckPIESupported) +check_pie_supported() + set(sys_dir ${CMAKE_CURRENT_BINARY_DIR}/sys) set(kernel_name mango_kernel) diff --git a/arch/x86_64/Platform/Rosetta.cmake b/arch/x86_64/Platform/Rosetta.cmake index 92939c3..5132c2d 100644 --- a/arch/x86_64/Platform/Rosetta.cmake +++ b/arch/x86_64/Platform/Rosetta.cmake @@ -16,6 +16,11 @@ set(CMAKE_ASM_COMPILER ${ASM_COMPILER}) SET(CMAKE_C_FLAGS "-ffreestanding -nostdlib -z max-page-size=0x1000 -m64 -mcmodel=large -mno-red-zone -mno-mmx -mno-sse -mno-sse2 -D_64BIT -DBYTE_ORDER=1234" CACHE STRING "" FORCE) set(CMAKE_SHARED_LINKER_FLAGS "-Wl,-shared" CACHE STRING "" FORCE) set(CMAKE_EXE_LINKER_FLAGS "-Wl,--unresolved-symbols=report-all,--dynamic-linker=/lib/ld64.so" CACHE STRING "" FORCE) +set(CMAKE_C_LINK_OPTIONS_PIE "-pie") +set(CMAKE_C_LINK_PIE_SUPPORTED TRUE) +set(CMAKE_C_LINK_NO_PIE_SUPPORTED TRUE) set(CMAKE_C_OUTPUT_EXTENSION .o) set(CMAKE_CXX_OUTPUT_EXTENSION .o) + +set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)