diff --git a/CHANGELOG.md b/CHANGELOG.md index 741c90db885865a4b0e9198faa52653b62123690..26b3e2d01b7af4204f76481b0ed7b0504a6ee683 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## 1.4.3 * Improve Aparapi native to enforce Kernel and Device max work group size limitations and provide query functions for clGetKernelWorkGroupInfo(...) +* Updated Docker and build configurations to use new image for cross-building Aparapi native for multiple platforms ## 1.4.2 diff --git a/Dockerfile b/Dockerfile index fe90632e1b0f18a210b9553288f44352b15a7a78..0be3a0c0161ac58086f583f02faa932d179eb81f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,10 @@ -FROM openjdk:8 +FROM aparapi/aparapi-native-builder-image -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 gcc-multilib g++-multilib --no-install-recommends && dpkg --add-architecture i386 && apt-get update && apt-get install -y ocl-icd-opencl-dev:i386 --no-install-recommends && rm -rf /var/lib/apt/lists/* +RUN cd /usr/src && unzip /root/openjdk/windows64/openlogic-openjdk-8u272-b10-windows-x64.zip && cp -av /root/OpenCL_* /usr/src && cd /usr/src/OpenCL_ARM/aarch64 && ln -s libOpenCL.so.1.0.0 libOpenCL.so && cd /usr/src/OpenCL_ARM/armhf && ln -s libOpenCL.so.1.0.0 libOpenCL.so && cp -av /root/msys2-OpenCL-headers /usr/src && rm -rf /var/lib/apt/lists/* -COPY . /usr/src/app +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 +CMD rm -rf .libs .libs32 .libs64 && ./buildMingW.sh && ./build.sh && ./buildArmLinux.sh diff --git a/build.sh b/build.sh index 198236ee7ebed674330a5abdc7b959e75c7d65c9..3e11027f6347da053512a66a266475a0d5df06dc 100755 --- a/build.sh +++ b/build.sh @@ -1,15 +1,19 @@ #!/bin/sh -rm -rf .libs64 .libs32 +echo Aparapi Linux x86_64 compilation started... +rm -rf .libs64/linux .libs32/linux make clean ./prepare.sh libtoolize aclocal autoconf automake --add-missing -./configure +./configure make -mv .libs .libs64 +mkdir -p .libs64 +mv .libs .libs64/linux +echo Aparapi Linux x86 compilation started... make clean -./configure --build=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32" +./configure --host=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32" make -mv .libs .libs32 +mkdir -p .libs32 +mv .libs .libs32/linux diff --git a/buildArmLinux.sh b/buildArmLinux.sh new file mode 100755 index 0000000000000000000000000000000000000000..9dc42a7c39ea7edbd80f99dd36fb6fc9c4a67f62 --- /dev/null +++ b/buildArmLinux.sh @@ -0,0 +1,19 @@ +#!/bin/sh +echo Aparapi Linux aarch64 compilation started.... +rm -rf .libs64/linuxARM .libs32/linuxARM +make clean +./prepare.sh +libtoolize +aclocal +autoconf +automake --add-missing +./configure --host=aarch64-linux-gnu +make +mkdir -p .libs64 +mv .libs .libs64/linuxARM +echo Aparapi Linux armhf compilation started.... +make clean +./configure --host=arm-linux-gnueabihf +make +mkdir -p .libs32 +mv .libs .libs32/linuxARM diff --git a/buildMingW.sh b/buildMingW.sh new file mode 100755 index 0000000000000000000000000000000000000000..95e609f46af56f0a2849a399f9e7dd142ec2e07b --- /dev/null +++ b/buildMingW.sh @@ -0,0 +1,23 @@ +#!/bin/sh +echo Aparapi MingW Win64 compilation started.... +rm -rf .libs64/win .libs32/win +make clean +./prepare.sh +libtoolize +aclocal +autoconf +automake --add-missing +./configure --host=x86_64-w64-mingw32 +make +mkdir -p .libs64 +mv .libs .libs64/win +cp /usr/lib/gcc/x86_64-w64-mingw32/9.3-win32/libstdc++-6.dll .libs64/win +cp /usr/lib/gcc/x86_64-w64-mingw32/9.3-win32/libgcc_s_seh-1.dll .libs64/win +echo Aparapi MingW Win32 compilation started.... +make clean +./configure --host=i686-w64-mingw32 +make +mkdir -p .libs32 +mv .libs .libs32/win +cp /usr/lib/gcc/i686-w64-mingw32/9.3-win32/libstdc++-6.dll .libs32/win +cp /usr/lib/gcc/i686-w64-mingw32/9.3-win32/libgcc_s_sjlj-1.dll .libs32/win diff --git a/configure.ac b/configure.ac index ec27c48542322179117d9578cea07e6ba5d13e6c..23b313b6a87264dbb11f2df6fab65af5db5bf0ae 100644 --- a/configure.ac +++ b/configure.ac @@ -7,18 +7,60 @@ AM_INIT_AUTOMAKE([subdir-objects]) AC_PROG_CXX AC_CONFIG_FILES([Makefile]) AC_CANONICAL_HOST + +HOST_CPU_BITS="" +case $host_cpu in + x86_64|aarch64*|mips64*|ppc64*|sparc64 ) + HOST_CPU_BITS="64" + ;; + i?86|arm*|mips*|ppc*|sparc ) + HOST_CPU_BITS="32" + ;; +esac +AC_SUBST(HOST_CPU_BITS) + +HOST_ARCH="" +case $host_cpu in + aarch64* ) + HOST_ARCH="aarch64" + ;; + arm* ) + HOST_ARCH="armhf" + ;; + * ) + HOST_ARCH="other" + ;; +esac +AC_SUBST(HOST_ARCH) + case $host_os in darwin* ) AC_LDFLAGS="-framework OpenCL -version-info 5:3:4" AC_CPPFLAGS="-Iinclude -I/opt/AMDAPP/SDK/include -Isrc/cpp -Isrc/cpp/runKernel -Isrc/cpp/invoke -I${JAVA_HOME}/include/darwin -I${JAVA_HOME}/include -I/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers/ -DCL_USE_DEPRECATED_OPENCL_1_1_APIS" ;; mingw*) - AC_LDFLAGS="-no-undefined -lOpenCL -version-info 5:3: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 -fpermissive" + case $HOST_CPU_BITS in + 32 ) + EXTRA_LDFLAGS="-Wl,--kill-at" + EXTRA_CPPFLAGS="" + ;; + 64 ) + EXTRA_LDFLAGS="" + EXTRA_CPPFLAGS="" + ;; + esac + AC_LDFLAGS="-no-undefined -lOpenCL -version-info 5:3:4 -L/usr/src/OpenCL_DLL/win$HOST_CPU_BITS $EXTRA_LDFLAGS" + AC_CPPFLAGS="-Iinclude -Isrc/cpp -Isrc/cpp/runKernel -Isrc/cpp/invoke -I/usr/src/openlogic-openjdk-8u272-b10-windows-64/include -I/usr/src/openlogic-openjdk-8u272-b10-windows-64/include/win32 -DCL_USE_DEPRECATED_OPENCL_1_1_APIS -fpermissive -I/usr/src/msys2-OpenCL-headers/mingw64/include $EXTRA_CPPFLAGS" ;; *) - AC_LDFLAGS="-lOpenCL -version-info 5:3:4" - 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" + LIB_PATH="" + case $HOST_ARCH in + aarch64 | armhf) + LIB_PATH="-L/usr/src/OpenCL_ARM/$HOST_ARCH" + ;; + esac + AC_LDFLAGS="-lOpenCL -version-info 5:3:4 $LIB_PATH" + AC_CPPFLAGS="-Iinclude -Isrc/cpp -Isrc/cpp/runKernel -Isrc/cpp/invoke -I/usr/lib/jvm/java-8-openjdk-amd64/include/ -I/usr/lib/jvm/java-8-openjdk-amd64/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 index 764fe9cb4b8bea60a31f24ea0c43fa122a8c53c6..0bbdd8256a1d48fa79e799a09cec5511b9d9e04a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,8 +1,8 @@ version: '3' services: - aparapi_native_builder: - container_name: aparapi_native_builder - image: 'aparapi/aparapi-native-builder:latest' + aparapi_native_windows_builder: + container_name: aparapi_native_builder-worker + image: 'aparapi/aparapi-native-builder-image-worker:latest' build: context: . user: "$UID:$GID"