mirror of
https://github.com/dwhinham/mt32-pi.git
synced 2026-10-26 22:11:05 +00:00
Makefile: various improvements
This commit is contained in:
1 parent
791f4a447a
commit
a6a03f666a
4 files changed
+32
-18
No files matched your search
@@ -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)
|
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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++)
|
||||||
@@ -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++)
|
||||||
Reference in new issue
Block a user