-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
54 lines (45 loc) · 1.39 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# ✨ Daniël Kamp's supersonic Makefile, oh yeah ✨
CC=g++
PLATFORM=linux # Supported platforms: linux (unstable), macos
ifeq ($(PLATFORM), linux)
CFLAGS = -I/usr/include -I$(CURDIR)/Include -Wall -fexceptions -std=c++2a -D__UNIX_JACK__
LDFLAGS= -ljack -lncurses -lpthread
else ifeq ($(PLATFORM), macos)
CFLAGS = -I/usr/local/include -I$(CURDIR)/Include -Wall -fexceptions -std=c++2a -framework CoreMIDI -framework CoreAudio -framework CoreFoundation -D__MACOSX_CORE__
LDFLAGS= -ljack -lncurses
else ifeq ($(PLATFORM), windows)
# God knows what we do here, cuz windows
CFLAGS = -I/usr/local/include -Wall -fexceptions -std=c++2a -D__WINDOWS_MM__
LDFLAGS= -ljack -lncurses
endif
SRC_DIR=src
OBJ_DIR=obj
SOURCES=$(wildcard $(SRC_DIR)/*.cpp)
OBJECTS=$(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SOURCES))
# Make all
all: donut
# Link all
donut: $(OBJECTS)
$(CC) -o $@ $(CFLAGS) $^ $(LDFLAGS)
# Separate rule for main.cpp since it doesn't have a header
obj/main.o: src/main.cpp Include/Global.h
mkdir -p $(OBJ_DIR)
$(CC) -c $< $(CFLAGS) -o $@
# Make all .cpp source files into .o files, like magic ✨
obj/%.o: src/%.cpp
$(CC) -c $< $(CFLAGS) -o $@
# Install to system path
install:
mv donut /usr/var/bin/
# Clean up
clean:
rm donut obj/*.o
#TOP_TARGETS := all clean
#
#SUBDIRS := $(wildcard */.)
#
#$(TOP_TARGETS): $(SUBDIRS)
#$(SUBDIRS):
# $(MAKE) -C $@ $(MAKECMDGOALS)
#
#.PHONY: $(TOPTARGETS) $(SUBDIRS)