# # 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 . # # 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 += -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)/client/src/thirdparty/sqlite-3.4.2/build -I$(SRCDIR)/shared -I$(SRCDIR)/shared/thirdparty CPPFLAGS := LDFLAGS := -L$(SRCDIR)/client/src/thirdparty/sqlite-3.4.2/build/.libs LDLIBS := -lsqlite3 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 := $(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 '/precache/' | grep -v '/retired/' | grep -v '/test/' | grep -v '/sqlite-3.4.2/') OBJ := $(patsubst $(SRCDIR)/%,$(OBJDIR)/%,$(SRC:.c=.o)) DEP := $(OBJ:.o=.d) BIN := $(BINDIR)/$(TARGET) -include $(DEP) #$(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