From 8348a857f3e155a7ee078d4b589000b0cbc2d623 Mon Sep 17 00:00:00 2001 From: Robert Bendun Date: Fri, 14 Oct 2022 16:43:13 +0200 Subject: [PATCH] Finalizing build scripts --- CHANGELOG.md | 1 + Makefile | 12 ++++++++++-- scripts/build.mk | 24 ++++++++++++++++++++++++ scripts/debug.mk | 11 ----------- scripts/linux.mk | 1 + scripts/macos.mk | 2 +- scripts/release | 4 ++-- scripts/release.mk | 13 ------------- scripts/windows.mk | 2 +- 9 files changed, 40 insertions(+), 30 deletions(-) create mode 100644 scripts/build.mk delete mode 100644 scripts/debug.mk delete mode 100644 scripts/release.mk diff --git a/CHANGELOG.md b/CHANGELOG.md index 70ab677..0d31c7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * Added `scan` builtin, which computes prefix sum of passed values when provided with addition operator * Added [rtmidi](https://github.com/thestk/rtmidi/) dependency which should provide multiplatform MIDI support * Support for Windows (with only basic REPL) (`make os=windows`) +* Support for MacOS (`make os=macos`) * Release package now with compiled Windows binary * `:load` REPL command to load Musique files inside Musique session. Allows for delayed file execution after a connection * `:quit` REPL command that mirrors `:exit` command diff --git a/Makefile b/Makefile index ddedcf7..0b9eaa7 100644 --- a/Makefile +++ b/Makefile @@ -3,13 +3,21 @@ include config.mk Sources := $(shell find musique/ -name '*.cc') Obj := $(subst musique/,,$(Sources:%.cc=%.o)) +ifeq ($(os),windows) +all: bin/musique.exe +debug: bin/windows/debug/musique.exe +else all: bin/musique +debug: bin/$(os)/debug/musique +endif include scripts/$(os).mk -include scripts/debug.mk -include scripts/release.mk +include scripts/build.mk include scripts/test.mk +bin/$(Target): bin/$(os)/$(Target) + ln -f $< $@ + # http://www.music.mcgill.ca/~gary/rtmidi/#compiling bin/$(os)/rtmidi.o: lib/rtmidi/RtMidi.cpp lib/rtmidi/RtMidi.h @echo "CXX $@" diff --git a/scripts/build.mk b/scripts/build.mk new file mode 100644 index 0000000..0ef1b20 --- /dev/null +++ b/scripts/build.mk @@ -0,0 +1,24 @@ +Release_Obj=$(addprefix bin/$(os)/,$(Obj)) + +bin/$(os)/bestline.o: lib/bestline/bestline.c lib/bestline/bestline.h + @echo "CC $@" + @$(CC) $< -c -O3 -o $@ + +bin/$(os)/%.o: musique/%.cc + @echo "CXX $@" + @$(CXX) $(CXXFLAGS) $(RELEASE_FLAGS) $(CPPFLAGS) -o $@ $< -c + +bin/$(os)/$(Target): $(Release_Obj) bin/$(os)/main.o bin/$(os)/rtmidi.o $(Bestline) + @echo "CXX $@" + @$(CXX) $(CXXFLAGS) $(RELEASE_FLAGS) $(CPPFLAGS) -o $@ $(Release_Obj) bin/$(os)/rtmidi.o $(Bestline) $(LDFLAGS) $(LDLIBS) + +Debug_Obj=$(addprefix bin/$(os)/debug/,$(Obj)) + +bin/$(os)/debug/$(Target): $(Debug_Obj) bin/$(os)/debug/main.o bin/$(os)/rtmidi.o $(Bestline) + @echo "CXX $@" + @$(CXX) $(CXXFLAGS) $(DEBUG_FLAGS) $(CPPFLAGS) -o $@ $(Debug_Obj) bin/$(os)/rtmidi.o $(Bestline) $(LDFLAGS) $(LDLIBS) + +bin/$(os)/debug/%.o: musique/%.cc + @echo "CXX $@" + @$(CXX) $(CXXFLAGS) $(DEBUG_FLAGS) $(CPPFLAGS) -o $@ $< -c + diff --git a/scripts/debug.mk b/scripts/debug.mk deleted file mode 100644 index b59424c..0000000 --- a/scripts/debug.mk +++ /dev/null @@ -1,11 +0,0 @@ -Debug_Obj=$(addprefix bin/debug/,$(Obj)) - -debug: bin/debug/musique - -bin/debug/musique: $(Debug_Obj) bin/debug/main.o bin/bestline.o - @echo "CXX $@" - @$(CXX) $(CXXFLAGS) $(DEBUG_FLAGS) $(CPPFLAGS) -o $@ $(Debug_Obj) bin/bestline.o $(LDFLAGS) $(LDLIBS) - -bin/debug/%.o: musique/%.cc - @echo "CXX $@" - @$(CXX) $(CXXFLAGS) $(DEBUG_FLAGS) $(CPPFLAGS) -o $@ $< -c diff --git a/scripts/linux.mk b/scripts/linux.mk index 6a611ac..b0e0e0a 100644 --- a/scripts/linux.mk +++ b/scripts/linux.mk @@ -3,3 +3,4 @@ CXX=g++ CPPFLAGS:=$(CPPFLAGS) -D __LINUX_ALSA__ LDLIBS:=-lasound $(LDLIBS) -static-libgcc -static-libstdc++ Bestline=bin/$(os)/bestline.o +Target=musique diff --git a/scripts/macos.mk b/scripts/macos.mk index a961237..78ed4b6 100644 --- a/scripts/macos.mk +++ b/scripts/macos.mk @@ -4,4 +4,4 @@ CPPFLAGS:=$(CPPFLAGS) -D __MACOSX_CORE__ LDLIBS:=-framework CoreMIDI -framework CoreAudio -framework CoreFoundation $(LDLIBS) Release_Obj=$(addprefix bin/,$(Obj)) Bestline=bin/$(os)/bestline.o - +Target=musique diff --git a/scripts/release b/scripts/release index da4c215..2e7de4b 100755 --- a/scripts/release +++ b/scripts/release @@ -16,10 +16,10 @@ fi mkdir -p "$Target" -make clean && make bin/musique +make clean && make os=linux cp bin/musique "$Target"/ -make clean && make bin/musique os=windows +make clean && make os=windows cp bin/musique.exe "$Target"/ echo "Copy examples, license and documentation" diff --git a/scripts/release.mk b/scripts/release.mk deleted file mode 100644 index 7403e69..0000000 --- a/scripts/release.mk +++ /dev/null @@ -1,13 +0,0 @@ -Release_Obj=$(addprefix bin/$(os)/,$(Obj)) - -bin/$(os)/bestline.o: lib/bestline/bestline.c lib/bestline/bestline.h - @echo "CC $@" - @$(CC) $< -c -O3 -o $@ - -bin/$(os)/%.o: musique/%.cc - @echo "CXX $@" - @$(CXX) $(CXXFLAGS) $(RELEASE_FLAGS) $(CPPFLAGS) -o $@ $< -c - -bin/musique: $(Release_Obj) bin/$(os)/main.o bin/$(os)/rtmidi.o $(Bestline) - @echo "CXX $@" - @$(CXX) $(CXXFLAGS) $(RELEASE_FLAGS) $(CPPFLAGS) -o $@ $(Release_Obj) bin/$(os)/rtmidi.o $(Bestline) $(LDFLAGS) $(LDLIBS) diff --git a/scripts/windows.mk b/scripts/windows.mk index db55123..a92c6a2 100644 --- a/scripts/windows.mk +++ b/scripts/windows.mk @@ -2,4 +2,4 @@ CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ CPPFLAGS:=$(CPPFLAGS) -D__WINDOWS_MM__ LDLIBS:=-lwinmm $(LDLIBS) -static-libgcc -static-libstdc++ - +Target=musique.exe