|
| 1 | +# |
| 2 | +# Cross Platform Makefile |
| 3 | +# Compatible with MSYS2/MINGW, Ubuntu 14.04.1 and Mac OS X |
| 4 | +# |
| 5 | +# You will need GLFW (http://www.glfw.org): |
| 6 | +# Linux: |
| 7 | +# apt-get install libglfw-dev |
| 8 | +# Mac OS X: |
| 9 | +# brew install glfw |
| 10 | +# MSYS2: |
| 11 | +# pacman -S --noconfirm --needed mingw-w64-x86_64-toolchain mingw-w64-x86_64-glfw |
| 12 | +# |
| 13 | + |
| 14 | +#CXX = g++ |
| 15 | +#CXX = clang++ |
| 16 | + |
| 17 | +EXE = example_glfw_opengl3 |
| 18 | + |
| 19 | +LIBS_DIR = ../../libs |
| 20 | +CIMGUI_DIR = $(LIBS_DIR)/cimgui |
| 21 | +IMGUI_DIR = $(CIMGUI_DIR)/imgui |
| 22 | +IM_MARKDOWN_DIR = $(LIBS_DIR)/imgui_markdown |
| 23 | +UTILS_DIR = ../utils |
| 24 | +BUILD_DIR = .build |
| 25 | +STB_DIR = $(LIBS_DIR)/stb |
| 26 | + |
| 27 | +VPATH = $(IM_MARKDOWN_DIR) : $(IMGUI_DIR) : $(IMGUI_DIR)/backends : $(UTILS_DIR) |
| 28 | + |
| 29 | +SOURCES += main.cpp |
| 30 | +CSOURCES += $(UTILS_DIR)/loadImage.c $(UTILS_DIR)/utils.c |
| 31 | +SOURCES += $(wildcard $(IMGUI_DIR)/*.cpp) $(wildcard $(UTILS_DIR)/*.cpp) |
| 32 | +SOURCES += $(IMGUI_DIR)/backends/imgui_impl_glfw.cpp \ |
| 33 | + $(IMGUI_DIR)/backends/imgui_impl_opengl3.cpp |
| 34 | +SOURCES += $(wildcard $(IM_MARKDOWN_DIR)/*.cpp) |
| 35 | + |
| 36 | +OBJS = $(addprefix $(BUILD_DIR)/,$(notdir $(SOURCES:.cpp=.o))) $(addprefix $(BUILD_DIR)/,$(notdir $(CSOURCES:.c=.o))) |
| 37 | +UNAME_S := $(shell uname -s) |
| 38 | +LINUX_GL_LIBS = -lGL |
| 39 | + |
| 40 | +CXXFLAGS += -MMD -MP |
| 41 | +CXXFLAGS += -O1 -Wl,-s -mwindows |
| 42 | +CXXFLAGS += -I$(IMGUI_DIR) -I$(IMGUI_DIR)/backends -I$(UTILS_DIR) -I$(UTILS_DIR)/fonticon -I$(STB_DIR) |
| 43 | +CXXFLAGS += -g -Wall -Wformat -static |
| 44 | +CXXFLAGS += -I$(IM_MARKDOWN_DIR) |
| 45 | +LIBS = |
| 46 | + |
| 47 | +##--------------------------------------------------------------------- |
| 48 | +## OPENGL ES |
| 49 | +##--------------------------------------------------------------------- |
| 50 | + |
| 51 | +## This assumes a GL ES library available in the system, e.g. libGLESv2.so |
| 52 | +# CXXFLAGS += -DIMGUI_IMPL_OPENGL_ES2 |
| 53 | +# LINUX_GL_LIBS = -lGLESv2 |
| 54 | + |
| 55 | +##--------------------------------------------------------------------- |
| 56 | +## BUILD FLAGS PER PLATFORM |
| 57 | +##--------------------------------------------------------------------- |
| 58 | + |
| 59 | +ifeq ($(UNAME_S), Linux) #LINUX |
| 60 | + ECHO_MESSAGE = "Linux" |
| 61 | + LIBS += $(LINUX_GL_LIBS) `pkg-config --static --libs glfw3` |
| 62 | + |
| 63 | + CXXFLAGS += `pkg-config --cflags glfw3` |
| 64 | + CFLAGS = $(CXXFLAGS) |
| 65 | +endif |
| 66 | + |
| 67 | +ifeq ($(UNAME_S), Darwin) #APPLE |
| 68 | + ECHO_MESSAGE = "Mac OS X" |
| 69 | + LIBS += -framework OpenGL -framework Cocoa -framework IOKit -framework CoreVideo |
| 70 | + LIBS += -L/usr/local/lib -L/opt/local/lib -L/opt/homebrew/lib |
| 71 | + #LIBS += -lglfw3 |
| 72 | + LIBS += -lglfw |
| 73 | + |
| 74 | + CXXFLAGS += -I/usr/local/include -I/opt/local/include -I/opt/homebrew/include |
| 75 | + CFLAGS = $(CXXFLAGS) |
| 76 | +endif |
| 77 | + |
| 78 | +ifeq ($(OS), Windows_NT) |
| 79 | + ECHO_MESSAGE = "MinGW" |
| 80 | + LIBS += -lglfw3 -lgdi32 -lopengl32 -limm32 |
| 81 | + |
| 82 | + CXXFLAGS += $(shell pkg-config --cflags glfw3) |
| 83 | + CFLAGS = $(CXXFLAGS) |
| 84 | +endif |
| 85 | + |
| 86 | +##--------------------------------------------------------------------- |
| 87 | +## BUILD RULES |
| 88 | +##--------------------------------------------------------------------- |
| 89 | + |
| 90 | +all: $(BUILD_DIR) $(EXE) |
| 91 | + @echo Build complete for $(ECHO_MESSAGE) |
| 92 | +$(BUILD_DIR): |
| 93 | + @-mkdir -p $@ |
| 94 | + |
| 95 | +$(BUILD_DIR)/%.o:%.c Makefile |
| 96 | + @echo [$(CC)]: $(notdir $<) |
| 97 | + @$(CC) $(CFLAGS) -c -o $@ $< |
| 98 | + |
| 99 | +$(BUILD_DIR)/%.o:%.cpp Makefile |
| 100 | + @echo [$(CXX)]: $(notdir $<) |
| 101 | + @$(CXX) $(CXXFLAGS) -std=c++14 -c -o $@ $< |
| 102 | + |
| 103 | +$(EXE): $(OBJS) |
| 104 | + @$(CXX) -o $@ $^ $(CXXFLAGS) $(LIBS) |
| 105 | + |
| 106 | +clean: |
| 107 | + @rm -f $(EXE) $(OBJS) |
| 108 | + @rm -f *.o |
| 109 | + |
| 110 | +run: all |
| 111 | + ./$(EXE) |
| 112 | + |
| 113 | +format: |
| 114 | + cp -f main.cpp main.cpp.org |
| 115 | + clang-format main.cpp.org > main.cpp |
| 116 | + |
| 117 | + |
| 118 | +include $(wildcard $(BUILD_DIR)/*.d) |
0 commit comments