Files
coffee_crisis_arcade_edition/Makefile

126 lines
4.8 KiB
Makefile

###############################################################################
# #
# DIRECTORIES #
# #
###############################################################################
# Project root directory, so everything will be relative to it:
DIR_ROOT:= $(dir $(abspath $(MAKEFILE_LIST)))
# Root directory for the source code:
DIR_SOURCES:= $(addsuffix /, $(DIR_ROOT)source)
# Executables will be here.
DIR_BIN:= $(addsuffix /, $(DIR_ROOT))
# Directories for build artifacts (.o and .d files):
DIR_BUILD:= $(addsuffix /, $(DIR_ROOT)build)
INCLUDES:= -I$(DIR_SOURCES)
###############################################################################
# #
# FLAGS #
# #
###############################################################################
# Compiler flags (for the C++ compiler):
CXXFLAGS:= -std=c++11 -Wall -Os -ffunction-sections -fdata-sections
# Linker flags (SFML libraries):
LDFLAGS:= -lSDL2
###############################################################################
# #
# FILES #
# #
###############################################################################
SOURCES := $(shell find $(DIR_SOURCES) -name '*.cpp')
OBJECTS := $(subst $(DIR_SOURCES), $(DIR_BUILD), $(SOURCES))
OBJECTS := $(OBJECTS:.cpp=.o)
DEPENDENCIES:= $(OBJECTS:.o=.d)
###############################################################################
# #
# TARGETS #
# #
###############################################################################
TARGET_NAME:= coffee_crisis_arcade_edition
TARGET_FILE:= $(DIR_BIN)$(TARGET_NAME)
###############################################################################
# #
# OTHER COMMANDS #
# #
###############################################################################
RM:= rm -rf
###############################################################################
# #
# RULES #
# #
###############################################################################
.PHONY: all a1
all: a1
a1: $(TARGET_FILE)
$(TARGET_FILE): $(OBJECTS)
mkdir -p $(@D)
$(CXX) $(OBJECTS) $(LDFLAGS) -o $(TARGET_FILE)
$(DIR_BUILD)%.o: $(DIR_SOURCES)%.cpp
mkdir -p $(@D)
$(CXX) -c $< $(CXXFLAGS) $(INCLUDES) -o $@
-include $(DEPENDENCIES)
###############################################################################
# #
# CLEAN #
# #
###############################################################################
.PHONY: clean
clean:
$(RM) $(DIR_BIN) $(DIR_BUILD)
###############################################################################
# #
# PRINT-VARIABLES #
# #
###############################################################################
.PHONY: print-variables
print-variables:
@echo MAKEFILE_LIST: $(MAKEFILE_LIST)
@echo "DIR_ROOT :" $(DIR_ROOT)
@echo "DIR_SOURCES:" $(DIR_SOURCES)
@echo "DIR_BIN :" $(DIR_BIN)
@echo "DIR_BUILD :" $(DIR_BUILD)
@echo "DIR_IMGUI :" $(DIR_IMGUI)
@echo "DIR_IMGUI_SFML:" $(DIR_IMGUI_SFML)
@echo "INCLUDES :" $(INCLUDES)
@echo CXX: $(CXX)
@echo CXXFLAGS: $(CXXFLAGS)
@echo LDFLAGS: $(LDFLAGS)
@echo SOURCES: $(SOURCES)
@echo OBJECTS: $(OBJECTS)
@echo DEPENDENCIES: $(DEPENDENCIES)
@echo TARGET_NAME: $(TARGET_NAME)
@echo TARGET_FILE: $(TARGET_FILE)
@echo RM: $(RM)