1LINKER := $(CXX)
2ASM := nasm
3SRCDIR := ./Source
4NET_SRCDIR := ./Source/Net
5BINDIR := ./objs
6NET_BINDIR := ./objs/Net
7EXE := $(BINDIR)/blackshades #$(BINDIR)/bse_viewer
8
9CFLAGS += -Wall `${SDL_CONFIG} --cflags` -I$(SRCDIR) -I$(NET_SRCDIR) -include Source/Support.h
10CXXFLAGS += -Wall `${SDL_CONFIG} --cflags` -I$(SRCDIR) -I$(NET_SRCDIR) -include Source/Support.h
11LDFLAGS += `${SDL_CONFIG} --libs` -lGL -lGLU -lopenal -lalut # -framework QuickTime
12
13# Don't want ogg?
14#CFLAGS += -DNOOGG
15# Got ogg?
16LDFLAGS += -lvorbisfile -lvorbis
17
18SRCS := Button.cpp \
19  Camera.cpp \
20	Config.cpp \
21	Decals.cpp \
22	Fog.cpp \
23	Font.cpp \
24	Frustum.cpp \
25	Game.cpp \
26	GameDraw.cpp \
27	GameInitDispose.cpp \
28	GameLoop.cpp \
29	GameTick.cpp \
30	Globals.cpp \
31	Image.cpp \
32	Label.cpp \
33	MacInput.cpp \
34	Main.cpp \
35	Maths.cpp \
36	Models.cpp \
37	Person.cpp \
38	Quaternions.cpp \
39	SDL_funcs.cpp \
40	Serialize.cpp \
41	Skeleton.cpp \
42	Sprites.cpp \
43	Support.cpp \
44	TGALoader.cpp \
45	Text.cpp \
46	Weapon.cpp \
47	Window.cpp
48
49NET_SRCS := \
50	Client.cpp \
51	NetCommon.cpp \
52	Server.cpp
53#	Viewer.cpp \
54
55OBJS1 := $(SRCS:.c=.o)
56OBJS2 := $(OBJS1:.cpp=.o)
57OBJS3 := $(OBJS2:.asm=.o)
58NET_OBJS1 := $(NET_SRCS:.cpp=.o)
59OBJS := $(foreach f,$(OBJS3),$(BINDIR)/$(f))
60SRCS := $(foreach f,$(SRCS),$(SRCDIR)/$(f))
61NET_OBJS := $(foreach f,$(NET_OBJS1),$(NET_BINDIR)/$(f))
62
63CLEANUP = $(wildcard *.exe) $(wildcard *.obj) \
64	  $(wildcard $(BINDIR)/*.exe) $(wildcard $(BINDIR)/*.obj) \
65	  $(wildcard *~) $(wildcard *.err) \
66	  $(wildcard .\#*) core $(EXE)
67
68# Rules for compiling individual source files...
69
70$(BINDIR)/%.o: $(SRCDIR)/%.cpp
71	$(CXX) -c -o $@ $< $(CXXFLAGS)
72
73$(BINDIR)/%.o: $(SRCDIR)/%.c
74	$(CC) -c -o $@ $< $(CFLAGS)
75
76$(NET_BINDIR)/%.o: $(NET_SRCDIR)/%.cpp
77	$(CXX) -c -o $@ $< $(CFLAGS)
78
79$(BINDIR)/%.o: $(SRCDIR)/%.asm
80	$(ASM) $(ASMFLAGS) -o $@ $<
81
82.PHONY: all bindir blackshades
83all: $(EXE)
84
85$(EXE): $(BINDIR) $(OBJS) $(NET_OBJS)
86	$(LINKER) -o $(EXE) $(OBJS) $(NET_OBJS) $(LDFLAGS)
87
88$(BINDIR) :
89	$(MAKE) bindir
90
91bindir:
92	mkdir -p $(BINDIR)
93	mkdir -p $(NET_BINDIR)
94
95distclean: clean
96
97clean:
98	rm -f $(CLEANUP)
99	rm -rf $(BINDIR)
100
101# end of Makefile.
102
103
104