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)
|
project(Rosetta C CXX ASM)
|
||||||
|
|
||||||
include(CheckPIESupported)
|
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(C_COMPILER x86_64-elf-gcc REQUIRED)
|
||||||
find_program(CXX_COMPILER x86_64-elf-g++ 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)
|
add_compile_definitions(__mango__=1)
|
||||||
|
|
||||||
set(CMAKE_C_COMPILER ${C_COMPILER})
|
set(CMAKE_C_COMPILER ${C_COMPILER})
|
||||||
set(CMAKE_CXX_COMPILER ${CXX_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_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_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_OPTIONS_PIE "-pie")
|
||||||
set(CMAKE_C_LINK_PIE_SUPPORTED TRUE)
|
set(CMAKE_C_LINK_PIE_SUPPORTED TRUE)
|
||||||
set(CMAKE_C_LINK_NO_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_C_OUTPUT_EXTENSION .o)
|
||||||
set(CMAKE_CXX_OUTPUT_EXTENSION .o)
|
set(CMAKE_CXX_OUTPUT_EXTENSION .o)
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ bsp_add_library(
|
|||||||
NAME libc
|
NAME libc
|
||||||
LIB_DIR /usr/lib)
|
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)
|
target_compile_definitions(libc PRIVATE ENABLE_GLOBAL_HEAP=1)
|
||||||
|
|
||||||
add_subdirectory(pthread)
|
add_subdirectory(pthread)
|
||||||
|
|||||||
@@ -22,4 +22,4 @@ sysroot_add_library(
|
|||||||
HEADER_DIR /usr/include
|
HEADER_DIR /usr/include
|
||||||
LIB_DIR /usr/lib)
|
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_sources ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/*.c)
|
||||||
file(GLOB dir_headers ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/*.h)
|
file(GLOB dir_headers ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/*.h)
|
||||||
|
|
||||||
set(sources ${sources} ${dir_sources})
|
set(pthread_sources ${pthread_sources} ${dir_sources})
|
||||||
set(headers ${headers} ${dir_headers})
|
set(pthread_headers ${pthread_headers} ${dir_headers})
|
||||||
endforeach (dir)
|
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}/*.c
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/sys/${CMAKE_SYSTEM_PROCESSOR}/*.S)
|
${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(pthread_headers ${pthread_headers} ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread.h)
|
||||||
set(public_include_dir ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
set(pthread_public_include_dir ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
||||||
|
|
||||||
rosetta_add_library(STATIC
|
rosetta_add_library(STATIC
|
||||||
NAME libc-pthread
|
NAME libc-pthread
|
||||||
PUBLIC_INCLUDE_DIRS ${public_include_dir}
|
PUBLIC_INCLUDE_DIRS ${pthread_public_include_dir}
|
||||||
SOURCES ${sources}
|
SOURCES ${pthread_sources}
|
||||||
HEADERS ${headers})
|
HEADERS ${pthread_headers})
|
||||||
rosetta_add_library(SHARED
|
rosetta_add_library(SHARED
|
||||||
NAME libpthread
|
NAME libpthread
|
||||||
PUBLIC_INCLUDE_DIRS ${public_include_dir}
|
PUBLIC_INCLUDE_DIRS ${pthread_public_include_dir}
|
||||||
SOURCES ${sources}
|
SOURCES ${pthread_sources}
|
||||||
HEADERS ${headers})
|
HEADERS ${pthread_headers})
|
||||||
|
|
||||||
sysroot_add_library(
|
sysroot_add_library(
|
||||||
NAME libc-pthread
|
NAME libc-pthread
|
||||||
@@ -38,5 +37,10 @@ sysroot_add_library(
|
|||||||
HEADER_DIR /usr/include
|
HEADER_DIR /usr/include
|
||||||
LIB_DIR /usr/lib)
|
LIB_DIR /usr/lib)
|
||||||
|
|
||||||
target_link_libraries(libc-pthread libc-io libmango)
|
bsp_add_library(
|
||||||
target_link_libraries(libpthread libmango libc)
|
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
|
file(GLOB runtime_sources
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_SYSTEM_PROCESSOR}/*.s)
|
${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_SYSTEM_PROCESSOR}/*.s)
|
||||||
set_property(SOURCE ${runtime_sources} PROPERTY LANGUAGE C)
|
|
||||||
|
|
||||||
rosetta_add_object_library(
|
rosetta_add_object_library(
|
||||||
NAME libc-runtime STATIC
|
NAME libc-runtime STATIC
|
||||||
|
|||||||
@@ -18,4 +18,4 @@ sysroot_add_library(
|
|||||||
HEADER_DIR /usr/include
|
HEADER_DIR /usr/include
|
||||||
LIB_DIR /usr/lib)
|
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
|
HEADER_DIR /usr/include
|
||||||
LIB_DIR /usr/lib)
|
LIB_DIR /usr/lib)
|
||||||
|
|
||||||
target_link_libraries(librosetta libmango)
|
target_link_libraries(librosetta PRIVATE libmango)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
file(GLOB sources *.c)
|
file(GLOB sources *.c)
|
||||||
add_executable(systemd ${sources})
|
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(
|
sysroot_add_program(
|
||||||
NAME systemd
|
NAME systemd
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
add_executable(test test.c)
|
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(
|
sysroot_add_program(
|
||||||
NAME test
|
NAME test
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
file(GLOB c_sources *.c *.h)
|
file(GLOB c_sources *.c *.h)
|
||||||
file(GLOB arch_sources arch/${CMAKE_SYSTEM_PROCESSOR}/*.S)
|
file(GLOB arch_sources arch/${CMAKE_SYSTEM_PROCESSOR}/*.S)
|
||||||
|
|
||||||
set_property(SOURCE ${arch_sources} PROPERTY LANGUAGE C)
|
|
||||||
|
|
||||||
add_executable(bootstrap ${c_sources} ${arch_sources})
|
add_executable(bootstrap ${c_sources} ${arch_sources})
|
||||||
|
|
||||||
target_link_libraries(bootstrap
|
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)
|
interface::fs)
|
||||||
|
|
||||||
target_compile_options(bootstrap PRIVATE
|
target_compile_options(bootstrap PRIVATE
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
file(GLOB c_sources *.c *.h)
|
file(GLOB c_sources *.c *.h)
|
||||||
file(GLOB arch_sources arch/${CMAKE_SYSTEM_PROCESSOR}/*.S)
|
file(GLOB arch_sources arch/${CMAKE_SYSTEM_PROCESSOR}/*.S)
|
||||||
|
|
||||||
set_property(SOURCE ${arch_sources} PROPERTY LANGUAGE C)
|
|
||||||
|
|
||||||
add_executable(ld ${c_sources} ${arch_sources})
|
add_executable(ld ${c_sources} ${arch_sources})
|
||||||
set_target_properties(ld PROPERTIES
|
set_target_properties(ld PROPERTIES
|
||||||
POSITION_INDEPENDENT_CODE ON
|
POSITION_INDEPENDENT_CODE ON
|
||||||
|
|||||||
Reference in New Issue
Block a user