mirror of
https://github.com/dwhinham/mt32-pi.git
synced 2026-02-04 05:34:49 +00:00
Makefile: various improvements
This commit is contained in:
22
Config.mk
22
Config.mk
@@ -2,10 +2,6 @@
|
||||
# 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
|
||||
BOARD?=pi3-64
|
||||
HDMI_CONSOLE?=0
|
||||
@@ -22,36 +18,47 @@ GC_SECTIONS?=1
|
||||
ifeq ($(BOARD), pi2)
|
||||
RASPBERRYPI=2
|
||||
BITS=32
|
||||
CPU_FLAGS=-mcpu=cortex-a7 -marm -mfpu=neon-vfpv4 -mfloat-abi=hard
|
||||
PREFIX=arm-none-eabi-
|
||||
KERNEL=kernel7
|
||||
else ifeq ($(BOARD), pi3)
|
||||
RASPBERRYPI=3
|
||||
BITS=32
|
||||
CPU_FLAGS=-mcpu=cortex-a53 -marm -mfpu=neon-fp-armv8 -mfloat-abi=hard
|
||||
PREFIX=arm-none-eabi-
|
||||
KERNEL=kernel8-32
|
||||
else ifeq ($(BOARD), pi3-64)
|
||||
RASPBERRYPI=3
|
||||
BITS=64
|
||||
CPU_FLAGS=-mcpu=cortex-a53 -mlittle-endian
|
||||
PREFIX=aarch64-none-elf-
|
||||
KERNEL=kernel8
|
||||
else ifeq ($(BOARD), pi4)
|
||||
RASPBERRYPI=4
|
||||
BITS=32
|
||||
CPU_FLAGS=-mcpu=cortex-a72 -marm -mfpu=neon-fp-armv8 -mfloat-abi=hard
|
||||
PREFIX=arm-none-eabi-
|
||||
KERNEL=kernel7l
|
||||
else ifeq ($(BOARD), pi4-64)
|
||||
RASPBERRYPI=4
|
||||
BITS=64
|
||||
CPU_FLAGS=-mcpu=cortex-a72 -mlittle-endian
|
||||
PREFIX=aarch64-none-elf-
|
||||
KERNEL=kernel8-rpi4
|
||||
else
|
||||
$(error Invalid board type "$(BOARD)"; please specify one of [ pi2 | pi3 | pi3-64 | pi4 | pi4-64 ])
|
||||
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-)
|
||||
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
|
||||
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
|
||||
|
||||
# Paths
|
||||
@@ -61,6 +68,7 @@ CIRCLE_STDLIB_CONFIG=$(CIRCLESTDLIBHOME)/Config.mk
|
||||
CIRCLEHOME=$(CIRCLESTDLIBHOME)/libs/circle
|
||||
CIRCLE_CONFIG=$(CIRCLEHOME)/Config.mk
|
||||
|
||||
NEWLIB_ARCH=$(firstword $(subst -, ,$(PREFIX)))-none-circle
|
||||
NEWLIBDIR=$(CIRCLESTDLIBHOME)/install/$(NEWLIB_ARCH)
|
||||
CIRCLE_STDLIB_LIBS=$(NEWLIBDIR)/lib/libm.a \
|
||||
$(NEWLIBDIR)/lib/libc.a \
|
||||
@@ -85,5 +93,3 @@ FLUIDSYNTHBUILDDIR=build-fluidsynth
|
||||
FLUIDSYNTHLIB=$(FLUIDSYNTHBUILDDIR)/src/libfluidsynth.a
|
||||
|
||||
INIHHOME=$(realpath external/inih)
|
||||
|
||||
-include $(CIRCLE_STDLIB_CONFIG)
|
||||
|
||||
20
Makefile
20
Makefile
@@ -5,7 +5,7 @@
|
||||
include Config.mk
|
||||
|
||||
.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
|
||||
@@ -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); \
|
||||
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
|
||||
#
|
||||
@@ -69,8 +77,8 @@ $(CIRCLESTDLIBHOME)/.done: $(CIRCLE_STDLIB_CONFIG)
|
||||
mt32emu: $(MT32EMUBUILDDIR)/.done
|
||||
|
||||
$(MT32EMUBUILDDIR)/.done: $(CIRCLESTDLIBHOME)/.done
|
||||
@CFLAGS="$(CFLAGS_FOR_TARGET)" \
|
||||
CXXFLAGS="$(CFLAGS_FOR_TARGET)" \
|
||||
@CFLAGS="$(CFLAGS_EXTERNAL)" \
|
||||
CXXFLAGS="$(CFLAGS_EXTERNAL)" \
|
||||
cmake -B $(MT32EMUBUILDDIR) \
|
||||
$(CMAKE_TOOLCHAIN_FLAGS) \
|
||||
-DCMAKE_CXX_FLAGS_RELEASE="-Ofast" \
|
||||
@@ -90,7 +98,7 @@ fluidsynth: $(FLUIDSYNTHBUILDDIR)/.done
|
||||
$(FLUIDSYNTHBUILDDIR)/.done: $(CIRCLESTDLIBHOME)/.done
|
||||
@${APPLY_PATCH} $(FLUIDSYNTHHOME) patches/fluidsynth-2.3.1-circle.patch
|
||||
|
||||
@CFLAGS="$(CFLAGS_FOR_TARGET)" \
|
||||
@CFLAGS="$(CFLAGS_EXTERNAL)" \
|
||||
cmake -B $(FLUIDSYNTHBUILDDIR) \
|
||||
$(CMAKE_TOOLCHAIN_FLAGS) \
|
||||
-DCMAKE_C_FLAGS_RELEASE="-Ofast -fopenmp-simd" \
|
||||
@@ -138,14 +146,14 @@ clean:
|
||||
#
|
||||
# Clean kernel and all dependencies
|
||||
#
|
||||
veryclean: clean
|
||||
mrproper: clean
|
||||
# Reverse patches
|
||||
@${REVERSE_PATCH} $(CIRCLEHOME) patches/circle-45-cp210x-remove-partnum-check.patch
|
||||
@${REVERSE_PATCH} $(CIRCLEHOME) patches/circle-45-minimal-usb-drivers.patch
|
||||
@${REVERSE_PATCH} $(FLUIDSYNTHHOME) patches/fluidsynth-2.3.1-circle.patch
|
||||
|
||||
# Clean circle-stdlib
|
||||
@$(MAKE) -C $(CIRCLESTDLIBHOME) mrproper
|
||||
@if [ -f $(CIRCLE_STDLIB_CONFIG) ]; then $(MAKE) -C $(CIRCLESTDLIBHOME) mrproper; fi
|
||||
@$(RM) $(CIRCLESTDLIBHOME)/.done
|
||||
|
||||
# Clean mt32emu
|
||||
|
||||
@@ -3,5 +3,5 @@ set(CMAKE_SYSTEM_PROCESSOR aarch64)
|
||||
|
||||
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
||||
|
||||
set(CMAKE_C_COMPILER ${AARCH64_HOME}/bin/aarch64-none-elf-gcc)
|
||||
set(CMAKE_CXX_COMPILER ${AARCH64_HOME}/bin/aarch64-none-elf-g++)
|
||||
set(CMAKE_C_COMPILER aarch64-none-elf-gcc)
|
||||
set(CMAKE_CXX_COMPILER aarch64-none-elf-g++)
|
||||
|
||||
@@ -3,5 +3,5 @@ set(CMAKE_SYSTEM_PROCESSOR arm)
|
||||
|
||||
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
||||
|
||||
set(CMAKE_C_COMPILER ${ARM_HOME}/bin/arm-none-eabi-gcc)
|
||||
set(CMAKE_CXX_COMPILER ${ARM_HOME}/bin/arm-none-eabi-g++)
|
||||
set(CMAKE_C_COMPILER arm-none-eabi-gcc)
|
||||
set(CMAKE_CXX_COMPILER arm-none-eabi-g++)
|
||||
|
||||
Reference in New Issue
Block a user