kpmpgsmkii/Makefile.djgpp

129 lines
3.1 KiB
Text

#
# Kangaroo Punch MultiPlayer Game Server Mark II
# Copyright (C) 2020-2021 Scott Duensing
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
# General
CC = gcc
LD = gcc
RM = rm -rf
RMDIR = rmdir
INSTALL = install
DEBUG = -g
## CHANGE THIS ##
TARGET = client
SRCDIR = .
OBJDIR = obj
BINDIR = bin
## CHANGE THIS ##
# CFLAGS, LDFLAGS, CPPFLAGS, PREFIX can be overriden on CLI
CFLAGS := $(DEBUG)
#CFLAGS += -DALLEGRONOTAVAIL -DALLEGRONOTPROGS -DDZCOMM_SRC
CFLAGS += -I$(SRCDIR)/client/src -I$(SRCDIR)/client/src/system -I$(SRCDIR)/client/src/dos -I$(SRCDIR)/client/src/gui -I$(SRCDIR)/client/src/thirdparty
CFLAGS += -I$(SRCDIR)/shared -I$(SRCDIR)/shared/thirdparty
#CFLAGS += -I$(SRCDIR)/client/src/thirdparty/dzcomm -I$(SRCDIR)/client/src/thirdparty/dzcomm/include
CPPFLAGS :=
LDFLAGS :=
#LDFLAGS += -L$(SRCDIR)/client/src/thirdparty/dzcomm -ldzcom
PREFIX := /usr/local
TARGET_ARCH :=
# Compiler Flags
ALL_CFLAGS := $(CFLAGS)
ALL_CFLAGS += -Wall -Ofast
#ALL_CFLAGS += -Wall -O0 -pg
# Preprocessor Flags
ALL_CPPFLAGS := $(CPPFLAGS)
# Linker Flags
ALL_LDFLAGS := $(LDFLAGS)
ALL_LDLIBS := -lc
# Source, Binaries, Dependencies
SRC := $(shell find $(SRCDIR) -type f -name '*.c' | grep -v '/linux/' | grep -v '/server/' | grep -v '/primes/' | grep -v '/font/' | grep -v '/retired/' | grep -v '/test/')
OBJ := $(patsubst $(SRCDIR)/%,$(OBJDIR)/%,$(SRC:.c=.o))
DEP := $(OBJ:.o=.d)
BIN := $(BINDIR)/$(TARGET)
-include $(DEP)
#obj/client/src/thirdparty/dzcomm/src/dos/djirqs.o
#$(info [${SRC}])
#$(info [${OBJ}])
# Verbosity Control, ala automake
V = 0
# Verbosity for CC
REAL_CC := $(CC)
CC_0 = @echo "CC $<"; $(REAL_CC)
CC_1 = $(REAL_CC)
CC = $(CC_$(V))
# Verbosity for LD
REAL_LD := $(LD)
LD_0 = @echo "LD $@"; $(REAL_LD)
LD_1 = $(REAL_LD)
LD = $(LD_$(V))
# Verbosity for RM
REAL_RM := $(RM)
RM_0 = @echo "Cleaning..."; $(REAL_RM)
RM_1 = $(REAL_RM)
RM = $(RM_$(V))
# Verbosity for RMDIR
REAL_RMDIR := $(RMDIR)
RMDIR_0 = @$(REAL_RMDIR)
RMDIR_1 = $(REAL_RMDIR)
RMDIR = $(RMDIR_$(V))
# Build Rules
.PHONY: clean
.DEFAULT_GOAL := all
all: setup $(BIN)
setup: dir
remake: clean all
dir:
@mkdir -p $(OBJDIR)
@mkdir -p $(BINDIR)
$(BIN): $(OBJ)
$(LD) $(ALL_LDFLAGS) $^ $(ALL_LDLIBS) -o $@
$(OBJDIR)/%.o: $(SRCDIR)/%.c
$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) -c -MMD -MP -o $@ $<
install: $(BIN)
$(INSTALL) -d $(PREFIX)/bin
$(INSTALL) $(BIN) $(PREFIX)/bin
clean:
$(RM) $(OBJ) $(DEP) $(BIN)
$(RMDIR) $(OBJDIR) $(BINDIR) 2> /dev/null; true