intro-synths/v2/Makefile

103 lines
3.0 KiB
Makefile

# C++ version is more stable, but might be larger
USE_CXX_VERSION ?= 0
# v2m-player submodule instead of fr_public
USE_CXX_CLEANUP_VERSION ?= 0
# you most likely want this
USE_RONAN ?= 1
NASM ?= nasm
default: all
%/:
mkdir -p "$@"
v2m-player/README.md:
@>&2 echo "\`v2m-player' submodule not initialized. Please run the following command:"
@>&2 echo " git submodule update --init --recursive"
@false
fr_public/README.md:
@>&2 echo "\`fr_public' submodule not initialized. Please run the following command:"
@>&2 echo " git submodule update --init --recursive"
@false
CFLAGS := -m32 -DNDEBUG -fno-asynchronous-unwind-tables -fno-stack-protector
ASFLAGS := -felf32
ifeq ($(USE_CXX_VERSION),0)
CFLAGS += -I libv2/
else
ifeq ($(USE_CXX_CLEANUP_VERSION),0)
CFLAGS += -I libv2/ -DUSE_CXX_VERSION
else
CFLAGS += -I v2m-player/src/ -DUSE_CXX_VERSION
endif
endif
ifneq ($(USE_RONAN),0)
CFLAGS += -DRONAN
ASFLAGS += -DRONAN
endif
CFLAGS += -g -ffunction-sections -fdata-sections
ASFLAGS += -g
obj/lplayer.o: src/lplayer.cpp obj/
$(CXX) $(CFLAGS) -o "$@" -c "$<"
obj/synth.o: libv2/synth.asm obj/ fr_public/README.md
$(NASM) $(ASFLAGS) -o "$@" "$<"
obj/v2mconv.o: libv2/v2mconv.cpp obj/ fr_public/README.md
$(CXX) $(CFLAGS) -o "$@" -c "$<"
obj/v2mplayer.o: libv2/v2mplayer.cpp obj/ fr_public/README.md
$(CXX) $(CFLAGS) -o "$@" -c "$<"
obj/ronan.o: libv2/ronan.cpp obj/ fr_public/README.md
$(CXX) $(CFLAGS) -o "$@" -c "$<"
obj/synth_core.o: libv2/synth_core.cpp obj/ fr_public/README.md
$(CXX) $(CFLAGS) -o "$@" -c "$<"
obj/sounddef.o: libv2/sounddef.cpp obj/ fr_public/README.md
$(CXX) $(CFLAGS) -o "$@" -c "$<"
obj/pv2mconv.o: v2m-player/src/v2mconv.cpp obj/ v2m-player/README.md
$(CXX) $(CFLAGS) -o "$@" -c "$<"
obj/pv2mplayer.o: v2m-player/src/v2mplayer.cpp obj/ v2m-player/README.md
$(CXX) $(CFLAGS) -o "$@" -c "$<"
obj/pronan.o: v2m-player/src/ronan.cpp obj/ v2m-player/README.md
$(CXX) $(CFLAGS) -o "$@" -c "$<"
obj/psynth_core.o: v2m-player/src/synth_core.cpp obj/ v2m-player/README.md
$(CXX) $(CFLAGS) -o "$@" -c "$<"
obj/psounddef.o: v2m-player/src/sounddef.cpp obj/ v2m-player/README.md
$(CXX) $(CFLAGS) -o "$@" -c "$<"
obj/v2m-%.asm: mus/%.v2m obj/
printf "[section .data.theTune]\n" > "$@"
printf "global theTune\ntheTune:\n\tincbin \"%s\"\n" "$<" >> "$@"
printf "global theTune_size\ntheTune_size:\n\tdd \$$ - theTune\n" >> "$@"
obj/v2m-%.o: obj/v2m-%.asm
$(NASM) -g -f elf32 -o "$@" "$<"
ifeq ($(USE_CXX_VERSION),0)
bin/lplayer-%: obj/lplayer.o obj/synth.o obj/ronan.o obj/v2mconv.o \
obj/v2mplayer.o obj/sounddef.o obj/v2m-%.o bin/
else
ifeq ($(USE_CXX_CLEANUP_VERSION),0)
bin/lplayer-%: obj/lplayer.o obj/synth_core.o obj/v2mconv.o obj/v2mplayer.o \
obj/ronan.o obj/sounddef.o obj/v2m-%.o bin/
else
bin/lplayer-%: obj/lplayer.o obj/psynth_core.o obj/pv2mconv.o obj/pv2mplayer.o \
obj/pronan.o obj/psounddef.o obj/v2m-%.o bin/
endif
endif
$(CXX) -Wl,--gc-sections $(CFLAGS) -o "$@" $(filter-out bin/,$^)
all: $(patsubst mus/%.v2m,bin/lplayer-%,$(wildcard mus/*.v2m))
echo $^
clean:
$(RM) -vr obj/ bin/
.PHONY: all clean default