Makefile 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. ####################################################################
  2. # #
  3. # Q-Gears #
  4. # #
  5. # Depends : OGRE, OIS, openal, vorbisfile #
  6. # Internal : lua, luabind, tinyxml #
  7. # #
  8. # make DEBUG=1 - Debug #
  9. # make - Release #
  10. # #
  11. ####################################################################
  12. # Useful stuff, for eg. cross-compiling
  13. INCLUDE_DIR := /usr/include
  14. OGRE_INCLUDE := ${INCLUDE_DIR}/OGRE
  15. OIS_INCLUDE := ${INCLUDE_DIR}/OIS
  16. CFLAGS := `pkg-config OGRE OIS openal vorbisfile --cflags`
  17. CXXFLAGS := `pkg-config OGRE OIS openal vorbisfile --cflags`
  18. LIBS := `pkg-config OGRE OIS openal vorbisfile --libs`
  19. DEBUG := 0
  20. # ---- Q-GEARS Specific ----
  21. CORE_DIR := core
  22. VIEWER_DIR := viewer
  23. QGEARS_BIN := QGears
  24. BUILD_DIR := ../output
  25. # ATM there is no intelligent render system selection,
  26. # so put your rendersystem path here and it gets copied to build dir
  27. # with name "RenderSystem_GL.so" or "RenderSystem_GL_d.so" in debug mode
  28. OGRE_RENDERER := /usr/lib/OGRE/RenderSystem_GL.so
  29. # ---- Libs that come with Q-Gears ---
  30. INTERNAL_LIB_DIR := ${CORE_DIR}/library
  31. LUA_DIR := ${INTERNAL_LIB_DIR}/lua
  32. LUABIND_DIR := ${INTERNAL_LIB_DIR}/luabind
  33. TINYXML_DIR := ${INTERNAL_LIB_DIR}/tinyxml
  34. # If you set these to 0, we will try to use system libs instead
  35. BUILD_INTERNAL_LUA := 1
  36. BUILD_INTERNAL_LUABIND := 1
  37. BUILD_INTERNAL_TINYXML := 1
  38. # Define libs for these if you don't want to build them
  39. # Default values are just a guess, there is no quarntee all of them come with pkg-configs
  40. LUA_LIB = `pkg-config lua --libs`
  41. LUABIND_LIB = `pkg-config luabind --libs`
  42. TINYXML_LIB = `pkg-config tinyxml --libs`
  43. # ---- A.I ----
  44. # Intenal libs should be build before anything else.
  45. ifeq (${BUILD_INTERNAL_LUA},1)
  46. SOURCE += $(patsubst %.c,%,$(wildcard ${LUA_DIR}/*.c))
  47. else
  48. LIBS += ${LUA_LIB}
  49. INCLUDES += -I${LUA_DIR}
  50. endif
  51. ifeq (${BUILD_INTERNAL_LUABIND},1)
  52. SOURCE += $(patsubst %.cpp,%,$(wildcard ${LUABIND_DIR}/*.cpp))
  53. else
  54. LIBS += ${LUABIND_LIB}
  55. INCLUDES += -I${LUABIND_DIR}
  56. endif
  57. ifeq (${BUILD_INTERNAL_TINYXML},1)
  58. SOURCE += $(patsubst %.cpp,%,$(wildcard ${TINYXML_DIR}/*.cpp))
  59. else
  60. LIBS += ${TINYXML_LIB}
  61. INCLUDES += -I${TINYXML_DIR}
  62. endif
  63. ifeq (${DEBUG},1)
  64. DEFINES += -D_DEBUG
  65. CFLAGS = -g -O0
  66. CXXFLAGS = -g -O0
  67. endif
  68. # ---- Build defines ----
  69. SOURCE += Main.cpp \
  70. $(patsubst %.cpp,%,$(wildcard core/*.cpp)) \
  71. $(patsubst %.cpp,%,$(wildcard core/particles/*.cpp)) \
  72. $(patsubst %.cpp,%,$(wildcard core/particles/emitters/*.cpp)) \
  73. $(patsubst %.cpp,%,$(wildcard core/particles/renderer/*.cpp))
  74. DEFINES += -DTIXML_USE_STL
  75. INCLUDES += -I. -I${VIEWER_DIR} -I${CORE_DIR} -I${INCLUDE_DIR} -I${OGRE_INCLUDE} -I${OIS_INCLUDE} -I${INTERNAL_LIB_DIR}
  76. TARGET = ${BUILD_DIR}/${QGEARS_BIN}
  77. OBJ = $(addsuffix .o, $(basename $(SOURCE)))
  78. all: ${TARGET}
  79. @true
  80. # Ugly CPP
  81. %.o : %.cpp
  82. ${CXX} ${CXXFLAGS} ${DEFINES} ${INCLUDES} -c $^ -o $@
  83. # Good old C
  84. %.o : %.c
  85. ${CC} ${CFLAGS} ${DEFINES} ${INCLUDES} -c $^ -o $@
  86. # Link, create build dir if does not exist
  87. ${TARGET}: ${OBJ}
  88. mkdir -p "${BUILD_DIR}"
  89. ${CXX} $^ ${LIBS} -o "${TARGET}"
  90. ifeq (${DEBUG},1)
  91. cp "${OGRE_RENDERER}" "${BUILD_DIR}/RenderSystem_GL_d.so"
  92. else
  93. cp "${OGRE_RENDERER}" "${BUILD_DIR}/RenderSystem_GL.so"
  94. endif
  95. # Note: Don't clean ${BUILD_DIR} it's generally non good idea for deveploment
  96. clean:
  97. ${RM} ${OBJ}
  98. ${RM} "${TARGET}"
  99. # TO-DO
  100. # Note: Use ${PREFIX} for install location
  101. install:
  102. echo "Not yet implented"