From 5016b9625e658bf0296b638b70b45644dd9f55fd Mon Sep 17 00:00:00 2001 From: Jeffrey Phillips Freeman <jeffrey.freeman@syncleus.com> Date: Sun, 15 Dec 2019 17:37:54 +0100 Subject: [PATCH] Docker container for linux compile. --- Dockerfile | 11 +++++++++++ Makefile.am | 1 + README.md | 6 ++++++ build.sh | 9 +++++++++ configure.ac | 3 ++- docker-compose.yml | 10 ++++++++++ java | 2 +- prepare.sh | 2 +- 8 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 Dockerfile create mode 100755 build.sh create mode 100644 docker-compose.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..1543ade --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM openjdk:8 + +RUN set -ex && apt-get update && apt-get upgrade -y && apt-get install -y build-essential ocl-icd-opencl-dev libtool autoconf autotools-dev automake maven --no-install-recommends && rm -rf /var/lib/apt/lists/* + +COPY . /usr/src/app +WORKDIR /usr/src/app + +RUN rm -rf /usr/src/app/.git && rm -rf /usr/src/app/java/.git + +# run in shell mode with ENV expansion +CMD ./build.sh diff --git a/Makefile.am b/Makefile.am index e6bb498..a2da8af 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,3 +1,4 @@ +ACLOCAL_AMFLAGS="-I m4" AUTOMAKE_OPTIONS = foreign EXTRA_DIST = include src/cpp/CLHelper.h src/cpp/classtools.h src/cpp/invoke/JavaArgs.h src/cpp/invoke/OpenCLMem.h src/cpp/invoke/OpenCLKernel.h src/cpp/invoke/OpenCLJNI.h src/cpp/invoke/OpenCLArgDescriptor.h src/cpp/invoke/OpenCLProgram.h src/cpp/CLException.h src/cpp/JNIHelper.h src/cpp/Common.h src/cpp/runKernel/KernelArg.h src/cpp/runKernel/Range.h src/cpp/runKernel/ProfileInfo.h src/cpp/runKernel/AparapiBuffer.h src/cpp/runKernel/Config.h src/cpp/runKernel/Aparapi.h src/cpp/runKernel/ArrayBuffer.h src/cpp/runKernel/JNIContext.h src/cpp/runKernel/List.h lib_LTLIBRARIES = libaparapi.la diff --git a/README.md b/README.md index dfc0483..c376eb4 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,12 @@ automake --add-missing make ``` +Alternatively you can do the linux compile via a Docker container by issuing the following command (equivelant to the above) + +``` +UID=${UID} GID=${GID} docker-compose up +``` + Shared library in `.libs/libaparapi.dynlib` for osx and `.libs/libaparapi.so` for linux. To prepare a 32bit version on a 64bit Linux system simply run configure as: diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..d1f4cda --- /dev/null +++ b/build.sh @@ -0,0 +1,9 @@ +#!/bin/sh +make clean +./prepare.sh +libtoolize +aclocal +autoconf +automake --add-missing +./configure +make diff --git a/configure.ac b/configure.ac index 5ca21c6..198131c 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,7 @@ AC_INIT([libaparapi], [1.4.2], [syncleus@syncleus.com]) AC_ENABLE_SHARED(yes) AC_ENABLE_STATIC(no) +AC_CONFIG_MACRO_DIRS([m4]) LT_INIT AM_INIT_AUTOMAKE([subdir-objects]) AC_PROG_CXX @@ -17,7 +18,7 @@ case $host_os in ;; *) AC_LDFLAGS="-lOpenCL -version-info 5:2:4" - AC_CPPFLAGS="-Iinclude -I/opt/AMDAPP/SDK/include -Isrc/cpp -Isrc/cpp/runKernel -Isrc/cpp/invoke -I/usr/lib/jvm/java-8-openjdk/include -I/usr/lib/jvm/java-8-openjdk/include/linux -I/usr/lib/jvm/java-8-openjdk-amd64/include -I/usr/lib/jvm/java-8-openjdk-amd64/include/linux -I/usr/lib/jvm/java-8-oracle/include -I/usr/lib/jvm/java-8-oracle/include/linux -I/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers/ -DCL_USE_DEPRECATED_OPENCL_1_1_APIS" + AC_CPPFLAGS="-Iinclude -I/opt/AMDAPP/SDK/include -Isrc/cpp -Isrc/cpp/runKernel -Isrc/cpp/invoke -I/usr/local/openjdk-8/include/ -I/usr/local/openjdk-8/include/linux -I/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers/ -DCL_USE_DEPRECATED_OPENCL_1_1_APIS" ;; esac AC_SUBST(AC_LDFLAGS) diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..bd4226f --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,10 @@ +version: '3' +services: + aparapi_native_builder: + container_name: aparapi_native_builder + image: 'aparapi/aparapi-native-builder' + build: + context: . + user: "$UID:$GID" + volumes: + - '${PWD}:/usr/src/app' diff --git a/java b/java index e86aeb0..a07b107 160000 --- a/java +++ b/java @@ -1 +1 @@ -Subproject commit e86aeb0158392b5a7053294917a47bbee2542e89 +Subproject commit a07b107d3a93d3db13c43410b43bff9954a9fb45 diff --git a/prepare.sh b/prepare.sh index 8369c05..94bf000 100755 --- a/prepare.sh +++ b/prepare.sh @@ -1,4 +1,4 @@ #!/bin/sh mkdir include -(cd java && mvn clean package -DskipTests=true -Dmaven.javadoc.skip=true) +(cd java && mvn clean org.apache.maven.plugins:maven-compiler-plugin:compile -DskipTests=true -Dmaven.javadoc.skip=true) javah -jni -classpath ./java/target/classes -d include -force com.aparapi.internal.jni.ConfigJNI com.aparapi.internal.jni.KernelArgJNI com.aparapi.internal.jni.KernelRunnerJNI com.aparapi.internal.jni.OpenCLJNI com.aparapi.internal.jni.RangeJNI com.aparapi.Kernel com.aparapi.Range com.aparapi.Config com.aparapi.device.Device com.aparapi.device.OpenCLDevice com.aparapi.internal.kernel.KernelRunner com.aparapi.internal.opencl.OpenCLArgDescriptor com.aparapi.internal.opencl.OpenCLMem -- GitLab