bytedeco / javacpp

The missing bridge between Java and native C++
Other
4.47k stars 582 forks source link

How to detect which JAR correspond to 32-bit processors? #644

Closed Daniel-Alievsky closed 1 year ago

Daniel-Alievsky commented 1 year ago

Hello, I'm using javacpp + opencv, and I want to reduce the number of files included to end-user distribution pack My POM is the following:

        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>javacpp-platform</artifactId>
            <version>${javacpp.version}</version>
        </dependency>
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>opencv-platform</artifactId>
            <version>${opencv.version}</version>
        </dependency>
        <!-- The following dependency is important for correct building with "gpu" jars -->
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>opencv-platform-gpu</artifactId>
            <version>${opencv.version}</version>
        </dependency>

This produces a list of 54 files:

javacpp-1.5.7.jar javacpp-1.5.7-android-arm.jar javacpp-1.5.7-android-arm64.jar javacpp-1.5.7-android-x86.jar javacpp-1.5.7-android-x86_64.jar javacpp-1.5.7-ios-arm64.jar javacpp-1.5.7-ios-x86_64.jar javacpp-1.5.7-linux-arm64.jar javacpp-1.5.7-linux-armhf.jar javacpp-1.5.7-linux-ppc64le.jar javacpp-1.5.7-linux-x86.jar javacpp-1.5.7-linux-x86_64.jar javacpp-1.5.7-macosx-arm64.jar javacpp-1.5.7-macosx-x86_64.jar javacpp-1.5.7-windows-x86.jar javacpp-1.5.7-windows-x86_64.jar javacpp-platform-1.5.7.jar openblas-0.3.19-1.5.7.jar openblas-0.3.19-1.5.7-android-arm.jar openblas-0.3.19-1.5.7-android-arm64.jar openblas-0.3.19-1.5.7-android-x86.jar openblas-0.3.19-1.5.7-android-x86_64.jar openblas-0.3.19-1.5.7-ios-arm64.jar openblas-0.3.19-1.5.7-ios-x86_64.jar openblas-0.3.19-1.5.7-linux-arm64.jar openblas-0.3.19-1.5.7-linux-armhf.jar openblas-0.3.19-1.5.7-linux-ppc64le.jar openblas-0.3.19-1.5.7-linux-x86.jar openblas-0.3.19-1.5.7-linux-x86_64.jar openblas-0.3.19-1.5.7-macosx-arm64.jar openblas-0.3.19-1.5.7-macosx-x86_64.jar openblas-0.3.19-1.5.7-windows-x86.jar openblas-0.3.19-1.5.7-windows-x86_64.jar openblas-platform-0.3.19-1.5.7.jar opencv-4.5.5-1.5.7.jar opencv-4.5.5-1.5.7-android-arm.jar opencv-4.5.5-1.5.7-android-arm64.jar opencv-4.5.5-1.5.7-android-x86.jar opencv-4.5.5-1.5.7-android-x86_64.jar opencv-4.5.5-1.5.7-ios-arm64.jar opencv-4.5.5-1.5.7-ios-x86_64.jar opencv-4.5.5-1.5.7-linux-arm64.jar opencv-4.5.5-1.5.7-linux-armhf.jar opencv-4.5.5-1.5.7-linux-ppc64le.jar opencv-4.5.5-1.5.7-linux-x86.jar opencv-4.5.5-1.5.7-linux-x86_64.jar opencv-4.5.5-1.5.7-linux-x86_64-gpu.jar opencv-4.5.5-1.5.7-macosx-arm64.jar opencv-4.5.5-1.5.7-macosx-x86_64.jar opencv-4.5.5-1.5.7-windows-x86.jar opencv-4.5.5-1.5.7-windows-x86_64.jar opencv-4.5.5-1.5.7-windows-x86_64-gpu.jar opencv-platform-4.5.5-1.5.7.jar opencv-platform-gpu-4.5.5-1.5.7.jar

How can I detect, which from them are necessary for 32-bit architecture only and will not be used on modern 64-bit computers? For example, opencv-4.5.5-1.5.7-linux-armhf.jar does not contain "64" suffix; does it mean that is it used only in 32-bit computers?

saudet commented 1 year ago

I'm using javacpp + opencv, and I want to reduce the number of files included to end-user distribution pack

See https://github.com/bytedeco/javacpp-presets/wiki/Reducing-the-Number-of-Dependencies

How can I detect, which from them are necessary for 32-bit architecture only and will not be used on modern 64-bit computers? For example, opencv-4.5.5-1.5.7-linux-armhf.jar does not contain "64" suffix; does it mean that is it used only in 32-bit computers?

Yes, that's correct.

Daniel-Alievsky commented 1 year ago

So, if the name of JAR does not contain "64" substring (like ..android-arm.jar, ...linux-armhf.jar etc.), there is a guarantee that it will not be used on 64-bit computers, right?

saudet commented 1 year ago

Yes, all 64-bit architectures have "64" in their names.

Daniel-Alievsky commented 1 year ago

Thank you very much!