Makefile 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. CACHED = $(shell ls | grep Makefile.cache)
  2. ifeq ($(findstring Makefile.cache,$(CACHED)), Makefile.cache)
  3. MKDEF = $(shell cat Makefile.cache)
  4. else
  5. CC = gcc -pipe
  6. # CC = g++ --pipe
  7. MAKE = make
  8. # MAKE = gmake
  9. OPT = -g
  10. OPT += -O2
  11. # OPT += -O3
  12. # OPT += -mmmx
  13. # OPT += -msse
  14. # OPT += -msse2
  15. # OPT += -msse3
  16. # OPT += -rdynamic
  17. OPT += -ffast-math
  18. # OPT += -fbounds-checking
  19. # OPT += -fomit-frame-pointer
  20. OPT += -Wall -Wno-sign-compare
  21. # OPT += -DCHRIF_OLDINFO
  22. # OPT += -DPCRE_SUPPORT
  23. # OPT += -DGCOLLECT
  24. # OPT += -DMEMWATCH
  25. # OPT += -DDMALLOC -DDMALLOC_FUNC_CHECK
  26. # OPT += -DBCHECK
  27. # LIBS += -lgc
  28. # LIBS += -ldmalloc
  29. # LIBS += -L/usr/local/lib -lpcre
  30. PLATFORM = $(shell uname)
  31. ifeq ($(findstring Linux,$(PLATFORM)), Linux)
  32. LIBS += -ldl
  33. endif
  34. ifeq ($(findstring SunOS,$(PLATFORM)), SunOS)
  35. LIBS += -lsocket -lnsl -ldl
  36. MAKE = gmake
  37. endif
  38. ifeq ($(findstring FreeBSD,$(PLATFORM)), FreeBSD)
  39. MAKE = gmake
  40. OS_TYPE = -D__FREEBSD__
  41. endif
  42. ifeq ($(findstring NetBSD,$(PLATFORM)), NetBSD)
  43. MAKE = gmake
  44. OS_TYPE = -D__NETBSD__
  45. endif
  46. ifeq ($(findstring CYGWIN,$(PLATFORM)), CYGWIN)
  47. OPT += -DFD_SETSIZE=4096
  48. ifeq ($(findstring mingw,$(shell gcc --version)), mingw)
  49. IS_MINGW = 1
  50. OS_TYPE = -DMINGW
  51. LIBS += -L../.. -lwsock32
  52. else
  53. OS_TYPE = -DCYGWIN
  54. endif
  55. endif
  56. CFLAGS = $(OPT) -I../common $(OS_TYPE)
  57. ifdef SQLFLAG
  58. ifdef IS_MINGW
  59. CFLAGS += -I../mysql
  60. LIBS += -lmysql
  61. else
  62. MYSQLFLAG_CONFIG = $(shell which mysql_config)
  63. ifeq ($(findstring /,$(MYSQLFLAG_CONFIG)), /)
  64. MYSQLFLAG_VERSION = $(shell $(MYSQLFLAG_CONFIG) --version | sed s:\\..*::)
  65. ifeq ($(findstring 5,$(MYSQLFLAG_VERSION)), 5)
  66. MYSQLFLAG_CONFIG_ARGUMENT = --include
  67. else
  68. MYSQLFLAG_CONFIG_ARGUMENT = --cflags
  69. endif
  70. CFLAGS += $(shell $(MYSQLFLAG_CONFIG) $(MYSQLFLAG_CONFIG_ARGUMENT))
  71. LIBS += $(shell $(MYSQLFLAG_CONFIG) --libs)
  72. else
  73. CFLAGS += -I/usr/local/include/mysql
  74. LIBS += -L/usr/local/lib/mysql -lmysqlclient
  75. endif
  76. endif
  77. endif
  78. ifneq ($(findstring -lz,$(LIBS)), -lz)
  79. LIBS += -lz
  80. endif
  81. ifneq ($(findstring -lm,$(LIBS)), -lm)
  82. LIBS += -lm
  83. endif
  84. MKDEF = CC="$(CC)" CFLAGS="$(CFLAGS)" LIB_S="$(LIBS)"
  85. endif
  86. .PHONY: txt sql common login login_sql char char_sql map map_sql ladmin converters \
  87. addons plugins tools webserver clean zlib depend
  88. all: txt
  89. txt : Makefile.cache conf common login char map ladmin
  90. ifdef SQLFLAG
  91. sql: Makefile.cache conf common login_sql char_sql map_sql
  92. else
  93. sql:
  94. $(MAKE) SQLFLAG=1 $@
  95. endif
  96. conf:
  97. cp -r conf-tmpl conf
  98. rm -rf conf/.svn conf/*/.svn
  99. cp -r save-tmpl save
  100. rm -rf save/.svn
  101. common: src/common/GNUmakefile
  102. $(MAKE) -C src/$@ $(MKDEF)
  103. login: src/login/GNUmakefile common
  104. $(MAKE) -C src/$@ $(MKDEF) txt
  105. char: src/char/GNUmakefile common
  106. $(MAKE) -C src/$@ $(MKDEF) txt
  107. map: src/map/GNUmakefile common
  108. $(MAKE) -C src/$@ $(MKDEF) txt
  109. login_sql: src/login_sql/GNUmakefile common
  110. $(MAKE) -C src/$@ $(MKDEF) sql
  111. char_sql: src/char_sql/GNUmakefile common
  112. $(MAKE) -C src/$@ $(MKDEF) sql
  113. map_sql: src/map/GNUmakefile common
  114. $(MAKE) -C src/map $(MKDEF) sql
  115. ladmin: src/ladmin/GNUmakefile common
  116. $(MAKE) -C src/$@ $(MKDEF)
  117. plugins addons: src/plugins/GNUmakefile common
  118. $(MAKE) -C src/plugins $(MKDEF)
  119. webserver:
  120. $(MAKE) -C src/$@ $(MKDEF)
  121. tools:
  122. $(MAKE) -C src/tool $(MKDEF)
  123. ifdef SQLFLAG
  124. converters: src/txt-converter/GNUmakefile common
  125. $(MAKE) -C src/txt-converter $(MKDEF)
  126. else
  127. converters:
  128. $(MAKE) SQLFLAG=1 $@
  129. endif
  130. zlib:
  131. $(MAKE) -C src/$@ $(MKDEF)
  132. clean: src/common/GNUmakefile src/login/GNUmakefile src/login_sql/GNUmakefile \
  133. src/char/GNUmakefile src/char_sql/GNUmakefile src/map/GNUmakefile \
  134. src/ladmin/GNUmakefile src/plugins/GNUmakefile src/txt-converter/GNUmakefile
  135. rm -f Makefile.cache
  136. $(MAKE) -C src/common $@
  137. $(MAKE) -C src/login $@
  138. $(MAKE) -C src/login_sql $@
  139. $(MAKE) -C src/char $@
  140. $(MAKE) -C src/char_sql $@
  141. $(MAKE) -C src/map $@
  142. $(MAKE) -C src/ladmin $@
  143. $(MAKE) -C src/plugins $@
  144. $(MAKE) -C src/zlib $@
  145. $(MAKE) -C src/txt-converter $@
  146. depend: src/common/GNUmakefile src/login/GNUmakefile src/login_sql/GNUmakefile \
  147. src/char/GNUmakefile src/char_sql/GNUmakefile src/map/GNUmakefile \
  148. src/ladmin/GNUmakefile src/plugins/GNUmakefile src/txt-converter/GNUmakefile
  149. cd src/common; makedepend -fGNUmakefile -pobj/ -Y. *.c; cd ../..;
  150. cd src/login; makedepend -DTXT_ONLY -fGNUmakefile -Y. -Y../common *.c; cd ../..;
  151. cd src/login_sql; makedepend -fGNUmakefile -Y. -Y../common *.c; cd ../..;
  152. cd src/char; makedepend -DTXT_ONLY -fGNUmakefile -Y. -Y../common *.c; cd ../..;
  153. cd src/char_sql; makedepend -fGNUmakefile -Y. -Y../common *.c; cd ../..;
  154. cd src/map; makedepend -DTXT_ONLY -fGNUmakefile -ptxtobj/ -Y. -Y../common *.c; cd ../..;
  155. cd src/map; makedepend -fGNUmakefile -a -psqlobj/ -Y. -Y../common *.c; cd ../..;
  156. cd src/ladmin; makedepend -fGNUmakefile -Y. -Y../common *.c; cd ../..;
  157. cd src/txt-converter; makedepend -fGNUmakefile -Y. -Y../common *.c; cd ../..;
  158. $(MAKE) -C src/plugins $@
  159. Makefile.cache:
  160. printf "$(subst ",\",$(MKDEF))" > Makefile.cache
  161. src/%/GNUmakefile: src/%/Makefile
  162. sed -e 's/$$>/$$^/' $< > $@
  163. src/common/GNUmakefile: src/common/Makefile
  164. src/login/GNUmakefile: src/login/Makefile
  165. src/login_sql/GNUmakefile: src/login_sql/Makefile
  166. src/char/GNUmakefile: src/char/Makefile
  167. src/char_sql/GNUmakefile: src/char_sql/Makefile
  168. src/map/GNUmakefile: src/map/Makefile
  169. src/plugins/GNUmakefile: src/plugins/Makefile
  170. src/ladmin/GNUmakefile: src/ladmin/Makefile
  171. src/txt-converter/GNUmakefile: src/txt-converter/Makefile