125 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
# OPTIONS.
 | 
						|
DEBUG := 1
 | 
						|
#DEBUG_PARANOID := 1
 | 
						|
 | 
						|
OS := LINUX
 | 
						|
#OS := WIN32
 | 
						|
 | 
						|
#CC = clang
 | 
						|
 | 
						|
# VERSION.
 | 
						|
VMAJOR			:= 0
 | 
						|
VMINOR			:= 0
 | 
						|
VREV				:= 1
 | 
						|
VERSION			:= -DVMAJOR=$(VMAJOR) -DVMINOR=$(VMINOR) -DVREV=$(VREV)
 | 
						|
VERSIONFILE	:= VERSION
 | 
						|
 | 
						|
# OBJECTS.
 | 
						|
APPNAME = Lephisto
 | 
						|
OBJS := $(shell find ../src/ -name '*.c' -print)
 | 
						|
OBJS := $(OBJS:%.c=%.o)
 | 
						|
 | 
						|
# CFLAGS
 | 
						|
CLUA = -I../lib/lua
 | 
						|
CSDL = $(shell sdl-config --cflags)
 | 
						|
CXML = $(shell xml2-config --cflags)
 | 
						|
CTTF = $(shell freetype-config --cflags)
 | 
						|
CGL  =
 | 
						|
CFLAGS = $(CLUA) $(CSDL) $(CXML) $(CTTF) $(CGL) $(VERSION) -D$(OS)
 | 
						|
 | 
						|
# OS Stuff.
 | 
						|
ifeq ($(OS),LINUX)
 | 
						|
CFLAGS += -D_POSIX_SOURCE
 | 
						|
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 -g3 -DDEBUG -DLUA_USE_APICHECK -std=c99
 | 
						|
 | 
						|
ifdef DEBUG_PARANOID
 | 
						|
CFLAGS += -DDEBUG_PARANOID
 | 
						|
endif
 | 
						|
 | 
						|
# Handle OS Debug stuff here.
 | 
						|
ifeq ($(OS), LINUX)
 | 
						|
LDFLAGS += -rdynamic
 | 
						|
endif # Linux.
 | 
						|
 | 
						|
else # DEBUG
 | 
						|
CFLAGS += -O2 -funroll-loops -pipe -std=c99
 | 
						|
endif
 | 
						|
 | 
						|
# LDFLAGS.
 | 
						|
LDLUA = ../lib/lua/liblua.a
 | 
						|
LDSDL = $(shell sdl-config --libs) -lSDL_image -lSDL_mixer
 | 
						|
LDXML = $(shell xml2-config --libs)
 | 
						|
LDTTF = $(shell freetype-config --libs)
 | 
						|
LDGL	= -lGL
 | 
						|
LDPNG   = -lpng
 | 
						|
LDFLAGS = -lm $(LDLUA) $(LDSDL) $(LDXML) $(LDTTF) $(LDGL) $(LDPNG)
 | 
						|
 | 
						|
# This is just for gstat to run some analysis on performance.
 | 
						|
ifdef DEBUG
 | 
						|
LDFLAGS += -pg
 | 
						|
endif
 | 
						|
 | 
						|
# DATA.
 | 
						|
DATA_AI   = $(shell find ../scripts/ai/ -name '*.lua')
 | 
						|
DATA_GFX  = $(shell find ../gfx/ -name '*.png')
 | 
						|
DATA_XML  = $(shell find ../dat/ -name '*.xml' -o -name '*.ttf')
 | 
						|
DATA_SND  = $(shell find ../snd/ -name '*.ogg' -o -name '*.wav') ../snd/music.lua
 | 
						|
DATA_MISN	= $(shell find ../dat/missions/ -name '*.lua')
 | 
						|
DATA = data
 | 
						|
DATAFILES = $(DATA_AI) $(DATA_GFX) $(DATA_XML) $(DATA_SND) $(DATA_MISN)
 | 
						|
 | 
						|
# TARGETS.
 | 
						|
.PHONY: all lua bin pack mkspr data utils docs clean purge
 | 
						|
 | 
						|
%.o: %.c %.h
 | 
						|
	@$(CC) -c $(CFLAGS) -o $@ $<
 | 
						|
	@echo -e "\tCC $@"
 | 
						|
 | 
						|
all: utils data lua bin
 | 
						|
 | 
						|
bin: $(OBJS)
 | 
						|
	@$(CC) $(LDFLAGS) -o $(APPNAME) $(OBJS) ../lib/lua/liblua.a
 | 
						|
	@echo "\tLD $(APPNAME)"
 | 
						|
 | 
						|
lua:
 | 
						|
	@if [ ! -e ../lib/lua/liblua.a ]; then (cd ../lib/lua; $(MAKE) a); fi
 | 
						|
 | 
						|
pack: ../src/pack.c ../utils/pack/main.c
 | 
						|
	@(cd ../utils/pack; $(MAKE))
 | 
						|
 | 
						|
mksprite: ../utils/mkspr/main.c
 | 
						|
	@(cd ../utils/mkspr; $(MAKE))
 | 
						|
 | 
						|
$(VERSIONFILE):
 | 
						|
	@echo -n "$(VMAJOR).$(VMINOR).$(VREV)" > $(VERSIONFILE)
 | 
						|
 | 
						|
data: pack $(DATAFILES)
 | 
						|
	@echo -n "$(VMAJOR).$(VMINOR).$(VREV)" > $(VERSIONFILE)
 | 
						|
	@echo -e "\tCreating data..\n"
 | 
						|
	@./pack $(DATA) $(DATAFILES) $(VERSIONFILE)
 | 
						|
 | 
						|
utils: mksprite
 | 
						|
 | 
						|
docs:
 | 
						|
	@(cd docs/doxygen; doxygen)
 | 
						|
 | 
						|
clean:
 | 
						|
	@echo -e "\tRemoving data"
 | 
						|
	@rm -f $(DATA)
 | 
						|
	@echo -e "\tRemoving object files"
 | 
						|
	@rm -f $(OBJS)
 | 
						|
 | 
						|
purge: clean
 | 
						|
	@echo -e "\tCleaning utilites"
 | 
						|
	@(cd ../utils/pack; $(MAKE) clean)
 | 
						|
	@(cd ../utils/mkspr; $(MAKE) clean)
 | 
						|
	@echo -e "\tCleaning Lua"
 | 
						|
	@(cd ../lib/lua; $(MAKE) clean)
 | 
						|
 |