Open Source Tomb Raider Engine
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Makefile 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416
  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 sdl2-config --cflags) -Iinclude -DUSING_EMITTER
  29. BASE_LIBS=$(shell sdl2-config --libs) -lz -lstdc++ \
  30. -lpthread -lSDL_ttf
  31. # -DDEBUG_GL
  32. DEBUG_DEFS=-DDEBUG -DEXPERIMENTAL
  33. DEBUG_OBJ=
  34. ifeq ($(UNAME),Darwin)
  35. AUDIO_LIBS += -lalut
  36. AUDIO_LIBS += -framework OpenAL
  37. AUDIO_LIBS += -L/usr/local/lib
  38. AUDIO_DEFS += -I/usr/local/include
  39. GL_LIBS += -framework OpenGL
  40. GL_LIBS += -L/opt/local/lib
  41. GL_DEFS += -I/opt/local/include
  42. else
  43. AUDIO_LIBS += -lopenal -lalut
  44. GL_LIBS += -lGL -lGLU
  45. GL_LIBS += -L/usr/local/lib
  46. GL_DEFS += -I/usr/local/include
  47. endif
  48. BASE_LIBS += $(AUDIO_LIBS)
  49. BASE_LIBS += $(GL_LIBS)
  50. BASE_DEFS += $(AUDIO_DEFS)
  51. BASE_DEFS += $(GL_DEFS)
  52. ###############################################################
  53. TREE_DIR=OpenRaider
  54. BUILD_DEBUG_DIR=bin/debug
  55. BUILD_RELEASE_DIR=bin/release
  56. BUILD_PROF_DIR=bin/prof
  57. BUILD_TEST_DIR=bin/test
  58. BUILD_MEM_DIR=bin/mem
  59. BUILD_INSTALL_DIR=bin/$(BUILD_SELECT)
  60. DEB_DIR=/tmp/$(NAME).deb
  61. # Edited for Debian GNU/Linux.
  62. DESTDIR =
  63. INSTALL_BIN=$(DESTDIR)/usr/games
  64. INSTALL_LIB=$(DESTDIR)/usr/lib
  65. INSTALL_DOC=$(DESTDIR)/usr/share/doc/$(NAME)
  66. INSTALL_SHARE=$(DESTDIR)/usr/share/$(NAME)
  67. INSTALL_INCLUDE=$(DESTDIR)/usr/include
  68. ###############################################################
  69. CC=gcc
  70. WARNINGS=-Weverything -Wno-padded -Wno-packed -Wno-documentation
  71. WARNINGS+=-Wno-documentation-unknown-command -Wno-format-nonliteral
  72. WARNINGS+=-Wno-covered-switch-default -Wno-global-constructors
  73. WARNINGS+=-Wno-exit-time-destructors -Wno-c++98-compat-pedantic
  74. WARNINGS+=-Wno-disabled-macro-expansion -Wno-missing-variable-declarations
  75. WARNINGS+=-Wno-missing-prototypes -Wno-pedantic
  76. WARNINGS+=-Wno-shorten-64-to-32 -Wno-sign-conversion
  77. FLAGS_ALL=-std=c++11
  78. BASE_CFLAGS=$(FLAGS_ALL) $(BASE_DEFS) \
  79. -DVERSION=\"\\\"$(NAME)-$(VERSION)-$(BUILD_ID)\\\"\" \
  80. -DBUILD_HOST=\"\\\"$(BUILD_HOST)\\\"\"
  81. LD_FLAGS=-L/usr/X11/lib -lXmu -lXt -lSM -lICE -lXext -lX11 -lXi \
  82. -lm $(BASE_LIBS)
  83. RELEASE_CFLAGS=$(BASE_CFLAGS) -ffast-math -funroll-loops \
  84. -fomit-frame-pointer -O2 -Wall
  85. DEBUG_CFLAGS=$(BASE_CFLAGS) -g -O0 $(DEBUG_DEFS) $(WARNINGS)
  86. ################################################################
  87. DO_CC=$(CC) $(CFLAGS) -o $@ -c $<
  88. DO_SHLIB_CC=$(CC) $(CFLAGS) $(SHLIBCFLAGS) -o $@ -c $<
  89. TARGETS=$(BUILDDIR)/$(NAME)
  90. ################################################################
  91. auto: $(BUILD_SELECT)
  92. run: $(BUILD_SELECT)
  93. bin/$(BUILD_SELECT)/OpenRaider
  94. targets: $(TARGETS)
  95. bundle: release
  96. mac_dist/bundle.sh
  97. mac_dist/plist.sh $(NAME) $(VERSION) $(BUILD_ID) > bin/OpenRaider.app/Contents/Info.plist
  98. mac_dist/frameworks.sh
  99. bundle-image: bundle
  100. mac_dist/image.sh
  101. bundle-archive: bundle
  102. mac_dist/archive.sh
  103. all: debug release prof
  104. debug:
  105. @-mkdir -p $(BUILD_DEBUG_DIR)
  106. $(MAKE) targets BUILDDIR=$(BUILD_DEBUG_DIR) \
  107. CFLAGS="$(DEBUG_CFLAGS)" \
  108. LD_FLAGS="$(LD_FLAGS)"
  109. prof:
  110. @-mkdir -p $(BUILD_PROF_DIR)
  111. $(MAKE) targets BUILDDIR=$(BUILD_PROF_DIR) \
  112. CFLAGS="$(DEBUG_CFLAGS) -pg" \
  113. LD_FLAGS="$(LD_FLAGS) -pg"
  114. release:
  115. @-mkdir -p $(BUILD_RELEASE_DIR)
  116. $(MAKE) targets BUILDDIR=$(BUILD_RELEASE_DIR) \
  117. CFLAGS="$(RELEASE_CFLAGS)" \
  118. LD_FLAGS="$(LD_FLAGS)"
  119. #####################################
  120. ded:
  121. @-mkdir -p $(BUILD_DEBUG_DIR)/ded
  122. $(MAKE) targets BUILDDIR=$(BUILD_DEBUG_DIR)/ded \
  123. CFLAGS="$(DEBUG_CFLAGS) -DDEDICATED_SERVER" \
  124. LD_FLAGS="$(LD_FLAGS)"
  125. # -DDEBUG_MEMORY_VERBOSE
  126. # -DDEBUG_MEMORY
  127. memory:
  128. @-mkdir -p $(BUILD_MEM_DIR)
  129. $(MAKE) targets BUILDDIR=$(BUILD_MEM_DIR) \
  130. DEBUG_OBJ="$(BUILD_MEM_DIR)/memory_test.o" \
  131. CFLAGS="$(DEBUG_CFLAGS) -DDEBUG_MEMORY" \
  132. LD_FLAGS="$(LD_FLAGS)"
  133. depend:
  134. @-echo "Making deps..."
  135. @-echo "# Autogenerated dependency file" > depend
  136. @-find ./src -name "*.cpp" -exec ./deps.sh $(BASE_DEFS) {} \; >> depend
  137. @-echo "[DONE]"
  138. ################################################################
  139. OBJS = \
  140. $(DEBUG_OBJ) \
  141. $(BUILDDIR)/Camera.o \
  142. $(BUILDDIR)/Emitter.o \
  143. $(BUILDDIR)/GLString.o \
  144. $(BUILDDIR)/MatMath.o \
  145. $(BUILDDIR)/Matrix.o \
  146. $(BUILDDIR)/Mesh.o \
  147. $(BUILDDIR)/Network.o \
  148. $(BUILDDIR)/OpenRaider.o \
  149. $(BUILDDIR)/Particle.o \
  150. $(BUILDDIR)/Quaternion.o \
  151. $(BUILDDIR)/Render.o \
  152. $(BUILDDIR)/SDLSystem.o \
  153. $(BUILDDIR)/SkeletalModel.o \
  154. $(BUILDDIR)/Sound.o \
  155. $(BUILDDIR)/System.o \
  156. $(BUILDDIR)/Texture.o \
  157. $(BUILDDIR)/tga.o \
  158. $(BUILDDIR)/TombRaider.o \
  159. $(BUILDDIR)/Vector3d.o \
  160. $(BUILDDIR)/ViewVolume.o \
  161. $(BUILDDIR)/World.o
  162. $(BUILDDIR)/$(NAME) : $(OBJS)
  163. $(CC) $(CFLAGS) $(LD_FLAGS) -o $@ $(OBJS)
  164. #################################################################
  165. CHECK_BIN=cppcheck
  166. CHECK_DIR=.
  167. CHECK_STD=--std=c++11 --std=posix
  168. CHECK_FLAGS=--quiet --force
  169. CHECK_INC=-Iinclude
  170. #CHECK_INC+=$(GL_DEFS) $(AUDIO_DEFS)
  171. #ifeq ($(UNAME),Darwin)
  172. #SDK_ROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk
  173. #CHECK_INC+=-I$(SDK_ROOT)/usr/include
  174. #CHECK_INC+=-I$(SDK_ROOT)/usr/include/malloc
  175. #CHECK_INC+=-I$(SDK_ROOT)/usr/include/machine
  176. #CHECK_INC+=-I$(SDK_ROOT)/usr/include/c++/4.2.1
  177. #CHECK_INC+=-I$(SDK_ROOT)/usr/include/c++/4.2.1/tr1
  178. #CHECK_INC+=-I$(SDK_ROOT)/usr/include/c++/4.2.1/backward
  179. #endif
  180. CHECK_NORMAL=--enable=information,warning,performance,portability
  181. CHECK_FULL=--enable=all
  182. CHECK_CONFIG=--check-config
  183. check:
  184. $(CHECK_BIN) $(CHECK_FLAGS) $(CHECK_INC) $(CHECK_STD) \
  185. $(CHECK_NORMAL) $(CHECK_DIR)
  186. checkFull:
  187. $(CHECK_BIN) $(CHECK_FLAGS) $(CHECK_INC) $(CHECK_STD) \
  188. $(CHECK_FULL) $(CHECK_DIR)
  189. checkConfig:
  190. $(CHECK_BIN) $(CHECK_FLAGS) $(CHECK_INC) $(CHECK_CONFIG) $(CHECK_DIR)
  191. #################################################################
  192. clean: clean-small clean-dep clean-doc
  193. clean-small: clean-build clean-test clean-obj
  194. @-rm -rf bin/OpenRaider.app
  195. @-rm -rf bin/OpenRaider.dmg
  196. @-rm -rf bin/OpenRaider.zip
  197. clean-dep:
  198. @-echo "Cleaning dependencies"
  199. @-rm -f depend
  200. @-echo "[DONE]"
  201. clean-test:
  202. @-echo "Cleaning test builds"
  203. @-rm -f $(BUILD_TEST_DIR)/*.o
  204. @-rm -rf $(BUILD_TEST_DIR)/*.dSYM
  205. @-rm -f $(BUILD_TEST_DIR)/*.test
  206. @-rm -rf $(BUILD_TEST_DIR)/*.build
  207. @-echo "[DONE]"
  208. clean-obj:
  209. @-echo "Cleaning objects"
  210. @-rm -f $(BUILD_PROF_DIR)/*.o
  211. @-rm -f $(BUILD_DEBUG_DIR)/*.o
  212. @-rm -f $(BUILD_RELEASE_DIR)/*.o
  213. @-rm -f $(BUILD_TEST_DIR)/*.o
  214. @-rm -f $(BUILD_MEM_DIR)/*.o
  215. @-echo "[DONE]"
  216. clean-build:
  217. @-echo "Cleaning builds"
  218. @-rm -f $(BUILD_PROF_DIR)/$(NAME)
  219. @-rm -f $(BUILD_DEBUG_DIR)/$(NAME)
  220. @-rm -f $(BUILD_RELEASE_DIR)/$(NAME)
  221. @-rm -f $(BUILD_MEM_DIR)/$(NAME)
  222. @-echo "[DONE]"
  223. clean-doc:
  224. @-echo "Cleaning docs"
  225. @-rm -rf doc
  226. @-echo "[DONE]"
  227. #################################################################
  228. -include depend
  229. #################################################################
  230. ifneq ($(UNAME),Darwin)
  231. install:
  232. mkdir -p $(INSTALL_SHARE)/data
  233. cp setup.sh $(INSTALL_SHARE)
  234. cp data/* $(INSTALL_SHARE)/data
  235. mkdir -p $(INSTALL_DOC)
  236. cp README.md README.old ChangeLog
  237. mkdir -p $(INSTALL_BIN)
  238. cp bin/$(BUILD_SELECT)/OpenRaider $(INSTALL_BIN)
  239. bin-tarball: clean-build clean-test clean-obj $(BUILD_SELECT)
  240. @-cd .. && tar zcvf $(NAME_TAR)-$(VERSION_DEB)-$(ARCH).tar.gz \
  241. $(TREE_DIR)/Makefile $(TREE_DIR)/data \
  242. $(TREE_DIR)/bin/$(BUILD_SELECT)/OpenRaider \
  243. $(TREE_DIR)/README.md $(TREE_DIR)/ChangeLog
  244. endif
  245. #################################################################
  246. # Unit Test builds
  247. #################################################################
  248. TEST_FLAGS=$(FLAGS_ALL) -g -O0 -DDEBUG -DUNIT_TEST -lstdc++ -Iinclude
  249. TEST_MAP_TR5=~/.OpenRaider/paks/tr5/demo.trc
  250. TEST_MAP_TR4=~/.OpenRaider/paks/tr4/angkor1.tr4
  251. TEST_MAP_TR3=~/.OpenRaider/paks/tr3/scotland.tr2
  252. TEST_MAP_TR2=~/.OpenRaider/paks/tr2/unwater.tr2
  253. TEST_MAP_TR1=~/.OpenRaider/paks/tr1/level1.phd
  254. test.build: Matrix.test Math.test Memory.test Network.test Sound.test tga.test GLString.test TombRaider.test
  255. test: test.build
  256. @-echo "================================================="
  257. @-echo "Running Memory unit test"
  258. $(BUILD_TEST_DIR)/memory_test.test
  259. @-echo "================================================="
  260. @-echo "Running Matrix unit test"
  261. $(BUILD_TEST_DIR)/Matrix.test
  262. @-echo "================================================="
  263. @-echo "Running Math unit test"
  264. $(BUILD_TEST_DIR)/Math.test
  265. @-echo "================================================="
  266. @-echo "Running Sound unit test"
  267. $(BUILD_TEST_DIR)/Sound.test
  268. @-echo "================================================="
  269. @-echo "Running TGA unit test"
  270. $(BUILD_TEST_DIR)/tga.test
  271. @-echo "================================================="
  272. @-echo "Running GLString unit test"
  273. $(BUILD_TEST_DIR)/GLString.test
  274. @-echo "================================================="
  275. @-echo "Running TombRaider unit test"
  276. $(BUILD_TEST_DIR)/TombRaider.test load $(TEST_MAP_TR1)
  277. TombRaider.reg_test:
  278. $(MAKE) TombRaider.test
  279. $(BUILD_TEST_DIR)/TombRaider.test load $(TEST_MAP_TR1) > /tmp/log.tr1
  280. $(BUILD_TEST_DIR)/TombRaider.test load $(TEST_MAP_TR2) > /tmp/log.tr2
  281. $(BUILD_TEST_DIR)/TombRaider.test load $(TEST_MAP_TR3) > /tmp/log.tr3
  282. $(BUILD_TEST_DIR)/TombRaider.test load $(TEST_MAP_TR4) > /tmp/log.tr4
  283. $(BUILD_TEST_DIR)/TombRaider.test load $(TEST_MAP_TR5) > /tmp/log.tr5
  284. TR_FLAGS = -D__TEST_TR5_DUMP_TGA -D__TEST_32BIT_TEXTILES -DDEBUG_MEMORY
  285. TombRaider.test:
  286. @-mkdir -p $(BUILD_TEST_DIR)
  287. $(CC) $(FLAGS_ALL) $(WARNINGS) -Iinclude $(TR_FLAGS) -o $(BUILD_TEST_DIR)/TombRaiderTest.o -c test/TombRaider.cpp
  288. $(MAKE) targets NAME=TombRaider.test BUILDDIR=$(BUILD_TEST_DIR) \
  289. OBJS="$(BUILD_TEST_DIR)/TombRaiderTest.o $(BUILD_TEST_DIR)/TombRaider.o $(BUILD_TEST_DIR)/tga.o $(BUILD_TEST_DIR)/memory_test.o" \
  290. CFLAGS="$(BASE_CFLAGS) -g $(TR_FLAGS)" \
  291. LD_FLAGS="-lz -lstdc++"
  292. #################################################################
  293. GLString.test:
  294. mkdir -p $(BUILD_TEST_DIR)
  295. $(CC) $(FLAGS_ALL) $(WARNINGS) -Iinclude \
  296. $(shell sdl2-config --cflags) $(shell sdl2-config --libs) \
  297. $(GL_LIBS) $(GL_DEFS) -lSDL2_ttf -lm -lstdc++ \
  298. src/Texture.cpp src/tga.cpp src/GLString.cpp \
  299. test/GLString.cpp -o $(BUILD_TEST_DIR)/GLString.test
  300. #################################################################
  301. Matrix.test:
  302. @-echo "Building Matrix unit test"
  303. mkdir -p $(BUILD_TEST_DIR)
  304. $(CC) $(FLAGS_ALL) $(WARNINGS) -g -lm -lstdc++ -Iinclude \
  305. src/Matrix.cpp src/Quaternion.cpp src/Vector3d.cpp src/MatMath.cpp \
  306. test/Matrix.cpp -o $(BUILD_TEST_DIR)/Matrix.test
  307. Math.test:
  308. @-echo "Building Math unit test"
  309. mkdir -p $(BUILD_TEST_DIR)
  310. $(CC) $(FLAGS_ALL) $(WARNINGS) -g -lm -lstdc++ -Iinclude \
  311. src/MatMath.cpp src/Vector3d.cpp test/MatMath.cpp -o $(BUILD_TEST_DIR)/Math.test
  312. #################################################################
  313. Memory.test:
  314. mkdir -p $(BUILD_TEST_DIR)
  315. $(CC) $(FLAGS_ALL) $(WARNINGS) -g -lstdc++ -Iinclude \
  316. -DDEBUG_MEMORY -DDEBUG_MEMORY_ERROR \
  317. src/memory_test.cpp test/memory_test.cpp -o $(BUILD_TEST_DIR)/memory_test.test
  318. #################################################################
  319. Network.test:
  320. mkdir -p $(BUILD_TEST_DIR)
  321. $(CC) $(TEST_FLAGS) $(WARNINGS) src/MatMath.cpp src/Vector3d.cpp \
  322. src/Network.cpp test/Network.cpp -o $(BUILD_TEST_DIR)/Network.test
  323. #################################################################
  324. Sound.test:
  325. mkdir -p $(BUILD_TEST_DIR)
  326. $(CC) $(TEST_FLAGS) $(WARNINGS) \
  327. $(AUDIO_LIBS) $(AUDIO_DEFS) \
  328. src/Sound.cpp test/Sound.cpp -o $(BUILD_TEST_DIR)/Sound.test
  329. #################################################################
  330. tga.test:
  331. mkdir -p $(BUILD_TEST_DIR)
  332. $(CC) $(TEST_FLAGS) $(WARNINGS) \
  333. src/tga.cpp test/tga.cpp -o $(BUILD_TEST_DIR)/tga.test
  334. #################################################################