Added code for MAC-PHY interface, DU_APP, F1AP, SCTP and CU stub
[o-du/l2.git] / build / odu / makefile
1 ################################################################################
2 #   Copyright (c) [2017-2019] [Radisys]                                        #
3 #                                                                              #
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                                    #
7 #                                                                              #
8 #       http://www.apache.org/licenses/LICENSE-2.0                             #
9 #                                                                              #
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 ################################################################################
16
17 # Master makefile
18
19 # Identify the location our software which is used by rest
20 # of the build scripts
21
22 include ../common/rsys_fancy.mak
23 include ../common/env.mak
24
25 RULE=$(COLOR_RED)
26 OPTS=$(COLOR_GREEN)
27 NORM=$(REVERT_COLOR)
28
29 # For improved speed
30 CPUINFO=`cat /proc/cpuinfo | grep processor| wc -l`
31 ifeq ($(CPUINFO), 1)
32    NUM_PARALLEL=1
33 else
34       NUM_PARALLEL=$(shell echo $(CPUINFO) - 1 |bc)
35 endif
36
37 ifeq ($(FAST), 1)
38       NUM_PARALLEL=$(shell echo $(CPUINFO) + 2 |bc)
39 endif
40
41 PARALLEL_COMP=-j $(NUM_PARALLEL)
42
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)
47 CC          =gcc -m64
48 CC_STRIP    =strip --strip-all
49 CC_LINKER   =gcc -m64
50 CCPP        =g++ -m64
51 CCPP_LINKER =g++ -m64
52 else
53 CC          =gcc -m32
54 CC_STRIP    =strip --strip-all
55 CC_LINKER   =gcc -m32
56 CCPP        =g++ -m32
57 CCPP_LINKER =g++ -m32
58 endif
59
60 CC1= $(CC)
61 CCPP1= $(CCPP)
62
63 ifeq ($(MODE),TDD)
64 CNM_ENABLE = YES
65 else
66 CNM_ENABLE=NO
67 endif
68
69 #-----------------------------------------------------------------------
70 # macro for output file name and makefile name
71 #
72
73 prepare_dirs:
74         $(Q)echo -e "Preparing directories for build..."
75         $(Q)mkdir -p $(BUILD_DIR)/obj/odu
76         $(Q)mkdir -p $(LOG_ROOT)/odu
77         $(Q)mkdir -p $(LIB_ROOT)/odu
78         $(Q)echo -e "Directories are successfully prepared"
79
80 PLTFRM_FLAGS= -UMSPD -DODU
81
82 ifeq ($(MODE),TDD)
83    PLTFRM_FLAGS += -DMODE=TDD
84 endif
85 ifeq ($(CA_ENABLE),YES)
86    PLTFRM_FLAGS += -DCA_ENABLE=YES
87 endif
88
89 # The include options get merged with the options needed by
90 # # the called makefiles and hence we export these to make them
91 # # available to them.
92 BUILD=i686-linux
93
94 # The called makefiles depend on these macros and these need to be exported
95 export PLTFRM
96 export PLTFRM_FLAGS
97 export BUILD
98 export I_OPTS
99
100 # Add to the linker options the platform specific components
101 L_OPTS+=-lnsl -lrt -lm -lpthread -lsctp
102
103 # Export some of the flags expected from the command line.
104 # # These macros are made available for the makefiles called from this makefile
105 export BOARD
106 export MACHINE
107 export MODE
108 export OAM_ENABLE
109 export CNM_ENABLE
110 export TEXT_LOG
111 export CA_ENABLE
112
113 help:
114                 @echo -e "******************************************************************"
115                 @echo -e "BUILD COMMAND            DESCRIPTION                              "
116                 @echo -e "------------------------------------------------------------------"
117                 @echo -e "$(RULE)odu - Builds all components of ODU$(NORM)"
118                 @echo -e "$(OPTS)  options: $(NORM)"
119                 @echo -e "$(OPTS)    MACHINE=BIT64/BIT32  - Default is BIT32$(NORM)"
120                 @echo -e "$(OPTS)    TEXT_LOG=YES   - With text logging instead of binary$(NORM)"
121                 @echo -e "$(OPTS)    MODE=TDD       - If not specified, MODE=FDD$(NORM)"
122                 @echo -e "$(RULE)clean_all         tdd cleanup everything$(NORM)"
123                 @echo -e "******************************************************************"
124
125 du:
126                 $(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)'
127                 $(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)'
128                 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
129                 $(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)'
130                 $(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)'
131                 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/rg.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
132                 $(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)'
133                 $(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)'
134                 $(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)'
135
136 clean: 
137                 $(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)'
138                 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/f1ap.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
139                 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
140                 $(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)'
141                 $(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)'
142                 $(Q)$(MAKE) -f $(COM_BUILD_DIR)/rg.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
143                 $(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)'
144                 $(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)'
145                 $(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)'
146
147 clean_all: clean
148                           $(Q)rm -rf $(OBJ_ROOT)
149                           $(Q)rm -rf $(LIB_ROOT)
150                           $(Q)rm -rf $(LOG_ROOT)
151                           $(Q)rm -rf bin
152 link_all: du
153                    $(Q)$(CC1) -g -o $(OBJ_ROOT)/odu/odu -Wl,-R../lib/:. $(OBJ_ROOT)/odu/*.o\
154                         $(L_OPTS) -L$(LIB_ROOT)/odu -L$(ROOT_DIR)/libs/odu 
155
156 odu: prepare_dirs copy_build
157
158 copy_build: link_all
159                    $(Q)mkdir -p bin  bin/config bin/odu bin/scripts
160 ifneq ($(TEXT_LOG), YES)
161                         $(Q)cp -f ./obj/odu/rlogapp bin/odu
162                         $(Q)cat $(LOG_ROOT)/odu/*.db > $(LOG_ROOT)/odu/rlog.logdb
163                         $(Q)cp -f $(LOG_ROOT)/odu/rlog.logdb odu/bin/
164                         $(Q)echo -e "Completed generation of log database"
165 endif
166                         $(Q)cp -f ./obj/odu/odu ./bin/odu
167 #                       $(Q)cp -f ../config/wr_cfg_fdd.txt ./odu/bin/wr_cfg.txt
168 #                       $(Q)cp -f ../config/ys_cfg.txt ./odu/bin/ys_cfg.txt
169                         $(Q)cp -f ../config/ssi_mem ./bin/config
170                         $(Q)cp -rf ./bin $(ROOT_DIR)/bin/
171                         $(Q)mkdir -p $(ROOT_DIR)/libs/
172                         $(Q)cp -f ./lib/odu/*.a $(ROOT_DIR)/libs/
173                    $(Q)echo -e "***** BUILD COMPLETE *****"