gsla/Makefile
2025-02-22 11:54:18 -06:00

43 lines
861 B
Makefile

# Compiler and flags
CC = clang++
CXXFLAGS = -Wall -Wextra -I./source
#CXXFLAGS = -std=c++17 -Wall -Wextra -I./source
LDFLAGS =
# Source and object files
SRC = ./source/c2_file.cpp ./source/gsla_file.cpp ./source/lzb.cpp ./source/main.cpp
OBJ = $(SRC:.cpp=.o)
TARGET = gsla
# Build configurations
DEBUG_FLAGS = -g -D_DEBUG -D_CONSOLE
RELEASE_FLAGS = -O2 -DNDEBUG -D_CONSOLE
# Default build is Debug
CONFIG ?= Debug
ifeq ($(CONFIG),Debug)
CXXFLAGS += $(DEBUG_FLAGS)
else ifeq ($(CONFIG),Release)
CXXFLAGS += $(RELEASE_FLAGS)
else
$(error Invalid CONFIG value. Use 'Debug' or 'Release')
endif
# Default target
all: $(TARGET)
# Link the executable
$(TARGET): $(OBJ)
$(CC) $(OBJ) $(LDFLAGS) -o $@
# Compile source files into object files
%.o: %.cpp
$(CC) $(CXXFLAGS) -c $< -o $@
# Clean build files
clean:
rm -f $(OBJ) $(TARGET)
.PHONY: all clean