OBJDIR=o BINDIR=../../binaries SRCDIR=.. DEPDIR=deps INCLUDES=-I$(SRCDIR) -I$(SRCDIR)/ps -I$(SRCDIR)/lib -I. -I/usr/include/X11 # -UDEBUG_LOCKS: Change -U to -D to add printfs in the Lock/Unlock methods of all ThreadUtil.h functions # -UDEBUG_REFCNT: Change to -D to add printfs in reference counting functions DEFINES=-D__STDC_VERSION__=199901L -UDEBUG_LOCKS -UDEBUG_REFCNT -DHAVE_X \ -DHAVE_CLOCK_GETTIME -DHAVE_GETTIMEOFDAY CPPFLAGS=$(INCLUDES) $(DEFINES) CXXFLAGS=-O3 -mcpu=athlon-4 -march=pentium-mmx -ffast-math \ -foptimize-sibling-calls -fno-cprop-registers \ -fstrict-aliasing -mmmx \ -g3 LD_DIRS=-L/usr/X11R6/lib LD_LIBS=-lX11 -lrt -lGL -lglut -lSDL -lz -lxerces-c -lpng LDFLAGS=-g3 -z combreloc $(LD_DIRS) $(LD_LIBS) PS_SOURCES=$(addprefix ps/, Encryption.cpp CStr.cpp Config.cpp LogFile.cpp \ MathUtil.cpp Parser.cpp Prometheus.cpp XercesErrorHandler.cpp) PS_OBJS=$(patsubst %.cpp, $(OBJDIR)/%.o, $(PS_SOURCES)) PS_NET_SOURCES=$(addprefix ps/Network/, NetMessage.cpp Network.cpp \ ServerSocket.cpp SocketBase.cpp StreamSocket.cpp) PS_NET_OBJS=$(patsubst %.cpp, $(OBJDIR)/%.o, $(PS_NET_SOURCES)) GUI_SOURCES=$(addprefix gui/, CButton.cpp CGUI.cpp CGUISprite.cpp GUIbase.cpp \ GUIutil.cpp IGUIButtonBehavior.cpp IGUIObject.cpp \ IGUISettingsObject.cpp CText.cpp IGUIScrollBar.cpp \ IGUIScrollBarOwner.cpp CGUIScrollBarStyle.cpp CGUIScrollBarVertical.cpp) GUI_OBJS=$(patsubst %.cpp, $(OBJDIR)/%.o, $(GUI_SOURCES)) TERR_SOURCES=$(addprefix terrain/, Camera.cpp Frustum.cpp Matrix3D.cpp \ MiniPatch.cpp Patch.cpp Plane.cpp Renderer.cpp Terrain.cpp Vector3D.cpp\ terrainMain.cpp SHCoeffs.cpp Bound.cpp Quaternion.cpp) TERR_OBJS=$(patsubst %.cpp, $(OBJDIR)/%.o, $(TERR_SOURCES)) LIB_BASE_SOURCES=$(addprefix lib/, detect.cpp adts.cpp \ misc.cpp ogl.cpp lib.cpp\ sysdep/x.cpp sysdep/sysdep.cpp) LIB_BASE_OBJS=$(patsubst %.cpp, $(OBJDIR)/%.o, $(LIB_BASE_SOURCES)) LIB_EXT_SOURCES=$(addprefix lib/, input.cpp res/file.cpp \ res/font.cpp res/h_mgr.cpp res/mem.cpp res/res.cpp res/tex.cpp \ res/vfs.cpp res/zip.cpp sysdep/x.cpp timer.cpp) LIB_EXT_OBJS=$(patsubst %.cpp, $(OBJDIR)/%.o, $(LIB_EXT_SOURCES)) LIB_SOURCES=$(LIB_BASE_SOURCES) $(LIB_EXT_SOURCES) LIB_OBJS=$(patsubst %.cpp, $(OBJDIR)/%.o, $(LIB_SOURCES)) DEP_SOURCES=$(PS_SOURCES) $(PS_NET_SOURCES) $(GUI_SOURCES) $(LIB_SOURCES) $(TERR_SOURCES) .PHONY: clean all MPT run runMPT prof runProf all: .banner $(BINDIR)/prometheus prof: $(BINDIR)/prometheus.prof clean: rm -fr deps o run: $(BINDIR)/prometheus pushd $(BINDIR); ./prometheus; popd runProf: $(BINDIR)/prometheus-prof pushd $(BINDIR); ./prometheus.prof; popd runMPT: $(BINDIR)/MessagePassingTest pushd $(BINDIR); ./MessagePassingTest; popd include $(patsubst %, $(DEPDIR)/%.d, $(DEP_SOURCES)) .banner: @echo CFLAGS = $(CFLAGS) @echo CPPFLAGS = $(CPPFLAGS) @echo CXXFLAGS = $(CXXFLAGS) @echo LDFLAGS = $(LDFLAGS) $(DEPDIR)/%.cpp.d: $(SRCDIR)/%.cpp @mkdir -p $(dir $@) @echo D $@ @gcc $(CPPFLAGS) -MM -MT "$(OBJDIR)/$*.o $(DEPDIR)/$*.cpp.d" -MF $@ $< $(BINDIR)/MessagePassingTest: \ $(OBJDIR)/MessagePassingTest.o \ $(PS_OBJS) \ $(PS_NET_OBJS) \ $(LIB_BASE_OBJS) @mkdir -p $(dir $@) $(CXX) $(LDFLAGS) -o $@ $^ MPT: $(BINDIR)/MessagePassingTest prometheus_OBJS=$(OBJDIR)/main.o \ $(PS_OBJS) \ $(PS_NET_OBJS) \ $(LIB_OBJS) \ $(GUI_OBJS) \ $(TERR_OBJS) $(BINDIR)/prometheus: $(prometheus_OBJS) @mkdir -p $(dir $@) $(CXX) $(LDFLAGS) -o $@ $^ $(BINDIR)/prometheus.prof: $(patsubst %.o, %.prof.o, $(prometheus_OBJS)) @mkdir -p $(dir $@) $(CXX) $(LDFLAGS) -pg -o $@ $^ $(OBJDIR)/%.o: $(SRCDIR)/%.cpp @mkdir -p $(dir $@) @echo : $@ @$(CXX) $(CPPFLAGS) $(CFLAGS) $(CXXFLAGS) -c -o $@ $< $(OBJDIR)/%.prof.o: $(SRCDIR)/%.cpp @mkdir -p $(dir $@) @echo : $@ @$(CXX) $(CPPFLAGS) $(CFLAGS) $(CXXFLAGS) -pg -c -o $@ $< $(SRCDIR)/%.ii: $(SRCDIR)/%.cpp @echo Generating preprocessed file $(notdir $<).ii $(CXX) $(CPPFLAGS) $(CXXFLAGS) -E -o $(notdir $<).ii $< winexport: # Make a copy of /source in /winexport mkdir -p ../../winexport cp -r ../../source/* ../../winexport/ pushd ../../winexport; \ rm -fr linux/o; \ rm -fr linux/deps; \ unix2dos `find -type f`; \ popd winimport: pushd ../../winimport; \ cp -r * ../source; \ rm -fr vc6/Debug; \ rm -fr vc7/Debug; \ popd; \ pushd ..; \ dos2unix `find -type f`; \ popd # TODO actual case conversion... pushd ..; \ for a in `find -type d; do \ mv $a/cvs $a/CVS; \ done; \ popd