diff --git a/CMakeLists.txt b/CMakeLists.txt index af0a4e8b575321..f17a7eb0d036bc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -135,6 +135,16 @@ function(serenity_libc target_name fs_name) serenity_generated_sources(${target_name}) endfunction() +function(serenity_libc_shared target_name fs_name) + serenity_install_headers("") + serenity_install_sources("Libraries/LibC") + add_library(${target_name} SHARED ${SOURCES}) + install(TARGETS ${target_name} DESTINATION usr/lib) + set_target_properties(${target_name} PROPERTIES OUTPUT_NAME ${fs_name}) + target_link_directories(LibC PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) + serenity_generated_sources(${target_name}) +endfunction() + function(serenity_bin target_name) add_executable(${target_name} ${SOURCES}) install(TARGETS ${target_name} RUNTIME DESTINATION bin) @@ -210,6 +220,8 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Os -g1 -fno-exceptions -fno-rtti -Wno-a set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffile-prefix-map=${CMAKE_SOURCE_DIR}=.") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEBUG -DSANITIZE_PTRS") +set(CMAKE_CXX_FLAGS_WITHOUT_STATIC ${CMAKE_CXX_FLAGS}) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static") add_link_options(--sysroot ${CMAKE_BINARY_DIR}/Root) include_directories(Libraries/LibC) diff --git a/Demos/DynamicObject/CMakeLists.txt b/Demos/DynamicObject/CMakeLists.txt index 9ac8b607b8a46e..d32736e9849e73 100644 --- a/Demos/DynamicObject/CMakeLists.txt +++ b/Demos/DynamicObject/CMakeLists.txt @@ -3,7 +3,7 @@ set(SOURCES ../../Libraries/LibC/crt0_shared.cpp ) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -nostartfiles -pie -fpic") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_WITHOUT_STATIC} -nostartfiles -pie -fpic") serenity_bin(DynamicObjectDemo) target_link_libraries(DynamicObjectDemo SampleLib LibCShared) diff --git a/Demos/DynamicObject/SampleLib/CMakeLists.txt b/Demos/DynamicObject/SampleLib/CMakeLists.txt index 0233405a7e0891..b02dbe8196a102 100644 --- a/Demos/DynamicObject/SampleLib/CMakeLists.txt +++ b/Demos/DynamicObject/SampleLib/CMakeLists.txt @@ -3,7 +3,7 @@ set(SOURCES lib.cpp ) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -nostdlib -fpic") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_WIHTOUT_STATIC} -nostdlib -fpic") add_library(SampleLib SHARED ${SOURCES}) target_link_libraries(SampleLib LibCShared) diff --git a/Libraries/LibC/CMakeLists.txt b/Libraries/LibC/CMakeLists.txt index f382587fb842b5..bcf1222659e08f 100644 --- a/Libraries/LibC/CMakeLists.txt +++ b/Libraries/LibC/CMakeLists.txt @@ -70,5 +70,8 @@ serenity_libc(LibC c) target_link_libraries(LibC crt0) add_dependencies(LibC LibM) -add_library(LibCShared SHARED ${SOURCES}) -install(TARGETS LibCShared DESTINATION usr/lib) +set(SOURCES ${SOURCES} "crt0_shared.cpp") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -nostdlib") +serenity_libc_shared(LibCShared c) +#add_library(LibCShared SHARED ${SOURCES}) +#install(TARGETS LibCShared DESTINATION usr/lib) diff --git a/Libraries/LibC/crt0_shared.cpp b/Libraries/LibC/crt0_shared.cpp index f38e607d8399b8..c016e2455694dc 100644 --- a/Libraries/LibC/crt0_shared.cpp +++ b/Libraries/LibC/crt0_shared.cpp @@ -22,9 +22,11 @@ int _start(int argc, char** argv, char** env) __environ_is_malloced = false; __libc_init(); - _init(); + // _init(); int status = main(argc, argv, environ); return status; } } + +void* __dso_handle = nullptr;