Skip to content

Commit

Permalink
[actions] rpi changes (#7928)
Browse files Browse the repository at this point in the history
#changelog #rpi
  • Loading branch information
dimitre authored May 6, 2024
1 parent 7a09e9e commit c191d35
Show file tree
Hide file tree
Showing 18 changed files with 225 additions and 392 deletions.
51 changes: 0 additions & 51 deletions .github/workflows/build-linux-arm.yml

This file was deleted.

55 changes: 55 additions & 0 deletions .github/workflows/build-rpi.yml
Original file line number Diff line number Diff line change
@@ -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/[email protected]
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;

1 change: 1 addition & 0 deletions addons/ofxOpenCv/addon_config.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -98,40 +104,35 @@ 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
else
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
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,65 +119,67 @@ 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

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

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),)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading

0 comments on commit c191d35

Please sign in to comment.