cmake: update for compatibility with CMake 4.0

This commit is contained in:
2026-03-22 13:11:10 +00:00
parent ac8f669e6b
commit 119a86b8e6
12 changed files with 36 additions and 32 deletions

View File

@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.14)
cmake_minimum_required(VERSION 4.0)
project(Rosetta C CXX ASM)
include(CheckPIESupported)

View File

@@ -5,13 +5,13 @@ set(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY")
find_program(C_COMPILER x86_64-elf-gcc REQUIRED)
find_program(CXX_COMPILER x86_64-elf-g++ REQUIRED)
find_program(ASM_COMPILER x86_64-elf-as REQUIRED)
#find_program(ASM_COMPILER x86_64-elf-as REQUIRED)
add_compile_definitions(__mango__=1)
set(CMAKE_C_COMPILER ${C_COMPILER})
set(CMAKE_CXX_COMPILER ${CXX_COMPILER})
set(CMAKE_ASM_COMPILER ${ASM_COMPILER})
#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)
@@ -19,6 +19,7 @@ set(CMAKE_EXE_LINKER_FLAGS "-Wl,--unresolved-symbols=report-all,--dynamic-linker
set(CMAKE_C_LINK_OPTIONS_PIE "-pie")
set(CMAKE_C_LINK_PIE_SUPPORTED TRUE)
set(CMAKE_C_LINK_NO_PIE_SUPPORTED TRUE)
SET(CMAKE_ASM_FLAGS "${CFLAGS} -x assembler-with-cpp")
set(CMAKE_C_OUTPUT_EXTENSION .o)
set(CMAKE_CXX_OUTPUT_EXTENSION .o)

View File

@@ -26,7 +26,7 @@ bsp_add_library(
NAME libc
LIB_DIR /usr/lib)
target_link_libraries(libc libmango libxpc-static interface::fs)
target_link_libraries(libc PRIVATE libmango libxpc-static interface::fs)
target_compile_definitions(libc PRIVATE ENABLE_GLOBAL_HEAP=1)
add_subdirectory(pthread)

View File

@@ -22,4 +22,4 @@ sysroot_add_library(
HEADER_DIR /usr/include
LIB_DIR /usr/lib)
target_link_libraries(libc-core libmango)
target_link_libraries(libc-core PRIVATE libmango librosetta)

View File

@@ -1,33 +1,32 @@
set(source_dirs thread)
set(pthread_source_dirs thread)
foreach (dir ${source_dirs})
foreach (dir ${pthread_source_dirs})
file(GLOB dir_sources ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/*.c)
file(GLOB dir_headers ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/*.h)
set(sources ${sources} ${dir_sources})
set(headers ${headers} ${dir_headers})
set(pthread_sources ${pthread_sources} ${dir_sources})
set(pthread_headers ${pthread_headers} ${dir_headers})
endforeach (dir)
file(GLOB sys_sources
file(GLOB pthread_sys_sources
${CMAKE_CURRENT_SOURCE_DIR}/sys/${CMAKE_SYSTEM_PROCESSOR}/*.c
${CMAKE_CURRENT_SOURCE_DIR}/sys/${CMAKE_SYSTEM_PROCESSOR}/*.S)
set_property(SOURCE ${sys_sources} PROPERTY LANGUAGE C)
set(sources ${sources} ${sys_sources})
set(pthread_sources ${pthread_sources} ${pthread_sys_sources})
set(headers ${headers} ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread.h)
set(public_include_dir ${CMAKE_CURRENT_SOURCE_DIR}/include)
set(pthread_headers ${pthread_headers} ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread.h)
set(pthread_public_include_dir ${CMAKE_CURRENT_SOURCE_DIR}/include)
rosetta_add_library(STATIC
NAME libc-pthread
PUBLIC_INCLUDE_DIRS ${public_include_dir}
SOURCES ${sources}
HEADERS ${headers})
PUBLIC_INCLUDE_DIRS ${pthread_public_include_dir}
SOURCES ${pthread_sources}
HEADERS ${pthread_headers})
rosetta_add_library(SHARED
NAME libpthread
PUBLIC_INCLUDE_DIRS ${public_include_dir}
SOURCES ${sources}
HEADERS ${headers})
PUBLIC_INCLUDE_DIRS ${pthread_public_include_dir}
SOURCES ${pthread_sources}
HEADERS ${pthread_headers})
sysroot_add_library(
NAME libc-pthread
@@ -38,5 +37,10 @@ sysroot_add_library(
HEADER_DIR /usr/include
LIB_DIR /usr/lib)
target_link_libraries(libc-pthread libc-io libmango)
target_link_libraries(libpthread libmango libc)
bsp_add_library(
NAME libpthread
LIB_DIR /usr/lib)
target_link_libraries(libc-pthread PRIVATE libc-io libmango)
target_link_libraries(libpthread PRIVATE libmango)
target_link_libraries(libpthread PUBLIC libc)

View File

@@ -1,6 +1,5 @@
file(GLOB runtime_sources
${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_SYSTEM_PROCESSOR}/*.s)
set_property(SOURCE ${runtime_sources} PROPERTY LANGUAGE C)
rosetta_add_object_library(
NAME libc-runtime STATIC

View File

@@ -18,4 +18,4 @@ sysroot_add_library(
HEADER_DIR /usr/include
LIB_DIR /usr/lib)
target_link_libraries(liblaunch librosetta libmango libc-core)
target_link_libraries(liblaunch PRIVATE librosetta libmango libc-core)

View File

@@ -12,4 +12,4 @@ sysroot_add_library(
HEADER_DIR /usr/include
LIB_DIR /usr/lib)
target_link_libraries(librosetta libmango)
target_link_libraries(librosetta PRIVATE libmango)

View File

@@ -1,6 +1,6 @@
file(GLOB sources *.c)
add_executable(systemd ${sources})
target_link_libraries(systemd libc libc-runtime liblaunch libmango)
target_link_libraries(systemd libc libc-runtime libpthread liblaunch libmango)
sysroot_add_program(
NAME systemd

View File

@@ -1,5 +1,5 @@
add_executable(test test.c)
target_link_libraries(test libc libc-runtime liblaunch)
target_link_libraries(test libc libc-runtime libmango liblaunch)
sysroot_add_program(
NAME test

View File

@@ -1,12 +1,14 @@
file(GLOB c_sources *.c *.h)
file(GLOB arch_sources arch/${CMAKE_SYSTEM_PROCESSOR}/*.S)
set_property(SOURCE ${arch_sources} PROPERTY LANGUAGE C)
add_executable(bootstrap ${c_sources} ${arch_sources})
target_link_libraries(bootstrap
libmango libc-core libc-malloc libc-pthread libfs-static liblaunch libxpc-static
libmango librosetta
libc-core libc-malloc libc-pthread
libfs-static
liblaunch
libxpc-static
interface::fs)
target_compile_options(bootstrap PRIVATE

View File

@@ -1,8 +1,6 @@
file(GLOB c_sources *.c *.h)
file(GLOB arch_sources arch/${CMAKE_SYSTEM_PROCESSOR}/*.S)
set_property(SOURCE ${arch_sources} PROPERTY LANGUAGE C)
add_executable(ld ${c_sources} ${arch_sources})
set_target_properties(ld PROPERTIES
POSITION_INDEPENDENT_CODE ON