From 2c03d053d837ab5692003ed87c5be856ac73c36e Mon Sep 17 00:00:00 2001 From: star9029 Date: Sun, 23 Jul 2023 14:24:23 +0800 Subject: [PATCH 1/3] Add xmake --- .gitignore | 2 ++ dylib/.gitignore | 8 ----- dylib/build.sh | 0 dylib/xmake.lua | 85 ++---------------------------------------------- xmake.lua | 49 ++++++++++++++++++++++++++++ 5 files changed, 54 insertions(+), 90 deletions(-) delete mode 100644 dylib/.gitignore delete mode 100644 dylib/build.sh create mode 100644 xmake.lua diff --git a/.gitignore b/.gitignore index ee394036..7cf4584f 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,5 @@ main pypi/ libpocketpy.dylib + +.xmake/ diff --git a/dylib/.gitignore b/dylib/.gitignore deleted file mode 100644 index 15210576..00000000 --- a/dylib/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Xmake cache -.xmake/ -build/ - -# MacOS Cache -.DS_Store - - diff --git a/dylib/build.sh b/dylib/build.sh deleted file mode 100644 index e69de29b..00000000 diff --git a/dylib/xmake.lua b/dylib/xmake.lua index dafc3a18..a50599da 100644 --- a/dylib/xmake.lua +++ b/dylib/xmake.lua @@ -1,89 +1,10 @@ -add_rules("mode.debug", "mode.release") - set_languages("c11") -root_dir = "../" - --- Include directories -add_includedirs(root_dir .. "include") - --- Define the shared library target for pocketpy -target("pocketpy") +target("pocketpy-shared") set_kind("shared") - add_files(root_dir .. "src2/pocketpy_c.c") + add_files(path.join(os.projectdir(), "src2", "pocketpy_c.c")) --- Define the shared library target target("test") set_kind("shared") add_files("src/test.c") - add_deps("pocketpy") - --- --- If you want to known more usage about xmake, please see https://xmake.io --- --- ## FAQ --- --- You can enter the project directory firstly before building project. --- --- $ cd projectdir --- --- 1. How to build project? --- --- $ xmake --- --- 2. How to configure project? --- --- $ xmake f -p [macosx|linux|iphoneos ..] -a [x86_64|i386|arm64 ..] -m [debug|release] --- --- 3. Where is the build output directory? --- --- The default output directory is `./build` and you can configure the output directory. --- --- $ xmake f -o outputdir --- $ xmake --- --- 4. How to run and debug target after building project? --- --- $ xmake run [targetname] --- $ xmake run -d [targetname] --- --- 5. How to install target to the system directory or other output directory? --- --- $ xmake install --- $ xmake install -o installdir --- --- 6. Add some frequently-used compilation flags in xmake.lua --- --- @code --- -- add debug and release modes --- add_rules("mode.debug", "mode.release") --- --- -- add macro definition --- add_defines("NDEBUG", "_GNU_SOURCE=1") --- --- -- set warning all as error --- set_warnings("all", "error") --- --- -- set language: c99, c++11 --- set_languages("c99", "c++11") --- --- -- set optimization: none, faster, fastest, smallest --- set_optimize("fastest") --- --- -- add include search directories --- add_includedirs("/usr/include", "/usr/local/include") --- --- -- add link libraries and search directories --- add_links("tbox") --- add_linkdirs("/usr/local/lib", "/usr/lib") --- --- -- add system link libraries --- add_syslinks("z", "pthread") --- --- -- add compilation and link flags --- add_cxflags("-stdnolib", "-fno-strict-aliasing") --- add_ldflags("-L/usr/local/lib", "-lpthread", {force = true}) --- --- @endcode --- - + add_deps("pocketpy-shared") diff --git a/xmake.lua b/xmake.lua new file mode 100644 index 00000000..e13fe97b --- /dev/null +++ b/xmake.lua @@ -0,0 +1,49 @@ +set_project("pocketpy") + +set_allowedplats("windows", "linux", "macosx", "wasm", "android") + +option("dev", {default = true, showmenu = true, description = ""}) + +includes("dylib") + +add_requires("python", {kind = "binary"}) + +add_rules("mode.debug", "mode.release") + +set_languages("c++17") + +add_cxflags("/utf-8", {tools = "cl"}) + +add_includedirs("include") + +if is_plat("linux", "macosx") then + add_syslinks("dl") +end + +target("pocketpy") + if has_config("dev") then + set_kind("shared") + else + set_kind("$(kind)") + end + + add_files("src/*.cpp") + add_headerfiles("include/(**.h)") + + if is_plat("windows") and is_kind("shared") then + add_rules("utils.symbols.export_all") + end + + before_build(function (target) + local python = assert(import("lib.detect.find_tool")("python3"), "python3 not found!") + os.execv(python.program, {"prebuild.py"}) + end) + +target("main") + set_kind("binary") + add_files("src2/main.cpp") + add_deps("pocketpy") + + on_load(function (target) + target:set("enabled", has_config("dev")) + end) From 16cd05e2f1fc95d7f1ef005f005e5b5f95bf433d Mon Sep 17 00:00:00 2001 From: star9029 Date: Sun, 23 Jul 2023 14:38:30 +0800 Subject: [PATCH 2/3] Fix ci --- .github/workflows/dylib.yml | 39 +++++++++++++++---------------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/.github/workflows/dylib.yml b/.github/workflows/dylib.yml index 46a70412..0ad45bb0 100644 --- a/.github/workflows/dylib.yml +++ b/.github/workflows/dylib.yml @@ -1,5 +1,5 @@ name: build dylib -on: [push] +on: [push, pull_request] jobs: build_win: @@ -12,10 +12,9 @@ jobs: run: | Invoke-Expression (Invoke-Webrequest 'https://xmake.io/psget.text' -UseBasicParsing).Content mkdir -p output/windows/x86_64 - cd dylib - xmake f -p windows -a x64 - xmake - cp build/windows/x64/release/test.dll ../output/windows/x86_64 + xmake f -y -p windows -a x64 + xmake build test + cp build/windows/x64/release/test.dll output/windows/x86_64 - uses: actions/upload-artifact@v3 with: path: output @@ -30,10 +29,9 @@ jobs: - name: Compile linux run: | mkdir -p output/linux/x86_64 - cd dylib - xmake f -p linux -a x86_64 - xmake - cp build/linux/x86_64/release/libtest.so ../output/linux/x86_64 + xmake f -y -p linux -a x86_64 + xmake build test + cp build/linux/x86_64/release/libtest.so output/linux/x86_64 - uses: android-actions/setup-android@v2 - uses: nttld/setup-ndk@v1 id: setup-ndk @@ -45,13 +43,12 @@ jobs: run: | mkdir -p output/android/armeabi-v7a mkdir -p output/android/arm64-v8a - cd dylib - xmake f -p android -a armeabi-v7a --ndk=$ANDROID_NDK_HOME - xmake - cp build/android/armeabi-v7a/release/libtest.so ../output/android/armeabi-v7a - xmake f -p android -a arm64-v8a --ndk=$ANDROID_NDK_HOME - xmake - cp build/android/arm64-v8a/release/libtest.so ../output/android/arm64-v8a + xmake f -y -p android -a armeabi-v7a --ndk=$ANDROID_NDK_HOME + xmake build test + cp build/android/armeabi-v7a/release/libtest.so output/android/armeabi-v7a + xmake f -y -p android -a arm64-v8a --ndk=$ANDROID_NDK_HOME + xmake build test + cp build/android/arm64-v8a/release/libtest.so output/android/arm64-v8a env: ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }} - uses: actions/upload-artifact@v3 @@ -70,13 +67,9 @@ jobs: run: | source ~/.xmake/profile mkdir -p output/macos/x86_64 - cd dylib - xmake f -p macosx -a x86_64 - xmake - cp build/macosx/x86_64/release/libtest.dylib ../output/macos/x86_64 + xmake f -y -p macosx -a x86_64 + xmake build test + cp build/macosx/x86_64/release/libtest.dylib output/macos/x86_64 - uses: actions/upload-artifact@v3 with: path: output - - - From 6cb04c5bece854ce7df8ccd9cb263f45a808099e Mon Sep 17 00:00:00 2001 From: BLUELOVETH Date: Sun, 23 Jul 2023 15:06:21 +0800 Subject: [PATCH 3/3] fix https://github.com/blueloveTH/pocketpy/issues/114 --- include/pocketpy/common.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/pocketpy/common.h b/include/pocketpy/common.h index 2f8c4691..8d771bf0 100644 --- a/include/pocketpy/common.h +++ b/include/pocketpy/common.h @@ -48,7 +48,7 @@ struct GIL { explicit GIL() { _mutex.lock(); } ~GIL() { _mutex.unlock(); } }; -#define PK_GLOBAL_SCOPE_LOCK() GIL _lock(); +#define PK_GLOBAL_SCOPE_LOCK() GIL _lock; #else #define PK_THREAD_LOCAL @@ -154,4 +154,4 @@ inline bool is_both_float(PyObject* a, PyObject* b) noexcept { inline PyObject* const PY_NULL = (PyObject*)0b000011; // tagged null inline PyObject* const PY_OP_CALL = (PyObject*)0b100011; inline PyObject* const PY_OP_YIELD = (PyObject*)0b110011; -} // namespace pkpy \ No newline at end of file +} // namespace pkpy