From 119a86b8e6aeda4baa832df205a00476d542bf1c Mon Sep 17 00:00:00 2001 From: Max Wash Date: Sun, 22 Mar 2026 13:11:10 +0000 Subject: [PATCH] cmake: update for compatibility with CMake 4.0 --- CMakeLists.txt | 2 +- arch/x86_64/Platform/Rosetta.cmake | 5 ++-- lib/libc/CMakeLists.txt | 2 +- lib/libc/core/CMakeLists.txt | 2 +- lib/libc/pthread/CMakeLists.txt | 38 +++++++++++++++++------------- lib/libc/runtime/CMakeLists.txt | 1 - lib/liblaunch/CMakeLists.txt | 2 +- lib/librosetta/CMakeLists.txt | 2 +- programs/systemd/CMakeLists.txt | 2 +- programs/test/CMakeLists.txt | 2 +- sys/bootstrap/CMakeLists.txt | 8 ++++--- sys/ld/CMakeLists.txt | 2 -- 12 files changed, 36 insertions(+), 32 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f16246f..cfd7f85 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.14) +cmake_minimum_required(VERSION 4.0) project(Rosetta C CXX ASM) include(CheckPIESupported) diff --git a/arch/x86_64/Platform/Rosetta.cmake b/arch/x86_64/Platform/Rosetta.cmake index 5132c2d..2c03125 100644 --- a/arch/x86_64/Platform/Rosetta.cmake +++ b/arch/x86_64/Platform/Rosetta.cmake @@ -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) diff --git a/lib/libc/CMakeLists.txt b/lib/libc/CMakeLists.txt index dcffb55..74cc29f 100644 --- a/lib/libc/CMakeLists.txt +++ b/lib/libc/CMakeLists.txt @@ -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) diff --git a/lib/libc/core/CMakeLists.txt b/lib/libc/core/CMakeLists.txt index a26774c..c5ab489 100644 --- a/lib/libc/core/CMakeLists.txt +++ b/lib/libc/core/CMakeLists.txt @@ -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) diff --git a/lib/libc/pthread/CMakeLists.txt b/lib/libc/pthread/CMakeLists.txt index 7cdda3e..0f616e1 100644 --- a/lib/libc/pthread/CMakeLists.txt +++ b/lib/libc/pthread/CMakeLists.txt @@ -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) diff --git a/lib/libc/runtime/CMakeLists.txt b/lib/libc/runtime/CMakeLists.txt index 11fe48b..68b5948 100644 --- a/lib/libc/runtime/CMakeLists.txt +++ b/lib/libc/runtime/CMakeLists.txt @@ -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 diff --git a/lib/liblaunch/CMakeLists.txt b/lib/liblaunch/CMakeLists.txt index 6a5ad0a..613cf6e 100644 --- a/lib/liblaunch/CMakeLists.txt +++ b/lib/liblaunch/CMakeLists.txt @@ -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) diff --git a/lib/librosetta/CMakeLists.txt b/lib/librosetta/CMakeLists.txt index 6990fa8..628ec19 100644 --- a/lib/librosetta/CMakeLists.txt +++ b/lib/librosetta/CMakeLists.txt @@ -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) diff --git a/programs/systemd/CMakeLists.txt b/programs/systemd/CMakeLists.txt index cb975b8..6ccfe8a 100644 --- a/programs/systemd/CMakeLists.txt +++ b/programs/systemd/CMakeLists.txt @@ -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 diff --git a/programs/test/CMakeLists.txt b/programs/test/CMakeLists.txt index e9b5ead..96d5011 100644 --- a/programs/test/CMakeLists.txt +++ b/programs/test/CMakeLists.txt @@ -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 diff --git a/sys/bootstrap/CMakeLists.txt b/sys/bootstrap/CMakeLists.txt index a3412ac..1089d15 100644 --- a/sys/bootstrap/CMakeLists.txt +++ b/sys/bootstrap/CMakeLists.txt @@ -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 diff --git a/sys/ld/CMakeLists.txt b/sys/ld/CMakeLists.txt index 8e178a6..9ba1f6e 100644 --- a/sys/ld/CMakeLists.txt +++ b/sys/ld/CMakeLists.txt @@ -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