blueloveTH пре 2 година
родитељ
комит
262c5e40d9
3 измењених фајлова са 21 додато и 19 уклоњено
  1. 12 1
      build.sh
  2. 0 7
      src2/main.cpp
  3. 9 11
      tests/dylib/CMakeLists.txt

+ 12 - 1
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
+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=.

+ 0 - 7
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);

+ 9 - 11
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()
+target_link_libraries(
+    ${PROJECT_NAME}
+    pocketpy
+)