From 262c5e40d9b5b7401439cd0695f7cb448edf7f66 Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Sat, 15 Jul 2023 22:28:59 +0800 Subject: [PATCH] ... --- build.sh | 13 ++++++++++++- src2/main.cpp | 7 ------- tests/dylib/CMakeLists.txt | 20 +++++++++----------- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/build.sh b/build.sh index 1d415760..630e9e92 100644 --- a/build.sh +++ b/build.sh @@ -1,3 +1,14 @@ python3 prebuild.py SRC=$(find src/ -name "*.cpp") -clang++ -std=c++17 -fno-rtti -O2 -stdlib=libc++ -Wfatal-errors -o main src2/main.cpp $SRC -Iinclude -ldl -rdynamic \ No newline at end of file +FLAGS="-std=c++17 -fno-rtti -O2 -stdlib=libc++ -Wfatal-errors -Iinclude" + +if [[ "$OSTYPE" == "darwin"* ]]; then + LIB_EXTENSION=".dylib" + FLAGS="$FLAGS -undefined dynamic_lookup" +else + LIB_EXTENSION=".so" +fi +clang++ $FLAGS -o libpocketpy$LIB_EXTENSION $SRC -fPIC -shared -ldl + +# compile main.cpp and link to libpocketpy.so +clang++ $FLAGS -o main src2/main.cpp -L. -lpocketpy -Wl,-rpath=. \ No newline at end of file diff --git a/src2/main.cpp b/src2/main.cpp index b1ce85f8..e9c6f9b9 100644 --- a/src2/main.cpp +++ b/src2/main.cpp @@ -54,13 +54,6 @@ static int f_input(pkpy_vm* vm){ } int main(int argc, char** argv){ -#if _WIN32 - // implicitly load pocketpy.dll in current directory -#elif __linux__ - dlopen("libpocketpy.so", RTLD_LAZY | RTLD_GLOBAL); -#elif __APPLE__ - dlopen("libpocketpy.dylib", RTLD_LAZY | RTLD_GLOBAL); -#endif pkpy_vm* vm = pkpy_new_vm(true); pkpy_push_function(vm, "input() -> str", f_input); diff --git a/tests/dylib/CMakeLists.txt b/tests/dylib/CMakeLists.txt index 492bac48..251c3906 100644 --- a/tests/dylib/CMakeLists.txt +++ b/tests/dylib/CMakeLists.txt @@ -14,15 +14,13 @@ add_library( test.c ) -if (WIN32) - add_library( - pocketpy - SHARED - ${CMAKE_CURRENT_LIST_DIR}/../../src2/pocketpy_c.cpp - ) +add_library( + pocketpy + SHARED + ${CMAKE_CURRENT_LIST_DIR}/../../src2/pocketpy_c.cpp +) - target_link_libraries( - ${PROJECT_NAME} - pocketpy - ) -endif() \ No newline at end of file +target_link_libraries( + ${PROJECT_NAME} + pocketpy +)