refactor(shared): Library order changed

Changed library linking order: cli (executable) <= runtime(static) <= based (shared)
This commit is contained in:
Max 2023-12-03 16:04:09 +01:00
parent a60a14b6b6
commit d49e725846
13 changed files with 30 additions and 15 deletions

View File

@ -1,3 +1,6 @@
# Public include # Public include
target_sources(based PUBLIC
"base.h")
add_subdirectory(based) add_subdirectory(based)

View File

@ -8,8 +8,9 @@
#ifndef BASE_H #ifndef BASE_H
#define BASE_H #define BASE_H
#include "env/envb.h" #include "based/env/envb.h"
extern int main(int argc, char** argv, char** envp);
extern int rt_initialize_lib();
// ======================================== // ========================================
// Definitions // Definitions
// ======================================== // ========================================

View File

@ -1,2 +1,3 @@
# Public based include # Public based include
add_subdirectory(env)

4
include/based/env/CMakeLists.txt vendored Executable file
View File

@ -0,0 +1,4 @@
# based => include => env
target_sources(based PUBLIC
"envb.h")

View File

@ -3,7 +3,7 @@
add_library(based SHARED "base.c") add_library(based SHARED "base.c")
target_compile_features(based PRIVATE c_std_99) target_compile_features(based PRIVATE c_std_99)
target_link_libraries(based PUBLIC runtime) #target_link_libraries(based PUBLIC runtime)
target_include_directories(based target_include_directories(based
PUBLIC PUBLIC
@ -13,5 +13,6 @@ target_include_directories(based
${CMAKE_SOURCE_DIR}/src) ${CMAKE_SOURCE_DIR}/src)
add_subdirectory(include) #add_subdirectory(include)
#add_subdirectory(rt)
add_subdirectory(system) add_subdirectory(system)

View File

@ -6,3 +6,10 @@ EXPORT int test()
return 69; return 69;
} }
EXPORT int rt_initialize_lib()
{
// Setup
int result = main(0, NULL, NULL);
// Exiting
return result;
}

View File

@ -1,6 +1,6 @@
# based => include # based => include
target_sources(based PUBLIC #target_sources(based PUBLIC
"base.h") # "base.h")
add_subdirectory(env) #add_subdirectory(env)

View File

@ -1,3 +0,0 @@
# based => include => env
target_sources(based PRIVATE "envb.h")

View File

@ -2,4 +2,4 @@
add_executable(bcli "main.c") add_executable(bcli "main.c")
target_link_libraries(bcli PUBLIC based) target_link_libraries(bcli PUBLIC runtime)

View File

@ -4,7 +4,7 @@ add_library(runtime STATIC
"rtinternal.h" "rtinternal.h"
"runtime.c") "runtime.c")
#target_link_libraries(runtime PUBLIC based) target_link_libraries(runtime PUBLIC based)
target_include_directories(runtime target_include_directories(runtime
PUBLIC PUBLIC

View File

@ -13,7 +13,7 @@ _start:
lea 0x8(%rsp), %rsi // Get the argv address lea 0x8(%rsp), %rsi // Get the argv address
lea 16(%rsp,%rdi,8), %rdx // Get the envp address lea 16(%rsp,%rdi,8), %rdx // Get the envp address
//call rt_unix_start // Start c function call rt_unix_start // Start c function
// Use exit_group syscall // Use exit_group syscall
movq $231, %rax movq $231, %rax
movq $0, %rdi movq $0, %rdi

View File

@ -1,6 +1,7 @@
//#include "base.h" #include "base.h"
void rt_unix_start(int argc, char** argv, char** envp) void rt_unix_start(int argc, char** argv, char** envp)
{ {
//TODO: Callback => main & syscall to exit group int init_result = rt_initialize_lib();
// unix exit
} }