-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile.github
More file actions
82 lines (68 loc) · 2.24 KB
/
Makefile.github
File metadata and controls
82 lines (68 loc) · 2.24 KB
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
# Generic Makefile for SpaceSim
# Configure these paths according to your system setup:
GLEW_PATH ?=
GLFW_PATH ?=
GLM_PATH ?=
IMGUI_PATH = vendor/imgui
# Use environment variables if available, otherwise use system defaults
CXX = g++
CXXFLAGS = -std=c++11 -Wall
LDFLAGS = -lglfw -lGLEW -lGL
# Add paths if specified
ifdef GLEW_PATH
CXXFLAGS += -I$(GLEW_PATH)/include
LDFLAGS += -L$(GLEW_PATH)/lib
endif
ifdef GLFW_PATH
CXXFLAGS += -I$(GLFW_PATH)/include
LDFLAGS += -L$(GLFW_PATH)/lib
endif
ifdef GLM_PATH
CXXFLAGS += -I$(GLM_PATH)/include
endif
# Include ImGui path
CXXFLAGS += -I$(IMGUI_PATH)
# Your project source files
PROJECT_SOURCES = main.cpp texture.cpp planet.cpp objects.cpp shader.cpp
PROJECT_OBJECTS = $(PROJECT_SOURCES:.cpp=.o)
# ImGui source files
IMGUI_SOURCES = $(IMGUI_PATH)/imgui.cpp \
$(IMGUI_PATH)/imgui_draw.cpp \
$(IMGUI_PATH)/imgui_tables.cpp \
$(IMGUI_PATH)/imgui_widgets.cpp \
$(IMGUI_PATH)/backends/imgui_impl_glfw.cpp \
$(IMGUI_PATH)/backends/imgui_impl_opengl3.cpp
# ImGui object files
IMGUI_OBJECTS = $(IMGUI_SOURCES:.cpp=.o)
# All object files combined
ALL_OBJECTS = $(PROJECT_OBJECTS) $(IMGUI_OBJECTS)
# Default target
main: $(ALL_OBJECTS)
$(CXX) -o main $(ALL_OBJECTS) $(LDFLAGS)
# Rule for project source files
%.o: %.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@
clean:
rm -f main $(ALL_OBJECTS)
# Platform-specific adjustments
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Darwin)
LDFLAGS += -framework OpenGL
endif
# Help target
help:
@echo "SpaceSim Build System"
@echo "--------------------"
@echo "Available targets:"
@echo " main - Build the SpaceSim executable"
@echo " clean - Remove built files"
@echo " help - Display this help message"
@echo ""
@echo "Configuration:"
@echo " Set these variables according to your setup:"
@echo " GLEW_PATH - Path to GLEW installation (e.g., /opt/homebrew/opt/glew)"
@echo " GLFW_PATH - Path to GLFW installation (e.g., /opt/homebrew/opt/glfw)"
@echo " GLM_PATH - Path to GLM installation (e.g., /opt/homebrew/opt/glm)"
@echo ""
@echo "Example:"
@echo " make GLEW_PATH=/usr/local GLFW_PATH=/usr/local GLM_PATH=/usr/local"