anaglym/Makefile
2010-12-19 00:11:38 -05:00

155 lines
3.9 KiB
Makefile

install_dir ?= $(HOME)/local/anaglym
WINCHECK := $(shell which msys-1.0.dll >/dev/null 2>&1; if [ $$? -eq 0 ]; then echo MSYS; fi)
ifeq ($(strip $(WINCHECK)),)
PLATFORM := PLATFORM_LINUX
else
PLATFORM := PLATFORM_WINDOWS
endif
TARGET := anaglym
SOURCES := $(wildcard *.c) ag_lua.c
COBJS := $(patsubst %.c,%.o,$(SOURCES))
CXXOBJS := $(subst sdl_keymap.o,,$(patsubst %.cc,%.o,$(wildcard *.cc))) sdl_keymap.o
OBJS := $(COBJS) $(CXXOBJS)
CDEPS := $(COBJS:.o=.dep)
CXXDEPS := $(CXXOBJS:.o=.dep)
DEPS := $(CDEPS) $(CXXDEPS)
LUAINCLUDE := $(shell pkg-config --cflags lua5.1 2>/dev/null)
ifeq ($(strip $(LUAINCLUDE)),)
LUAINCLUDE := $(shell which lua-config >/dev/null 2>&1; if [ $$? -eq 0 ]; then lua-config --include; fi)
endif
ifeq ($(strip $(LUAINCLUDE)),)
LUAINCLUDE := -I/usr/include/lua5.1
endif
LUALIBS := $(shell pkg-config --libs lua5.1 2>/dev/null)
ifeq ($(strip $(LUALIBS)),)
LUALIBS := $(shell which lua-config >/dev/null 2>&1; if [ $$? -eq 0 ]; then lua-config --libs; fi)
endif
ifeq ($(strip $(LUALIBS)),)
LUALIBS := -llua5.1
endif
FTGLINCLUDE := $(shell pkg-config --cflags ftgl)
FTGLLIBS := $(shell pkg-config --libs ftgl)
SDLINCLUDE := $(shell sdl-config --cflags)
SDLLIBS := -lSDL_image -lSDL_sound $(shell sdl-config --libs)
ODEINCLUDE := $(shell ode-config --cflags)
ODELIBS := $(shell ode-config --libs)
SMPEGLIBS := $(shell smpeg-config --libs)
VORBISLIBS := -lvorbisfile
TOPLEVEL := $(shell pwd)
ifeq ($(PLATFORM),PLATFORM_WINDOWS)
GLLIBS := -lopengl32 -lglu32
WINDOWSLIBS := -lmingw32
TARGET := $(TARGET).exe
CC := gcc
else
GLLIBS := -lGL -lGLU
endif
export CPPFLAGS := $(LUAINCLUDE) $(SDLINCLUDE) $(ODEINCLUDE) $(FTGLINCLUDE) -I$(TOPLEVEL) -D$(PLATFORM)
export CFLAGS := $(CPPFLAGS) -O2 -Wall
export CXXFLAGS := $(CFLAGS)
export LDFLAGS := $(LUALIBS) $(ODELIBS) $(GLLIBS) $(WINDOWSLIBS) $(SDLLIBS) $(FTGLLIBS) $(SMPEGLIBS) $(VORBISLIBS)
ifdef DEBUG
CFLAGS += -g
CXXFLAGS += -g
endif
all: $(TARGET)
$(TARGET): $(OBJS) wfobj/WFObj.o OdeWorld/OdeWorld.o PhyObj/PhyObj.o TextureCache/TextureCache.o
$(CXX) -o $@ $^ $(LDFLAGS)
ag_lua.c: ag.lua
xxd -i $< > $@
.PHONY: wfobj/WFObj.o
wfobj/WFObj.o:
$(MAKE) -C wfobj
.PHONY: OdeWorld/OdeWorld.o
OdeWorld/OdeWorld.o:
$(MAKE) -C OdeWorld
.PHONY: PhyObj/PhyObj.o
PhyObj/PhyObj.o:
$(MAKE) -C PhyObj
.PHONY: TextureCache/TextureCache.o
TextureCache/TextureCache.o:
$(MAKE) -C TextureCache
%.o: %.c
$(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $<
%.o: %.cc
$(CXX) -c -o $@ $(CPPFLAGS) $(CXXFLAGS) $<
sdl_keymap.o: sdl_keymap.cc
sdl_keymap.cc: gen-sdl-keymap.pl
perl $<
# Make dependency files
%.dep: %.c
@set -e; rm -f $@; \
$(CC) -MM $(CPPFLAGS) $< | sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' > $@
%.dep: %.cc
@set -e; rm -f $@; \
$(CXX) -MM $(CPPFLAGS) $< | sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' > $@
.PHONY: dist
dist: all
-rm -rf $@
-mkdir -p $@
cp -a lib $@/lib
cp -a doc $@/doc
cp $(TARGET) $@
ifeq ($(PLATFORM),PLATFORM_WINDOWS)
# copy DLLs to distribution directory
cp -a $(shell which SDL.dll) $@
cp -a $(shell which SDL_image.dll) $@
# jh 2009-10-29 statically linking with ODE now
# cp -a $(shell which ODE.dll) $@
cp -a $(shell which jpeg.dll) $@
cp -a $(shell which libpng12-0.dll) $@
cp -a $(shell which zlib1.dll) $@
cp -a $(shell which libtiff-3.dll) $@
cp -a $(shell which libftgl-2.dll) $@
cp -a $(shell which lua5.1.dll) $@
cp -a $(shell which freetype6.dll) $@
cp -a $(shell which libogg-0.dll) $@
cp -a $(shell which libvorbis-0.dll) $@
cp -a $(shell which libvorbisfile-3.dll) $@
endif
.PHONY: install
install: dist
@echo "Installing to '$(install_dir)', override with 'make install_dir=path'"
-mkdir -p $(install_dir)
rsync -av dist/ $(install_dir)
clean:
-rm -f *.o *.dep *~ $(TARGET) stdout.txt stderr.txt sdl_keymap.h sdl_keymap.cc
$(MAKE) -C wfobj clean
$(MAKE) -C TextureCache clean
$(MAKE) -C OdeWorld clean
$(MAKE) -C PhyObj clean
distclean: clean
-rm -rf dist
-include $(DEPS)