126 lines
4.8 KiB
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)
|