serenia

Rules.mk

Jun 8th, 2019
249
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.11 KB | None | 0 0
  1.  
  2. .PHONY: dummy
  3.  
  4. X_INSTALL ?= n #### set "is do install action, =n, do install, =y, don't install
  5.  
  6. first_rule: pre_target sub_dirs all_targets
  7.  
  8. all: pre_target sub_dirs all_targets
  9.  
  10. ## add by yellow
  11. ## at
  12. ## host_tools
  13. ## router/open_source
  14. ## router/thirdparty_source
  15. ## router/cybertan_source,
  16. ## dynamic create symbolink to pkgs/*
  17. ##
  18. ifdef pkg-y
  19. PKGS_LN = $(foreach p,$(pkg-y),$(if $(wildcard pkgs/$(p)),$(p)))
  20. pkgs-list += $(patsubst %,_symln_%,$(PKGS_LN))
  21. subdir_ln-y += $(foreach p,$(PKGS_LN),$(notdir $(call get_package_without_version,$(p))))
  22.  
  23. get_package_without_version = $(shell echo $(1) | sed -e 's,-[vV0-9].*$$,,')
  24. $(pkgs-list): dummy
  25. if [ -e $(notdir $(call get_package_without_version,$(patsubst _symln_%,%,$@))) ]; then \
  26. /bin/rm -rf $(notdir $(call get_package_without_version,$(patsubst _symln_%,%,$@))); \
  27. fi
  28. ln -sf pkgs/$(patsubst _symln_%,%,$@) \
  29. $(notdir $(call get_package_without_version,$(patsubst _symln_%,%,$@)));
  30. echo "subdir_ln-y += $(notdir $(call get_package_without_version,$(patsubst _symln_%,%,$@)))" >> pkgs_ln.mk
  31. endif
  32. # board specific defines
  33.  
  34. # general
  35. SUB_DIRS = $(subdir_ln-y) $(subdir-y)
  36. CFLAGS += $(CY_CFLAGS) $(cflags-y)
  37. LDFLAGS += $(ldflags-y)
  38. LDFLAGS_O += $(ldflags_o-y)
  39. LDFLAGS_SO += $(ldflags_so-y)
  40. LDFLAGS_EXE += $(ldflags_exe-y)
  41.  
  42. #INSTALL_FLAGS += $(install_flags-y)
  43.  
  44. SRCDIR = $(TOPDIR)/src
  45. INCLUDE = $(SRCDIR)/include
  46. CMLIBDIR = $(SRCDIR)/lib
  47.  
  48. # main directory list
  49. subdir-list = $(patsubst %, _subdir_%, $(SUB_DIRS))
  50. subdir-list-install = $(patsubst %, _subdir_install%, $(SUB_DIRS))
  51. subdir-list-clean = $(patsubst %, _subdir_clean%, $(shell for subd in $(SUB_DIRS); do tmp_subd="$${subd} $${tmp_subd}"; done; echo $${tmp_subd} ))
  52.  
  53. sub_dirs: dummy $(subdir-list)
  54.  
  55. ifdef SUB_DIRS
  56.  
  57. get_subdir:
  58. echo "$(SUB_DIRS)"
  59.  
  60.  
  61. $(subdir-list) : dummy
  62. if [ -f $(patsubst _subdir_%,%,$@)/Makefile.cyt ]; then \
  63. $(MAKE) -C $(patsubst _subdir_%,%,$@) -f Makefile.cyt; \
  64. else \
  65. $(MAKE) -C $(patsubst _subdir_%,%,$@); \
  66. fi
  67.  
  68. #$(subdir-list-install): pre_install
  69. $(subdir-list-install):
  70. if [ -e $(FW_IMAGE_DIR) ]; then rm -rf $(FW_IMAGE_DIR); fi
  71. install -d $(FW_IMAGE_DIR)
  72. if [ -f $(patsubst _subdir_install%,%,$@)/Makefile.cyt ]; then \
  73. $(MAKE) -C $(patsubst _subdir_install%,%,$@) -f Makefile.cyt install; \
  74. else \
  75. $(MAKE) -C $(patsubst _subdir_install%,%,$@) install; \
  76. fi
  77.  
  78. $(subdir-list-clean) :
  79. if [ -e $(patsubst _subdir_clean%,%,$@) ]; then \
  80. if [ -f $(patsubst _subdir_clean%,%,$@)/Makefile.cyt ]; then \
  81. $(MAKE) -C $(patsubst _subdir_clean%,%,$@) -f Makefile.cyt \
  82. clean; \
  83. else \
  84. $(MAKE) -C $(patsubst _subdir_clean%,%,$@) clean; \
  85. fi; \
  86. fi
  87.  
  88.  
  89. pre_install: dummy
  90. if [ -n "$(INSTALLDIR)" ]; then \
  91. if [ -e "$(INSTALLDIR)" ]; then /bin/rm -rf $(INSTALLDIR); fi
  92. install -d $(INSTALLDIR)/sbin; \
  93. fi
  94.  
  95.  
  96. #install:
  97. install: $(subdir-list-install)
  98.  
  99. endif
  100.  
  101. # dependency directory list
  102. dep-subdir-list = $(patsubst %, dep_subdir_%, $(SUB_DIRS))
  103. dep-sub_dirs: dummy $(dep-subdir-list)
  104.  
  105. ifdef SUB_DIRS
  106. $(dep-subdir-list) : dummy
  107. @ $(MAKE) -C $(patsubst dep_subdir_%,%,$@) dep
  108. endif
  109.  
  110. #SRC_FILES=$(shell ls *.c 2> /dev/null)
  111. SRC_FILES = $(wildcard *.c)
  112.  
  113. dep-files-list = $(patsubst %, dep_file_%, $(SRC_FILES))
  114. dep-files: emptydep $(dep-files-list)
  115.  
  116. emptydep:
  117. @ > .depend
  118.  
  119. ifdef SRC_FILES
  120. $(dep-files-list) : dummy
  121. @ $(CC) $(CFLAGS) -MM $(patsubst dep_file_%,%,$@) >> .depend
  122. endif
  123.  
  124. dep: dep-sub_dirs dep-files
  125.  
  126. # all binary targets
  127. all_targets: $(O_TARGET) $(SO_TARGET) $(A_TARGET) $(TARGET) $(EXTRA_TARGET)
  128.  
  129. ifdef O_TARGET
  130. #ifdef obj-y
  131. $(O_TARGET) : $(obj-y) $(obj_o-y) $(depend_o-y)
  132. rm -f $@
  133. $(LD) -r -o $@ $(filter $(obj-y) $(obj_o-y), $^) $(LDFLAGS_O) $(LDFLAGS)
  134. #endif
  135. endif
  136.  
  137. ifdef TARGET
  138. #ifdef obj-y
  139. $(TARGET) : $(obj-y) $(obj_exe-y) $(depend_exe-y)
  140. rm -f $@
  141. $(CC) -o $@ $(filter $(obj-y) $(obj_exe-y), $^) $(LDFLAGS_EXE) $(LDFLAGS)
  142. #endif
  143. endif
  144.  
  145. ifdef A_TARGET
  146. #ifdef obj-y
  147. $(A_TARGET): $(obj-y) $(obj_a-y) $(depend_a-y)
  148. rm -f $@
  149. $(AR) rc $@ $(filter $(obj-y) $(obj_a-y), $^)
  150. $(RANLIB) $@
  151. #endif
  152. endif
  153.  
  154. ifdef SO_TARGET
  155. #ifdef obj-y
  156. $(SO_TARGET): $(obj-y) $(obj_so-y) $(depend_so-y)
  157. rm -f $@
  158. $(CC) -shared -o $@ $(filter $(obj-y) $(obj_so-y), $^) $(LDFLAGS_SO) $(LDFLAGS)
  159. #endif
  160. endif
  161.  
  162. # clean
  163. #clean: $(subdir-list-clean)
  164. clean: $(subdir-list-clean)
  165. ifdef subdir_ln-y
  166. #ifneq ($(wildcard pkgs),)
  167. ifneq ($(wildcard $(CY_PROFILE)/pkgs.mk),)
  168. @echo "subdir_ln-y: rm -rf $(subdir_ln-y)"
  169. /bin/rm -rf $(subdir_ln-y)
  170. /bin/rm -rf pkgs_ln.mk
  171. endif
  172. endif
  173.  
  174. delete_obj: dummy
  175. find . \( -name '*.[oas]' -o -name core -o -name '*~' -o -name '.*~' -o -name '.#*' -o -name '*.so' \) -type f -print | xargs rm -f
  176. find . \( -name '*.depend' \) -type f -print | xargs rm -f
  177.  
  178. #pre_target:
  179. pre_target: $(pkgs-list)
  180. echo "PWD = $(PWD)"
  181. echo "NOW = $(NOW)"
  182.  
  183. dummy:
  184.  
  185.  
  186. ifneq ($(wildcard .depend),)
  187. include .depend
  188. endif
  189. %.o: .%.depend
  190. .%.depend: %.c
  191. $(CC) $(CFLAGS) -M $< > $@
  192.  
  193. -include $(obj-y:%.o=.%.depend)
  194. -include $(obj_o-y:%.o=.%.depend)
  195. -include $(obj_exe-y:%.o=.%.depend)
  196. -include $(obj_a-y:%.o=.%.depend)
  197. -include $(obj_so-y:%.o=.%.depend)
Add Comment
Please, Sign In to add comment