From 13f691bc375bc6f6e90875a2c7318642872c824e Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Wed, 14 Aug 2024 19:21:44 +0800 Subject: [PATCH] ... --- .github/workflows/main.yml | 199 +++++++++++++++++++++++++++++++++++++ .github/workflows/main.zip | Bin 1724 -> 0 bytes CMakeLists.txt | 4 +- cmake_build.py | 4 +- 4 files changed, 203 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/main.yml delete mode 100644 .github/workflows/main.zip diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000..08c43847 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,199 @@ +name: build + +on: + push: + paths-ignore: + - 'docs/**' + - 'web/**' + - '**.md' + pull_request: + paths-ignore: + - 'docs/**' + - 'web/**' + - '**.md' +jobs: + # build_win32_amalgamated: + # runs-on: windows-latest + # steps: + # - uses: actions/checkout@v4 + # - uses: ilammy/msvc-dev-cmd@v1 + # - name: Compile + # shell: powershell + # run: | + # python amalgamate.py + # cd amalgamated + # cl.exe /std:c++17 /EHsc /utf-8 /Ox /I. /DPK_ENABLE_OS=1 main.cpp /link /out:pkpy.exe + build_win32: + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + - uses: ilammy/msvc-dev-cmd@v1 + - name: Compile + shell: bash + run: | + mkdir -p output/x86_64 + python cmake_build.py + cp main.exe output/x86_64 + cp pocketpy.dll output/x86_64 + - uses: actions/upload-artifact@v4 + with: + name: windows + path: output + - name: Unit Test + run: python scripts/run_tests.py + - name: Benchmark + run: python scripts/run_tests.py benchmark + build_linux: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v4 + - name: Setup Clang + uses: egor-tensin/setup-clang@v1 + with: + version: 15 + platform: x64 + - name: Unit Test with Coverage + run: bash run_tests.sh + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v4 + with: + token: ${{ secrets.CODECOV_TOKEN }} + directory: .coverage + if: github.ref == 'refs/heads/main' + - name: Compile and Test + run: | + mkdir -p output/x86_64 + python cmake_build.py + python scripts/run_tests.py + cp main output/x86_64 + cp libpocketpy.so output/x86_64 + env: + CC: clang + - uses: actions/upload-artifact@v4 + with: + name: linux + path: output + - name: Benchmark + run: python scripts/run_tests.py benchmark + build_linux_x86: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup Alpine Linux for aarch64 + uses: jirutka/setup-alpine@v1 + with: + arch: x86 + packages: gcc make cmake libc-dev linux-headers python3 + - name: Build and Test + run: | + uname -m + python cmake_build.py + python scripts/run_tests.py + python scripts/run_tests.py benchmark + shell: alpine.sh --root {0} + build_darwin: + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + - name: Compile and Test + run: | + python cmake_build.py + python scripts/run_tests.py + - name: Benchmark + run: python scripts/run_tests.py benchmark + # - run: | + # python amalgamate.py + # cd plugins/macos/pocketpy + # mkdir output + # xcodebuild clean build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO + # cp -r build/Release/pocketpy.bundle output + # - uses: actions/upload-artifact@v4 + # with: + # name: macos + # path: plugins/macos/pocketpy/output + build_android: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: nttld/setup-ndk@v1 + id: setup-ndk + with: + ndk-version: r23 + local-cache: false + add-to-path: false + - name: Compile Shared Library + run: | + bash build_android.sh arm64-v8a + bash build_android.sh armeabi-v7a + bash build_android.sh x86_64 + + mkdir -p output/arm64-v8a + mkdir -p output/armeabi-v7a + mkdir -p output/x86_64 + + cp build/android/arm64-v8a/libpocketpy.so output/arm64-v8a + cp build/android/armeabi-v7a/libpocketpy.so output/armeabi-v7a + cp build/android/x86_64/libpocketpy.so output/x86_64 + env: + ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }} + - uses: actions/upload-artifact@v4 + with: + name: android + path: output + build_ios: + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + - name: Compile Frameworks + run: | + git clone https://github.com/leetal/ios-cmake --depth 1 ~/ios-cmake + bash build_ios.sh + mkdir -p output + cp -r build/pocketpy.xcframework output/pocketpy.xcframework + - uses: actions/upload-artifact@v4 + with: + name: ios + path: output + + merge: + runs-on: ubuntu-latest + needs: [ build_win32, build_linux, build_darwin, build_android, build_ios ] + steps: + - name: "Create output directory" + run: "mkdir $GITHUB_WORKSPACE/output" + + - name: "Merge win32" + uses: actions/download-artifact@v4.1.7 + with: + name: windows + path: $GITHUB_WORKSPACE/output/windows + + - name: "Merge linux" + uses: actions/download-artifact@v4.1.7 + with: + name: linux + path: $GITHUB_WORKSPACE/output/linux + + # - name: "Merge darwin" + # uses: actions/download-artifact@v4.1.7 + # with: + # name: macos + # path: $GITHUB_WORKSPACE/output/macos + + - name: "Merge android" + uses: actions/download-artifact@v4.1.7 + with: + name: android + path: $GITHUB_WORKSPACE/output/android + + - name: "Merge ios" + uses: actions/download-artifact@v4.1.7 + with: + name: ios + path: $GITHUB_WORKSPACE/output/ios + + - name: "Upload merged artifact" + uses: actions/upload-artifact@v4.3.3 + with: + name: all-in-one + path: $GITHUB_WORKSPACE/output diff --git a/.github/workflows/main.zip b/.github/workflows/main.zip deleted file mode 100644 index c9e7b53a5f541519a7d1c7e704b77cad570929bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1724 zcmV;t21EH!O9KQH000080K#(5SiPNnL?#9R06G@{00;m80BvDuZZ3IkY`s`(Pa8QD z{m!qrf=Wn$XPQDOiiA`M**1bEU7*{pR;!WYG08OZTH6yq-R^JSJ7do?GZ0#K`9Ko; z`uh0X<1;r2X~6q1O+4S-*oeaZ20)z1dHRa)sG3XS&B91r+l`pCcXqbRky}2k z5A5t%fxDe0^LS1PLj&s1@SozYo&*p{C<&ekFv5*) zCGl}qDl;n;k7XW8Ady`5fimSqp|shYvqhAsx66Y@gy+*BxVHnjWW?o5!UFg0vR4FY zJ_k_{dpA6?)D1`DjR(xNXW^QH5txotBzvEy_ z<@VX`Zto4)!}pSbov0gf1oq?(?2!fb*~fEdI6gVO7&?=y;~oUm3oRDMVEbOU02>e8 zj~DTMnr#EB6sKH0L~4c7#|T}6&NebDR8Fa!Z$ODn%?{&!~O7$iZK_Bi8>zj^3sVElH_ojGvs-(!ojey3A%(w#2gpqp_NqVnS)tXN| z{Ak|NsaK!FfnqwvO@uN5*=}2_bVNF88=Y|RjPg{3uLasR+%J|95AyO1dk)3 zB&Y}zx*W&Nf}CBZM{V;;bd~bjY}M%1j-#RlMB9`uCsRxC8#q3OZG4sXoKsiY>3!U8GX$Wan=$nt_`qWq z2}-Z%_6e+YVHGlJjpO06)a>BPmp)|b*xfA$2WD*b7CqHlvMc+zv;34fRH_80=w)6w zTd7f@Ugk`7NR~^>xZ*AjQq}G-?a!RYO{QrxCw}aO94^w`0IdNi6>MIqqE7eK6Ny?- z<2y84R2ol{Y=ATgn#|E*Wh|y_L1$^U8DoGIhE#c4f0-*7vp^&y6+ZfxA${LuDe99l z)D-`U{1JN^4kV}yJuLe5WDif!0+bJI%^KDi2oX`F;M>dZMY&xn@WGc;SX4WpEUGma zKV0q(%V=Tk=PByCM^C&-U>v=MaOMwRtxXC>+>eSwJmU~aWnOfx;7arwQ+5S?X1}a1T9xok%&AuPyB#8 ztuNR{M5vVS8p8?QMb&L^V<;v%JqYJW(FBQC`;{p_V$>&$;_iL8p}yo*?{ZzDBBJT2 zPByR7)tn0MqIXUO75Cj2Ds%f9Z>b4T5gZm9|w#(bB1;l}azwPu>DPp>1i=aV9!*hRS%OebG|zBKbc&M1B$Y@ir0**{yo) zXVE(&Y%b)|vFRbdaGE+6z zqU3k%CWmiUw9Y+O;k-z86%EG&E@pf!8x1*k5yv0ZA0+mw&Ej6ImDsC$!(K@q{Mjx7 z4R>=OIBshomS0;o>y_Trq`!DKx_Z?1^@s6 S0096209pV5089n|0001UPA1I& diff --git a/CMakeLists.txt b/CMakeLists.txt index 0c717ed1..503fc2f4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -80,8 +80,8 @@ elseif(PK_BUILD_STATIC_LIB) else() set(PROJECT_EXE_NAME main) add_executable(${PROJECT_EXE_NAME} src2/main.c) - # static linked main - add_library(${PROJECT_NAME} STATIC ${POCKETPY_SRC}) + # shared linked main + add_library(${PROJECT_NAME} SHARED ${POCKETPY_SRC}) target_link_libraries(${PROJECT_EXE_NAME} ${PROJECT_NAME}) endif() diff --git a/cmake_build.py b/cmake_build.py index e7c3f8ae..1ac71228 100644 --- a/cmake_build.py +++ b/cmake_build.py @@ -25,10 +25,10 @@ assert code == 0 if sys.platform == "win32": shutil.copy(f"{config}/main.exe", "../main.exe") - # shutil.copy(f"{config}/pocketpy.dll", "../pocketpy.dll") + shutil.copy(f"{config}/pocketpy.dll", "../pocketpy.dll") elif sys.platform == "darwin": shutil.copy("main", "../main") - # shutil.copy("libpocketpy.dylib", "../libpocketpy.dylib") + shutil.copy("libpocketpy.dylib", "../libpocketpy.dylib") else: shutil.copy("main", "../main") # shutil.copy("libpocketpy.so", "../libpocketpy.so")