From 1d358fcb1d5c3f1aa139f524468f3da28212d9f3 Mon Sep 17 00:00:00 2001 From: Daniel Kaiser Date: Wed, 18 Nov 2020 14:17:57 +0100 Subject: [PATCH] Add debian 9 based armhf cross compile build --- .gitlab-ci.yml | 82 +++++++++++++++++++++++++++++-------- cmake/armhf-linux-gnu.cmake | 12 ++++++ 2 files changed, 77 insertions(+), 17 deletions(-) create mode 100644 cmake/armhf-linux-gnu.cmake diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fd74e29fc..e2d1fea2e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -215,14 +215,36 @@ debian-cmake-self-contained: debian-self-contained-armhf: stage: build - image: iffregistry.fz-juelich.de/docker-images/gr-build-images/$CI_JOB_NAME - tags: - - armhf + image: iffregistry.fz-juelich.de/docker-images/gr-build-images/$CI_JOB_NAME-cross script: - - wget https://gr-framework.org/downloads/3rdparty/cmake-3.15.3-Linux-armhf.tar.gz - - tar xf cmake-3.15.3-Linux-armhf.tar.gz - - export CMAKE_CMD=`pwd`/cmake-3.15.3-Linux-armhf/bin/cmake - - make self GRDIR=/usr/local/gr + - make -C 3rdparty default extras \ + HOST=arm-linux-gnueabihf \ + ARCHITECTURE=arm \ + OS=arm-linux-gnueabihf \ + CC=arm-linux-gnueabihf-gcc \ + CXX=arm-linux-gnueabihf-g++ \ + AR=arm-linux-gnueabihf-ar \ + STRIP=arm-linux-gnueabihf-strip \ + PNG_EXTRA_CFLAGS="-DPNG_ARM_NEON_OPT=0" \ + GLFW_EXTRA_CMAKE_FLAGS=-DCMAKE_TOOLCHAIN_FILE=`pwd`/cmake/armhf-linux-gnu.cmake \ + OGG_EXTRA_CONFIGURE_FLAGS=--host=arm-linux-gnueabihf \ + THEORA_EXTRA_CONFIGURE_FLAGS="--host=arm-linux --disable-asm" \ + FFMPEG_EXTRA_CONFIGURE_FLAGS="--cross-prefix=arm-linux-gnueabihf- --arch=armhf --target-os=linux --pkg-config=pkg-config" \ + PIXMAN_EXTRA_CONFIGURE_FLAGS=--host=arm-linux-gnueabihf \ + CAIRO_EXTRA_CONFIGURE_FLAGS=--host=arm-linux-gnueabihfnu \ + TIFF_EXTRA_CONFIGURE_FLAGS=--host=arm-linux-gnueabihf \ + OPENH264_EXTRA_MAKE_FLAGS="OS=linux ARCH=armhf" \ + ZEROMQ_EXTRA_CONFIGURE_FLAGS=--host=arm-linux-gnueabihf + - make self \ + CC=arm-linux-gnueabihf-gcc \ + LD=arm-linux-gnueabihf-ld \ + AR=arm-linux-gnueabihf-ar \ + CXX=arm-linux-gnueabihf-g++ \ + LINK=arm-linux-gnueabihf-g++ \ + QT_ARCH=armhf \ + QT4_QMAKE=/usr/lib/arm-linux-gnueabihf/qt4/bin/qmake \ + QT5_QMAKE=/usr/lib/arm-linux-gnueabihf/qt5/bin/qmake \ + GRDIR=/usr/local/gr - mkdir artifacts - cp lib/gks/demo artifacts/gksdemo - cp lib/gks/qt/gksqt artifacts/gksqt @@ -325,21 +347,32 @@ debian-cmake-self-contained-aarch64: debian-cmake-self-contained-armhf: stage: build - image: iffregistry.fz-juelich.de/docker-images/gr-build-images/debian-self-contained-armhf - tags: - - armhf + image: iffregistry.fz-juelich.de/docker-images/gr-build-images/debian-self-contained-armhf-cross script: - - wget https://gr-framework.org/downloads/3rdparty/cmake-3.15.3-Linux-armhf.tar.gz - - tar xf cmake-3.15.3-Linux-armhf.tar.gz - - export CMAKE_CMD=`pwd`/cmake-3.15.3-Linux-armhf/bin/cmake - - make -C 3rdparty default extras + - make -C 3rdparty default extras \ + HOST=arm-linux-gnueabihf \ + ARCHITECTURE=armhf \ + OS=arm-linux-gnueabihf \ + CC=arm-linux-gnueabihf-gcc \ + CXX=arm-linux-gnueabihf-g++ \ + AR=arm-linux-gnueabihf-ar \ + STRIP=arm-linux-gnueabihf-strip \ + PNG_EXTRA_CFLAGS="-DPNG_ARM_NEON_OPT=0" \ + GLFW_EXTRA_CMAKE_FLAGS=-DCMAKE_TOOLCHAIN_FILE=`pwd`/cmake/armhf-linux-gnu.cmake \ + OGG_EXTRA_CONFIGURE_FLAGS=--host=arm-linux-gnueabihf \ + THEORA_EXTRA_CONFIGURE_FLAGS="--host=arm-linux --disable-asm" \ + FFMPEG_EXTRA_CONFIGURE_FLAGS="--cross-prefix=arm-linux-gnueabihf- --arch=armhf --target-os=linux --pkg-config=pkg-config" \ + PIXMAN_EXTRA_CONFIGURE_FLAGS=--host=arm-linux-gnueabihf \ + CAIRO_EXTRA_CONFIGURE_FLAGS=--host=arm-linux-gnueabihf \ + TIFF_EXTRA_CONFIGURE_FLAGS=--host=arm-linux-gnueabihf \ + OPENH264_EXTRA_MAKE_FLAGS="OS=linux ARCH=armhf" \ + ZEROMQ_EXTRA_CONFIGURE_FLAGS=--host=arm-linux-gnueabihf - mkdir build - cd build - - $CMAKE_CMD .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${CI_PROJECT_DIR}/install -DGR_USE_BUNDLED_LIBRARIES=ON + - cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/gr -DCMAKE_TOOLCHAIN_FILE=../cmake/armhf-linux-gnu.cmake -DCMAKE_BUILD_TYPE=Release -DGR_USE_BUNDLED_LIBRARIES=ON - make - make install - - cd .. - - mv install artifacts-debian9-cmake-armhf + - mv /usr/local/gr ${CI_PROJECT_DIR}/artifacts-debian9-cmake-armhf artifacts: expire_in: 1 week paths: @@ -351,6 +384,21 @@ debian-system-dependencies: script: - make install GRDIR=/usr/local/gr +debian-system-dependencies-armhf: + stage: build + image: iffregistry.fz-juelich.de/docker-images/gr-build-images/$CI_JOB_NAME-cross + script: + - make install \ + CC=arm-linux-gnueabihf-gcc \ + LD=arm-linux-gnueabihf-ld \ + AR=arm-linux-gnueabihf-ar \ + CXX=arm-linux-gnueabihf-g++ \ + LINK=arm-linux-gnueabihf-g++ \ + QT_ARCH=armhf \ + QT4_QMAKE=/usr/lib/arm-linux-gnueabihf/qt4/bin/qmake \ + QT5_QMAKE=/usr/lib/arm-linux-gnueabihf/qt5/bin/qmake \ + GRDIR=/usr/local/gr + debian-cmake-system-dependencies: stage: build image: iffregistry.fz-juelich.de/docker-images/gr-build-images/debian-system-dependencies diff --git a/cmake/armhf-linux-gnu.cmake b/cmake/armhf-linux-gnu.cmake new file mode 100644 index 000000000..8b32dacf4 --- /dev/null +++ b/cmake/armhf-linux-gnu.cmake @@ -0,0 +1,12 @@ +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_VERSION 1) +set(CMAKE_SYSTEM_PROCESSOR armhf) + +set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc) +set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++) +set(CMAKE_LINKER arm-linux-gnueabihf-ld) +set(CMAKE_STRIP arm-linux-gnueabihf-strip) +set(CMAKE_FIND_ROOT_PATH "/usr/lib/arm-linux-gnueabihf;/usr/arm-linux-gnueabihf") +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH)