Lephisto/bin/Makefile

183 lines
4.4 KiB
Makefile

# OPTIONS.
DEBUG := 1
#DEBUG_PARANOID := 1
export DEBUG
OS := LINUX
#OS := FREEBSD
#OS := WIN32
#OS := MACOS
export OS
# Data path.
#LDATA_DEF := \"../ldata\"
#CC = clang
# VERSION.
VMAJOR := 0
VMINOR := 3
VREV := 5
VERSION = -DVMAJOR=$(VMAJOR) -DVMINOR=$(VMINOR) -DVREV=$(VREV)
VERSIONFILE = VERSION
# OBJECTS.
APPNAME := Lephisto
OBJS := $(patsubst %.c, %.o, $(wildcard ../src/*.c))
# CFLAGS
CLUA := -I../lib/lua
CCSPARSE := -I../lib/csparse
CSDL := $(shell sdl-config --cflags) -DGL_GLEXT_PROTOTYPES
CXML := $(shell xml2-config --cflags)
CTTF := $(shell freetype-config --cflags)
CPNG := #$(shell libpng-config libpng --cflags)
CGL :=
CFLAGS := $(CLUA) $(CCSPARSE) $(CSDL) $(CXML) $(CTTF) $(CPNG) $(CGL) $(VERSION) -D$(OS)
ifdef LDATA_DEF
CFLAGS += -DLDATA_DEF=$(LDATA_DEF)
endif
# OS Stuff.
# Linux Stuff.
ifeq ($(OS),LINUX)
CFLAGS += -D_POSIX_SOURCE
endif
# FreeBSD stuff.
ifeq ($(OS),FREEBSD)
CFLAGS += -D_POSIX_SOURCE -D__BSD_VISIBLE
endif
# Debug stuff.
ifdef DEBUG
CFLAGS += -W -Wall -Wextra -Wunused -Wshadow -Wpointer-arith -Wmissing-prototypes \
-Winline -Wcast-align -Wmissing-declarations -fstack-protector \
-fstack-protector-all -g -DDEBUG -DLUA_USE_APICHECK -std=c99
ifdef DEBUG_PARANOID
CFLAGS += -DDEBUG_PARANOID
endif
# Handle OS Debug stuff here.
# Linux Stuff.
ifeq ($(OS), LINUX)
LDFLAGS += -rdynamic
endif # Linux.
# FreeBSD stuff.
ifeq ($(OS), FREEBSD)
LDFLAGS += -rdynamic
endif
else # DEBUG
CFLAGS += -O2 -funroll-loops -pipe -std=c99
endif
# LDFLAGS.
LDLUA := ../lib/lua/liblua.a
LDCSPARSE := ../lib/csparse/libcsparse.a
LDSDL := $(shell sdl-config --libs) -lSDL_image -lSDL_mixer -lpng
LDXML := $(shell xml2-config --libs)
LDTTF := $(shell freetype-config --libs)
CPNG := #$(shell libpng-config libpng --libs)
LDGL := -lGL
LDFLAGS := -lm $(LDLUA) $(LDCSPARSE) $(LDSDL) $(LDXML) $(LDTTF) $(CPNG) $(LDGL) $(LDPNG)
# This is just for gstat to run some analysis on performance.
ifdef DEBUG
LDFLAGS += -pg
endif
# DATA.
DATA_AI := $(wildcard ../scripts/ai/*.lua \
../scripts/ai/*/*.lua)
DATA_GFX := $(wildcard ../gfx/*.png \
../gfx/*/*.png \
../gfx/*/*/*.png)
DATA_XML := $(wildcard ../dat/*.xml ../dat/*.ttf ../dat/intro)
DATA_SND := $(wildcard ../snd/music/*.ogg \
../snd/sounds/*.wav) ../snd/music.lua
DATA_MISN := $(wildcard ../dat/missions/*.lua \
../dat/missions/*/*.lua \
../dat/mission/*/*/*.lua)
DATA := ldata
DATAFILES := $(DATA_AI) $(DATA_GFX) $(DATA_XML) $(DATA_SND) $(DATA_MISN)
# TARGETS.
.PHONY: all help csparse lua utils docs clean distclean
%.o: %.c %.h
@$(CC) -c $(CFLAGS) -o $@ $<
@echo " CC $@"
all: utils ldata lua csparse Lephisto
help:
@echo "Possible targets are:":
@echo " lua - Builds Lua support."
@echo " csparse - Builds CSparse support."
@echo " lephisto - Builds the Lephisto binary."
@echo " mkspr - Builds the mkspr utility."
@echo " ldata - Creates the ldata file."
@echo " utils - Builds all the utilities."
@echo " docs - Creates the doxygen documentation."
@echo " clean - Removes Lephisto's main binary and ldata file."
@echo " distclean - Removes everything done."
$(APPNAME): $(OBJS)
@$(CC) $(LDFLAGS) -o $(APPNAME) $(OBJS) ../lib/lua/liblua.a ../lib/csparse/libcsparse.a
@echo " LD $(APPNAME)"
lua: ../lib/lua/liblua.a
../lib/lua/liblua.a:
+@$(MAKE) -C ../lib/lua a
csparse: ../lib/csparse/libcsparse.a
../lib/csparse/libcsparse.a:
+@$(MAKE) -C ../lib/csparse
pack: ../src/md5.c ../src/pack.c ../utils/pack/main.c
@$(MAKE) -C ../utils/pack
mksprite: ../utils/mkspr/main.c
@$(MAKE) -C ../utils/mkspr
$(VERSIONFILE):
@echo -n "$(VMAJOR).$(VMINOR).$(VREV)" > $(VERSIONFILE)
ldata: pack $(DATAFILES)
@echo -n "$(VMAJOR).$(VMINOR).$(VREV)" > $(VERSIONFILE)
@echo " Creating ldata..\n"
@./pack $(DATA) $(DATAFILES) $(VERSIONFILE)
utils: pack mksprite
docs:
+@$(MAKE) -C ../docs/
clean:
@echo " Removing ldata"
@$(RM) $(DATA)
@echo " Removing object files"
@$(RM) $(OBJS)
@echo " Removing main binary ($(APPNAME))"
@$(RM) $(APPNAME)
distclean: clean
@echo " Cleaning utilites"
@$(MAKE) -C ../utils/pack clean
@$(MAKE) -C ../utils/mkspr clean
@echo " Cleaning Lua"
@$(MAKE) -C ../lib/lua clean
@echo " Cleaning CSparse."
@$(MAKE) -C ../lib/csparse clean
@echo " Removing build tool binaries."
@$(RM) Lephisto mksprite ldata pack gmon.out VERSION