diff --git a/.github/workflows/build-linux-arm.yml b/.github/workflows/build-linux-arm.yml deleted file mode 100644 index 4dc36efb9cc..00000000000 --- a/.github/workflows/build-linux-arm.yml +++ /dev/null @@ -1,51 +0,0 @@ -name: build-linux-arm - -# make the action not run on the local repo if the branch is also in a pull request to OF/OF -on: - push: - if: github.event_name == 'push' && github.event.pull_request == null - paths-ignore: - - '**/*.md' - - 'examples/**' - pull_request: - if: github.event_name == 'pull_request' && github.repository == 'openframeworks/openFrameworks' - paths-ignore: - - '**/*.md' - - 'examples/**' - -env: - ccache: ccache - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - build-linux-arm-platforms: - runs-on: ubuntu-latest - strategy: - matrix: - cfg: - - {target: linuxarmv6l, libs: armv6l} - - {target: linuxaarch64, libs: aarch64} - env: - TARGET: ${{matrix.cfg.target}} - steps: - - name: Cache Packages - uses: awalsh128/cache-apt-pkgs-action@latest - with: - packages: make curl libunwind-dev libjack-jackd2-0 libjack-jackd2-dev freeglut3-dev libasound2-dev libxmu-dev libxxf86vm-dev g++ libgl1-mesa-dev libglu1-mesa-dev libraw1394-dev libudev-dev libdrm-dev libglew-dev libopenal-dev libsndfile1-dev libfreeimage-dev libcairo2-dev libfreetype6-dev libssl-dev libpulse-dev libusb-1.0-0-dev libgtk2.0-dev libopencv-dev libassimp-dev librtaudio-dev gdb libglfw3-dev liburiparser-dev libcurl4-openssl-dev libpugixml-dev libgconf-2-4 libgtk2.0-0 libpoco-dev libxcursor-dev libxi-dev libxinerama-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav gstreamer1.0-pulseaudio gstreamer1.0-x gstreamer1.0-plugins-bad gstreamer1.0-alsa gstreamer1.0-plugins-base gstreamer1.0-plugins-good - version: 1.0 - - - uses: actions/checkout@v4 - - name: ccache - uses: hendrikmuhs/ccache-action@v1.2.12 - with: - # key: ${{ matrix.os }}-${{ matrix.type }} - key: ${{ matrix.cfg.target }} - - name: Download libs - run: ./scripts/linux/download_libs.sh -a ${{matrix.cfg.libs}}; - - name: Install dependencies - run: ./scripts/ci/$TARGET/install.sh; - - name: Build - run: ./scripts/ci/$TARGET/build.sh; diff --git a/.github/workflows/build-rpi.yml b/.github/workflows/build-rpi.yml new file mode 100644 index 00000000000..6ed0aaf4605 --- /dev/null +++ b/.github/workflows/build-rpi.yml @@ -0,0 +1,55 @@ +name: build-rpi + +# make the action not run on the local repo if the branch is also in a pull request to OF/OF +on: + push: + if: github.event_name == 'push' && github.event.pull_request == null + paths-ignore: + - '**/*.md' + - 'examples/**' + pull_request: + if: github.event_name == 'pull_request' && github.repository == 'openframeworks/openFrameworks' + paths-ignore: + - '**/*.md' + - 'examples/**' + +env: + ccache: ccache + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + rpi-build: + runs-on: ubuntu-latest + strategy: + matrix: + cfg: + - { libs: armv6l, multistrap_arch: armhf, suffix: arm-linux-gnueabihf, alladdons: 1 } + - { libs: aarch64, multistrap_arch: arm64, suffix: aarch64-linux-gnu, alladdons: 1 } + env: + ARCH: ${{matrix.cfg.libs}} + MULTISTRAP_ARCH: ${{matrix.cfg.multistrap_arch}} + ALLADDONSEXAMPLE: ${{matrix.cfg.alladdons}} + steps: + - name: Cache Packages + uses: awalsh128/cache-apt-pkgs-action@latest + with: + packages: multistrap unzip gcc-${{matrix.cfg.suffix}} g++-${{matrix.cfg.suffix}} + version: 1.0 + + - uses: actions/checkout@v4 + + - name: ccache + uses: hendrikmuhs/ccache-action@v1.2.12 + with: + key: ${{ matrix.cfg.libs }} + + - name: Download libs + run: ./scripts/linux/download_libs.sh -a ${{matrix.cfg.libs}}; + - name: Install dependencies + run: ./scripts/ci/linuxrpi/install.sh; + - name: Build + run: ./scripts/ci/linuxrpi/build.sh; + diff --git a/addons/ofxOpenCv/addon_config.mk b/addons/ofxOpenCv/addon_config.mk index 1ce0c834e46..09d978eb5d4 100644 --- a/addons/ofxOpenCv/addon_config.mk +++ b/addons/ofxOpenCv/addon_config.mk @@ -89,6 +89,7 @@ linuxaarch64: ADDON_LIBS_EXCLUDE = libs/opencv/% ADDON_INCLUDES_EXCLUDE = libs/opencv ADDON_INCLUDES_EXCLUDE += libs/opencv/% + ADDON_LDFLAGS = -lblas -llapack msys2: ADDON_PKG_CONFIG_LIBRARIES = opencv4 diff --git a/apps/projectGenerator b/apps/projectGenerator index 67f29fb2b56..22db54d0c4f 160000 --- a/apps/projectGenerator +++ b/apps/projectGenerator @@ -1 +1 @@ -Subproject commit 67f29fb2b5638cc727afda8e97b211d4634f69b8 +Subproject commit 22db54d0c4f84ae71a6f09e876c592c5f8779b93 diff --git a/libs/openFrameworksCompiled/project/linuxaarch64/config.linuxaarch64.default.mk b/libs/openFrameworksCompiled/project/linuxaarch64/config.linuxaarch64.default.mk index d10f9885c78..bdf92f3871d 100644 --- a/libs/openFrameworksCompiled/project/linuxaarch64/config.linuxaarch64.default.mk +++ b/libs/openFrameworksCompiled/project/linuxaarch64/config.linuxaarch64.default.mk @@ -38,6 +38,12 @@ include $(OF_SHARED_MAKEFILES_PATH)/config.linux.common.mk # Note: Leave a leading space when adding list items with the += operator ################################################################################ +#c++ 17 support - comment out two lines below to use c++11 +PLATFORM_CFLAGS += -std=c++17 +PLATFORM_LDFLAGS += -lstdc++fs +PLATFORM_CXXVER = -std=c++17 + + PLATFORM_LDFLAGS += -lstdc++fs PLATFORM_LDFLAGS += -no-pie # PLATFORM_LDFLAGS += -nostartfiles @@ -98,11 +104,6 @@ ifeq ($(CROSS_COMPILING),1) ifdef MAKEFILE_DEBUG $(info detected cross compiling $(CROSS_COMPILING)) endif - ifdef TOOLCHAIN_ROOT - #You have specified TOOLCHAIN_ROOT with an environment variable - else - TOOLCHAIN_ROOT = /opt/cross/bin - endif ifdef GCC_PREFIX #You have specified GCC_PREFIX with an environment variable @@ -110,28 +111,28 @@ endif GCC_PREFIX = aarch64-linux-gnu endif - PLATFORM_CXX = $(TOOLCHAIN_ROOT)/bin/$(GCC_PREFIX)-g++ - PLATFORM_CC = $(TOOLCHAIN_ROOT)/bin/$(GCC_PREFIX)-gcc - PLATFORM_AR = $(TOOLCHAIN_ROOT)/bin/$(GCC_PREFIX)-ar - PLATFORM_LD = $(TOOLCHAIN_ROOT)/bin/$(GCC_PREFIX)-ld + PLATFORM_CXX = /usr/bin/$(GCC_PREFIX)-g++ + PLATFORM_CC = /usr/bin/$(GCC_PREFIX)-gcc + PLATFORM_AR = /usr/bin/$(GCC_PREFIX)-ar + PLATFORM_LD = /usr/bin/$(GCC_PREFIX)-ld SYSROOT=$(RPI_ROOT) PLATFORM_CFLAGS += --sysroot=$(SYSROOT) - PLATFORM_HEADER_SEARCH_PATHS += $(SYSROOT)/usr/include/c++ - PLATFORM_HEADER_SEARCH_PATHS += $(TOOLCHAIN_ROOT)/lib/gcc/$(GCC_PREFIX)/$(GCC_VERSION)/include - - PLATFORM_LIBRARY_SEARCH_PATHS += $(SYSROOT)/usr/lib/$(GCC_PREFIX) - PLATFORM_LIBRARY_SEARCH_PATHS += $(SYSROOT)/lib/$(GCC_PREFIX) - PLATFORM_LIBRARY_SEARCH_PATHS += $(TOOLCHAIN_ROOT)/lib/gcc/$(GCC_PREFIX)/$(GCC_VERSION) + PLATFORM_LIBRARY_SEARCH_PATHS += /usr/lib/$(GCC_PREFIX) + PLATFORM_LIBRARY_SEARCH_PATHS += /lib/$(GCC_PREFIX) + PLATFORM_LIBRARY_SEARCH_PATHS += $(RPI_ROOT)/usr/lib/$(GCC_PREFIX)/blas + PLATFORM_LIBRARY_SEARCH_PATHS += $(RPI_ROOT)/usr/lib/$(GCC_PREFIX)/lapack PLATFORM_LDFLAGS += --sysroot=$(SYSROOT) - PLATFORM_LDFLAGS += -Xlinker -rpath-link=$(SYSROOT)/usr/lib/$(GCC_PREFIX) - PLATFORM_LDFLAGS += -Xlinker -rpath-link=$(SYSROOT)/lib/$(GCC_PREFIX) - PLATFORM_LDFLAGS += -Xlinker -rpath-link=$(SYSROOT)/opt/vc/lib - PLATFORM_LDFLAGS += -Xlinker -rpath-link=$(SYSROOT)/usr/lib/arm-linux-gnueabihf/pulseaudio - - PKG_CONFIG_LIBDIR=$(SYSROOT)/usr/lib/pkgconfig:$(SYSROOT)/usr/lib/$(GCC_PREFIX)/pkgconfig:$(SYSROOT)/usr/share/pkgconfig + PLATFORM_LDFLAGS += -lblas -llapack + PLATFORM_LDFLAGS += -Xlinker -rpath-link=/usr/lib/$(GCC_PREFIX) + PLATFORM_LDFLAGS += -Xlinker -rpath-link=/lib/$(GCC_PREFIX) + PLATFORM_LDFLAGS += -Xlinker -rpath-link=/usr/lib/$(GCC_PREFIX)/pulseaudio + PLATFORM_LDFLAGS += -Xlinker -rpath-link=$(RPI_ROOT)/usr/lib/$(GCC_PREFIX)/lapack + PLATFORM_LDFLAGS += -Xlinker -rpath-link=$(RPI_ROOT)/usr/lib/$(GCC_PREFIX)/blas + + PKG_CONFIG_LIBDIR += /usr/lib/pkgconfig:/usr/lib/$(GCC_PREFIX)/pkgconfig:/usr/share/pkgconfig endif diff --git a/libs/openFrameworksCompiled/project/linuxarmv6l/config.linuxarmv6l.default.mk b/libs/openFrameworksCompiled/project/linuxarmv6l/config.linuxarmv6l.default.mk index d33871572bb..f61f1fb4677 100644 --- a/libs/openFrameworksCompiled/project/linuxarmv6l/config.linuxarmv6l.default.mk +++ b/libs/openFrameworksCompiled/project/linuxarmv6l/config.linuxarmv6l.default.mk @@ -129,7 +129,9 @@ PLATFORM_CFLAGS += -std=c++17 PLATFORM_LDFLAGS += -lstdc++fs PLATFORM_CXXVER = -std=c++17 -PLATFORM_CFLAGS += -march=armv6 +# PLATFORM_CFLAGS += -march=armv6 +PLATFORM_CFLAGS += -marm + PLATFORM_CFLAGS += -mfpu=vfp PLATFORM_CFLAGS += -mfloat-abi=hard PLATFORM_CFLAGS += -fPIC @@ -169,6 +171,7 @@ ifeq ($(USE_PI_LEGACY), 0) PLATFORM_LIBRARIES += GLESv2 PLATFORM_LIBRARIES += GLESv1_CM PLATFORM_LIBRARIES += EGL +# FIXME: update to what is possible now. else ifneq (,$(wildcard $(RPI_ROOT)/opt/vc/lib/libGLESv2.so)) PLATFORM_LIBRARIES += GLESv2 PLATFORM_LIBRARIES += GLESv1_CM @@ -178,10 +181,10 @@ else PLATFORM_LIBRARIES += brcmEGL endif -PLATFORM_LIBRARIES += openmaxil -PLATFORM_LIBRARIES += bcm_host -PLATFORM_LIBRARIES += vcos -PLATFORM_LIBRARIES += vchiq_arm +# PLATFORM_LIBRARIES += openmaxil +# PLATFORM_LIBRARIES += bcm_host +# PLATFORM_LIBRARIES += vcos +# PLATFORM_LIBRARIES += vchiq_arm PLATFORM_LIBRARIES += pcre PLATFORM_LIBRARIES += rt PLATFORM_LIBRARIES += X11 @@ -205,10 +208,8 @@ endif ################################################################################ # Broadcom hardware interface library -PLATFORM_HEADER_SEARCH_PATHS += $(RPI_ROOT)/opt/vc/include -PLATFORM_HEADER_SEARCH_PATHS += $(RPI_ROOT)/opt/vc/include/IL -PLATFORM_HEADER_SEARCH_PATHS += $(RPI_ROOT)/opt/vc/include/interface/vcos/pthreads -PLATFORM_HEADER_SEARCH_PATHS += $(RPI_ROOT)/opt/vc/include/interface/vmcs_host/linux +PLATFORM_HEADER_SEARCH_PATHS += $(RPI_ROOT)/userland/host_applications/linux/libs/bcm_host/include +PLATFORM_HEADER_SEARCH_PATHS += $(RPI_ROOT)/userland ########################################################################################## # PLATFORM LIBRARY SEARCH PATH @@ -269,19 +270,19 @@ endif PLATFORM_CFLAGS += --sysroot=$(SYSROOT) - PLATFORM_HEADER_SEARCH_PATHS += $(SYSROOT)/usr/include/c++ - PLATFORM_HEADER_SEARCH_PATHS += $(TOOLCHAIN_ROOT)/lib/gcc/$(GCC_PREFIX)/$(GCC_VERSION)/include - - PLATFORM_LIBRARY_SEARCH_PATHS += $(SYSROOT)/usr/lib/$(GCC_PREFIX) - PLATFORM_LIBRARY_SEARCH_PATHS += $(SYSROOT)/lib/$(GCC_PREFIX) - PLATFORM_LIBRARY_SEARCH_PATHS += $(TOOLCHAIN_ROOT)/lib/gcc/$(GCC_PREFIX)/$(GCC_VERSION) + PLATFORM_LIBRARY_SEARCH_PATHS += /usr/lib/$(GCC_PREFIX) + PLATFORM_LIBRARY_SEARCH_PATHS += /lib/$(GCC_PREFIX) + PLATFORM_LIBRARY_SEARCH_PATHS += $(RPI_ROOT)/usr/lib/$(GCC_PREFIX)/blas + PLATFORM_LIBRARY_SEARCH_PATHS += $(RPI_ROOT)/usr/lib/$(GCC_PREFIX)/lapack PLATFORM_LDFLAGS += --sysroot=$(SYSROOT) - PLATFORM_LDFLAGS += -Xlinker -rpath-link=$(SYSROOT)/usr/lib/$(GCC_PREFIX) - PLATFORM_LDFLAGS += -Xlinker -rpath-link=$(SYSROOT)/lib/$(GCC_PREFIX) - PLATFORM_LDFLAGS += -Xlinker -rpath-link=$(SYSROOT)/opt/vc/lib - PLATFORM_LDFLAGS += -Xlinker -rpath-link=$(SYSROOT)/usr/lib/arm-linux-gnueabihf/pulseaudio - - PKG_CONFIG_LIBDIR=$(SYSROOT)/usr/lib/pkgconfig:$(SYSROOT)/usr/lib/$(GCC_PREFIX)/pkgconfig:$(SYSROOT)/usr/share/pkgconfig + PLATFORM_LDFLAGS += -lblas -llapack + PLATFORM_LDFLAGS += -Xlinker -rpath-link=/usr/lib/$(GCC_PREFIX) + PLATFORM_LDFLAGS += -Xlinker -rpath-link=/lib/$(GCC_PREFIX) + PLATFORM_LDFLAGS += -Xlinker -rpath-link=/usr/lib/$(GCC_PREFIX)/pulseaudio + PLATFORM_LDFLAGS += -Xlinker -rpath-link=$(RPI_ROOT)/usr/lib/$(GCC_PREFIX)/lapack + PLATFORM_LDFLAGS += -Xlinker -rpath-link=$(RPI_ROOT)/usr/lib/$(GCC_PREFIX)/blas + + PKG_CONFIG_LIBDIR += /usr/lib/pkgconfig:/usr/lib/$(GCC_PREFIX)/pkgconfig:/usr/share/pkgconfig endif diff --git a/libs/openFrameworksCompiled/project/makefileCommon/compile.core.mk b/libs/openFrameworksCompiled/project/makefileCommon/compile.core.mk index a23dd9897b2..9efe24699b4 100644 --- a/libs/openFrameworksCompiled/project/makefileCommon/compile.core.mk +++ b/libs/openFrameworksCompiled/project/makefileCommon/compile.core.mk @@ -39,7 +39,10 @@ ifdef ${ccache} $(info 💿 Using CCACHE - compile.core.mk ) CXX := ${ccache} $(CXX) CC := ${ccache} $(CXX) -endif +endif + +$(info 💾 CXX = $(CXX)) +$(info 💾 CC = $(CC)) ################################################################################ # CFLAGS diff --git a/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk b/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk index 1d17327d439..c0987ba4ab3 100644 --- a/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk +++ b/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk @@ -119,29 +119,31 @@ endif .PHONY: all Debug Release after clean CleanDebug CleanRelease help force +# $(info MAKEFLAGS XXX = ${MAKEFLAGS}) +JOBS = -j2 Release: @echo Compiling OF library for Release - @$(MAKE) -j -C $(OF_ROOT)/libs/openFrameworksCompiled/project/ Release PLATFORM_OS=$(PLATFORM_OS) ABIS_TO_COMPILE_RELEASE="$(ABIS_TO_COMPILE_RELEASE)" + @$(MAKE) $(JOBS) -C $(OF_ROOT)/libs/openFrameworksCompiled/project/ Release PLATFORM_OS=$(PLATFORM_OS) ABIS_TO_COMPILE_RELEASE="$(ABIS_TO_COMPILE_RELEASE)" @echo @echo @echo Compiling $(APPNAME) for Release ifndef ABIS_TO_COMPILE_RELEASE - @$(MAKE) -j ReleaseABI + @$(MAKE) $(JOBS) ReleaseABI else - @$(foreach abi,$(ABIS_TO_COMPILE_RELEASE),$(MAKE) -j ReleaseABI ABI=$(abi) &&) echo + @$(foreach abi,$(ABIS_TO_COMPILE_RELEASE),$(MAKE) $(JOBS) ReleaseABI ABI=$(abi) &&) echo endif Debug: @echo Compiling OF library for Debug - $(MAKE) -j -C $(OF_ROOT)/libs/openFrameworksCompiled/project/ Debug PLATFORM_OS=$(PLATFORM_OS) ABIS_TO_COMPILE_DEBUG="$(ABIS_TO_COMPILE_DEBUG)" + $(MAKE) $(JOBS) -C $(OF_ROOT)/libs/openFrameworksCompiled/project/ Debug PLATFORM_OS=$(PLATFORM_OS) ABIS_TO_COMPILE_DEBUG="$(ABIS_TO_COMPILE_DEBUG)" @echo @echo @echo Compiling $(APPNAME) for Debug ifndef ABIS_TO_COMPILE_DEBUG - @$(MAKE) -j DebugABI + @$(MAKE) $(JOBS) DebugABI else @$(foreach abi,$(ABIS_TO_COMPILE_DEBUG),$(MAKE) DebugABI ABI=$(abi) &&) echo endif @@ -149,7 +151,7 @@ endif ReleaseNoOF: @echo Compiling $(APPNAME) for Release ifndef ABIS_TO_COMPILE_RELEASE - @$(MAKE) -j ReleaseABI + @$(MAKE) $(JOBS) ReleaseABI else @$(foreach abi,$(ABIS_TO_COMPILE_RELEASE),$(MAKE) ReleaseABI ABI=$(abi) &&) echo endif @@ -157,27 +159,27 @@ endif DebugNoOF: @echo Compiling $(APPNAME) for Debug ifndef ABIS_TO_COMPILE_DEBUG - @$(MAKE) -j DebugABI + @$(MAKE) $(JOBS) DebugABI else @$(foreach abi,$(ABIS_TO_COMPILE_DEBUG),$(MAKE) DebugABI ABI=$(abi) &&) echo endif ReleaseABI: $(TARGET) ifneq ($(strip $(PROJECT_ADDONS_DATA)),) - @$(MAKE) -j copyaddonsdata PROJECT_ADDONS_DATA="$(PROJECT_ADDONS_DATA)" + @$(MAKE) $(JOBS) copyaddonsdata PROJECT_ADDONS_DATA="$(PROJECT_ADDONS_DATA)" endif - @$(MAKE) -j afterplatform BIN_NAME=$(BIN_NAME) ABIS_TO_COMPILE="$(ABIS_TO_COMPILE_RELEASE)" RUN_TARGET=$(RUN_TARGET) TARGET=$(TARGET) + @$(MAKE) $(JOBS) afterplatform BIN_NAME=$(BIN_NAME) ABIS_TO_COMPILE="$(ABIS_TO_COMPILE_RELEASE)" RUN_TARGET=$(RUN_TARGET) TARGET=$(TARGET) @$(PROJECT_AFTER) DebugABI: $(TARGET) ifneq ($(strip $(PROJECT_ADDONS_DATA)),) - @$(MAKE) -j copyaddonsdata PROJECT_ADDONS_DATA="$(PROJECT_ADDONS_DATA)" + @$(MAKE) $(JOBS) copyaddonsdata PROJECT_ADDONS_DATA="$(PROJECT_ADDONS_DATA)" endif - @$(MAKE) -j afterplatform BIN_NAME=$(BIN_NAME) ABIS_TO_COMPILE="$(ABIS_TO_COMPILE_DEBUG)" RUN_TARGET=$(RUN_TARGET) TARGET=$(TARGET) + @$(MAKE) $(JOBS) afterplatform BIN_NAME=$(BIN_NAME) ABIS_TO_COMPILE="$(ABIS_TO_COMPILE_DEBUG)" RUN_TARGET=$(RUN_TARGET) TARGET=$(TARGET) @$(PROJECT_AFTER) all: - $(MAKE) -j Debug + $(MAKE) $(JOBS) Debug run: ifeq ($(PLATFORM_RUN_COMMAND),) diff --git a/libs/openFrameworksCompiled/project/makefileCommon/config.linux.common.mk b/libs/openFrameworksCompiled/project/makefileCommon/config.linux.common.mk index 7614ab84347..5a0ed9e6fad 100755 --- a/libs/openFrameworksCompiled/project/makefileCommon/config.linux.common.mk +++ b/libs/openFrameworksCompiled/project/makefileCommon/config.linux.common.mk @@ -362,6 +362,7 @@ PLATFORM_PKG_CONFIG_LIBRARIES += openal # PLATFORM_PKG_CONFIG_LIBRARIES += openssl PLATFORM_PKG_CONFIG_LIBRARIES += libcurl + ifeq ($(CROSS_COMPILING),1) ifeq "$(shell export PKG_CONFIG_LIBDIR=$(PKG_CONFIG_LIBDIR); pkg-config --exists glfw3 && echo 1)" "1" PLATFORM_PKG_CONFIG_LIBRARIES += glfw3 diff --git a/scripts/ci/linuxaarch64/build.sh b/scripts/ci/linuxaarch64/build.sh deleted file mode 100755 index ad5308373f7..00000000000 --- a/scripts/ci/linuxaarch64/build.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash -set -ev -OF_ROOT=$( cd "$(dirname "$0")/../../.." ; pwd -P ) - -export GCC_PREFIX=aarch64-linux-gnu -export GCC_VERSION=10.3.0 -export GST_VERSION=1.0 -export RPI_ROOT=${OF_ROOT}/scripts/ci/$TARGET/raspbian -export TOOLCHAIN_ROOT=${OF_ROOT}/scripts/ci/$TARGET/rpi_toolchain -export PLATFORM_OS=Linux -export PLATFORM_ARCH=aarch64 -export PKG_CONFIG_LIBDIR=${RPI_ROOT}/usr/lib/pkgconfig:${RPI_ROOT}/usr/lib/${GCC_PREFIX}/pkgconfig:${RPI_ROOT}/usr/share/pkgconfig -export CXX="${TOOLCHAIN_ROOT}/bin/${GCC_PREFIX}-g++" -export CC="${TOOLCHAIN_ROOT}/bin/${GCC_PREFIX}-gcc" -export AR=${TOOLCHAIN_ROOT}/bin/${GCC_PREFIX}-ar -export LD=${TOOLCHAIN_ROOT}/bin/${GCC_PREFIX}-ld - -export PATH=/rpi_toolchain/bin/:$PATH -export LD_LIBRARY_PATH=/rpi_toolchain/lib:$LD_LIBRARY_PATH - -echo "**** Building emptyExample ****" -cd $OF_ROOT -cp scripts/templates/linuxaarch64/Makefile examples/templates/emptyExample/ -cp scripts/templates/linuxaarch64/config.make examples/templates/emptyExample/ -cd examples/templates/emptyExample/ -make Debug -j - -#TODO: -#echo "**** Building allAddonsExample ****" -#cd $OF_ROOT -#cp scripts/templates/linuxaarch64/Makefile examples/templates/allAddonsExample/ -#cp scripts/templates/linuxaarch64/config.make examples/templates/allAddonsExample/ -#cd examples/templates/allAddonsExample/ -#make Debug -j diff --git a/scripts/ci/linuxaarch64/install.sh b/scripts/ci/linuxaarch64/install.sh deleted file mode 100755 index 8c6cba11a20..00000000000 --- a/scripts/ci/linuxaarch64/install.sh +++ /dev/null @@ -1,82 +0,0 @@ -#!/bin/bash -set -e -set -o pipefail -# trap any script errors and exit -trap "trapError" ERR - -trapError() { - echo - echo " ^ Received error ^" - cat formula.log - exit 1 -} - -installPackages(){ - sudo apt-get -y update - sudo apt-get -y install multistrap unzip - #workaround for https://bugs.launchpad.net/ubuntu/+source/multistrap/+bug/1313787 - sudo sed -i s/\$forceyes//g /usr/sbin/multistrap -} - -createRaspbianImg(){ - #needed since Ubuntu 18.04 - allow non https repositories - mkdir -p raspbian/etc/apt/apt.conf.d/ - echo 'Acquire::AllowInsecureRepositories "true";' | sudo tee raspbian/etc/apt/apt.conf.d/90insecure - multistrap -a arm64 -d raspbian -f multistrap.conf -} - -SCRIPT_DIR="${BASH_SOURCE%/*}" -if [[ ! -d "$SCRIPT_DIR" ]]; then SCRIPT_DIR="$PWD"; fi -. "$SCRIPT_DIR/../../dev/downloader.sh" - -downloadToolchain(){ - wget https://github.com/openframeworks/openFrameworks/releases/download/tools/cross-gcc-10.3.0-pi_64.tar.gz - tar xvf cross-gcc-10.3.0-pi_64.tar.gz - mv cross-pi-gcc-10.3.0-64 rpi_toolchain - rm cross-gcc-10.3.0-pi_64.tar.gz -} - -downloadFirmware(){ - #kicking the can down the road - stable still containts /opt/vc includes - wget https://github.com/raspberrypi/firmware/archive/stable.zip -O firmware.zip - unzip firmware.zip - cp -r firmware-stable/opt raspbian/ - rm -r firmware-stable - rm firmware.zip -} - -relativeSoftLinks(){ - for link in $(ls -la | grep "\-> /" | sed "s/.* \([^ ]*\) \-> \/\(.*\)/\1->\/\2/g"); do - lib=$(echo $link | sed "s/\(.*\)\->\(.*\)/\1/g"); - link=$(echo $link | sed "s/\(.*\)\->\(.*\)/\2/g"); - rm $lib - ln -s ../../..$link $lib - done - - for f in *; do - error=$(grep " \/lib/" $f > /dev/null 2>&1; echo $?) - if [ $error -eq 0 ]; then - sed -i "s/ \/lib/ ..\/..\/..\/lib/g" $f - sed -i "s/ \/usr/ ..\/..\/..\/usr/g" $f - fi - done -} - - -ROOT=$( cd "$(dirname "$0")" ; pwd -P ) -echo $ROOT -cd $ROOT -installPackages -createRaspbianImg -downloadToolchain -downloadFirmware - -cp -rn rpi_toolchain/aarch64-linux-gnu/libc/lib/* $ROOT/raspbian/usr/lib/ -cp -rn rpi_toolchain/aarch64-linux-gnu/libc/usr/lib/* $ROOT/raspbian/usr/lib/ -cp -rn rpi_toolchain/aarch64-linux-gnu/lib/* $ROOT/raspbian/usr/lib/ - -cd $ROOT/raspbian/usr/lib -relativeSoftLinks -cd $ROOT/raspbian/usr/lib/aarch64-linux-gnu -relativeSoftLinks - diff --git a/scripts/ci/linuxaarch64/multistrap.conf b/scripts/ci/linuxaarch64/multistrap.conf deleted file mode 100644 index d35454ce980..00000000000 --- a/scripts/ci/linuxaarch64/multistrap.conf +++ /dev/null @@ -1,23 +0,0 @@ -[General] -arch=arm64 -directory=raspbian -cleanup=true -noauth=true -unpack=true -aptsources=Raspbian-Base OpenFrameworks -debootstrap=Raspbian-Base OpenFrameworks - - -[Raspbian-Base] -packages=base-files dbus dpkg dropbear initscripts iputils-ping isc-dhcp-client kmod login locales lsb-base lsb-release makedev netbase net-tools sysvinit-utils sysv-rc libudev-dev -source=http://deb.debian.org/debian -keyring=debian-archive-keyring -components=main contrib non-free rpi -suite=bullseye - -[OpenFrameworks] -packages=libasound2-dev libxmu-dev libxxf86vm-dev g++ libgl1-mesa-dev libglu1-mesa-dev libraw1394-dev libudev-dev libdrm-dev libglew-dev libopenal-dev libsndfile-dev libfreeimage-dev libcairo2-dev libfreetype6-dev libssl-dev libpulse-dev libusb-1.0-0-dev libopencv-dev libegl1-mesa-dev libglvnd-dev libgles2-mesa-dev libassimp-dev librtaudio-dev libboost-filesystem-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav gstreamer1.0-pulseaudio gstreamer1.0-x gstreamer1.0-plugins-bad gstreamer1.0-alsa gstreamer1.0-plugins-base gstreamer1.0-plugins-good liburiparser-dev libcurl4-openssl-dev libxml2-dev libpugixml-dev libpoco-dev libglfw3-dev libxrandr-dev libxinerama-dev libxcursor-dev freeglut3-dev libxi-dev -source=http://deb.debian.org/debian -keyring=debian-archive-keyring -components=main contrib non-free rpi -suite=bullseye diff --git a/scripts/ci/linuxarmv6l/build.sh b/scripts/ci/linuxarmv6l/build.sh deleted file mode 100755 index ce85107a02c..00000000000 --- a/scripts/ci/linuxarmv6l/build.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash -set -ev -OF_ROOT=$( cd "$(dirname "$0")/../../.." ; pwd -P ) - -export GCC_PREFIX=arm-linux-gnueabihf -export GST_VERSION=1.0 -#NOTE: GCC_VERSION should match the version present in the downloaded toolchain -export GCC_VERSION=9.4.0 -export RPI_ROOT=${OF_ROOT}/scripts/ci/$TARGET/raspbian -export TOOLCHAIN_ROOT=${OF_ROOT}/scripts/ci/$TARGET/rpi_toolchain -export PLATFORM_OS=Linux -export PLATFORM_ARCH=armv6l -export PKG_CONFIG_LIBDIR=${RPI_ROOT}/usr/lib/pkgconfig:${RPI_ROOT}/usr/lib/${GCC_PREFIX}/pkgconfig:${RPI_ROOT}/usr/share/pkgconfig -export CXX="${TOOLCHAIN_ROOT}/bin/${GCC_PREFIX}-g++" -export CC="${TOOLCHAIN_ROOT}/bin/${GCC_PREFIX}-gcc" -export AR=${TOOLCHAIN_ROOT}/bin/${GCC_PREFIX}-ar -export LD=${TOOLCHAIN_ROOT}/bin/${GCC_PREFIX}-ld -export CROSS_COMPILING=1 - -export PATH=/rpi_toolchain/bin/:$PATH -export LD_LIBRARY_PATH=/rpi_toolchain/lib:$LD_LIBRARY_PATH - -echo "**** Building emptyExample ****" -cd $OF_ROOT -cp scripts/templates/linuxarmv6l/Makefile examples/templates/emptyExample/ -cp scripts/templates/linuxarmv6l/config.make examples/templates/emptyExample/ -cd examples/templates/emptyExample/ -make Debug -j - -echo "**** Building allAddonsExample ****" -cd $OF_ROOT -cp scripts/templates/linuxarmv6l/Makefile examples/templates/allAddonsExample/ -cp scripts/templates/linuxarmv6l/config.make examples/templates/allAddonsExample/ -cd examples/templates/allAddonsExample/ -make Debug -j diff --git a/scripts/ci/linuxarmv6l/install.sh b/scripts/ci/linuxarmv6l/install.sh deleted file mode 100755 index c68f3a03e03..00000000000 --- a/scripts/ci/linuxarmv6l/install.sh +++ /dev/null @@ -1,82 +0,0 @@ -#!/bin/bash -set -e -set -o pipefail -# trap any script errors and exit -trap "trapError" ERR - -trapError() { - echo - echo " ^ Received error ^" - cat formula.log - exit 1 -} - -installPackages(){ - sudo apt-get -y update - sudo apt-get -y install multistrap unzip - #workaround for https://bugs.launchpad.net/ubuntu/+source/multistrap/+bug/1313787 - sudo sed -i s/\$forceyes//g /usr/sbin/multistrap -} - -createRaspbianImg(){ - #needed since Ubuntu 18.04 - allow non https repositories - mkdir -p raspbian/etc/apt/apt.conf.d/ - echo 'Acquire::AllowInsecureRepositories "true";' | sudo tee raspbian/etc/apt/apt.conf.d/90insecure - multistrap -a armhf -d raspbian -f multistrap.conf -} - -SCRIPT_DIR="${BASH_SOURCE%/*}" -if [[ ! -d "$SCRIPT_DIR" ]]; then SCRIPT_DIR="$PWD"; fi -. "$SCRIPT_DIR/../../dev/downloader.sh" - -downloadToolchain(){ - wget https://github.com/openframeworks/openFrameworks/releases/download/tools/cross-gcc-9.4.0-pi_0-1.tar.gz - tar xvf cross-gcc-9.4.0-pi_0-1.tar.gz - mv cross-pi-gcc-9.4.0-0 rpi_toolchain - rm cross-gcc-9.4.0-pi_0-1.tar.gz -} - -downloadFirmware(){ - #kicking the can down the road - stable still containts /opt/vc includes - wget https://github.com/raspberrypi/firmware/archive/stable.zip -O firmware.zip - unzip firmware.zip - cp -r firmware-stable/opt raspbian/ - rm -r firmware-stable - rm firmware.zip -} - -relativeSoftLinks(){ - for link in $(ls -la | grep "\-> /" | sed "s/.* \([^ ]*\) \-> \/\(.*\)/\1->\/\2/g"); do - lib=$(echo $link | sed "s/\(.*\)\->\(.*\)/\1/g"); - link=$(echo $link | sed "s/\(.*\)\->\(.*\)/\2/g"); - rm $lib - ln -s ../../..$link $lib - done - - for f in *; do - error=$(grep " \/lib/" $f > /dev/null 2>&1; echo $?) - if [ $error -eq 0 ]; then - sed -i "s/ \/lib/ ..\/..\/..\/lib/g" $f - sed -i "s/ \/usr/ ..\/..\/..\/usr/g" $f - fi - done -} - - -ROOT=$( cd "$(dirname "$0")" ; pwd -P ) -echo $ROOT -cd $ROOT -installPackages -createRaspbianImg -downloadToolchain -downloadFirmware - -#needed for some of the toolchain libs -cp -rn rpi_toolchain/arm-linux-gnueabihf/libc/lib/* $ROOT/raspbian/usr/lib/ -cp -rn rpi_toolchain/arm-linux-gnueabihf/libc/usr/lib/* $ROOT/raspbian/usr/lib/ -cp -rn rpi_toolchain/arm-linux-gnueabihf/lib/* $ROOT/raspbian/usr/lib/ - -cd $ROOT/raspbian/usr/lib -relativeSoftLinks -cd $ROOT/raspbian/usr/lib/arm-linux-gnueabihf -relativeSoftLinks diff --git a/scripts/ci/linuxarmv6l/multistrap.conf b/scripts/ci/linuxarmv6l/multistrap.conf deleted file mode 100644 index c13f93a78e3..00000000000 --- a/scripts/ci/linuxarmv6l/multistrap.conf +++ /dev/null @@ -1,29 +0,0 @@ -[General] -arch=armhf -directory=raspbian -cleanup=true -noauth=true -unpack=true -aptsources=Raspbian-Base OpenFrameworks -debootstrap=Raspbian-Base OpenFrameworks - -[Raspbian-Bare] -packages=busybox busybox-syslogd udhcpc -source=http://archive.raspbian.org/raspbian -keyring=raspbian-archive-keyring -components=main contrib non-free rpi -suite=bullseye - -[Raspbian-Base] -packages=base-files dbus dpkg dropbear initscripts iputils-ping isc-dhcp-client kmod login locales lsb-base lsb-release makedev netbase net-tools sysvinit-utils sysv-rc udev libudev-dev -source=http://archive.raspbian.org/raspbian -keyring=raspbian-archive-keyring -components=main contrib non-free rpi -suite=bullseye - -[OpenFrameworks] -packages=libasound2-dev libxmu-dev libxxf86vm-dev g++ libgl1-mesa-dev libglu1-mesa-dev libraw1394-dev libudev-dev libdrm-dev libglew-dev libopenal-dev libsndfile-dev libfreeimage-dev libcairo2-dev libfreetype6-dev libssl-dev libpulse-dev libusb-1.0-0-dev libopencv-dev libegl1-mesa-dev libglvnd-dev libgles2-mesa-dev libassimp-dev librtaudio-dev libboost-filesystem-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav gstreamer1.0-pulseaudio gstreamer1.0-x gstreamer1.0-plugins-bad gstreamer1.0-alsa gstreamer1.0-plugins-base gstreamer1.0-plugins-good liburiparser-dev libcurl4-openssl-dev libxml2-dev libpugixml-dev libpoco-dev libglfw3-dev libxrandr-dev libxinerama-dev libxcursor-dev gfortran -source=http://archive.raspbian.org/raspbian -keyring=raspbian-archive-keyring -components=main contrib non-free rpi -suite=bullseye diff --git a/scripts/ci/linuxrpi/build.sh b/scripts/ci/linuxrpi/build.sh new file mode 100755 index 00000000000..b6a7208b203 --- /dev/null +++ b/scripts/ci/linuxrpi/build.sh @@ -0,0 +1,50 @@ +#!/bin/bash +set -ev +OF_ROOT=$( cd "$(dirname "$0")/../../.." ; pwd -P ) + +export CROSS_COMPILING=1 + +# Allows test locally without github actions env variables. +if [ -n "$ARCH" ]; then +export PLATFORM_ARCH=${ARCH} +else +# github actions will be defining this one, next line will set if we are working locally +export PLATFORM_ARCH=armv6l +# export PLATFORM_ARCH=aarch64 +fi + +export RPI_ROOT=${OF_ROOT}/scripts/ci/linuxrpi/raspbian +echo "${RPI_ROOT}" + +if [ ${PLATFORM_ARCH} = "aarch64" ]; then +export GCC_PREFIX=aarch64-linux-gnu +else +export GCC_PREFIX=arm-linux-gnueabihf +fi + +export GST_VERSION=1.0 +export PLATFORM_OS=Linux + +# export PKG_CONFIG_LIBDIR= +export PKG_CONFIG_PATH=${BCM_FOLDER}:${RPI_ROOT}/usr/include:${RPI_ROOT}/usr/lib/pkgconfig:${RPI_ROOT}/usr/lib/${GCC_PREFIX}/pkgconfig:${RPI_ROOT}/usr/share/pkgconfig +export TOOLCHAIN_ROOT=/usr +export CXX="${TOOLCHAIN_ROOT}/bin/${GCC_PREFIX}-g++" +export CC="${TOOLCHAIN_ROOT}/bin/${GCC_PREFIX}-gcc" +export AR=${TOOLCHAIN_ROOT}/bin/${GCC_PREFIX}-ar +export LD=${TOOLCHAIN_ROOT}/bin/${GCC_PREFIX}-ld + +echo "**** Building emptyExample ****" +cd $OF_ROOT +cp scripts/templates/linux${PLATFORM_ARCH}/Makefile examples/templates/emptyExample/ +cp scripts/templates/linux${PLATFORM_ARCH}/config.make examples/templates/emptyExample/ +cd examples/templates/emptyExample/ +make Debug -j + +# if [[ "$ALLADDONSEXAMPLE" == 1 ]]; then +echo "**** Building allAddonsExample ****" +cd $OF_ROOT +cp scripts/templates/linux${PLATFORM_ARCH}/Makefile examples/templates/allAddonsExample/ +cp scripts/templates/linux${PLATFORM_ARCH}/config.make examples/templates/allAddonsExample/ +cd examples/templates/allAddonsExample/ +make Debug -j +# fi \ No newline at end of file diff --git a/scripts/ci/linuxrpi/install.sh b/scripts/ci/linuxrpi/install.sh new file mode 100755 index 00000000000..f236fd122a7 --- /dev/null +++ b/scripts/ci/linuxrpi/install.sh @@ -0,0 +1,34 @@ +#!/bin/bash +set -e +set -o pipefail +# trap any script errors and exit +trap "trapError" ERR + +if [ -n "$MULTISTRAP_ARCH" ]; then +echo ${MULTISTRAP_ARCH} +else +export MULTISTRAP_ARCH=armhf +fi + +trapError() { + echo + echo " ^ Received error ^" + cat formula.log + exit 1 +} + +# SCRIPT_DIR="${BASH_SOURCE%/*}" +# if [[ ! -d "$SCRIPT_DIR" ]]; then SCRIPT_DIR="$PWD"; fi +# . "$SCRIPT_DIR/../../dev/downloader.sh" + +ROOT=$( cd "$(dirname "$0")" ; pwd -P ) +echo $ROOT +cd $ROOT + +mkdir -p raspbian/etc/apt/apt.conf.d/ +echo 'Acquire::AllowInsecureRepositories "true";' | sudo tee raspbian/etc/apt/apt.conf.d/90insecure +multistrap -a ${MULTISTRAP_ARCH} -d raspbian -f multistrap.conf + +if [ ${MULTISTRAP_ARCH} = "armhf" ]; then + git clone https://github.com/raspberrypi/userland --depth 1 raspbian/userland +fi diff --git a/scripts/ci/linuxrpi/multistrap.conf b/scripts/ci/linuxrpi/multistrap.conf new file mode 100644 index 00000000000..8f3008bdf4c --- /dev/null +++ b/scripts/ci/linuxrpi/multistrap.conf @@ -0,0 +1,21 @@ +[General] +# arch=arm64 +directory=~/raspbian +cleanup=true +noauth=true +unpack=true +aptsources=OpenFrameworks +debootstrap=OpenFrameworks + +[OpenFrameworks] +packages=libudev-dev libasound2-dev libxmu-dev libxxf86vm-dev libgl1-mesa-dev libglu1-mesa-dev libraw1394-dev libudev-dev libdrm-dev libglew-dev libopenal-dev libsndfile-dev libfreeimage-dev libcairo2-dev libfreetype6-dev libssl-dev libpulse-dev libusb-1.0-0-dev libopencv-dev libegl1-mesa-dev libglvnd-dev libgles2-mesa-dev libassimp-dev librtaudio-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav gstreamer1.0-pulseaudio gstreamer1.0-x gstreamer1.0-plugins-bad gstreamer1.0-alsa gstreamer1.0-plugins-base gstreamer1.0-plugins-good liburiparser-dev libcurl4-openssl-dev libxml2-dev libpugixml-dev libpoco-dev libglfw3-dev libxrandr-dev libxinerama-dev libxcursor-dev freeglut3-dev libxi-dev liblapack-dev libblas-dev + +# g++ base-files dbus dpkg dropbear initscripts iputils-ping isc-dhcp-client kmod login locales lsb-base lsb-release makedev netbase net-tools sysvinit-utils sysv-rc +# libboost-filesystem-dev +# libraspberrypi-dev raspberrypi-kernel-headers +# libblas3 liblapack3 +# libopenblas-dev liblapack-dev +source=http://deb.debian.org/debian +keyring=debian-archive-keyring +components=main contrib non-free rpi +suite=bookworm