Makefile.in 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. @SET_MAKE@
  2. HAVE_MYSQL=@HAVE_MYSQL@
  3. ifeq ($(HAVE_MYSQL),yes)
  4. ALL_DEPENDS=common common_sql login login_sql char char_sql map map_sql ladmin tools converters plugins save
  5. SQL_DEPENDS=common_sql login_sql char_sql map_sql save
  6. COMMON_SQL_DEPENDS=
  7. LOGIN_SQL_DEPENDS=common_sql
  8. CHAR_SQL_DEPENDS=common_sql
  9. MAP_SQL_DEPENDS=common_sql
  10. CONVERTERS_DEPENDS=common_sql
  11. else
  12. ALL_DEPENDS=common login char map ladmin tools plugins save
  13. SQL_DEPENDS=needs_mysql
  14. COMMON_SQL_DEPENDS=needs_mysql
  15. LOGIN_SQL_DEPENDS=needs_mysql
  16. CHAR_SQL_DEPENDS=needs_mysql
  17. MAP_SQL_DEPENDS=needs_mysql
  18. CONVERTERS_DEPENDS=needs_mysql
  19. endif
  20. #####################################################################
  21. .PHONY: txt sql common common_sql login login_sql char char_sql map map_sql \
  22. ladmin tools converters plugins addons save clean help depend
  23. all: $(ALL_DEPENDS)
  24. txt: common login char map conf
  25. sql: $(SQL_DEPENDS)
  26. common:
  27. @$(MAKE) -C src/common txt
  28. common_sql: $(COMMON_SQL_DEPENDS)
  29. @$(MAKE) -C src/common sql
  30. login: common
  31. @$(MAKE) -C src/login
  32. login_sql: $(LOGIN_SQL_DEPENDS)
  33. @$(MAKE) -C src/login_sql
  34. char: common
  35. @$(MAKE) -C src/char
  36. char_sql: $(CHAR_SQL_DEPENDS)
  37. @$(MAKE) -C src/char_sql
  38. map: common
  39. @$(MAKE) -C src/map txt
  40. map_sql: $(MAP_SQL_DEPENDS)
  41. @$(MAKE) -C src/map sql
  42. ladmin: common
  43. @$(MAKE) -C src/ladmin
  44. tools:
  45. @$(MAKE) -C src/tool
  46. converters: $(CONVERTERS_DEPENDS)
  47. @$(MAKE) -C src/txt-converter
  48. plugins addons: common
  49. @$(MAKE) -C src/plugins
  50. save:
  51. # 1) create save folder
  52. # 2) add missing files
  53. # 3) remove remaining .svn folder
  54. @echo "building save folder..."
  55. @if test ! -d save ; then mkdir save ; fi
  56. @for f in $$(ls save-tmpl) ; do if test ! -e save/$$f ; then cp save-tmpl/$$f save ; fi ; done
  57. @rm -rf save/.svn
  58. clean:
  59. @$(MAKE) -C src/common $@
  60. @$(MAKE) -C src/login $@
  61. @$(MAKE) -C src/login_sql $@
  62. @$(MAKE) -C src/char $@
  63. @$(MAKE) -C src/char_sql $@
  64. @$(MAKE) -C src/map $@
  65. @$(MAKE) -C src/ladmin $@
  66. @$(MAKE) -C src/plugins $@
  67. @$(MAKE) -C src/tool $@
  68. @$(MAKE) -C src/txt-converter $@
  69. help:
  70. @echo "most common targets are 'all' 'txt' 'sql' 'clean' 'help'"
  71. @echo "possible targets are:"
  72. @echo "'common' - builds object files used in TXT servers"
  73. @echo "'common_sql' - builds object files used in SQL servers"
  74. @echo "'login' - builds login server (TXT version)"
  75. @echo "'login_sql' - builds login server (SQL version)"
  76. @echo "'char' - builds char server (TXT version)"
  77. @echo "'char_sql' - builds char server (SQL version)"
  78. @echo "'map' - builds map server (TXT version)"
  79. @echo "'map_sql' - builds map server (SQL version)"
  80. @echo "'ladmin' - builds remote administration tool"
  81. @echo "'tools' - builds all the tools in src/tools"
  82. @echo "'converters' - builds the login/char converters"
  83. @echo "'plugins' - builds all the plugins in src/plugins"
  84. @echo "'addons'"
  85. @echo "'save' - builds save folder from the template"
  86. @echo "'all' - builds all above targets"
  87. @echo "'txt' - builds txt servers (targets 'common' 'login' 'char' 'map' and"
  88. @echo " 'save')"
  89. @echo "'sql' - builds sql servers (targets 'common_sql' 'login_sql' 'char_sql'"
  90. @echo " and 'map_sql')"
  91. @echo "'clean' - cleans builds and objects"
  92. @echo "'help' - outputs this message"
  93. #####################################################################
  94. needs_mysql:
  95. @echo "MySQL not found or disabled by the configure script"
  96. @exit 1
  97. #####################################################################
  98. # TODO
  99. # Server Packet Protocol version (also defined in src/common/mmo.h)
  100. # CFLAGS += -DPACKETVER=8
  101. # Makes map-wide script variables be saved to SQL instead of TXT files.
  102. # CFLAGS += -DMAPREGSQL
  103. # OPT += -DGCOLLECT
  104. # LIBS += -lgc
  105. # OPT += -DMEMWATCH
  106. # OPT += -DDMALLOC -DDMALLOC_FUNC_CHECK
  107. # LIBS += -ldmalloc
  108. # OPT += -DBCHECK
  109. install: conf/%.conf conf/%.txt
  110. $(shell mkdir -p /opt/eathena/bin/)
  111. $(shell mkdir -p /opt/eathena/etc/eathena/)
  112. $(shell mkdir -p /opt/eathena/var/log/eathena/)
  113. $(shell mv save /opt/eathena/etc/eathena/save)
  114. $(shell mv db /opt/eathena/etc/eathena/db)
  115. $(shell mv conf /opt/eathena/etc/eathena/conf)
  116. $(shell mv npc /opt/eathena/etc/eathena/npc)
  117. $(shell mv log/* /opt/eathena/var/log/eathena/)
  118. $(shell cp *-server* /opt/eathena/bin/)
  119. $(shell cp ladmin /opt/eathena/bin/)
  120. $(shell ln -s /opt/eathena/etc/eathena/save/ /opt/eathena/bin/)
  121. $(shell ln -s /opt/eathena/etc/eathena/db/ /opt/eathena/bin/)
  122. $(shell ln -s /opt/eathena/etc/eathena/conf/ /opt/eathena/bin/)
  123. $(shell ln -s /opt/eathena/etc/eathena/npc/ /opt/eathena/bin/)
  124. $(shell ln -s /opt/eathena/var/log/eathena/ /opt/eathena/bin/log)
  125. bin-clean:
  126. $(shell rm /opt/eathena/bin/login-server*)
  127. $(shell rm /opt/eathena/bin/char-server*)
  128. $(shell rm /opt/eathena/bin/map-server*)
  129. $(shell rm /opt/eathena/bin/ladmin)
  130. uninstall:
  131. bin-clean
  132. $(shell rm /opt/eathena/bin/save)
  133. $(shell rm /opt/eathena/bin/db)
  134. $(shell rm /opt/eathena/bin/conf)
  135. $(shell rm /opt/eathena/bin/npc)
  136. $(shell rm /opt/eathena/bin/log)
  137. $(shell rm -rf /opt/eathena/etc/eathena)
  138. $(shell rm -rf /opt/eathena/var/log/eathena)