Guest User

game _ makefile

a guest
Jul 27th, 2022
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 8.37 KB | None | 0 0
  1. CC = clang++
  2.  
  3. GAME_VERSION := $(shell cat ../../__REVISION__)
  4.  
  5. GccMajorVersion := $(shell expr `$(CC) -dumpversion | cut -f1 -d.`)
  6. GccMinorVersion := $(shell expr `$(CC) -dumpversion | cut -f2 -d.`)
  7. GccMinorEGT8 := $(shell expr $(GccMinorVersion) \>= 8)
  8.  
  9. INCDIR =
  10. LIBDIR =
  11. BINDIR = ../../bin
  12. OBJDIR = .obj
  13. $(shell if [ ! -d $(OBJDIR) ]; then mkdir $(OBJDIR); fi)
  14.  
  15. ## LIST OF CONSTANTS BEGIN
  16. ENABLE_GOOGLE_TEST = 0
  17. ENABLE_HSHIELD_SYSTEM = 0
  18. ENABLE_XTRAP_SYSTEM = 0
  19. ENABLE_LUA_5_VERSION = 0
  20. ENABLE_GCC_AUTODEPEND = 1
  21. ENABLE_STATIC = 0
  22. ## LIST OF CONSTANTS END
  23.  
  24. # Depend Path File
  25. ifneq ($(ENABLE_GCC_AUTODEPEND), 1)
  26. DEPFILE = Depend
  27. endif
  28.  
  29. # Standard Libraries
  30. LIBS = -lm -lmd
  31.  
  32. # Project Flags
  33. CFLAGS = -m32 -g -Wall -O2 -pipe -fexceptions -std=c++17 -fno-strict-aliasing -pthread -D_THREAD_SAFE -DNDEBUG
  34.  
  35. ifeq ($(ENABLE_STATIC), 1)
  36. CFLAGS += -static
  37. endif
  38.  
  39. ifeq ($(GccMinorEGT8), 1)
  40. CFLAGS += -Wno-unused-local-typedefs
  41. endif
  42.  
  43. # FreeBSD stack protector
  44. CFLAGS += -fstack-protector-all
  45.  
  46. # Version defines
  47. CFLAGS += -D__USER__=\"$(USER)\" -D__HOSTNAME__=\"$(HOSTNAME)\" -D__PWD__=\"$(PWD)\" -D__GAME_VERSION__=\"$(GAME_VERSION)\"
  48.  
  49. # Boost
  50. INCDIR += -I/usr/local/include/boost
  51.  
  52. # DevIL
  53. # DevIL
  54. INCDIR += -I../../libdevil
  55. LIBDIR += -L../../libdevil
  56. LIBS += -lIL -lpng -ltiff -lmng -llcms -ljpeg
  57.  
  58. # MySQL
  59. INCDIR += -I../../libmysql/5.x-5.1.35
  60. LIBS += -L../../libmysql/5.x-5.1.35
  61.  
  62. # CryptoPP
  63. LIBS += /usr/local/lib/libcryptopp.a
  64.  
  65. # GTest
  66. ifeq ($(ENABLE_GOOGLE_TEST), 1)
  67. LIBS += /usr/local/lib/libgtest.a
  68. CFLAGS += -DENABLE_GOOGLE_TEST
  69. endif
  70.  
  71. # HackShield
  72. ifeq ($(ENABLE_HSHIELD_SYSTEM), 1)
  73. INCDIR += -I../../libhackshield/include
  74. CFLAGS += -DENABLE_HSHIELD_SYSTEM
  75. endif
  76.  
  77. # XTrap
  78. ifeq ($(ENABLE_XTRAP_SYSTEM), 1)
  79. INCDIR += -I../../libxtrap/include
  80. CFLAGS += -DENABLE_XTRAP_SYSTEM
  81. endif
  82.  
  83. # OpenSSL
  84. INCDIR += -I/usr/include
  85. LIBS += -lssl
  86. # LIBS += /usr/lib/libssl.a
  87.  
  88. # Lua
  89. CFLAGS += -DENABLE_LUA_5_VERSION=ENABLE_LUA_5_VERSION
  90. ifeq ($(ENABLE_LUA_5_VERSION), 2)
  91. INCDIR += -I../../liblua/5.2/install/include
  92. LIBDIR += -L../../liblua/5.2/install/lib
  93. LIBS += ../../liblua/5.2/install/lib/liblua.a
  94. else
  95. INCDIR += -I../../liblua/5.0/include
  96. LIBDIR += -L../../liblua/5.0/lib
  97. LIBS += ../../liblua/5.0/lib/liblua.a ../../liblua/5.0/lib/liblualib.a
  98. endif
  99.  
  100. # Project Libraries
  101. INCDIR += -I../../../Extern/include
  102. INCDIR += -I/usr/local/include
  103. LIBDIR += -L/usr/local/lib
  104. INCDIR += -I../../libserverkey
  105. LIBDIR += -L../../libthecore/lib -L../../libpoly -L../../libsql -L../../libgame/lib -L../../libserverkey
  106. LIBS += -lthecore -lpoly -lsql -lgame -lmysqlclient -lz -lserverkey
  107.  
  108. # PROJECT_SRC_FILES BEGIN
  109. MAINCPP = main.cpp
  110. TESTCPP = test.cpp
  111.  
  112. CFILE   = minilzo.c
  113.  
  114. CPPFILE = input_main.cpp premium_system.cpp char.cpp exchange.cpp pvp.cpp char_manager.cpp ip_security.cpp BattleArena.cpp FSM.cpp\
  115.           combat_zone.cpp zodiac_temple.cpp rp.cpp TrafficProfiler.cpp ani.cpp\
  116.           arena.cpp banword.cpp battle.cpp blend_item.cpp block_country.cpp buffer_manager.cpp building.cpp castle.cpp\
  117.           char_affect.cpp char_battle.cpp char_battle_zodiac.cpp char_change_empire.cpp char_horse.cpp char_item.cpp\
  118.           char_quickslot.cpp char_resist.cpp char_skill.cpp char_state.cpp PetSystem.cpp cmd.cpp cmd_emotion.cpp cmd_general.cpp\
  119.           cmd_gm.cpp cmd_oxevent.cpp config.cpp OXEvent.cpp constants.cpp crc32.cpp cube.cpp db.cpp desc.cpp\
  120.           desc_client.cpp desc_manager.cpp desc_p2p.cpp dev_log.cpp dungeon.cpp empire_text_convert.cpp entity.cpp\
  121.           entity_view.cpp event.cpp event_queue.cpp file_loader.cpp fishing.cpp gm.cpp guild.cpp\
  122.           guild_manager.cpp guild_war.cpp horse_rider.cpp horsename_manager.cpp input.cpp input_auth.cpp input_db.cpp\
  123.           input_login.cpp input_p2p.cpp input_teen.cpp input_udp.cpp ip_ban.cpp\
  124.           item.cpp item_addon.cpp item_attribute.cpp item_manager.cpp item_manager_idrange.cpp locale.cpp\
  125.           locale_service.cpp log.cpp login_data.cpp lzo_manager.cpp marriage.cpp matrix_card.cpp\
  126.           messenger_manager.cpp mining.cpp mob_manager.cpp monarch.cpp motion.cpp over9refine.cpp p2p.cpp packet_info.cpp\
  127.           party.cpp passpod.cpp pcbang.cpp polymorph.cpp priv_manager.cpp\
  128.           questevent.cpp questlua.cpp questlua_affect.cpp questlua_arena.cpp questlua_ba.cpp questlua_building.cpp\
  129.           questlua_danceevent.cpp questlua_dungeon.cpp questlua_forked.cpp questlua_game.cpp questlua_global.cpp\
  130.           questlua_guild.cpp questlua_horse.cpp questlua_pet.cpp questlua_item.cpp questlua_marriage.cpp questlua_mgmt.cpp\
  131.           questlua_monarch.cpp questlua_npc.cpp questlua_oxevent.cpp questlua_party.cpp questlua_pc.cpp\
  132.           questlua_quest.cpp questlua_target.cpp questmanager.cpp questnpc.cpp questpc.cpp\
  133.           refine.cpp regen.cpp safebox.cpp sectree.cpp sectree_manager.cpp sequence.cpp shop.cpp\
  134.           skill.cpp start_position.cpp target.cpp text_file_loader.cpp trigger.cpp utils.cpp vector.cpp war_map.cpp\
  135.           wedding.cpp xmas_event.cpp version.cpp panama.cpp threeway_war.cpp map_location.cpp auth_brazil.cpp\
  136.           BlueDragon.cpp BlueDragon_Binder.cpp DragonLair.cpp questlua_dragonlair.cpp\
  137.           HackShield.cpp HackShield_Impl.cpp char_hackshield.cpp skill_power.cpp affect.cpp\
  138.           SpeedServer.cpp questlua_speedserver.cpp XTrapManager.cpp\
  139.           auction_manager.cpp FileMonitor_FreeBSD.cpp ClientPackageCryptInfo.cpp cipher.cpp\
  140.           buff_on_attributes.cpp dragon_soul_table.cpp DragonSoul.cpp\
  141.           group_text_parse_tree.cpp char_dragonsoul.cpp char_gaya.cpp questlua_dragonsoul.cpp\
  142.           shop_manager.cpp shopEx.cpp item_manager_read_tables.cpp shutdown_manager.cpp\
  143.           char_cards.cpp attr_transfer.cpp New_PetSystem.cpp questlua_petnew.cpp TempleOchao.cpp\
  144.           MarkConvert.cpp MarkImage.cpp MarkManager.cpp questlua_TempleOchao.cpp questlua_zodiac_temple.cpp MeleyLair.cpp questlua_MeleyLair.cpp\
  145. # PROJECT_SRC_FILES END
  146.  
  147. # PROJECT_OBJ_FILES BEGIN
  148. COBJS   = $(CFILE:%.c=$(OBJDIR)/%.o)
  149. CPPOBJS = $(CPPFILE:%.cpp=$(OBJDIR)/%.o)
  150. ifeq ($(ENABLE_GCC_AUTODEPEND), 1)
  151. CDEPS   = $(COBJS:%.o=%.d)
  152. CPPDEPS = $(CPPOBJS:%.o=%.d)
  153. endif
  154.  
  155. MAINOBJ = $(MAINCPP:%.cpp=$(OBJDIR)/%.o)
  156. ifeq ($(ENABLE_GCC_AUTODEPEND), 1)
  157. MAINDEPS = $(MAINOBJ:%.o=%.d)
  158. endif
  159.  
  160. TESTOBJ = $(TESTCPP:%.cpp=$(OBJDIR)/%.o)
  161. ifeq ($(ENABLE_GCC_AUTODEPEND), 1)
  162. TESTDEPS = $(TESTOBJ:%.o=%.d)
  163. endif
  164. # PROJECT_OBJ_FILES END
  165.  
  166. # Target Paths
  167. MAIN_TARGET = $(BINDIR)/GForgeGame
  168. TEST_TARGET = $(BINDIR)/test_r$(GAME_VERSION)
  169.  
  170. # previously -> default: $(MAIN_TARGET) $(TEST_TARGET)
  171. default: $(MAIN_TARGET)
  172. test: $(TEST_TARGET)
  173.  
  174. $(OBJDIR)/%.o: %.c
  175.     @echo -e "\033[0;32m [B7aR] \033[0m     \033[0;33m Compiling:\033[0m" $<
  176.     @$(CC) $(CFLAGS) $(INCDIR) -c $< -o $@
  177. ifeq ($(ENABLE_GCC_AUTODEPEND), 1)
  178.     @$(CC) -MM -MG -MP $(CFLAGS) $(INCDIR) -c $< -o $(OBJDIR)/$*.d
  179.     @sed -i '' -e's/$*.o:/$(OBJDIR)\/$*.o:/g' $(OBJDIR)/$*.d
  180. endif
  181.  
  182. $(OBJDIR)/%.o: %.cpp
  183.     @echo -e "\033[0;32m [B7aR] \033[0m     \033[0;33m Compiling:\033[0m" $<
  184.     @$(CC) $(CFLAGS) $(INCDIR) -c $< -o $@
  185. ifeq ($(ENABLE_GCC_AUTODEPEND), 1)
  186.     @$(CC) -MM -MG -MP $(CFLAGS) $(INCDIR) -c $< -o $(OBJDIR)/$*.d
  187.     @sed -i '' -e's/$*.o:/$(OBJDIR)\/$*.o:/g' $(OBJDIR)/$*.d
  188. endif
  189.  
  190. limit_time:
  191.     @echo update limit time
  192.     @python update_limit_time.py
  193.  
  194. $(MAIN_TARGET): $(CPPOBJS) $(COBJS) $(MAINOBJ)
  195.     @echo linking $(MAIN_TARGET)
  196.     @$(CC) $(CFLAGS) $(LIBDIR) $(COBJS) $(CPPOBJS) $(MAINOBJ) $(LIBS) -o $(MAIN_TARGET)
  197.  
  198. $(TEST_TARGET): $(TESTCPP) $(CPPOBJS) $(COBJS) $(TESTOBJ)
  199.     @echo linking $(TEST_TARGET)
  200.     @$(CC) $(CFLAGS) $(LIBDIR) $(COBJS) $(CPPOBJS) $(TESTOBJ) $(LIBS) -o $(TEST_TARGET)
  201.  
  202. dump:
  203.     @$(CC) -dM -E - < /dev/null > .nope.nope
  204.  
  205. symlink:
  206.     @ln -fs GForgeGame $(BINDIR)/game_symlink
  207.  
  208. strip:
  209.     @cp $(MAIN_TARGET) $(BINDIR)/GForgeGame
  210.     @strip $(BINDIR)/GForgeGame
  211.  
  212. clean:
  213.     @echo cleaning $(MAIN_TARGET) $(TEST_TARGET) $(OBJDIR)
  214.     @rm -f $(COBJS) $(CPPOBJS) $(MAINOBJ) $(TESTOBJ)
  215. ifeq ($(ENABLE_GCC_AUTODEPEND), 1)
  216.     @rm -f $(CDEPS) $(CPPDEPS) $(MAINDEPS) $(TESTDEPS)
  217. endif
  218.     @rm -f $(BINDIR)/GForgeGame* $(BINDIR)/test_r* $(BINDIR)/conv
  219.  
  220. cc-ver:
  221.     @$(CC) -v
  222.  
  223. tag:
  224.     ctags *.cpp *.h *.c
  225.  
  226. dep:
  227. ifeq ($(ENABLE_GCC_AUTODEPEND), 1)
  228.     @echo "Note: gcc autodepend is autodetected, so target dep skipped"
  229. else
  230.     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)
  231. endif
  232.  
  233. # AUTO_DEPEND_CHECK BEGIN
  234. ifeq ($(ENABLE_GCC_AUTODEPEND), 1)
  235. sinclude $(CDEPS)
  236. sinclude $(CPPDEPS)
  237. sinclude $(MAINDEPS)
  238. sinclude $(TESTDEPS)
  239. else
  240. sinclude $(DEPFILE)
  241. endif
  242. # AUTO_DEPEND_CHECK END
  243.  
Advertisement
Add Comment
Please, Sign In to add comment