1. CC = g++49
  2. GAME_VERSION = $(shell cat ../../__REVISION__)
  3. INCDIR =
  4. LIBDIR =
  5. BINDIR = ..
  6. OBJDIR = .obj
  7. $(shell if [ ! -d $(OBJDIR) ]; then mkdir $(OBJDIR); fi)
  8. ## LIST OF CONSTANTS BEGIN
  9. ENABLE_GOOGLE_TEST = 0
  10. ENABLE_HSHIELD_SYSTEM = 0
  11. ENABLE_XTRAP_SYSTEM = 0
  12. ENABLE_LUA_5_2_VERSION = 0
  13. ENABLE_GCC_AUTODEPEND = 1
  14. ENABLE_NEWSTUFF_EX = 0
  15. ## LIST OF CONSTANTS END
  16. # Depend Path File
  17. ifneq ($(ENABLE_GCC_AUTODEPEND), 1)
  18. DEPFILE = Depend
  19. endif
  20. # Standard Libraries
  21. LIBS = -lm -lmd
  22. # Project Flags
  23. CFLAGS = -m32 -g -Wall -w -O3 -pipe -fexceptions -pthread -D_THREAD_SAFE -DNDEBUG -std=c++11 -fstack-protector-all
  24. # CFLAGS = -m32 -g3 -Wall -O0 -pipe -fexceptions -fno-rtti -fno-strict-aliasing -Wno-unused-local-typedefs -Wno-long-long -pthread -D_THREAD_SAFE -DNDEBUG
  25. # FreeBSD stack protector
  26. CFLAGS += -fstack-protector-all
  27. # Version defines
  28. CFLAGS += -D__USER__=\"$(USER)\" -D__HOSTNAME__=\"$(HOSTNAME)\" -D__PWD__=\"$(PWD)\" -D__GAME_VERSION__=\"$(GAME_VERSION)\"
  29. # Boost
  30. INCDIR += -I../../../Extern/include/boost
  31. # DevIL
  32. INCDIR += -I../../../Extern/include/IL
  33. LIBS += ../../../Extern/lib/libIL.a\
  34. ../../../Extern/lib/libjasper.a\
  35. ../../../Extern/lib/libpng.a\
  36. ../../../Extern/lib/libtiff.a\
  37. ../../../Extern/lib/libjbig.a\
  38. ../../../Extern/lib/libmng.a\
  39. /usr/lib/liblzma.a\
  40. ../../../Extern/lib/liblcms.a\
  41. ../../../Extern/lib/libjpeg.a
  42. # MySQL
  43. INCDIR += -I/usr/local/include/mysql
  44. LIBS += /usr/local/lib/mysql/libmysqlclient.a /usr/lib/libz.a
  45. # CryptoPP
  46. LIBS += ../../../Extern/lib/libcryptopp.a
  47. # GTest
  48. ifeq ($(ENABLE_GOOGLE_TEST), 1)
  49. LIBS += /usr/local/lib/libgtest.a
  50. CFLAGS += -DENABLE_GOOGLE_TEST
  51. endif
  52. # HackShield
  53. ifeq ($(ENABLE_HSHIELD_SYSTEM), 1)
  54. INCDIR += -I../../libhackshield/include
  55. CFLAGS += -DENABLE_HSHIELD_SYSTEM
  56. endif
  57. # XTrap
  58. ifeq ($(ENABLE_XTRAP_SYSTEM), 1)
  59. INCDIR += -I../../libxtrap/include
  60. CFLAGS += -DENABLE_XTRAP_SYSTEM
  61. endif
  62. # OpenSSL
  63. INCDIR += -I/usr/include
  64. LIBS += -lssl
  65. # LIBS += /usr/lib/libssl.a /usr/lib/libssh_p.a
  66. # Lua
  67. CFLAGS += -DENABLE_LUA_5_2_VERSION=ENABLE_LUA_5_2_VERSION
  68. ifeq ($(ENABLE_LUA_5_2_VERSION), 1)
  69. INCDIR += -I../../liblua/.lua52/install/include
  70. LIBDIR += -L../../liblua/.lua52/install/lib
  71. LIBS += ../../liblua/.lua52/install/lib/liblua.a
  72. # LIBS += ../../liblua/.lua52/src/liblua.a
  73. else
  74. INCDIR += -I../../liblua/.lua50/include
  75. LIBDIR += -L../../liblua/.lua50/lib
  76. LIBS += ../../liblua/.lua50/lib/liblua.a ../../liblua/.lua50/lib/liblualib.a
  77. endif
  78. # Project Libraries
  79. INCDIR += -I../../../Extern/include
  80. INCDIR += -I/usr/local/include
  81. LIBDIR += -L/usr/local/lib
  82. INCDIR += -I../../libserverkey
  83. LIBDIR += -L../../libthecore/lib -L../../libpoly -L../../libsql -L../../libgame/lib -L../../libserverkey
  84. LIBS += -lthecore -lpoly -lsql -lgame -lserverkey
  85. # PROJECT_SRC_FILES BEGIN
  86. MAINCPP = main.cpp
  87. TESTCPP = test.cpp
  88. CFILE = minilzo.c
  89. CPPFILE = BattleArena.cpp FSM.cpp MarkConvert.cpp MarkImage.cpp MarkManager.cpp OXEvent.cpp TrafficProfiler.cpp ani.cpp\
  90. arena.cpp banword.cpp battle.cpp blend_item.cpp block_country.cpp buffer_manager.cpp building.cpp castle.cpp\
  91. char.cpp char_affect.cpp char_battle.cpp char_change_empire.cpp char_horse.cpp char_item.cpp char_manager.cpp\
  92. char_quickslot.cpp char_resist.cpp char_skill.cpp char_state.cpp PetSystem.cpp cmd.cpp cmd_emotion.cpp cmd_general.cpp\
  93. cmd_gm.cpp cmd_oxevent.cpp config.cpp constants.cpp crc32.cpp cube.cpp db.cpp desc.cpp\
  94. desc_client.cpp desc_manager.cpp desc_p2p.cpp dev_log.cpp dungeon.cpp empire_text_convert.cpp entity.cpp\
  95. entity_view.cpp event.cpp event_queue.cpp exchange.cpp file_loader.cpp fishing.cpp gm.cpp guild.cpp\
  96. guild_manager.cpp guild_war.cpp horse_rider.cpp horsename_manager.cpp input.cpp input_auth.cpp input_db.cpp\
  97. input_login.cpp input_main.cpp input_p2p.cpp input_teen.cpp input_udp.cpp ip_ban.cpp\
  98. item.cpp item_addon.cpp item_attribute.cpp item_manager.cpp item_manager_idrange.cpp locale.cpp\
  99. locale_service.cpp log.cpp login_data.cpp lzo_manager.cpp marriage.cpp matrix_card.cpp\
  100. messenger_manager.cpp mining.cpp mob_manager.cpp monarch.cpp motion.cpp over9refine.cpp p2p.cpp packet_info.cpp\
  101. party.cpp passpod.cpp pcbang.cpp polymorph.cpp priv_manager.cpp pvp.cpp\
  102. questevent.cpp questlua.cpp questlua_affect.cpp questlua_arena.cpp questlua_ba.cpp questlua_building.cpp\
  103. questlua_danceevent.cpp questlua_dungeon.cpp questlua_forked.cpp questlua_game.cpp questlua_global.cpp\
  104. questlua_guild.cpp questlua_horse.cpp questlua_pet.cpp questlua_item.cpp questlua_marriage.cpp questlua_mgmt.cpp\
  105. questlua_monarch.cpp questlua_npc.cpp questlua_oxevent.cpp questlua_party.cpp questlua_pc.cpp\
  106. questlua_quest.cpp questlua_target.cpp questmanager.cpp questnpc.cpp questpc.cpp\
  107. refine.cpp regen.cpp safebox.cpp sectree.cpp sectree_manager.cpp sequence.cpp shop.cpp\
  108. skill.cpp start_position.cpp target.cpp text_file_loader.cpp trigger.cpp utils.cpp vector.cpp war_map.cpp\
  109. wedding.cpp xmas_event.cpp version.cpp panama.cpp threeway_war.cpp map_location.cpp auth_brazil.cpp\
  110. BlueDragon.cpp BlueDragon_Binder.cpp DragonLair.cpp questlua_dragonlair.cpp\
  111. HackShield.cpp HackShield_Impl.cpp char_hackshield.cpp skill_power.cpp affect.cpp\
  112. SpeedServer.cpp questlua_speedserver.cpp XTrapManager.cpp\
  113. auction_manager.cpp FileMonitor_FreeBSD.cpp ClientPackageCryptInfo.cpp cipher.cpp\
  114. buff_on_attributes.cpp dragon_soul_table.cpp DragonSoul.cpp\
  115. group_text_parse_tree.cpp char_dragonsoul.cpp questlua_dragonsoul.cpp\
  116. shop_manager.cpp shopEx.cpp item_manager_read_tables.cpp shutdown_manager.cpp
  117. ifeq ($(ENABLE_NEWSTUFF_EX), 1)
  118. CPPFILE += questlua_new.cpp\
  119. questlua_new_constant.cpp\
  120. questlua_new_desc.cpp\
  121. questlua_new_item.cpp\
  122. questlua_new_npc.cpp\
  123. questlua_new_pc.cpp\
  124. questlua_new_quest.cpp\
  125. questlua_new_test.cpp
  126. CFLAGS += -DENABLE_NEWSTUFF_EX=ENABLE_NEWSTUFF_EX
  127. endif
  128. # PROJECT_SRC_FILES END
  129. # PROJECT_OBJ_FILES BEGIN
  130. COBJS = $(CFILE:%.c=$(OBJDIR)/%.o)
  131. CPPOBJS = $(CPPFILE:%.cpp=$(OBJDIR)/%.o)
  132. ifeq ($(ENABLE_GCC_AUTODEPEND), 1)
  133. CDEPS = $(COBJS:%.o=%.d)
  134. CPPDEPS = $(CPPOBJS:%.o=%.d)
  135. endif
  136. MAINOBJ = $(MAINCPP:%.cpp=$(OBJDIR)/%.o)
  137. ifeq ($(ENABLE_GCC_AUTODEPEND), 1)
  138. MAINDEPS = $(MAINOBJ:%.o=%.d)
  139. endif
  140. TESTOBJ = $(TESTCPP:%.cpp=$(OBJDIR)/%.o)
  141. ifeq ($(ENABLE_GCC_AUTODEPEND), 1)
  142. TESTDEPS = $(TESTOBJ:%.o=%.d)
  143. endif
  144. # PROJECT_OBJ_FILES END
  145. # Target Paths
  146. MAIN_TARGET = $(BINDIR)/game_r$(GAME_VERSION)
  147. TEST_TARGET = $(BINDIR)/game_r$(GAME_VERSION)_test
  148. # previously -> default: $(MAIN_TARGET) $(TEST_TARGET)
  149. default: $(MAIN_TARGET)
  150. test: $(TEST_TARGET)
  151. $(OBJDIR)/%.o: %.c
  152. @echo derleniyor $<
  153. @$(CC) $(CFLAGS) $(INCDIR) -c $< -o $@
  154. ifeq ($(ENABLE_GCC_AUTODEPEND), 1)
  155. @$(CC) -MM -MG -MP $(CFLAGS) $(INCDIR) -c $< -o $(OBJDIR)/$*.d
  156. @sed -i '' -e's/$*.o:/$(OBJDIR)\/$*.o:/g' $(OBJDIR)/$*.d
  157. endif
  158. $(OBJDIR)/%.o: %.cpp
  159. @echo derleniyor $<
  160. @$(CC) $(CFLAGS) $(INCDIR) -c $< -o $@
  161. ifeq ($(ENABLE_GCC_AUTODEPEND), 1)
  162. @$(CC) -MM -MG -MP $(CFLAGS) $(INCDIR) -c $< -o $(OBJDIR)/$*.d
  163. @sed -i '' -e's/$*.o:/$(OBJDIR)\/$*.o:/g' $(OBJDIR)/$*.d
  164. endif
  165. limit_time:
  166. @echo update limit time
  167. @python update_limit_time.py
  168. $(MAIN_TARGET): $(CPPOBJS) $(COBJS) $(MAINOBJ)
  169. @echo linking $(MAIN_TARGET)
  170. @$(CC) $(CFLAGS) $(LIBDIR) $(COBJS) $(CPPOBJS) $(MAINOBJ) $(LIBS) -o $(MAIN_TARGET)
  171. $(TEST_TARGET): $(TESTCPP) $(CPPOBJS) $(COBJS) $(TESTOBJ)
  172. @echo linking $(TEST_TARGET)
  173. @$(CC) $(CFLAGS) $(LIBDIR) $(COBJS) $(CPPOBJS) $(TESTOBJ) $(LIBS) -o $(TEST_TARGET)
  174. dump:
  175. @$(CC) -dM -E - < /dev/null > .nope.nope
  176. symlink:
  177. @ln -fs game_r$(GAME_VERSION) $(BINDIR)/game_symlink
  178. strip:
  179. @cp $(BINDIR)/game_r$(GAME_VERSION) $(BINDIR)/game_r
  180. @strip $(BINDIR)/game_r
  181. clean:
  182. @rm -f $(COBJS) $(CPPOBJS) $(MAINOBJ) $(TESTOBJ)
  183. ifeq ($(ENABLE_GCC_AUTODEPEND), 1)
  184. @rm -f $(CDEPS) $(CPPDEPS) $(MAINDEPS) $(TESTDEPS)
  185. endif
  186. @rm -f $(BINDIR)/game_r* $(BINDIR)/conv
  187. cc-ver:
  188. @$(CC) -v
  189. tag:
  190. ctags *.cpp *.h *.c
  191. dep:
  192. ifeq ($(ENABLE_GCC_AUTODEPEND), 1)
  193. @echo "Note: gcc autodepend is autodetected, so target dep skipped"
  194. else
  195. makedepend -f $(DEPFILE) $(INCDIR) -I/usr/include/c++/3.3 -I/usr/include/c++/4.2 -p$(OBJDIR)/ $(CPPFILE) $(CFILE) $(MAINCPP) $(TESTCPP) 2> /dev/null > $(DEPFILE)
  196. endif
  197. # AUTO_DEPEND_CHECK BEGIN
  198. ifeq ($(ENABLE_GCC_AUTODEPEND), 1)
  199. sinclude $(CDEPS)
  200. sinclude $(CPPDEPS)
  201. sinclude $(MAINDEPS)
  202. sinclude $(TESTDEPS)
  203. else
  204. sinclude $(DEPFILE)
  205. endif
  206. # AUTO_DEPEND_CHECK END

s