make.rules
上传用户:xqtpzdz
上传日期:2022-05-21
资源大小:1764k
文件大小:11k
源码类别:

xml/soap/webservice

开发平台:

Visual C++

  1. # Copyright 2004 Vocalocity, Inc.
  2. # All Rights Reserved
  3. #
  4. # Makefile rules for SWI source code directories
  5. #  on i386-linux platform
  6. #
  7. #----------------------------------------------------------------------
  8. # List of all sources and source directories
  9. #----------------------------------------------------------------------
  10. all_SRC := $(sort $(foreach target, $(PROGS) $(STATIC_LIBS) $(LIBS), $($(target)_SRC)))
  11. progsubdirs := $(sort ./ $(foreach target, $(PROGS), $(dir $($(target)_SRC))))
  12. libsubdirs := $(sort ./ $(foreach target, $(STATIC_LIBS) $(LIBS), $(dir $($(target)_SRC))))
  13. #----------------------------------------------------------------------
  14. # Header file and Include Directories
  15. #----------------------------------------------------------------------
  16. vpath lib%.a $(patsubst -L%, %, $(filter -L%, $(LDFLAGS))) 
  17.       $(subst :, , $(LD_LIBRARY_PATH)) $(STD_LIBRARY_PATH)
  18. ifneq ($(SRCPATH),)
  19. vpath %.c $(SRCPATH)
  20. vpath %.cc $(SRCPATH)
  21. vpath %.cpp $(SRCPATH)
  22. vpath %.C $(SRCPATH)
  23. vpath %.def $(SRCPATH)
  24. vpath %.f $(SRCPATH)
  25. vpath %.F $(SRCPATH)
  26. vpath %.l $(SRCPATH)
  27. vpath %.mod $(SRCPATH)
  28. vpath %.p $(SRCPATH)
  29. vpath %.r $(SRCPATH)
  30. vpath %.s $(SRCPATH)
  31. vpath %.sh $(SRCPATH)
  32. vpath %.y $(SRCPATH)
  33. endif
  34. #----------------------------------------------------------------------
  35. # Show targets prints a list of available targets
  36. #----------------------------------------------------------------------
  37. show-targets:
  38. @echo Binaries available in this Makefile are:
  39. ifneq ($(STATIC_LIBS),)
  40. @echo Static libraries (.a): $(addprefix lib,$(STATIC_LIBS))
  41. endif
  42. ifneq ($(LIBS),)
  43. @echo Libraries (.a or .so): $(addprefix lib,$(LIBS))
  44. endif
  45. ifneq ($(PROGS),)
  46. @echo Executables : $(PROGS)
  47. endif
  48. @echo Options are: 
  49. @echo    all-static builds with Static libs
  50. @echo    all-shared builds with Shared libs 
  51. @echo    - read additional details in the README
  52. #----------------------------------------------------------------------
  53. # Clean Targets
  54. #----------------------------------------------------------------------
  55. #----------------------------------------------------------------------
  56. # .PHONY target declares all possible rules
  57. #----------------------------------------------------------------------
  58. .PHONY: $(PROGS) $(STATIC_LIBS) $(LIBS) 
  59. $(addsuffix -shared, $(STATIC_LIBS) $(LIBS)) 
  60. $(addsuffix -static, $(STATIC_LIBS) $(LIBS)) 
  61. $(addsuffix -install, $(STATIC_LIBS) $(LIBS) $(PROGS)) 
  62. $(addsuffix -install-static, $(STATIC_LIBS) $(LIBS)) 
  63. $(addsuffix -install-shared, $(STATIC_LIBS) $(LIBS)) 
  64. $(addsuffix -install-progs, $(PROGS)) 
  65. $(buildbindir)/installprogsubdirs $(buildlibdir)/installlibsubdirs 
  66. installbuildbindir installbuildlibdir 
  67. installbindir installlibdir 
  68. all progs libs-static libs-shared 
  69. all-libs all-static all-shared 
  70. all-install headers clean 
  71. $(LOCAL1) $(LOCAL2) $(LOCAL3)
  72. all: show-targets
  73. all-static: $(LOCAL1) $(addsuffix -install-static, $(STATIC_LIBS) $(LIBS)) 
  74.     $(LOCAL2) $(addsuffix -install, $(PROGS)) $(LOCAL3)
  75. all-shared: $(LOCAL1) $(addsuffix -install-static, $(STATIC_LIBS)) 
  76.     $(addsuffix -install-shared, $(LIBS)) 
  77.     $(LOCAL2) $(addsuffix -install, $(PROGS)) $(LOCAL3)
  78. progs: $(addsuffix -progs, $(PROGS))
  79. libs: libs-static libs-shared
  80. libs-static: $(addsuffix -static, $(STATIC_LIBS) $(LIBS))
  81. libs-shared: $(addsuffix -static, $(STATIC_LIBS)) $(addsuffix -shared, $(LIBS))
  82. #----------------------------------------------------------------------
  83. # headers copies all the public headers and scripts to the build area
  84. #         (normally automatically done when a library, DLL, or program is 
  85. #         successfully build)
  86. #----------------------------------------------------------------------
  87. headers: installincdir
  88. ifneq ($(PUBLIC_HEADERS),)
  89. $(INSTALL) $(PUBLIC_HEADERS) $(incdir)
  90. endif
  91. ifneq ($(PUBLIC_HEADER_TREES),)
  92. $(INSTALL) -r $(PUBLIC_HEADER_TREES) "$(SWISBSDK)/include"
  93. endif
  94. ifneq ($(PUBLIC_SCRIPTS),)
  95. $(INSTALL) $(PUBLIC_SCRIPTS) "$(SWISBSDK)/bin"
  96. endif
  97. ifneq ($(PUBLIC_CONFIG_FILES),)
  98. $(INSTALL) $(PUBLIC_CONFIG_FILES) "$(SWISBSDK)/config"
  99. endif
  100. ifneq ($(PUBLIC_ERROR_FILES),)
  101. $(INSTALL) $(PUBLIC_ERROR_FILES) "$(SWISBSDK)/config"
  102. endif
  103. #----------------------------------------------------------------------
  104. # clean deletes the entire directory tree for the current build config
  105. #----------------------------------------------------------------------
  106. clean: $(PROJ_CLEAN)
  107. $(RMCLEAN) $(BUILDDIR)
  108. @echo Cleaning up $(BUILDDIR)
  109. #----------------------------------------------------------------------
  110. # Rules to create (install) build subdirs
  111. #----------------------------------------------------------------------
  112. $(buildbindir)/installbinsubdirs:
  113. $(MKDIRS) $(addprefix $(dir $@), $(progsubdirs))
  114. -$(CHMOD) $(CHMODFLAGSX) $(addprefix $(dir $@), $(progsubdirs))
  115. $(buildlibdir)/installlibsubdirs:
  116. $(MKDIRS) $(addprefix $(dir $@), $(libsubdirs))
  117. -$(CHMOD) $(CHMODFLAGSX) $(addprefix $(dir $@), $(libsubdirs))
  118. installbuildbindir:
  119. $(MKDIRS) $(buildbindir)
  120. -$(CHMOD) $(CHMODFLAGSX) $(buildbindir)
  121. installbuildlibdir:
  122. $(MKDIRS) $(buildlibdir)
  123. -$(CHMOD) $(CHMODFLAGSX) $(buildlibdir)
  124. installbindir:
  125. $(MKDIRS) $(bindir)
  126. -$(CHMOD) $(CHMODFLAGSX) $(bindir)
  127. installlibdir:
  128. $(MKDIRS) $(libdir)
  129. -$(CHMOD) $(CHMODFLAGSX) $(libdir)
  130. installincdir:
  131. $(MKDIRS) $(incdir)
  132. -$(CHMOD) $(CHMODFLAGSX) $(incdir)
  133. #----------------------------------------------------------------------
  134. # Targets - 
  135. #----------------------------------------------------------------------
  136. $(addsuffix -install, $(PROGS)): %-install: installbindir %-progs
  137. $(RM) $(bindir)/$*$(CFG_SUFFIX)
  138. $(INSTALL_PROGRAM) $(buildbindir)/$*$(CFG_SUFFIX) $(bindir)
  139. $(addsuffix -install, $(STATIC_LIBS) $(LIBS)): %-install: %-install-static %-install-shared
  140. $(addsuffix -install-static, $(STATIC_LIBS) $(LIBS)): %-install-static: installlibdir 
  141.                                %-static headers
  142. $(RM) $(libdir)/lib$*$(CFG_SUFFIX).a
  143. $(INSTALL_DATA) $(buildlibdir)/lib$*$(CFG_SUFFIX).a $(libdir)
  144. $(addsuffix -install-shared, $(LIBS)): %-install-shared: installlibdir 
  145.                                %-shared headers
  146. $(RM) $(libdir)/lib$*$(CFG_SUFFIX).so.$(LIBVER)
  147. $(INSTALL_DATA) $(buildlibdir)/lib$*$(CFG_SUFFIX).so.$(LIBVER) $(libdir)
  148. $(RM) $(libdir)/lib$*$(CFG_SUFFIX).so
  149. ln -s lib$*$(CFG_SUFFIX).so.$(LIBVER) $(libdir)/lib$*$(CFG_SUFFIX).so
  150. #----------------------------------------------------------------------
  151. # Program Targets
  152. #----------------------------------------------------------------------
  153. $(PROGS): %: %-progs
  154. $(addsuffix -progs, $(PROGS)): %-progs: installbuildbindir 
  155.             $(buildbindir)/installbinsubdirs
  156. $(MAKE) -f $(MAKEFILE) $(buildbindir)/$*$(CFG_SUFFIX) TARGET=$* 
  157. DEPS=$*_SRC
  158. #----------------------------------------------------------------------
  159. # Library Targets
  160. #----------------------------------------------------------------------
  161. $(STATIC_LIBS): %: %-static %-shared
  162. $(LIBS): %: %-static %-shared
  163. $(addsuffix -static, $(STATIC_LIBS) $(LIBS)): %-static: installbuildlibdir 
  164.      $(buildlibdir)/installlibsubdirs
  165. $(MAKE) -f $(MAKEFILE) $(buildlibdir)/lib$*$(CFG_SUFFIX).a TARGET=$* 
  166. DEPS=$*_SRC
  167. ifdef NO_DEF_FILES
  168. BUILDVER = 
  169. endif
  170. ifdef EXPLICIT_DEF_FILES
  171. BUILDVER = $(PERL) $(SWISBSDK)/make/bin/def_to_ver.pl $(OS) $(LIBPROD) $(LIBVER) $($*_DEF) $(buildlibdir)/$(patsubst %.def,%.ver,$(notdir $($*_DEF)))
  172. endif
  173. $(addsuffix -shared, $(LIBS)): %-shared: installbuildlibdir 
  174.      $(buildlibdir)/installlibsubdirs 
  175. $(BUILDVER)
  176. $(MAKE) -f $(MAKEFILE) $(buildlibdir)/lib$*$(CFG_SUFFIX).so TARGET=$* 
  177. DEPS=$*_SRC
  178. #----------------------------------------------------------------------
  179. # Recursive rules
  180. #----------------------------------------------------------------------
  181. $(addprefix $(buildbindir)/, $(addsuffix $(CFG_SUFFIX), $(PROGS))): 
  182.     $(addprefix $(buildbindir)/, 
  183.       $(patsubst %.s, %$(CFG_SUFFIX).o, $(filter %.s, $($(DEPS)))) 
  184.       $(patsubst %.c, %$(CFG_SUFFIX).o, $(filter %.c, $($(DEPS)))) 
  185.       $(patsubst %.cc, %$(CFG_SUFFIX).o, $(filter %.cc, $($(DEPS)))) 
  186.       $(patsubst %.cpp, %$(CFG_SUFFIX).o, $(filter %.cpp, $($(DEPS)))) 
  187.       $(patsubst %.C, %$(CFG_SUFFIX).o, $(filter %.C, $($(DEPS)))))
  188.       $(LINK.cc) $(filter %$(CFG_SUFFIX).o, $^) -o $@ $(LDLIBS) $(PROJ_LDLIBS) $(LDLIBS_$(OS))
  189.       -$(CHMOD) $(CHMODFLAGSX) $@
  190. $(addprefix $(buildlibdir)/, $(patsubst %, lib%$(CFG_SUFFIX).a, $(STATIC_LIBS) $(LIBS))): 
  191.     $(addprefix $(buildlibdir)/, 
  192.       $(patsubst %.s, %$(CFG_SUFFIX).o, $(filter %.s, $($(DEPS)))) 
  193.       $(patsubst %.c, %$(CFG_SUFFIX).o, $(filter %.c, $($(DEPS)))) 
  194.       $(patsubst %.cc, %$(CFG_SUFFIX).o, $(filter %.cc, $($(DEPS)))) 
  195.       $(patsubst %.cpp, %$(CFG_SUFFIX).o, $(filter %.cpp, $($(DEPS)))) 
  196.       $(patsubst %.C, %$(CFG_SUFFIX).o, $(filter %.C, $($(DEPS)))))
  197. $(RM) $@
  198. $(AR) $(ARFLAGS) $@ $^
  199. -$(CHMOD) $(CHMODFLAGS) $@
  200. $(addprefix $(buildlibdir)/, $(patsubst %, lib%$(CFG_SUFFIX).so, $(LIBS))): 
  201.     $(addprefix $(buildlibdir)/, 
  202.       $(patsubst %.s, %$(CFG_SUFFIX).o, $(filter %.s, $($(DEPS)))) 
  203.       $(patsubst %.c, %$(CFG_SUFFIX).o, $(filter %.c, $($(DEPS)))) 
  204.       $(patsubst %.cc, %$(CFG_SUFFIX).o, $(filter %.cc, $($(DEPS)))) 
  205.       $(patsubst %.cpp, %$(CFG_SUFFIX).o, $(filter %.cpp, $($(DEPS)))) 
  206.       $(patsubst %.C, %$(CFG_SUFFIX).o, $(filter %.C, $($(DEPS)))))
  207. $(LINK.cc) $(LDFLAGS_SHARED) $(filter %$(CFG_SUFFIX).o, $^) -o $@.$(LIBVER) $(LDLIBS)
  208. -$(CHMOD) $(CHMODFLAGSX) $@.$(LIBVER)
  209. $(RM) $@
  210. ln -s $(patsubst $(buildlibdir)/%,%, $@).$(LIBVER) $@
  211. #----------------------------------------------------------------------
  212. # Object File compilation Rules
  213. #----------------------------------------------------------------------
  214. $(buildbindir)/%$(CFG_SUFFIX).o: %.c
  215. $(COMPILE.c)  $(addprefix ${PWD}/,$<) -o $@
  216. -$(CHMOD) $(CHMODFLAGS) $@
  217. $(buildbindir)/%$(CFG_SUFFIX).o: %.cc
  218. $(COMPILE.cc)  $(addprefix ${PWD}/, $<) -o $@
  219. -$(CHMOD) $(CHMODFLAGS) $@
  220. $(buildbindir)/%$(CFG_SUFFIX).o: %.cpp
  221. $(COMPILE.cc)  $(addprefix ${PWD}/, $<) -o $@
  222. -$(CHMOD) $(CHMODFLAGS) $@
  223. $(buildbindir)/%$(CFG_SUFFIX).o: %.C
  224. $(COMPILE.C)  $(addprefix ${PWD}/, $<) -o $@
  225. -$(CHMOD) $(CHMODFLAGS) $@
  226. $(buildlibdir)/%$(CFG_SUFFIX).o: %.c
  227. $(COMPILE.c)  $(addprefix ${PWD}/, $<) -o $@ 
  228. -$(CHMOD) $(CHMODFLAGS) $@
  229. $(buildlibdir)/%$(CFG_SUFFIX).o: %.cc
  230. $(COMPILE.cc) $(addprefix ${PWD}/, $<) -o $@
  231. -$(CHMOD) $(CHMODFLAGS) $@
  232. $(buildlibdir)/%$(CFG_SUFFIX).o: %.cpp
  233. $(COMPILE.cc) $(addprefix ${PWD}/, $<) -o $@
  234. -$(CHMOD) $(CHMODFLAGS) $@
  235. $(buildlibdir)/%$(CFG_SUFFIX).o: %.C
  236. $(COMPILE.C)  $(addprefix ${PWD}/, $<) -o $@
  237. -$(CHMOD) $(CHMODFLAGS) $@
  238. $(buildlibdir)/%$(CFG_SUFFIX).o: %.s
  239. $(AS) $(ASFLAGS) -o $@ $<
  240. -$(CHMOD) $(CHMODFLAGS) $@
  241. #----------------------------------------------------------------------
  242. # Additional LDFLAGS rules 
  243. #----------------------------------------------------------------------
  244. ifdef NO_DEF_FILES
  245. LDEXPORTS =
  246. endif
  247. ifdef EXPLICIT_DEF_FILES
  248. LDEXPORTS = --version-script $(buildlibdir)/$(patsubst %.def,%.ver, $(notdir $($(TARGET)_DEF)))
  249. endif
  250. ifndef BUILDING_STUB_SO
  251. LDFOLLOWLINKS = -Wl,-h,$(notdir $@).$(LIBVER)
  252. endif
  253. LDFLAGS_SHARED += $(LDEXPORTS) $(LDFOLLOWLINKS)