changeset 5:08e2ed7d5879

Improve build process.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 05 Aug 2013 14:07:43 +0300
parents de12519301a2
children 2741d9fe1c71
files Makefile
diffstat 1 files changed, 74 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile	Mon Aug 05 14:06:11 2013 +0300
+++ b/Makefile	Mon Aug 05 14:07:43 2013 +0300
@@ -1,3 +1,19 @@
+CXX=g++
+CFLAGS = -g -O3 -W -Wall
+LDFLAGS = -s
+AR=ar
+RANLIB=ranlib
+
+DEMO_CFLAGS = -fpermissive
+
+OBJPATH=obj/
+
+###
+### Depency definitions
+###
+BOOST_CFLAGS=-I/usr/include/
+BOOST_LDFLAGS=/usr/lib/libboost_thread.a /usr/lib/libboost_system.a
+
 BASS_CFLAGS=-Ilibbass/
 BASS_LDFLAGS=-L./ -lbass
 
@@ -7,8 +23,10 @@
 FREETYPE_CFLAGS=`pkg-config freetype2 --cflags`
 FREETYPE_LDFLAGS=`pkg-config freetype2 --libs`
 
-LIBOGGPLAYER_CFLAGS=-Iliboggplayer-linux32/include/
-LIBOGGPLAYER_LDFLAGS=-L./ -loggplayer
+LIBOGGPLAYER=liboggplayer-src/
+LIBOGGPLAYER_CFLAGS=-I$(LIBOGGPLAYER)include/
+LIBOGGPLAYER_LDFLAGS=`pkg-config --libs ogg vorbis theoradec`
+LIBOGGPLAYER_A=$(LIBOGGPLAYER)lib/liboggplayer.a
 
 GLEW_CFLAGS=`pkg-config glew --cflags`
 GLEW_LDFLAGS=`pkg-config glew --libs`
@@ -16,33 +34,73 @@
 GLUT_CFLAGS=-I/usr/include/GL/
 GLUT_LDFLAGS=/usr/lib/i386-linux-gnu/libglut.a
 
+
+DEMO_CFLAGS +=  $(BASS_CFLAGS) $(ASSIMP_CFLAGS) \
+		$(LIBOGGPLAYER_CFLAGS) $(FREETYPE_CFLAGS) \
+		$(GLEW_CFLAGS) $(GLUT_CFLAGS) \
+		$(FREETYPE_CFLAGS)
+
+DEMO_LDFLAGS = $(BASS_LDFLAGS) $(ASSIMP_LDFLAGS) \
+		$(LIBOGGPLAYER_A) $(FREETYPE_LDFLAGS) \
+		$(GLEW_LDFLAGS) $(GLUT_LDFLAGS) \
+		$(FREETYPE_LDFLAGS) $(BOOST_LDFLAGS) \
+		$(LIBOGGPLAYER_LDFLAGS)
+
+
+###
+### Source files etc
+###
 TARGETS=demo.bin
 
-CXX=g++
-CFLAGS = -g -O3 -W -Wall -fpermissive
-LDFLAGS = -s
 
+DEMO_OBJS=vertex-attribute.o vertex-buffer.o \
+	texture-atlas.o texture-font.o mat4.o \
+	shader.o vector.o midifile.o \
+	midiutil.o main.o
+
+LIBOGGPLAYER_OBJS= \
+	oggplayer.o open_close.o play.o \
+	SDL_audiocvt.o util.o
+	
 
 ###
 ### Main targets
 ###
 all: $(TARGETS)
 
-demo.bin: src/vertex-attribute.c src/vertex-buffer.c \
-	src/texture-atlas.c src/texture-font.c src/mat4.c \
-	src/shader.c src/vector.c src/midifile.c \
-	src/midiutil.c src/main.c
-	$(CXX) $(CFLAGS) -o $@ $+ $(BASS_CFLAGS) $(BASS_LDFLAGS) \
-		$(ASSIMP_CFLAGS) $(ASSIMP_LDFLAGS) \
-		$(LIBOGGPLAYER_CFLAGS) $(LIBOGGPLAYER_LDFLAGS) \
-		$(FREETYPE_CFLAGS) $(FREETYPE_LDFLAGS) \
-		$(GLEW_CFLAGS) $(GLEW_LDFLAGS) \
-		$(GLUT_CFLAGS) $(GLUT_LDFLAGS)
+$(OBJPATH)%.o: $(LIBOGGPLAYER)src/%.cpp $(LIBOGGPLAYER)src/%.hpp
+	@echo " CXX $+"
+	$(CXX) $(CFLAGS) -c -o $@ $< $(LIBOGGPLAYER_CFLAGS) $(BOOST_CFLAGS)
+
+$(OBJPATH)%.o: $(LIBOGGPLAYER)src/%.cpp
+	@echo " CXX $+"
+	$(CXX) $(CFLAGS) -c -o $@ $< $(LIBOGGPLAYER_CFLAGS) $(BOOST_CFLAGS)
+
+
+$(OBJPATH)%.o: src/%.c src/%.h
+	@echo " CXX $+"
+	$(CXX) $(CFLAGS) -c -o $@ $< $(DEMO_CFLAGS)
+
+$(OBJPATH)%.o: src/%.c
+	@echo " CXX $+"
+	$(CXX) $(CFLAGS) -c -o $@ $< $(DEMO_CFLAGS)
+
+
+$(LIBOGGPLAYER_A): $(addprefix $(OBJPATH),$(LIBOGGPLAYER_OBJS))
+	@echo " AR $@ $+"
+	@$(AR) cru $@ $+
+	@echo " RANLIB $@"
+	@$(RANLIB) $@
+
+
+demo.bin: $(addprefix $(OBJPATH),$(DEMO_OBJS)) $(LIBOGGPLAYER_A)
+	@echo " LINK $@ $+"
+	@$(CXX) $(CFLAGS) $(DEMO_CFLAGS) -o $@ $+ $(DEMO_LDFLAGS)
 
 
 ###
 ### Special targets
 ###
 clean:
-	$(RM) $(TARGETS) *.o 
+	$(RM) $(TARGETS) $(OBJPATH)*.o