From 93f7326b7bfa72be735d63e674c6152c8a38daa2 Mon Sep 17 00:00:00 2001 From: Levente Hunyadi Date: Fri, 15 Nov 2024 15:08:36 +0100 Subject: [PATCH] Add GitHub Actions build script --- .github/workflows/publish.yml | 57 +++++++++++++++++++++++++++++++++++ CMakeLists.txt | 2 +- include/javabind/core.hpp | 8 +++++ launch.sh | 1 + 4 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/publish.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..50e77ae --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,57 @@ +name: 📦 [javabind] Build and test C++ library + +on: + push: + paths: + - /include/** + - /java/** + - /test/** + workflow_dispatch: {} + +jobs: + build-linux: + name: 🧱 [Linux] Build and test C++ library + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Set up JDK for JNI headers + uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '8' + - name: Set up build environment + run: | + cmake -E make_directory ${{github.workspace}}/build + - name: Compile C++ sources + working-directory: ${{github.workspace}}/build + run: | + cmake .. && make + - name: Compile and run Java sources + run: | + ./launch.sh + + build-windows: + name: 🧱 [Windows] Build and test C++ library + runs-on: windows-latest + + steps: + - uses: actions/checkout@v4 + - name: Add MSBuild to PATH + uses: microsoft/setup-msbuild@v1.0.2 + - name: Set up JDK for JNI headers + uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '8' + - name: Set up build environment + run: | + cmake -E make_directory ${{github.workspace}}/build + - name: Compile C++ sources + shell: cmd + working-directory: ${{github.workspace}}/build + run: | + cmake .. && msbuild javabind.sln + - name: Compile and run Java sources + run: | + launch.bat diff --git a/CMakeLists.txt b/CMakeLists.txt index 26049ce..e477345 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,7 +26,7 @@ target_include_directories(javabind INTERFACE $ { constexpr static std::string_view class_name = "java.lang.Boolean"; + constexpr static std::string_view class_path = "java/lang/Boolean"; constexpr static std::string_view java_name = "boolean"; constexpr static std::string_view sig = "Z"; @@ -123,6 +124,7 @@ namespace javabind struct JavaByteType : PrimitiveJavaType { constexpr static std::string_view class_name = "java.lang.Byte"; + constexpr static std::string_view class_path = "java/lang/Byte"; constexpr static std::string_view java_name = "byte"; constexpr static std::string_view sig = "B"; @@ -163,6 +165,7 @@ namespace javabind struct JavaCharacterType : PrimitiveJavaType { constexpr static std::string_view class_name = "java.lang.Character"; + constexpr static std::string_view class_path = "java/lang/Character"; constexpr static std::string_view java_name = "char"; constexpr static std::string_view sig = "C"; @@ -203,6 +206,7 @@ namespace javabind struct JavaShortType : PrimitiveJavaType { constexpr static std::string_view class_name = "java.lang.Short"; + constexpr static std::string_view class_path = "java/lang/Short"; constexpr static std::string_view java_name = "short"; constexpr static std::string_view sig = "S"; @@ -243,6 +247,7 @@ namespace javabind struct JavaIntegerType : PrimitiveJavaType { constexpr static std::string_view class_name = "java.lang.Integer"; + constexpr static std::string_view class_path = "java/lang/Integer"; constexpr static std::string_view java_name = "int"; constexpr static std::string_view sig = "I"; @@ -283,6 +288,7 @@ namespace javabind struct JavaLongType : PrimitiveJavaType { constexpr static std::string_view class_name = "java.lang.Long"; + constexpr static std::string_view class_path = "java/lang/Long"; constexpr static std::string_view java_name = "long"; constexpr static std::string_view sig = "J"; @@ -323,6 +329,7 @@ namespace javabind struct JavaFloatType : PrimitiveJavaType { constexpr static std::string_view class_name = "java.lang.Float"; + constexpr static std::string_view class_path = "java/lang/Float"; constexpr static std::string_view java_name = "float"; constexpr static std::string_view sig = "F"; @@ -363,6 +370,7 @@ namespace javabind struct JavaDoubleType : PrimitiveJavaType { constexpr static std::string_view class_name = "java.lang.Double"; + constexpr static std::string_view class_path = "java/lang/Double"; constexpr static std::string_view java_name = "double"; constexpr static std::string_view sig = "D"; diff --git a/launch.sh b/launch.sh index 4453c7f..4679ca4 100755 --- a/launch.sh +++ b/launch.sh @@ -1,4 +1,5 @@ set -e find java -name "*.java" > build/sources.txt +mkdir -p jar javac -d jar -cp java @build/sources.txt java -Djava.library.path=build -cp jar -ea hu.info.hunyadi.test.TestJavaBind