WINCHECK := $(shell which msys-1.0.dll >/dev/null 2>&1; if [ $$? -eq 0 ]; then echo MSYS; fi) ifeq ($(strip $(WINCHECK)),) WINDOWS := 0 else WINDOWS := 1 endif TARGET := anaglym COBJS := $(patsubst %.c,%.o,$(wildcard *.c)) CXXOBJS := $(patsubst %.cc,%.o,$(wildcard *.cc)) OBJS := $(COBJS) $(CXXOBJS) CDEPS := $(COBJS:.o=.dep) CXXDEPS := $(CXXOBJS:.o=.dep) DEPS := $(CDEPS) $(CXXDEPS) LUAINCLUDE := $(shell which lua-config >/dev/null 2>&1; if [ $$? -eq 0 ]; then lua-config --include; fi) ifeq ($(strip $(LUAINCLUDE)),) LUAINCLUDE := -I/usr/include/lua5.1 endif LUALIBS := $(shell which lua-config >/dev/null 2>&1; if [ $$? -eq 0 ]; then lua-config --libs; fi) ifeq ($(strip $(LUALIBS)),) LUALIBS := -llua5.1 endif SDLINCLUDE := $(shell sdl-config --cflags) SDLLIBS := $(shell sdl-config --libs) ODEINCLUDE := $(shell ode-config --cflags) ODELIBS := $(shell ode-config --libs) ifeq ($(WINDOWS),1) GLLIBS := -lopengl32 -lglu32 WINDOWSLIBS := -lmingw32 TARGET := $(TARGET).exe else GLLIBS := -lGL -lGLU endif export CFLAGS := $(LUAINCLUDE) $(SDLINCLUDE) $(ODEINCLUDE) -O2 -Wall export CXXFLAGS := $(CFLAGS) export LDFLAGS := $(LUALIBS) $(ODELIBS) $(GLLIBS) $(WINDOWSLIBS) $(SDLLIBS) ifdef DEBUG CFLAGS += -g CXXFLAGS += -g endif all: $(TARGET) $(TARGET): $(OBJS) wfobj/WFObj.o OdeWorld/OdeWorld.o $(CXX) -o $@ $^ $(LDFLAGS) .PHONY: wfobj/WFObj.o wfobj/WFObj.o: $(MAKE) -C wfobj .PHONY: OdeWorld/OdeWorld.o OdeWorld/OdeWorld.o: $(MAKE) -C OdeWorld %.o: %.c $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $< %.o: %.cc $(CXX) -c -o $@ $(CPPFLAGS) $(CXXFLAGS) $< # 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 -mkdir -p $@ cp -a lib $@ # I didn't want to rely on 'rsync' being available to exclude .svn folders # or svn being available to properly export directories... find $@ -depth -name '.svn' -exec rm -rf {} ';' cp $(TARGET) $@ ifeq ($(WINDOWS),1) cp -a $(shell which SDL.dll) $@ cp -a $(shell which SDL_image.dll) $@ cp -a $(shell which ODE.dll) $@ endif clean: -rm -f *.o *.dep *~ $(TARGET) dist stdout.txt stderr.txt -include $(DEPS)