1. CC = g++6
  2. DB_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_GCC_AUTODEPEND = 1
  10. ENABLE_STATIC = 0
  11. # LIST_OF_CONSTANTS END
  12. # Depend Path File
  13. ifneq ($(ENABLE_GCC_AUTODEPEND), 1)
  14. DEPFILE = Depend
  15. endif
  16. # Project Flags
  17. CFLAGS = -m32 -g -Wall -O2 -pipe -fno-rtti -fno-exceptions -Wno-long-long -pthread -D_THREAD_SAFE -static-libstdc++
  18. CFLAGS += -Wno-deprecated-declarations -Wno-nonnull-compare -Wno-deprecated-declarations -Wno-array-bounds -Wno-address
  19. CXXFLAGS = -std=c++11 -Wl,-rpath=/usr/local/lib/gcc6
  20. ifeq ($(ENABLE_STATIC), 1)
  21. CFLAGS += -static
  22. endif
  23. # Version defines
  24. CFLAGS += -D__USER__=\"$(USER)\" -D__HOSTNAME__=\"$(HOSTNAME)\" -D__PWD__=\"$(PWD)\" -D__DB_VERSION__=\"$(DB_VERSION)\"
  25. # Boost
  26. INCDIR += -I../../../Extern/include/boost
  27. # MySQL
  28. INCDIR += -I/usr/local/include/mysql
  29. LIBS += /usr/local/lib/mysql/libmysqlclient.a /usr/lib/libz.a
  30. # Project Libraries
  31. INCDIR += -I/usr/local/include
  32. INCDIR += -I../../../Extern/include
  33. LIBDIR += -I../../../Extern/lib
  34. LIBDIR += -L../../libthecore/lib -L../../libsql -L../../libpoly -L../../libgame/lib
  35. LIBS += -lthecore -lsql -lpoly -lgame -lm
  36. # OpenSSL
  37. LIBS += -lssl -lcrypto
  38. # PROJECT_SRC_FILES BEGIN
  39. CPPFILE = Config.cpp NetBase.cpp Peer.cpp PeerBase.cpp Main.cpp Lock.cpp DBManager.cpp \
  40. Cache.cpp LoginData.cpp ClientManager.cpp ClientManagerPlayer.cpp ClientManagerLogin.cpp \
  41. ClientManagerBoot.cpp ClientManagerParty.cpp ClientManagerGuild.cpp GuildManager.cpp HB.cpp \
  42. PrivManager.cpp MoneyLog.cpp ItemAwardManager.cpp ClientManagerEventFlag.cpp Marriage.cpp \
  43. Monarch.cpp BlockCountry.cpp ItemIDRangeManager.cpp ClientManagerHorseName.cpp version.cpp \
  44. AuctionManager.cpp ProtoReader.cpp CsvReader.cpp
  45. # PROJECT_SRC_FILES END
  46. # PROJECT_OBJ_FILES BEGIN
  47. CPPOBJS = $(CPPFILE:%.cpp=$(OBJDIR)/%.o)
  48. ifeq ($(ENABLE_GCC_AUTODEPEND), 1)
  49. CPPDEPS = $(CPPOBJS:%.o=%.d)
  50. endif
  51. # PROJECT_OBJ_FILES END
  52. # Target Paths
  53. MAIN_TARGET = $(BINDIR)/db_r$(DB_VERSION)
  54. #MAIN_TARGET = $(BINDIR)/db
  55. default: $(MAIN_TARGET)
  56. $(MAIN_TARGET): $(CPPOBJS)
  57. @echo linking $(MAIN_TARGET)
  58. @$(CC) $(CFLAGS) $(CXXFLAGS) $(LIBDIR) $(CPPOBJS) $(LIBS) -o $(MAIN_TARGET)
  59. $(OBJDIR)/%.o: %.cpp
  60. @echo compiling $<
  61. @$(CC) $(CFLAGS) $(CXXFLAGS) $(INCDIR) -c $< -o $@
  62. ifeq ($(ENABLE_GCC_AUTODEPEND), 1)
  63. @$(CC) -MM -MG -MP $(CFLAGS) $(CXXFLAGS) $(INCDIR) -c $< -o $(OBJDIR)/$*.d
  64. @sed -i '' -e's/$*.o:/$(OBJDIR)\/$*.o:/g' $(OBJDIR)/$*.d
  65. endif
  66. $(OBJDIR):
  67. @mkdir $(OBJDIR)
  68. symlink:
  69. @ln -fs db_r$(DB_VERSION) $(BINDIR)/db_symlink
  70. strip:
  71. @cp $(BINDIR)/db_r$(DB_VERSION) $(BINDIR)/db_r
  72. @strip $(BINDIR)/db_r
  73. clean:
  74. @rm -f $(CPPOBJS) $(BINDIR)/db_r*
  75. dep:
  76. ifeq ($(ENABLE_GCC_AUTODEPEND), 1)
  77. @echo "Note: gcc autodepend is autodetected, so target dep skipped"
  78. else
  79. makedepend -f $(DEPFILE) $(INCDIR) -I/usr/include/c++/3.3 -I/usr/include/c++/4.2 -p$(OBJDIR)/ $(CPPFILE) 2> /dev/null > $(DEPFILE)
  80. endif
  81. # AUTO_DEPEND_CHECK BEGIN
  82. ifeq ($(ENABLE_GCC_AUTODEPEND), 1)
  83. sinclude $(CPPDEPS)
  84. else
  85. sinclude $(DEPFILE)
  86. endif
  87. # AUTO_DEPEND_CHECK END