diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml index 1e219ac..5adf702 100644 --- a/.github/workflows/build-and-release.yml +++ b/.github/workflows/build-and-release.yml @@ -125,57 +125,57 @@ jobs: runs-on: ubuntu-latest needs: build-java steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Install gh CLI - run: sudo apt-get install -y gh - - - name: Extract Version from pom.xml - id: extract_version - run: | - VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) - echo "VERSION=$VERSION" >> $GITHUB_ENV - echo "Extracted version: $VERSION" - - - name: Download JAR Artifact - uses: actions/download-artifact@v4 - with: - name: xdagj-native-randomx-jar - path: target/ - - - name: Find Main JAR File - id: find_jar - run: | - JAR_FILE=$(find target/ -type f -name "xdagj-native-randomx-*.jar" | head -n 1) - if [ -z "$JAR_FILE" ]; then - echo "Error: No main JAR file found!" - exit 1 - fi - echo "Found JAR file: $JAR_FILE" - echo "jar_file=$JAR_FILE" >> $GITHUB_ENV - - - name: Generate Release Notes - run: | - echo "### Changelog" > RELEASE_NOTES.md - echo "" >> RELEASE_NOTES.md - echo "$(git log --pretty=format:"* %s (%h)" --no-merges $(git rev-list --tags --max-count=1)..HEAD)" >> RELEASE_NOTES.md - echo "" >> RELEASE_NOTES.md - echo "### Additional Notes" >> RELEASE_NOTES.md - echo "- Build improvements." >> RELEASE_NOTES.md - echo "- Known issues: None." >> RELEASE_NOTES.md - - - name: Create Release using gh CLI - run: | - gh release create "v${{ env.VERSION }}" --title "xdagj-native-randomx v${{ env.VERSION }}" --notes-file RELEASE_NOTES.md - env: - GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }} - - - name: Rename output file - run: mv "target/xdagj-native-randomx-${{ env.VERSION }}.jar" "target/xdagj-native-randomx.jar" - - - name: Upload JAR using gh CLI - run: | - gh release upload "v${{ env.VERSION }}" target/xdagj-native-randomx.jar --clobber - env: - GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }} + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install gh CLI + run: sudo apt-get install -y gh + + - name: Extract Version from pom.xml + id: extract_version + run: | + VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) + echo "VERSION=$VERSION" >> $GITHUB_ENV + echo "Extracted version: $VERSION" + + - name: Download JAR Artifact + uses: actions/download-artifact@v4 + with: + name: xdagj-native-randomx-jar + path: target/ + + - name: Find Main JAR File + id: find_jar + run: | + JAR_FILE=$(find target/ -type f -name "xdagj-native-randomx-*.jar" | head -n 1) + if [ -z "$JAR_FILE" ]; then + echo "Error: No main JAR file found!" + exit 1 + fi + echo "Found JAR file: $JAR_FILE" + echo "jar_file=$JAR_FILE" >> $GITHUB_ENV + + - name: Generate Release Notes + run: | + echo "### Changelog" > RELEASE_NOTES.md + echo "" >> RELEASE_NOTES.md + echo "$(git log --pretty=format:"* %s (%h)" --no-merges $(git rev-list --tags --max-count=1)..HEAD)" >> RELEASE_NOTES.md + echo "" >> RELEASE_NOTES.md + echo "### Additional Notes" >> RELEASE_NOTES.md + echo "- Build improvements." >> RELEASE_NOTES.md + echo "- Known issues: None." >> RELEASE_NOTES.md + + - name: Create Release using gh CLI + run: | + gh release create "v${{ env.VERSION }}" --title "xdagj-native-randomx v${{ env.VERSION }}" --notes-file RELEASE_NOTES.md + env: + GH_TOKEN: ${{ github.token }} # Use the token automatically generated by GitHub + + - name: Rename output file + run: mv "target/xdagj-native-randomx-${{ env.VERSION }}.jar" "target/xdagj-native-randomx.jar" + + - name: Upload JAR using gh CLI + run: | + gh release upload "v${{ env.VERSION }}" target/xdagj-native-randomx.jar --clobber + env: + GH_TOKEN: ${{ github.token }} # Use the token automatically generated by GitHub diff --git a/README.md b/README.md index f39c51d..e773903 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ Compile and copy the appropriate shared library for your platform: ```bash cd randomx mkdir build && cd build -cmake .. -DCMAKE_BUILD_TYPE=Release -DARCH=native -DBUILD_SHARED_LIBS=ON +cmake .. -DCMAKE_BUILD_TYPE=Release -DARCH=native -DBUILD_SHARED_LIBS=ON -DCMAKE_C_FLAGS="-fPIC" make -j4 cp -i librandomx.so ../../src/main/resources/native/librandomx_linux_x86_64.so ``` diff --git a/src/main/java/io/xdag/crypto/randomx/RandomXJNALoader.java b/src/main/java/io/xdag/crypto/randomx/RandomXJNALoader.java index 259a5d4..f0d527f 100644 --- a/src/main/java/io/xdag/crypto/randomx/RandomXJNALoader.java +++ b/src/main/java/io/xdag/crypto/randomx/RandomXJNALoader.java @@ -77,7 +77,13 @@ public static RandomXJNA getInstance() { synchronized (LOCK) { result = instance; if (result == null) { - instance = result = Native.load("randomx", RandomXJNA.class); + String osName = System.getProperty("os.name").toLowerCase(); + if (osName.contains("win")) { + String libFilePath = "native/librandomx_windows_x86_64.dll"; + instance = result = Native.load(libFilePath, RandomXJNA.class); + } else { + instance = result = Native.load("randomx", RandomXJNA.class); + } } } } @@ -119,7 +125,9 @@ public static void loadLibrary(String libraryName) { */ private static String getLibraryFileName(String libraryName, String os, String arch) { if (os.contains("win")) { - return String.format("native/%s_windows_%s.dll", libraryName, arch); + if (StringUtils.containsAny(arch, "amd64", "x86_64")) { + return String.format("native/%s_windows_x86_64.dll", libraryName); + } } else if (os.contains("mac")) { return String.format("native/%s_macos_%s.dylib", libraryName, arch); } else if (StringUtils.contains(os, "linux")) {