blob: e3de29b799148e3b4f47d47be0feedddf2bd58a5 (
plain)
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
|
#
# Cross Platform Makefile
# Compatible with MSYS2/MINGW, Ubuntu 14.04.1 and Mac OS X
#
# You will need GLFW (http://www.glfw.org):
# Linux:
# apt-get install libglfw-dev
# Mac OS X:
# brew install glfw
# MSYS2:
# pacman -S --noconfirm --needed mingw-w64-x86_64-toolchain mingw-w64-x86_64-glfw
#
#CXX = g++
#CXX = clang++
IMGUI_DIR = imgui
PORTAUDIO_DIR = portaudio
BASEOBJDIR = obj
BASETARGETDIR = bin
ifeq "$(strip $(filter debug,$(MAKECMDGOALS)))" "debug"
OBJDIR = $(BASEOBJDIR)/debug
TARGETDIR = $(BASETARGETDIR)/debug
else
OBJDIR = $(BASEOBJDIR)/release
TARGETDIR = $(BASETARGETDIR)/release
endif
EXENAME = plinky
EXE = $(TARGETDIR)/$(EXENAME)
SOURCES = main.cpp knob.cpp pffft.cpp ../Core/Src/plinky.c ../Core/Src/gfx.c
SOURCES += $(IMGUI_DIR)/imgui.cpp $(IMGUI_DIR)/imgui_draw.cpp $(IMGUI_DIR)/imgui_widgets.cpp
SOURCES += imgui_impl_glfw.cpp imgui_impl_opengl3.cpp
OBJS = $(addprefix $(OBJDIR)/, $(addsuffix .o, $(basename $(notdir $(SOURCES)))))
DEP = $(OBJS:%.o=%.d)
UNAME_S := $(shell uname -s)
LINUX_GL_LIBS = -lGL
CXXFLAGS = -I$(IMGUI_DIR) -I$(IMGUI_DIR)/backends -I$(IMGUI_DIR)/gl3w -I$(IMGUI_DIR)/glfw/include -I$(PORTAUDIO_DIR)/include
CXXFLAGS += -Wall -Wformat
LIBS =
##---------------------------------------------------------------------
## OPENGL LOADER / OPENGL ES
##---------------------------------------------------------------------
## See below for OpenGL ES option (no loader required) - comment out
## the following if you want to use OpenGL ES instead of Desktop GL.
## Using OpenGL loader: gl3w [default]
SOURCES += $(IMGUI_DIR)/gl3w/GL/gl3w.c
CXXFLAGS += -I$(IMGUI_DIR)/gl3w -DIMGUI_IMPL_OPENGL_LOADER_GL3W
## Using OpenGL loader: glew
## (This assumes a system-wide installation)
# CXXFLAGS += -DIMGUI_IMPL_OPENGL_LOADER_GLEW
# LIBS += -lGLEW
## Using OpenGL loader: glad
# SOURCES += ../libs/glad/src/glad.c
# CXXFLAGS += -I../libs/glad/include -DIMGUI_IMPL_OPENGL_LOADER_GLAD
## Using OpenGL loader: glad2
# SOURCES += ../libs/glad/src/gl.c
# CXXFLAGS += -I../libs/glad/include -DIMGUI_IMPL_OPENGL_LOADER_GLAD2
## Using OpenGL loader: glbinding
## This assumes a system-wide installation
## of either version 3.0.0 (or newer)
# CXXFLAGS += -DIMGUI_IMPL_OPENGL_LOADER_GLBINDING3
# LIBS += -lglbinding
## or the older version 2.x
# CXXFLAGS += -DIMGUI_IMPL_OPENGL_LOADER_GLBINDING2
# LIBS += -lglbinding
## Using OpenGL ES, no loader required
## This assumes a GL ES library available in the system, e.g. libGLESv2.so
# CXXFLAGS += -DIMGUI_IMPL_OPENGL_ES2
# LINUX_GL_LIBS = -lGLESv2
##---------------------------------------------------------------------
## BUILD FLAGS PER PLATFORM
##---------------------------------------------------------------------
ifeq ($(UNAME_S), Linux) #LINUX
ECHO_MESSAGE = "Linux"
LIBS += -lGL `pkg-config --static --libs glfw3`
CXXFLAGS += `pkg-config --cflags glfw3`
CFLAGS = $(CXXFLAGS)
endif
ifeq ($(UNAME_S), Darwin) #APPLE
ECHO_MESSAGE = "Mac OS X"
LIBS += -L/usr/local/lib -L/opt/local/lib -L/opt/homebrew/lib
CXXFLAGS += -I/usr/local/include -I/opt/local/include -I/opt/homebrew/include
CFLAGS = $(CXXFLAGS)
# GLFW:
LIBS += -framework OpenGL -framework Cocoa -framework IOKit -framework CoreVideo
# Static:
LIBS += -L$(IMGUI_DIR)/glfw/lib-macos_x64
LIBS += -lglfw3
# Dynamic:
#LIBS += -lglfw
# PortAudio:
LIBS += -L$(PORTAUDIO_DIR)/lib/macos_x64
LIBS += -lportaudio
LIBS += -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework CoreServices -framework Carbon
endif
ifeq ($(OS), Windows_NT)
ECHO_MESSAGE = "MinGW"
LIBS += -lglfw3 -lgdi32 -lopengl32 -limm32
CXXFLAGS += `pkg-config --cflags glfw3`
CFLAGS = $(CXXFLAGS)
endif
##---------------------------------------------------------------------
## BUILD RULES
##---------------------------------------------------------------------
$(OBJDIR)/%.o:%.cpp
$(CXX) $(CXXFLAGS) -MMD -std=c++11 -c -o $@ $<
$(OBJDIR)/%.o:../Core/Src/%.c
$(CC) $(CFLAGS) -MMD -I../Core/Inc -c -o $@ $<
$(OBJDIR)/%.o:$(IMGUI_DIR)/%.cpp
$(CXX) $(CXXFLAGS) -MMD -c -o $@ $<
$(OBJDIR)/%.o:$(IMGUI_DIR)/gl3w/GL/%.c
@mkdir -p $(dir $@)
$(CC) $(CFLAGS) -MMD -c -o $@ $<
all: executable
@echo Build complete for $(ECHO_MESSAGE)
debug: CXXFLAGS += -g -DDEBUG
debug: CFLAGS += -g -DDEBUG
debug: executable
@echo Debug build complete for $(ECHO_MESSAGE)
-include $(DEP)
executable: directories $(EXE)
directories:
@mkdir -p $(TARGETDIR)
@mkdir -p $(OBJDIR)
$(EXE): $(OBJS)
$(CXX) -o $@ $^ $(CXXFLAGS) $(LIBS)
clean:
rm -f $(BASEOBJDIR)/*/*.o $(BASEOBJDIR)/*/*.d $(BASETARGETDIR)/*/$(EXENAME)
|