Makefile: various improvements

This commit is contained in:
Dale Whinham committed 2023-03-03 20:37:10 +00:00
1 parent 791f4a447a
commit a6a03f666a
4 files changed
+32 -18

No files matched your search

+14 -8
View File
@@ -2,10 +2,6 @@
# Build configuration # Build configuration
# #
# Paths to ARM toolchains
ARM_HOME?=$(HOME)/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-eabi
AARCH64_HOME?=$(HOME)/arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-elf
# Valid options: pi3, pi3-64, pi4, pi4-64 # Valid options: pi3, pi3-64, pi4, pi4-64
BOARD?=pi3-64 BOARD?=pi3-64
HDMI_CONSOLE?=0 HDMI_CONSOLE?=0
@@ -22,36 +18,47 @@ GC_SECTIONS?=1
ifeq ($(BOARD), pi2) ifeq ($(BOARD), pi2)
RASPBERRYPI=2 RASPBERRYPI=2
BITS=32 BITS=32
CPU_FLAGS=-mcpu=cortex-a7 -marm -mfpu=neon-vfpv4 -mfloat-abi=hard
PREFIX=arm-none-eabi- PREFIX=arm-none-eabi-
KERNEL=kernel7 KERNEL=kernel7
else ifeq ($(BOARD), pi3) else ifeq ($(BOARD), pi3)
RASPBERRYPI=3 RASPBERRYPI=3
BITS=32 BITS=32
CPU_FLAGS=-mcpu=cortex-a53 -marm -mfpu=neon-fp-armv8 -mfloat-abi=hard
PREFIX=arm-none-eabi- PREFIX=arm-none-eabi-
KERNEL=kernel8-32 KERNEL=kernel8-32
else ifeq ($(BOARD), pi3-64) else ifeq ($(BOARD), pi3-64)
RASPBERRYPI=3 RASPBERRYPI=3
BITS=64 BITS=64
CPU_FLAGS=-mcpu=cortex-a53 -mlittle-endian
PREFIX=aarch64-none-elf- PREFIX=aarch64-none-elf-
KERNEL=kernel8 KERNEL=kernel8
else ifeq ($(BOARD), pi4) else ifeq ($(BOARD), pi4)
RASPBERRYPI=4 RASPBERRYPI=4
BITS=32 BITS=32
CPU_FLAGS=-mcpu=cortex-a72 -marm -mfpu=neon-fp-armv8 -mfloat-abi=hard
PREFIX=arm-none-eabi- PREFIX=arm-none-eabi-
KERNEL=kernel7l KERNEL=kernel7l
else ifeq ($(BOARD), pi4-64) else ifeq ($(BOARD), pi4-64)
RASPBERRYPI=4 RASPBERRYPI=4
BITS=64 BITS=64
CPU_FLAGS=-mcpu=cortex-a72 -mlittle-endian
PREFIX=aarch64-none-elf- PREFIX=aarch64-none-elf-
KERNEL=kernel8-rpi4 KERNEL=kernel8-rpi4
else else
$(error Invalid board type "$(BOARD)"; please specify one of [ pi2 | pi3 | pi3-64 | pi4 | pi4-64 ]) $(error Invalid board type "$(BOARD)"; please specify one of [ pi2 | pi3 | pi3-64 | pi4 | pi4-64 ])
endif endif
# Compiler flags for external dependencies
CFLAGS_EXTERNAL = $(CPU_FLAGS)
ifeq ($(strip $(GC_SECTIONS)),1)
CFLAGS_EXTERNAL += -ffunction-sections -fdata-sections
endif
ifeq ($(PREFIX), arm-none-eabi-) ifeq ($(PREFIX), arm-none-eabi-)
CMAKE_TOOLCHAIN_FLAGS=-DARM_HOME=$(ARM_HOME) -DCMAKE_TOOLCHAIN_FILE=../cmake/arm-none-eabi.cmake CMAKE_TOOLCHAIN_FLAGS=-DCMAKE_TOOLCHAIN_FILE=../cmake/arm-none-eabi.cmake
else else
CMAKE_TOOLCHAIN_FLAGS=-DAARCH64_HOME=$(AARCH64_HOME) -DCMAKE_TOOLCHAIN_FILE=../cmake/aarch64-none-elf.cmake CMAKE_TOOLCHAIN_FLAGS=-DCMAKE_TOOLCHAIN_FILE=../cmake/aarch64-none-elf.cmake
endif endif
# Paths # Paths
@@ -61,6 +68,7 @@ CIRCLE_STDLIB_CONFIG=$(CIRCLESTDLIBHOME)/Config.mk
CIRCLEHOME=$(CIRCLESTDLIBHOME)/libs/circle CIRCLEHOME=$(CIRCLESTDLIBHOME)/libs/circle
CIRCLE_CONFIG=$(CIRCLEHOME)/Config.mk CIRCLE_CONFIG=$(CIRCLEHOME)/Config.mk
NEWLIB_ARCH=$(firstword $(subst -, ,$(PREFIX)))-none-circle
NEWLIBDIR=$(CIRCLESTDLIBHOME)/install/$(NEWLIB_ARCH) NEWLIBDIR=$(CIRCLESTDLIBHOME)/install/$(NEWLIB_ARCH)
CIRCLE_STDLIB_LIBS=$(NEWLIBDIR)/lib/libm.a \ CIRCLE_STDLIB_LIBS=$(NEWLIBDIR)/lib/libm.a \
$(NEWLIBDIR)/lib/libc.a \ $(NEWLIBDIR)/lib/libc.a \
@@ -85,5 +93,3 @@ FLUIDSYNTHBUILDDIR=build-fluidsynth
FLUIDSYNTHLIB=$(FLUIDSYNTHBUILDDIR)/src/libfluidsynth.a FLUIDSYNTHLIB=$(FLUIDSYNTHBUILDDIR)/src/libfluidsynth.a
INIHHOME=$(realpath external/inih) INIHHOME=$(realpath external/inih)
-include $(CIRCLE_STDLIB_CONFIG)
+14 -6
View File
@@ -5,7 +5,7 @@
include Config.mk include Config.mk
.DEFAULT_GOAL=all .DEFAULT_GOAL=all
.PHONY: circle-stdlib mt32emu fluidsynth all clean veryclean .PHONY: submodules circle-stdlib mt32emu fluidsynth all clean veryclean
# #
# Functions to apply/reverse patches only if not completely applied/reversed already # Functions to apply/reverse patches only if not completely applied/reversed already
@@ -26,6 +26,14 @@ REVERSE_PATCH=sh -c ' \
patch --reverse --strip 1 --no-backup-if-mismatch -r - --directory $$1 < $$2 || (echo "Patch $$2 failed" >&2 && exit 1); \ patch --reverse --strip 1 --no-backup-if-mismatch -r - --directory $$1 < $$2 || (echo "Patch $$2 failed" >&2 && exit 1); \
fi' REVERSE_PATCH fi' REVERSE_PATCH
#
# Get submodules
#
submodules:
@git submodule update --init --depth 1
@git -C external/circle-stdlib submodule update --init --depth 1 libs/circle libs/circle-newlib
@git -C external/circle-stdlib/libs/circle submodule update --init --depth 1 addon/wlan/hostap
# #
# Configure circle-stdlib # Configure circle-stdlib
# #
@@ -69,8 +77,8 @@ $(CIRCLESTDLIBHOME)/.done: $(CIRCLE_STDLIB_CONFIG)
mt32emu: $(MT32EMUBUILDDIR)/.done mt32emu: $(MT32EMUBUILDDIR)/.done
$(MT32EMUBUILDDIR)/.done: $(CIRCLESTDLIBHOME)/.done $(MT32EMUBUILDDIR)/.done: $(CIRCLESTDLIBHOME)/.done
@CFLAGS="$(CFLAGS_FOR_TARGET)" \ @CFLAGS="$(CFLAGS_EXTERNAL)" \
CXXFLAGS="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS="$(CFLAGS_EXTERNAL)" \
cmake -B $(MT32EMUBUILDDIR) \ cmake -B $(MT32EMUBUILDDIR) \
$(CMAKE_TOOLCHAIN_FLAGS) \ $(CMAKE_TOOLCHAIN_FLAGS) \
-DCMAKE_CXX_FLAGS_RELEASE="-Ofast" \ -DCMAKE_CXX_FLAGS_RELEASE="-Ofast" \
@@ -90,7 +98,7 @@ fluidsynth: $(FLUIDSYNTHBUILDDIR)/.done
$(FLUIDSYNTHBUILDDIR)/.done: $(CIRCLESTDLIBHOME)/.done $(FLUIDSYNTHBUILDDIR)/.done: $(CIRCLESTDLIBHOME)/.done
@${APPLY_PATCH} $(FLUIDSYNTHHOME) patches/fluidsynth-2.3.1-circle.patch @${APPLY_PATCH} $(FLUIDSYNTHHOME) patches/fluidsynth-2.3.1-circle.patch
@CFLAGS="$(CFLAGS_FOR_TARGET)" \ @CFLAGS="$(CFLAGS_EXTERNAL)" \
cmake -B $(FLUIDSYNTHBUILDDIR) \ cmake -B $(FLUIDSYNTHBUILDDIR) \
$(CMAKE_TOOLCHAIN_FLAGS) \ $(CMAKE_TOOLCHAIN_FLAGS) \
-DCMAKE_C_FLAGS_RELEASE="-Ofast -fopenmp-simd" \ -DCMAKE_C_FLAGS_RELEASE="-Ofast -fopenmp-simd" \
@@ -138,14 +146,14 @@ clean:
# #
# Clean kernel and all dependencies # Clean kernel and all dependencies
# #
veryclean: clean mrproper: clean
# Reverse patches # Reverse patches
@${REVERSE_PATCH} $(CIRCLEHOME) patches/circle-45-cp210x-remove-partnum-check.patch @${REVERSE_PATCH} $(CIRCLEHOME) patches/circle-45-cp210x-remove-partnum-check.patch
@${REVERSE_PATCH} $(CIRCLEHOME) patches/circle-45-minimal-usb-drivers.patch @${REVERSE_PATCH} $(CIRCLEHOME) patches/circle-45-minimal-usb-drivers.patch
@${REVERSE_PATCH} $(FLUIDSYNTHHOME) patches/fluidsynth-2.3.1-circle.patch @${REVERSE_PATCH} $(FLUIDSYNTHHOME) patches/fluidsynth-2.3.1-circle.patch
# Clean circle-stdlib # Clean circle-stdlib
@$(MAKE) -C $(CIRCLESTDLIBHOME) mrproper @if [ -f $(CIRCLE_STDLIB_CONFIG) ]; then $(MAKE) -C $(CIRCLESTDLIBHOME) mrproper; fi
@$(RM) $(CIRCLESTDLIBHOME)/.done @$(RM) $(CIRCLESTDLIBHOME)/.done
# Clean mt32emu # Clean mt32emu
+2 -2
View File
@@ -3,5 +3,5 @@ set(CMAKE_SYSTEM_PROCESSOR aarch64)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
set(CMAKE_C_COMPILER ${AARCH64_HOME}/bin/aarch64-none-elf-gcc) set(CMAKE_C_COMPILER aarch64-none-elf-gcc)
set(CMAKE_CXX_COMPILER ${AARCH64_HOME}/bin/aarch64-none-elf-g++) set(CMAKE_CXX_COMPILER aarch64-none-elf-g++)
+2 -2
View File
@@ -3,5 +3,5 @@ set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
set(CMAKE_C_COMPILER ${ARM_HOME}/bin/arm-none-eabi-gcc) set(CMAKE_C_COMPILER arm-none-eabi-gcc)
set(CMAKE_CXX_COMPILER ${ARM_HOME}/bin/arm-none-eabi-g++) set(CMAKE_CXX_COMPILER arm-none-eabi-g++)