cmake: update for compatibility with CMake 4.0
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.14)
|
||||
cmake_minimum_required(VERSION 4.0)
|
||||
project(Rosetta C CXX ASM)
|
||||
|
||||
include(CheckPIESupported)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user