57 lines
1.8 KiB
Makefile

# Simple makefile for examples
# Directories
IMGUIDIR=../../../imgui
BACKENDSDIR=../../../imgui/backends
GENERATEDDIR=../../generated
GENERATEDBACKENDSDIR=../../generated/backends
OBJDIR=obj
# Settings for SDL
SDLCFLAGS=`sdl2-config --cflags`
SDLLINKFLAGS=`sdl2-config --cflags --libs`
CC=gcc
UNAME_S := $(shell uname -s)
CPPFLAGS=-I$(GENERATEDDIR) -I$(IMGUIDIR) -I$(GENERATEDBACKENDSDIR) -I$(BACKENDSDIR) $(SDLCFLAGS) -std=c++20
CFLAGS=-I$(GENERATEDDIR) -I$(IMGUIDIR) -I$(GENERATEDBACKENDSDIR) -I$(BACKENDSDIR) $(SDLCFLAGS)
LIBS=$(SDLLINKFLAGS)
# OSX and Linux need different mechanisms to link OpenGL
ifeq ($(UNAME_S), Linux)
LIBS += -lGL
endif
ifeq ($(UNAME_S), Darwin)
LIBS += -framework OpenGL
endif
all: directories example_sdl2_opengl2
$(OBJDIR)/main.o: main.c
$(CC) $(CFLAGS) -c -o $@ $<
$(OBJDIR)/%.o: $(IMGUIDIR)/%.cpp
$(CC) $(CPPFLAGS) -c -o $@ $<
$(OBJDIR)/%.o: $(BACKENDSDIR)/%.cpp
$(CC) $(CPPFLAGS) -c -o $@ $<
$(OBJDIR)/%.o: $(GENERATEDDIR)/%.cpp
$(CC) $(CPPFLAGS) -c -o $@ $<
$(OBJDIR)/%.o: $(GENERATEDBACKENDSDIR)/%.cpp
$(CC) $(CPPFLAGS) -c -o $@ $<
directories:
@mkdir -p $(OBJDIR)
example_sdl2_opengl2: $(OBJDIR)/main.o $(OBJDIR)/imgui_impl_opengl2.o $(OBJDIR)/imgui_impl_sdl2.o $(OBJDIR)/imgui.o $(OBJDIR)/imgui_demo.o $(OBJDIR)/imgui_draw.o $(OBJDIR)/imgui_tables.o $(OBJDIR)/imgui_widgets.o $(OBJDIR)/dcimgui.o $(OBJDIR)/dcimgui_impl_sdl2.o $(OBJDIR)/dcimgui_impl_opengl2.o
$(CC) -o example_sdl_opengl2 $(OBJDIR)/main.o $(OBJDIR)/imgui_impl_opengl2.o $(OBJDIR)/imgui_impl_sdl2.o $(OBJDIR)/imgui.o $(OBJDIR)/imgui_demo.o $(OBJDIR)/imgui_draw.o $(OBJDIR)/imgui_tables.o $(OBJDIR)/imgui_widgets.o $(OBJDIR)/dcimgui.o $(OBJDIR)/dcimgui_impl_sdl2.o $(OBJDIR)/dcimgui_impl_opengl2.o -lstdc++ -lm $(LIBS)
clean:
rm -rf $(OBJDIR)
rm example_sdl_opengl2