1 ################################################################################
2 # Copyright (c) [2017-2019] [Radisys] #
4 # Licensed under the Apache License, Version 2.0 (the "License"); #
5 # you may not use this file except in compliance with the License. #
6 # You may obtain a copy of the License at #
8 # http://www.apache.org/licenses/LICENSE-2.0 #
10 # Unless required by applicable law or agreed to in writing, software #
11 # distributed under the License is distributed on an "AS IS" BASIS, #
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
13 # See the License for the specific language governing permissions and #
14 # limitations under the License. #
15 ################################################################################
19 # Identify the location our software which is used by rest
20 # of the build scripts
22 include ../common/rsys_fancy.mak
23 include ../common/env.mak
30 CPUINFO=`cat /proc/cpuinfo | grep processor| wc -l`
34 NUM_PARALLEL=$(shell echo $(CPUINFO) - 1 |bc)
38 NUM_PARALLEL=$(shell echo $(CPUINFO) + 2 |bc)
41 PARALLEL_COMP=-j $(NUM_PARALLEL)
43 # Different options to CPUH and CPUL builds
44 # # Other apsects of tool chain set here
45 # # These should be made available appropriately to the builds
46 ifeq ($(MACHINE),BIT64)
48 CC_STRIP =strip --strip-all
54 CC_STRIP =strip --strip-all
69 #-----------------------------------------------------------------------
70 # macro for output file name and makefile name
73 PLTFRM_FLAGS= -UMSPD -DODU #-DEGTP_TEST
76 PLTFRM_FLAGS += -DMODE=TDD
78 ifeq ($(CA_ENABLE),YES)
79 PLTFRM_FLAGS += -DCA_ENABLE=YES
82 ifeq ($(NODE),CU_STUB)
83 PLTFRM_FLAGS+=-DODU_TEST_STUB
86 # The include options get merged with the options needed by
87 # # the called makefiles and hence we export these to make them
88 # # available to them.
91 # The called makefiles depend on these macros and these need to be exported
97 # Add to the linker options the platform specific components
98 #L_OPTS+=-lnsl -lrt -lm -lpthread -lsctp
99 L_OPTS+=-lnsl -lrt -lm -lpthread -lsctp
101 # Export some of the flags expected from the command line.
102 # # These macros are made available for the makefiles called from this makefile
112 @echo -e "******************************************************************"
113 @echo -e "BUILD COMMAND DESCRIPTION "
114 @echo -e "------------------------------------------------------------------"
115 @echo -e "$(RULE)odu - Builds all components of ODU$(NORM)"
116 @echo -e "$(RULE)cu_stub - Builds all CU Stub$(NORM)"
117 @echo -e "$(RULE)clean_odu - clean up ODU$(NORM)"
118 @echo -e "$(RULE)clean_cu - clean up CU Stub$(NORM)"
119 @echo -e "$(RULE)clean_all - cleanup everything$(NORM)"
120 @echo -e "$(OPTS) options: $(NORM)"
121 @echo -e "$(OPTS) MACHINE=BIT64/BIT32 - Default is BIT32$(NORM)"
122 @echo -e "$(OPTS) NODE=CU_STUB - Mandatory option for cu_stub$(NORM)"
123 @echo -e "$(OPTS) MODE=TDD - If not specified, MODE=FDD$(NORM)"
124 @echo -e "******************************************************************"
127 $(Q)echo -e "Preparing directories for build..."
128 $(Q)mkdir -p $(BUILD_DIR)/obj/odu
129 $(Q)mkdir -p $(LIB_ROOT)/odu
130 $(Q)mkdir -p $(ROOT_DIR)/libs/
131 $(Q)mkdir -p $(BIN_DIR)/odu
132 $(Q)mkdir -p $(ROOT_DIR)/bin
133 $(Q)echo -e "Directories are successfully prepared"
136 $(Q)echo -e "Preparing directories for build..."
137 $(Q)mkdir -p $(BUILD_DIR)/obj/cu_stub
138 $(Q)mkdir -p $(LIB_ROOT)/cu_stub
139 $(Q)mkdir -p $(BIN_DIR)/cu_stub
140 $(Q)echo -e "Directories are successfully prepared"
143 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_common.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
144 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_f1ap.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
145 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_sysinfo.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
146 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/du_app.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
147 #$(Q)$(MAKE) -f $(COM_BUILD_DIR)/f1ap.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
148 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/kw.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
149 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/cm.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
150 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/mac.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
151 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/sch.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
152 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/mt.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
153 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/rl.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
154 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/phy_stub.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
157 $(Q)$(CC1) -g -o $(OBJ_ROOT)/odu/odu -Wl,-R../lib/:. $(OBJ_ROOT)/odu/*.o\
158 $(L_OPTS) -L$(LIB_ROOT)/odu -L$(ROOT_DIR)/libs/odu
161 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/du_app.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
162 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_common.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
163 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_f1ap.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
164 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_sysinfo.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
165 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/kw.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
166 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/cm.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
167 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/mac.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
168 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/sch.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
169 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/mt.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
170 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/rl.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
171 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/phy_stub.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
172 $(Q)rm -rf $(OBJ_ROOT)/odu/*
173 $(Q)rm -rf $(LIB_ROOT)/odu/*
174 $(Q)rm -rf $(BIN_DIR)/odu/*
175 $(Q)rm -rf $(ROOT_DIR)/bin/odu
176 $(Q)echo -e "***** ODU CLEAN COMPLETE *****"
178 clean_all: clean_odu clean_cu
179 $(Q)rm -rf $(OBJ_ROOT)
180 $(Q)rm -rf $(LIB_ROOT)
181 $(Q)rm -rf $(LOG_ROOT)
182 $(Q)rm -rf $(BIN_DIR)
183 $(Q)rm -rf $(ROOT_DIR)/bin
184 $(Q)rm -rf $(ROOT_DIR)/libs
187 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/cu_stub.mak OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
188 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_common.mak OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
189 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_f1ap.mak OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
190 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_sysinfo.mak OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
191 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/cm.mak OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
192 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/mt.mak OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
195 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/cu_stub.mak clean OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
196 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_common.mak clean OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
197 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_f1ap.mak clean OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
198 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_sysinfo.mak clean OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
199 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/cm.mak clean OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
200 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/mt.mak clean OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
201 $(Q)rm -rf $(OBJ_ROOT)/cu_stub/*
202 $(Q)rm -rf $(LIB_ROOT)/cu_stub/*
203 $(Q)rm -rf $(BIN_DIR)/cu_stub/*
204 $(Q)rm -rf $(ROOT_DIR)/bin/cu_stub
205 $(Q)echo -e "***** CU STUB CLEAN COMPLETE *****"
208 $(Q)$(CC1) -g -o $(OBJ_ROOT)/cu_stub/cu_stub -Wl,-R../lib/:. $(OBJ_ROOT)/cu_stub/*.o\
209 $(L_OPTS) -L$(LIB_ROOT)/cu_stub -L$(ROOT_DIR)/libs/cu_stub
210 $(Q)cp -f ./obj/cu_stub/cu_stub ./bin/cu_stub
211 $(Q)cp -rf ./bin/cu_stub $(ROOT_DIR)/bin/
212 $(Q)cp -f ../scripts/cu_script.sh $(ROOT_DIR)/bin/cu_stub
213 $(Q)echo -e "***** CU STUB BUILD COMPLETE *****"
216 $(Q)cp -f ./obj/odu/odu ./bin/odu
217 $(Q)cp -rf ./bin/odu $(ROOT_DIR)/bin/
218 $(Q)cp -f ../scripts/odu_script.sh $(ROOT_DIR)/bin/odu
219 $(Q)cp -f ./lib/odu/*.a $(ROOT_DIR)/libs/
220 $(Q)echo -e "***** BUILD COMPLETE *****"
222 odu: prepare_dirs copy_build
224 cu_stub: prepare_cu_dirs cu link_cu