From b34ef3aa1c34b7c9dfa0ee42416549a16e1b3ad6 Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Sun, 16 Jul 2023 02:09:01 +0800 Subject: [PATCH] ... --- .github/workflows/dylib.yml | 86 +++++++++++++++++++++++++++++ .gitignore | 2 + dylib/.gitignore | 8 +++ dylib/build.sh | 0 {tests/dylib => dylib/src}/test.c | 0 dylib/xmake.lua | 89 +++++++++++++++++++++++++++++++ tests/dylib/CMakeLists.txt | 26 --------- tests/dylib/main.py | 12 ----- 8 files changed, 185 insertions(+), 38 deletions(-) create mode 100644 .github/workflows/dylib.yml create mode 100644 dylib/.gitignore create mode 100644 dylib/build.sh rename {tests/dylib => dylib/src}/test.c (100%) create mode 100644 dylib/xmake.lua delete mode 100644 tests/dylib/CMakeLists.txt delete mode 100644 tests/dylib/main.py diff --git a/.github/workflows/dylib.yml b/.github/workflows/dylib.yml new file mode 100644 index 00000000..8c3f8285 --- /dev/null +++ b/.github/workflows/dylib.yml @@ -0,0 +1,86 @@ +name: build dylib +on: [push] + +jobs: + build_win: + runs-on: windows-latest + steps: + - uses: actions/checkout@v3 + - uses: ilammy/msvc-dev-cmd@v1 + - name: Install xmake + shell: bash + run: | + choco install wget + wget https://xmake.io/shget.text -O - | bash + xmake --version + - name: Compile + shell: bash + run: | + 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 + - uses: actions/upload-artifact@v3 + with: + path: output + build_linux_android: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Install xmake + run: | + wget https://xmake.io/shget.text -O - | bash + xmake --version + - 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 + - name: Install android sdk + uses: android-actions/setup-android@v2 + - uses: nttld/setup-ndk@v1 + with: + ndk-version: r25b + add-to-path: false + - name: Compile android + 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/libtest.so ../output/android/armeabi-v7a + xmake f -p android -a arm64-v8a --ndk=$ANDROID_NDK_HOME + xmake + cp build/android/arm64-v8a/libtest.so ../output/android/arm64-v8a + - env: + ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }} + - uses: actions/upload-artifact@v3 + with: + path: output + build_macos: + runs-on: macos-latest + steps: + - uses: actions/checkout@v3 + - name: Install xmake + run: | + wget https://xmake.io/shget.text -O - | bash + source ~/.xmake/profile + xmake --version + - name: Compile + 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/libtest.dylib ../output/macos/x86_64 + - uses: actions/upload-artifact@v3 + with: + path: output + + + diff --git a/.gitignore b/.gitignore index c59d8f10..6714e503 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,5 @@ build pocketpy.dSYM main + +pypi/ diff --git a/dylib/.gitignore b/dylib/.gitignore new file mode 100644 index 00000000..15210576 --- /dev/null +++ b/dylib/.gitignore @@ -0,0 +1,8 @@ +# Xmake cache +.xmake/ +build/ + +# MacOS Cache +.DS_Store + + diff --git a/dylib/build.sh b/dylib/build.sh new file mode 100644 index 00000000..e69de29b diff --git a/tests/dylib/test.c b/dylib/src/test.c similarity index 100% rename from tests/dylib/test.c rename to dylib/src/test.c diff --git a/dylib/xmake.lua b/dylib/xmake.lua new file mode 100644 index 00000000..f761114e --- /dev/null +++ b/dylib/xmake.lua @@ -0,0 +1,89 @@ +add_rules("mode.debug", "mode.release") + +set_languages("c11", "c++17") + +root_dir = "../" + +-- Include directories +add_includedirs(root_dir .. "include") + +-- Define the shared library target for pocketpy +target("pocketpy") + set_kind("shared") + add_files(root_dir .. "src2/pocketpy_c.cpp") + +-- 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 +-- + diff --git a/tests/dylib/CMakeLists.txt b/tests/dylib/CMakeLists.txt deleted file mode 100644 index 251c3906..00000000 --- a/tests/dylib/CMakeLists.txt +++ /dev/null @@ -1,26 +0,0 @@ -cmake_minimum_required(VERSION 3.17) - -project(test) - -set(CMAKE_C_STANDARD 11) - -include_directories( - ${CMAKE_CURRENT_LIST_DIR}/../../include -) - -add_library( - ${PROJECT_NAME} - SHARED - test.c -) - -add_library( - pocketpy - SHARED - ${CMAKE_CURRENT_LIST_DIR}/../../src2/pocketpy_c.cpp -) - -target_link_libraries( - ${PROJECT_NAME} - pocketpy -) diff --git a/tests/dylib/main.py b/tests/dylib/main.py deleted file mode 100644 index 9deaaf86..00000000 --- a/tests/dylib/main.py +++ /dev/null @@ -1,12 +0,0 @@ -import os -import sys - -print('platform:', sys.platform) -print(os.getcwd()) - -if sys.platform == 'linux': - test = __import__('build/linux/libtest.so') -else: - raise Exception('Unsupported platform') - -test.hello() \ No newline at end of file