0ad/source/workspaces/gcc/Makefile
2004-05-13 17:21:27 +00:00

150 lines
4.3 KiB
Makefile
Executable File

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 <path>/source in <path>/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