Open Source Tomb Raider Engine
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

Makefile 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394
  1. ###############################################################
  2. # Mongoose <stu7440@westga.edu>
  3. ###############################################################
  4. # + Cleaner clean
  5. # + Add new include tree
  6. # + Add new flags
  7. # + Install/Uninstall
  8. # + Debian and Redhat packaging
  9. # + Lots of misc new features
  10. ###############################################################
  11. BUILD_SELECT=debug
  12. NAME=OpenRaider
  13. NAME_TAR=openraider
  14. MAJOR_VERSION=0
  15. MINOR_VERSION=1
  16. MICRO_VERSION=2
  17. BUILD_ID=$(shell date "+%Y%m%d")
  18. PRE=
  19. VERSION=$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION)$(PRE)
  20. VERSION_DEB=$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_ID)
  21. BUILD_HOST=$(shell uname -s -n -r -m)
  22. ARCH=$(shell uname -m -s | sed -e "s/ /-/g")
  23. UNAME=$(shell uname -s)
  24. ###############################################################
  25. # -DMULTITEXTURE Add OpenGL multitexturing
  26. # -DUNICODE_SUPPORT Add unicode/internation keyboard support
  27. # -DUSING_EMITTER_IN_GAME Run particle test in game
  28. BASE_DEFS=$(shell sdl-config --cflags) -Iinclude -DSDL_INTERFACE \
  29. -DUSING_OPENGL -DZLIB_SUPPORT -DUSING_EMITTER \
  30. -DUSING_OPENAL -DUSING_TGA -DUSING_PTHREADS \
  31. -DHAVE_SDL_TTF
  32. BASE_LIBS=$(shell sdl-config --libs) -lz -lstdc++ \
  33. -lpthread -lSDL_ttf
  34. # -DDEBUG_GL
  35. DEBUG_DEFS=-DDEBUG -DEXPERIMENTAL
  36. DEBUG_OBJ=
  37. ifeq ($(UNAME),Darwin)
  38. AUDIO_LIBS += -lalut
  39. AUDIO_LIBS += -framework OpenAL
  40. AUDIO_LIBS += -L/usr/local/lib
  41. AUDIO_DEFS += -I/usr/local/include
  42. GL_LIBS += -framework OpenGL
  43. GL_LIBS += -L/opt/local/lib
  44. GL_DEFS += -I/opt/local/include
  45. else
  46. AUDIO_LIBS += -lopenal
  47. GL_LIBS += -lGL -lGLU
  48. GL_LIBS += -L/usr/local/lib
  49. GL_DEFS += -I/usr/local/include
  50. endif
  51. BASE_LIBS += $(AUDIO_LIBS)
  52. BASE_LIBS += $(GL_LIBS)
  53. BASE_DEFS += $(AUDIO_DEFS)
  54. BASE_DEFS += $(GL_DEFS)
  55. # libferit, File transfer via HTTP/FTP/etc support
  56. LIBFERIT_LIB=/usr/local/lib/libferit.so
  57. LIBFERIT=$(shell if test -e $(LIBFERIT_LIB) > /dev/null; then echo yes; fi)
  58. ifeq ($(LIBFERIT), yes)
  59. BASE_DEFS += -DHAVE_LIBFERIT
  60. BASE_LIBS += -lferit
  61. endif
  62. ###############################################################
  63. TREE_DIR=OpenRaider
  64. BUILD_DEBUG_DIR=bin/debug
  65. BUILD_RELEASE_DIR=bin/release
  66. BUILD_PROF_DIR=bin/prof
  67. BUILD_TEST_DIR=bin/test
  68. BUILD_MEM_DIR=bin/mem
  69. BUILD_INSTALL_DIR=bin/$(BUILD_SELECT)
  70. DEB_DIR=/tmp/$(NAME).deb
  71. # Edited for Debian GNU/Linux.
  72. DESTDIR =
  73. INSTALL_BIN=$(DESTDIR)/usr/games
  74. INSTALL_LIB=$(DESTDIR)/usr/lib
  75. INSTALL_DOC=$(DESTDIR)/usr/share/doc/$(NAME)
  76. INSTALL_SHARE=$(DESTDIR)/usr/share/$(NAME)
  77. INSTALL_INCLUDE=$(DESTDIR)/usr/include
  78. ###############################################################
  79. CC=gcc
  80. WARNINGS=-Weverything -Wno-padded -Wno-packed -Wno-documentation
  81. WARNINGS+=-Wno-documentation-unknown-command -Wno-format-nonliteral
  82. WARNINGS+=-Wno-covered-switch-default -Wno-global-constructors
  83. WARNINGS+=-Wno-exit-time-destructors
  84. WARNINGS+=-Wno-conversion -Wno-sign-conversion -Wno-shorten-64-to-32
  85. FLAGS_ALL=-std=c++11
  86. BASE_CFLAGS=$(FLAGS_ALL) $(BASE_DEFS) \
  87. -DVERSION=\"\\\"$(NAME)-$(VERSION)-$(BUILD_ID)\\\"\" \
  88. -DBUILD_HOST=\"\\\"$(BUILD_HOST)\\\"\"
  89. LD_FLAGS=-L/usr/X11/lib -lXmu -lXt -lSM -lICE -lXext -lX11 -lXi \
  90. -lm $(BASE_LIBS)
  91. RELEASE_CFLAGS=$(BASE_CFLAGS) -ffast-math -funroll-loops \
  92. -fomit-frame-pointer -O2
  93. DEBUG_CFLAGS=$(BASE_CFLAGS) -g -O0 $(DEBUG_DEFS) $(WARNINGS)
  94. ################################################################
  95. DO_CC=$(CC) $(CFLAGS) -o $@ -c $<
  96. DO_SHLIB_CC=$(CC) $(CFLAGS) $(SHLIBCFLAGS) -o $@ -c $<
  97. TARGETS=$(BUILDDIR)/$(NAME)
  98. ################################################################
  99. auto: $(BUILD_SELECT)
  100. run: $(BUILD_SELECT)
  101. bin/$(BUILD_SELECT)/OpenRaider
  102. targets: $(TARGETS)
  103. bundle: release
  104. mac_dist/bundle.sh
  105. mac_dist/plist.sh $(NAME) $(VERSION) $(BUILD_ID) > bin/OpenRaider.app/Contents/Info.plist
  106. mac_dist/frameworks.sh
  107. bundle-image: bundle
  108. mac_dist/image.sh
  109. bundle-archive: bundle
  110. mac_dist/archive.sh
  111. all: debug release prof
  112. debug:
  113. @-mkdir -p $(BUILD_DEBUG_DIR)
  114. $(MAKE) targets BUILDDIR=$(BUILD_DEBUG_DIR) \
  115. CFLAGS="$(DEBUG_CFLAGS)" \
  116. LD_FLAGS="$(LD_FLAGS)"
  117. prof:
  118. @-mkdir -p $(BUILD_PROF_DIR)
  119. $(MAKE) targets BUILDDIR=$(BUILD_PROF_DIR) \
  120. CFLAGS="$(DEBUG_CFLAGS) -pg" \
  121. LD_FLAGS="$(LD_FLAGS) -pg"
  122. release:
  123. @-mkdir -p $(BUILD_RELEASE_DIR)
  124. $(MAKE) targets BUILDDIR=$(BUILD_RELEASE_DIR) \
  125. CFLAGS="$(RELEASE_CFLAGS)" \
  126. LD_FLAGS="$(LD_FLAGS)"
  127. #####################################
  128. ded:
  129. @-mkdir -p $(BUILD_DEBUG_DIR)/ded
  130. $(MAKE) targets BUILDDIR=$(BUILD_DEBUG_DIR)/ded \
  131. CFLAGS="$(DEBUG_CFLAGS) -DDEDICATED_SERVER" \
  132. LD_FLAGS="$(LD_FLAGS)"
  133. # -DDEBUG_MEMORY_VERBOSE
  134. # -DDEBUG_MEMORY
  135. memory:
  136. @-mkdir -p $(BUILD_MEM_DIR)
  137. $(MAKE) targets BUILDDIR=$(BUILD_MEM_DIR) \
  138. DEBUG_OBJ="$(BUILD_MEM_DIR)/memory_test.o" \
  139. CFLAGS="$(DEBUG_CFLAGS) -DDEBUG_MEMORY" \
  140. LD_FLAGS="$(LD_FLAGS)"
  141. depend:
  142. @-echo "Making deps..."
  143. @-echo "# Autogenerated dependency file" > depend
  144. @-find ./src -name "*.cpp" -exec ./deps.sh $(BASE_DEFS) {} \; >> depend
  145. @-echo "[DONE]"
  146. ################################################################
  147. OBJS = \
  148. $(DEBUG_OBJ) \
  149. $(BUILDDIR)/Camera.o \
  150. $(BUILDDIR)/Emitter.o \
  151. $(BUILDDIR)/GLString.o \
  152. $(BUILDDIR)/MatMath.o \
  153. $(BUILDDIR)/Matrix.o \
  154. $(BUILDDIR)/Network.o \
  155. $(BUILDDIR)/OpenGLMesh.o \
  156. $(BUILDDIR)/OpenRaider.o \
  157. $(BUILDDIR)/Particle.o \
  158. $(BUILDDIR)/Quaternion.o \
  159. $(BUILDDIR)/Render.o \
  160. $(BUILDDIR)/SDLSystem.o \
  161. $(BUILDDIR)/SkeletalModel.o \
  162. $(BUILDDIR)/Sound.o \
  163. $(BUILDDIR)/System.o \
  164. $(BUILDDIR)/Texture.o \
  165. $(BUILDDIR)/TGA.o \
  166. $(BUILDDIR)/TombRaider.o \
  167. $(BUILDDIR)/Vector3d.o \
  168. $(BUILDDIR)/ViewVolume.o \
  169. $(BUILDDIR)/World.o
  170. $(BUILDDIR)/$(NAME) : $(OBJS)
  171. $(CC) $(CFLAGS) $(LD_FLAGS) -o $@ $(OBJS)
  172. #################################################################
  173. clean: clean-small clean-dep clean-doc
  174. clean-small: clean-build clean-test clean-obj
  175. @-rm -rf bin/OpenRaider.app
  176. @-rm -rf bin/OpenRaider.dmg
  177. @-rm -rf bin/OpenRaider.zip
  178. clean-dep:
  179. @-echo "Cleaning dependencies"
  180. @-rm -f depend
  181. @-echo "[DONE]"
  182. clean-test:
  183. @-echo "Cleaning test builds"
  184. @-rm -f $(BUILD_TEST_DIR)/*.o
  185. @-rm -rf $(BUILD_TEST_DIR)/*.dSYM
  186. @-rm -f $(BUILD_TEST_DIR)/*.test
  187. @-rm -rf $(BUILD_TEST_DIR)/*.build
  188. @-echo "[DONE]"
  189. clean-obj:
  190. @-echo "Cleaning objects"
  191. @-rm -f $(BUILD_PROF_DIR)/*.o
  192. @-rm -f $(BUILD_DEBUG_DIR)/*.o
  193. @-rm -f $(BUILD_RELEASE_DIR)/*.o
  194. @-rm -f $(BUILD_TEST_DIR)/*.o
  195. @-rm -f $(BUILD_MEM_DIR)/*.o
  196. @-echo "[DONE]"
  197. clean-build:
  198. @-echo "Cleaning builds"
  199. @-rm -f $(BUILD_PROF_DIR)/$(NAME)
  200. @-rm -f $(BUILD_DEBUG_DIR)/$(NAME)
  201. @-rm -f $(BUILD_RELEASE_DIR)/$(NAME)
  202. @-rm -f $(BUILD_MEM_DIR)/$(NAME)
  203. @-echo "[DONE]"
  204. clean-doc:
  205. @-echo "Cleaning docs"
  206. @-rm -rf doc
  207. @-echo "[DONE]"
  208. #################################################################
  209. -include depend
  210. #################################################################
  211. ifneq ($(UNAME),Darwin)
  212. install:
  213. mkdir -p $(INSTALL_SHARE)/data
  214. cp setup.sh $(INSTALL_SHARE)
  215. cp data/* $(INSTALL_SHARE)/data
  216. mkdir -p $(INSTALL_DOC)
  217. cp README.md README.old ChangeLog
  218. mkdir -p $(INSTALL_BIN)
  219. cp bin/$(BUILD_SELECT)/OpenRaider $(INSTALL_BIN)
  220. bin-tarball: clean-build clean-test clean-obj $(BUILD_SELECT)
  221. @-cd .. && tar zcvf $(NAME_TAR)-$(VERSION_DEB)-$(ARCH).tar.gz \
  222. $(TREE_DIR)/Makefile $(TREE_DIR)/data \
  223. $(TREE_DIR)/bin/$(BUILD_SELECT)/OpenRaider \
  224. $(TREE_DIR)/README.md $(TREE_DIR)/ChangeLog
  225. endif
  226. #################################################################
  227. # Unit Test builds
  228. #################################################################
  229. TEST_FLAGS=$(FLAGS_ALL) -g -O0 -DDEBUG -lstdc++ -Iinclude
  230. TEST_MAP_TR5=~/.OpenRaider/paks/tr5/demo.trc
  231. TEST_MAP_TR4=~/.OpenRaider/paks/tr4/angkor1.tr4
  232. TEST_MAP_TR3=~/.OpenRaider/paks/tr3/scotland.tr2
  233. TEST_MAP_TR2=~/.OpenRaider/paks/tr2/unwater.tr2
  234. TEST_MAP_TR1=~/.OpenRaider/paks/tr1/level1.phd
  235. test.build: Matrix.test Math.test Memory.test Network.test Sound.test TGA.test GLString.test TombRaider.test
  236. test: test.build
  237. @-echo "================================================="
  238. @-echo "Running Memory unit test"
  239. $(BUILD_TEST_DIR)/memory_test.test
  240. @-echo "================================================="
  241. @-echo "Running Matrix unit test"
  242. $(BUILD_TEST_DIR)/Matrix.test
  243. @-echo "================================================="
  244. @-echo "Running Math unit test"
  245. $(BUILD_TEST_DIR)/Math.test
  246. @-echo "================================================="
  247. @-echo "Running Sound unit test"
  248. $(BUILD_TEST_DIR)/Sound.test
  249. @-echo "================================================="
  250. @-echo "Running TGA unit test"
  251. $(BUILD_TEST_DIR)/TGA.test
  252. @-echo "================================================="
  253. @-echo "Running GLString unit test"
  254. $(BUILD_TEST_DIR)/GLString.test
  255. @-echo "================================================="
  256. @-echo "Running TombRaider unit test"
  257. $(BUILD_TEST_DIR)/TombRaider.test load $(TEST_MAP_TR1)
  258. TombRaider.reg_test:
  259. $(MAKE) TombRaider.test
  260. $(BUILD_TEST_DIR)/TombRaider.test load $(TEST_MAP_TR1) > /tmp/log.tr1
  261. $(BUILD_TEST_DIR)/TombRaider.test load $(TEST_MAP_TR2) > /tmp/log.tr2
  262. $(BUILD_TEST_DIR)/TombRaider.test load $(TEST_MAP_TR3) > /tmp/log.tr3
  263. $(BUILD_TEST_DIR)/TombRaider.test load $(TEST_MAP_TR4) > /tmp/log.tr4
  264. $(BUILD_TEST_DIR)/TombRaider.test load $(TEST_MAP_TR5) > /tmp/log.tr5
  265. TR_FLAGS = -D__TEST_TR5_DUMP_TGA -D__TEST_32BIT_TEXTILES -DDEBUG_MEMORY
  266. TombRaider.test:
  267. @-mkdir -p $(BUILD_TEST_DIR)
  268. $(CC) $(FLAGS_ALL) -Iinclude $(TR_FLAGS) -o $(BUILD_TEST_DIR)/TombRaiderTest.o -c test/TombRaider.cpp
  269. $(MAKE) targets NAME=TombRaider.test BUILDDIR=$(BUILD_TEST_DIR) \
  270. OBJS="$(BUILD_TEST_DIR)/TombRaiderTest.o $(BUILD_TEST_DIR)/TombRaider.o $(BUILD_TEST_DIR)/TGA.o $(BUILD_TEST_DIR)/memory_test.o" \
  271. CFLAGS="$(BASE_CFLAGS) -g $(TR_FLAGS)" \
  272. LD_FLAGS="-lz -lstdc++"
  273. #################################################################
  274. GLString.test:
  275. mkdir -p $(BUILD_TEST_DIR)
  276. $(CC) $(FLAGS_ALL) -Iinclude -DHAVE_SDL_TTF -DHAVE_SDL \
  277. $(shell sdl-config --cflags) $(shell sdl-config --libs) \
  278. $(GL_LIBS) $(GL_DEFS) -lSDL_ttf -lm -lstdc++ \
  279. src/Texture.cpp src/GLString.cpp \
  280. test/GLString.cpp -o $(BUILD_TEST_DIR)/GLString.test
  281. #################################################################
  282. Matrix.test:
  283. @-echo "Building Matrix unit test"
  284. mkdir -p $(BUILD_TEST_DIR)
  285. $(CC) $(FLAGS_ALL) -g -lm -lstdc++ -Iinclude \
  286. src/Matrix.cpp src/Quaternion.cpp src/Vector3d.cpp \
  287. test/Matrix.cpp -o $(BUILD_TEST_DIR)/Matrix.test
  288. Math.test:
  289. @-echo "Building Math unit test"
  290. mkdir -p $(BUILD_TEST_DIR)
  291. $(CC) $(FLAGS_ALL) -g -lm -lstdc++ -Iinclude \
  292. src/MatMath.cpp src/Vector3d.cpp test/MatMath.cpp -o $(BUILD_TEST_DIR)/Math.test
  293. #################################################################
  294. Memory.test:
  295. mkdir -p $(BUILD_TEST_DIR)
  296. $(CC) $(FLAGS_ALL) -g -lstdc++ -Iinclude \
  297. -DDEBUG_MEMORY -DDEBUG_MEMORY_ERROR \
  298. src/memory_test.cpp test/memory_test.cpp -o $(BUILD_TEST_DIR)/memory_test.test
  299. #################################################################
  300. Network.test:
  301. mkdir -p $(BUILD_TEST_DIR)
  302. $(CC) $(TEST_FLAGS) \
  303. src/Network.cpp test/Network.cpp -o $(BUILD_TEST_DIR)/Network.test
  304. #################################################################
  305. Sound.test:
  306. mkdir -p $(BUILD_TEST_DIR)
  307. $(CC) $(TEST_FLAGS) \
  308. -DUSING_OPENAL $(AUDIO_LIBS) $(AUDIO_DEFS) \
  309. src/Sound.cpp test/Sound.cpp -o $(BUILD_TEST_DIR)/Sound.test
  310. #################################################################
  311. TGA.test:
  312. mkdir -p $(BUILD_TEST_DIR)
  313. $(CC) $(TEST_FLAGS) \
  314. src/TGA.cpp test/TGA.cpp -o $(BUILD_TEST_DIR)/TGA.test
  315. #################################################################