diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml
index 1e219ac..b92086e 100644
--- a/.github/workflows/build-and-release.yml
+++ b/.github/workflows/build-and-release.yml
@@ -4,9 +4,11 @@ on:
push:
branches:
- master
+ - develop
pull_request:
branches:
- master
+ - develop
jobs:
build-randomx:
runs-on: ${{ matrix.os }}
@@ -125,57 +127,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/pom.xml b/pom.xml
index 3896e59..c422e17 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
io.xdag
xdagj-native-randomx
- 0.2.0
+ 0.2.1
xdagj-native-randomx
A Java RandomX Library For XDAGJ
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")) {
diff --git a/src/test/java/io/xdag/crypto/randomx/RandomXBenchmark.java b/src/test/java/io/xdag/crypto/randomx/RandomXBenchmark.java
index e08ca49..b889fe0 100644
--- a/src/test/java/io/xdag/crypto/randomx/RandomXBenchmark.java
+++ b/src/test/java/io/xdag/crypto/randomx/RandomXBenchmark.java
@@ -181,4 +181,4 @@ public static void main(String[] args) throws Exception {
new Runner(opt).run();
}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/io/xdag/crypto/randomx/RandomXCacheTest.java b/src/test/java/io/xdag/crypto/randomx/RandomXCacheTest.java
index c511b85..d810875 100644
--- a/src/test/java/io/xdag/crypto/randomx/RandomXCacheTest.java
+++ b/src/test/java/io/xdag/crypto/randomx/RandomXCacheTest.java
@@ -62,4 +62,4 @@ public void testInit() {
} // Cache is automatically released here.
}
-}
+}
\ No newline at end of file
diff --git a/src/test/java/io/xdag/crypto/randomx/RandomXDatasetTest.java b/src/test/java/io/xdag/crypto/randomx/RandomXDatasetTest.java
index 4e5e89b..69eb8fc 100644
--- a/src/test/java/io/xdag/crypto/randomx/RandomXDatasetTest.java
+++ b/src/test/java/io/xdag/crypto/randomx/RandomXDatasetTest.java
@@ -72,4 +72,4 @@ void testInitialization() {
}
}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/io/xdag/crypto/randomx/RandomXJNALoaderTest.java b/src/test/java/io/xdag/crypto/randomx/RandomXJNALoaderTest.java
index aedd768..509a52d 100644
--- a/src/test/java/io/xdag/crypto/randomx/RandomXJNALoaderTest.java
+++ b/src/test/java/io/xdag/crypto/randomx/RandomXJNALoaderTest.java
@@ -40,4 +40,5 @@ public class RandomXJNALoaderTest {
public void testLibraryLoading() {
assertNotNull(RandomXJNALoader.getInstance(), "RandomXJNA instance should not be null.");
}
+
}
\ No newline at end of file
diff --git a/src/test/java/io/xdag/crypto/randomx/RandomXTemplateTest.java b/src/test/java/io/xdag/crypto/randomx/RandomXTemplateTest.java
index e1b7261..01d825c 100644
--- a/src/test/java/io/xdag/crypto/randomx/RandomXTemplateTest.java
+++ b/src/test/java/io/xdag/crypto/randomx/RandomXTemplateTest.java
@@ -117,4 +117,4 @@ public void testChangeKey() {
assertEquals("3910d7b054df9ba920e2f7e103aa2c1fc4597b13d1793f1ab08c1c9c922709c0", hex.formatHex(hash));
}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/io/xdag/crypto/randomx/RandomXTests.java b/src/test/java/io/xdag/crypto/randomx/RandomXTests.java
index 9527051..921d8a8 100644
--- a/src/test/java/io/xdag/crypto/randomx/RandomXTests.java
+++ b/src/test/java/io/xdag/crypto/randomx/RandomXTests.java
@@ -140,4 +140,4 @@ void testBatchHash() {
assertEquals("c36d4ed4191e617309867ed66a443be4075014e2b061bcdaf9ce7b721d2b77a8", hex.formatHex(hash3));
}
-}
+}
\ No newline at end of file
diff --git a/src/test/java/io/xdag/crypto/randomx/RandomXVMTest.java b/src/test/java/io/xdag/crypto/randomx/RandomXVMTest.java
index 30971f1..f15ed6e 100644
--- a/src/test/java/io/xdag/crypto/randomx/RandomXVMTest.java
+++ b/src/test/java/io/xdag/crypto/randomx/RandomXVMTest.java
@@ -60,4 +60,5 @@ public void testVMHashCalculation() {
assertEquals(32, output.length, "Output size should be 32 bytes.");
}
}
+
}
\ No newline at end of file