1 #
2 # This file is the makefile for building PCIE ibrary.
3 #
4 # Copyright (c) Texas Instruments Incorporated 2016
5 #
6 include $(PDK_INSTALL_PATH)/ti/build/Rules.make
8 COMP = drvpcie
10 XDC = $(XDC_INSTALL_PATH)/xdc
12 # check if we need to limit the Build to limitted SOCS
13 ifdef LIMIT_BOARDS
14 BOARD_LIST_ALL = $(filter $(LIMIT_BOARDS), $($(COMP)_BOARDLIST))
15 else
16 BOARD_LIST_ALL = $($(COMP)_BOARDLIST)
17 endif
19 # check if we need to limit the Build to limitted SOCS
20 ifdef LIMIT_SOCS
21 SOC_LIST_ALL = $(filter $(LIMIT_SOCS), $($(COMP)_SOCLIST))
22 else
23 SOC_LIST_ALL = $($(COMP)_SOCLIST)
24 endif
26 # check if we need to limit the build to limitted cores
27 ifdef LIMIT_CORES
28 CORE_LIST_ALL = $(filter $(LIMIT_CORES), $($(COMP)_$(SOC)_CORELIST))
29 else
30 CORE_LIST_ALL = $($(COMP)_$(SOC)_CORELIST)
31 endif
33 lib_SOC_LIST_ALL = $(addsuffix _lib, $(SOC_LIST_ALL))
34 lib_CORE_LIST_ALL = $(addsuffix _lib, $(CORE_LIST_ALL))
35 lib_LIB_ENDIAN_LIST = $(addsuffix _lib, $(LIB_ENDIAN_LIST))
36 lib_SOC_LIST_ALL_CLEAN = $(addsuffix _lclean, $(SOC_LIST_ALL))
37 lib_CORE_LIST_ALL_CLEAN = $(addsuffix _lclean, $(CORE_LIST_ALL))
38 lib_LIB_ENDIAN_LIST_CLEAN = $(addsuffix _lclean, $(LIB_ENDIAN_LIST))
40 app_BOARD_LIST_ALL = $(addsuffix _app, $(BOARD_LIST_ALL))
41 app_CORE_LIST_ALL = $(addsuffix _app, $(CORE_LIST_ALL))
42 app_LIB_ENDIAN_LIST = $(addsuffix _app, $(LIB_ENDIAN_LIST))
43 app_BOARD_LIST_ALL_CLEAN = $(addsuffix _aclean, $(BOARD_LIST_ALL))
44 app_CORE_LIST_ALL_CLEAN = $(addsuffix _aclean, $(CORE_LIST_ALL))
45 app_LIB_ENDIAN_LIST_CLEAN = $(addsuffix _aclean, $(LIB_ENDIAN_LIST))
47 comp_PKG_LIST_ALL = $($(COMP)_EXAMPLE_LIST) $($(COMP)_LIB_LIST)
48 comp_LIB_LIST_CLEAN = $(addsuffix _clean, $($(COMP)_LIB_LIST))
49 comp_EXAMPLE_LIST_CLEAN = $(addsuffix _clean, $($(COMP)_EXAMPLE_LIST))
50 comp_PKG_LIST_ALL_CLEAN = $(addsuffix _clean, $(comp_PKG_LIST_ALL))
51 comp_PKG_LIST_PACKAGE = $(addsuffix _package, $(comp_PKG_LIST_ALL))
53 .PHONY : apps appcores app_clean clean_appcores \
54 lib libcores lib_allendians lib_clean clean_libcores clean_lib_allendians \
55 all comp_libs comp_libs_clean examples examples_clean clean package $(comp_PKG_LIST_ALL) \
56 doxygen release tar lib lib_clean $(lib_CORE_LIST_ALL_CLEAN) $(lib_LIB_ENDIAN_LIST_CLEAN) \
57 $(lib_SOC_LIST_ALL) $(lib_CORE_LIST_ALL) $(lib_LIB_ENDIAN_LIST) $(lib_SOC_LIST_ALL_CLEAN) \
58 $(app_BOARD_LIST_ALL) $(app_CORE_LIST_ALL) $(app_BOARD_LIST_ALL_CLEAN) $(app_CORE_LIST_ALL_CLEAN)
61 all: lib
63 clean: lib_clean
65 $(lib_SOC_LIST_ALL):
66 $(MAKE) libcores SOC=$(subst _lib,,$@)
68 $(lib_CORE_LIST_ALL):
69 $(MAKE) lib_allendians CORE=$(subst _lib,,$@) BUILD_PROFILE_$(subst _lib,,$@)=$(BUILD_PROFILE)
71 $(lib_LIB_ENDIAN_LIST):
72 $(MAKE) comp_libs ENDIAN=$(subst _lib,,$@)
74 $(lib_SOC_LIST_ALL_CLEAN):
75 $(MAKE) clean_libcores SOC=$(subst _lclean,,$@)
77 $(lib_CORE_LIST_ALL_CLEAN):
78 $(MAKE) clean_lib_allendians CORE=$(subst _lclean,,$@) BUILD_PROFILE_$(subst _lclean,,$@)=$(BUILD_PROFILE)
80 $(lib_LIB_ENDIAN_LIST_CLEAN):
81 $(MAKE) comp_libs_clean ENDIAN=$(subst _lclean,,$@)
83 $(app_BOARD_LIST_ALL):
84 $(MAKE) appcores BOARD=$(subst _app,,$@)
86 $(app_CORE_LIST_ALL):
87 $(MAKE) examples CORE=$(subst _app,,$@) BUILD_PROFILE_$(subst _app,,$@)=$(BUILD_PROFILE);
89 $(app_BOARD_LIST_ALL_CLEAN):
90 $(MAKE) clean_appcores BOARD=$(subst _aclean,,$@)
92 $(app_CORE_LIST_ALL_CLEAN):
93 $(MAKE) examples_clean CORE=$(subst _aclean,,$@) BUILD_PROFILE_$(subst _aclean,,$@)=$(BUILD_PROFILE)
95 xdc_meta:
96 $(XDC) XDCBUILDCFG=config_mk.bld
98 xdc_meta_clean:
99 $(XDC) clean XDCBUILDCFG=config_mk.bld
101 doxygen:
102 $(ECHO) Creating Doxygen API guide ...
103 @doxygen docs/Doxyfile
105 clean_doxygen:
106 $(ECHO) cleaned Doxygen API guide ...
107 $(RM) -rf docs/doxygen
109 tar: lib xdc_meta doxygen
110 $(ECHO) Creating the Release Tar ball for $(COMP)...
111 $(XDC) clean XDCBUILDCFG=config_mk.bld
112 $(XDC) release XDCBUILDCFG=config_mk.bld
113 $(ECHO) please check $(COMP)/packages folder for the release tarball
115 lib: $(lib_SOC_LIST_ALL)
117 libcores: $(lib_CORE_LIST_ALL)
119 lib_allendians: $(lib_LIB_ENDIAN_LIST)
121 lib_clean: $(lib_SOC_LIST_ALL_CLEAN)
123 clean_libcores:$(lib_CORE_LIST_ALL_CLEAN)
125 clean_lib_allendians: $(lib_LIB_ENDIAN_LIST_CLEAN)
127 apps: $(app_BOARD_LIST_ALL)
129 appcores: $(app_CORE_LIST_ALL)
131 app_clean: $(app_BOARD_LIST_ALL_CLEAN)
133 clean_appcores: $(app_CORE_LIST_ALL_CLEAN)
135 comp_all: lib_allendians examples
137 comp_clean: clean_lib_allendians examples_clean
139 comp_libs: $($(COMP)_LIB_LIST)
141 comp_libs_clean: $(comp_LIB_LIST_CLEAN)
143 examples: $($(COMP)_EXAMPLE_LIST)
145 examples_clean: $(comp_EXAMPLE_LIST_CLEAN)
147 package: $(comp_PKG_LIST_PACKAGE)
149 release: all tar
151 #=================================================================
152 #COMP libs and tests
153 $(comp_PKG_LIST_ALL):
154 $(if $(filter $(SOC), $(subst emptyreplacement,,$($@_SOCLIST))),\
155 $(if $(filter $(CORE), $(subst emptyreplacement,,$($@_$(SOC)_CORELIST))),\
156 $(if $(filter yes, $(subst emptyreplacement,,$($@_XDC_CONFIGURO))),\
157 $(MAKE) -C $($@_PATH) $($@_MAKEFILE) xdc_configuro,),),)
158 $(if $(filter $(SOC), $(subst emptyreplacement,,$($@_SOCLIST))),\
159 $(if $(filter $(CORE), $(subst emptyreplacement,,$($@_$(SOC)_CORELIST))),\
160 $(MAKE) -C $($@_PATH) $($@_MAKEFILE),$(ECHO) Nothing to be done for $(SOC) $(CORE) $@),$(ECHO) Nothing to be done for $(SOC) $@)
162 $(comp_PKG_LIST_ALL_CLEAN):
163 $(if $(filter $(SOC), $(subst emptyreplacement,,$($(subst _clean,,$@)_SOCLIST))),\
164 $(MAKE) -C $($(subst _clean,,$@)_PATH) $($(subst _clean,,$@)_MAKEFILE) clean,)
166 $(comp_PKG_LIST_PACKAGE):
167 $(if $(filter $(SOC), $(subst emptyreplacement,,$($(subst _package,,$@)_SOCLIST))),\
168 $(MAKE) -C $($(subst _package,,$@)_PATH) $($(subst _package,,$@)_MAKEFILE) package,$(ECHO) Nothing to be done for $(SOC) $(subst _package,,$@))
170 #Below is used only for checking c++ build errors during development, not to be used for any other purpose
171 cplusplus_build:
172 $(MAKE) all BUILD_PROFILE=debug CPLUSPLUS_BUILD=yes
174 # Nothing beyond this point