O-RAN E Maintenance Release contribution for ODULOW
[o-du/phy.git] / wls_lib / Makefile
1 ###############################################################################
2 #
3 #   Copyright (c) 2021 Intel.
4 #
5 #   Licensed under the Apache License, Version 2.0 (the "License");
6 #   you may not use this file except in compliance with the License.
7 #   You may obtain a copy of the License at
8 #
9 #       http://www.apache.org/licenses/LICENSE-2.0
10 #
11 #   Unless required by applicable law or agreed to in writing, software
12 #   distributed under the License is distributed on an "AS IS" BASIS,
13 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 #   See the License for the specific language governing permissions and
15 #   limitations under the License.
16 #
17 ###############################################################################
18
19 MYCUSTOMTAB='     '
20 MYCUSTOMSPACE='============================================================================================'
21 MYCUSTOMSPACE1='------------------------------------------------------------'
22
23 ##############################################################
24 #  Tools configuration
25 ##############################################################
26 CC  := icc
27 AS := as
28 AR := ar
29 LD := icc
30 OBJDUMP := objdump
31
32 ifeq ($(SHELL),cmd.exe)
33 MD := mkdir.exe -p
34 CP := cp.exe -f
35 RM := rm.exe -rf
36 else
37 MD := mkdir -p
38 CP := cp -f
39 RM := rm -rf
40 endif
41
42 PROJECT_NAME := libwls
43 PROJECT_TYPE := lib
44 PROJECT_DIR  := ./
45 BUILDDIR := make
46 PROJECT_BINARY := $(PROJECT_NAME).so
47
48 ifeq ($(RTE_SDK),)
49 $(error "Please define RTE_SDK environment variable")
50 endif
51
52 ifeq ($(MESON_BUILD),0)
53 RTE_INC := $(RTE_SDK)/$(RTE_TARGET)/include
54 else
55 RTE_INC := $(shell PKG_CONFIG_PATH=$(RTE_SDK)/build/meson-uninstalled pkg-config --cflags-only-I libdpdk)
56 endif
57
58 CC_SRC = wls_lib_dpdk.c \
59         syslib.c
60
61 CC_FLAGS += -std=gnu11 -Wall -Wno-deprecated-declarations  \
62         -fdata-sections \
63         -ffunction-sections \
64         -g \
65     -fPIC \
66         -Wall \
67         -Wimplicit-function-declaration \
68         -g -O3 -wd1786 -mcmodel=large
69
70 INC := -I$(RTE_INC)
71 DEF :=
72
73 AS_FLAGS :=
74 AR_FLAGS := rc
75
76 PROJECT_OBJ_DIR := $(BUILDDIR)/obj
77
78 CC_OBJS := $(patsubst %.c,%.o,$(CC_SRC))
79 AS_OBJS := $(patsubst %.s,%.o,$(AS_SRC))
80 OBJS    := $(CC_OBJS) $(AS_OBJS) $(LIBS)
81 DIRLIST := $(addprefix $(PROJECT_OBJ_DIR)/,$(sort $(dir $(OBJS))))
82
83 CC_OBJTARGETS := $(addprefix $(PROJECT_OBJ_DIR)/,$(CC_OBJS))
84
85 AS_OBJTARGETS := $(addprefix $(PROJECT_OBJ_DIR)/,$(AS_OBJS))
86 CC_FLAGS_FULL  := $(CC_FLAGS) $(INC) $(DEF)
87
88 AS_FLAGS := $(AS_FLAGS) $(INC)
89
90 PROJECT_DEP_FILE := $(PROJECT_OBJ_DIR)/$(PROJECT_NAME).dep
91
92 ifeq ($(wildcard $(PROJECT_DEP_FILE)),$(PROJECT_DEP_FILE))
93 GENERATE_DEPS :=
94 else
95
96 CC_DEPS  := $(addprefix __dep__,$(subst ../,__up__,$(CC_SRC)))
97 GENERATE_DEPS := generate_deps
98 endif
99
100 all : welcome_line      $(PROJECT_BINARY)
101         @echo $(PROJECT_BINARY)
102
103 .PHONY : clear_dep
104 clear_dep:
105         @$(RM) $(PROJECT_DEP_FILE)
106         @echo [DEP]   $(subst $(PROJECT_OBJ_DIR)/,,$(PROJECT_DEP_FILE))
107
108 $(CC_DEPS) :
109         @$(CC) -MM $(subst __up__,../,$(subst __dep__,,$@)) -MT $(PROJECT_OBJ_DIR)/$(patsubst %.c,%.o,$(subst __up__,../,$(subst __dep__,,$@))) $(CC_FLAGS_FULL) >> $(PROJECT_DEP_FILE)
110
111 .PHONY : generate_deps
112 generate_deps : clear_dep $(CC_DEPS)
113
114
115 .PHONY : echo_start_build
116 echo_start_build :
117         @echo [BUILD] $(PROJECT_TYPE) : $(PROJECT_NAME)
118
119 $(DIRLIST) :
120         -@$(MD) $@
121
122 $(CC_OBJTARGETS) :
123         @echo [CC]    $(subst $(PROJECT_OBJ_DIR)/,,$@)
124         @$(CC) -c $(CC_FLAGS_FULL) -o"$@" $(patsubst %.o,%.c,$(subst $(PROJECT_OBJ_DIR)/,,$@))
125
126 $(AS_OBJTARGETS) :
127         @echo [AS]    $(subst $(PROJECT_OBJ_DIR)/,,$@)
128         @$(AS) $(AS_FLAGS) -o"$@" $(patsubst %.o,%.s,$(subst $(PROJECT_OBJ_DIR)/,,$@))
129
130 ifeq ($(wildcard $(PROJECT_DEP_FILE)),$(PROJECT_DEP_FILE))
131
132 include $(PROJECT_DEP_FILE)
133
134 endif
135
136 .PHONY: clean xclean
137 clean:
138         @echo [CLEAN]  : $(PROJECT_NAME)
139         @$(RM) $(CC_OBJTARGETS) $(AS_OBJTARGETS)
140 ifneq ($(wildcard $(PROJECT_DIR)/$(PROJECT_MAKE)),)
141         @echo [CLEAN] : $(PROJECT_NAME)
142         @$(RM) $(PROJECT_BINARY) $(PROJECT_BINARY_LIB) $(PROJECT_DEP_FILE)
143 endif
144
145 xclean: clean
146
147 .PHONY : welcome_line
148 welcome_line :
149         @echo $(MYCUSTOMSPACE)
150         @echo Building  $(PROJECT_BINARY)
151         @echo $(MYCUSTOMSPACE)
152
153 .PHONY : debug release
154
155 debug :  all
156 release :  all
157
158 $(PROJECT_BINARY) : $(DIRLIST) echo_start_build $(GENERATE_DEPS) $(PRE_BUILD) $(CC_OBJTARGETS) $(AS_OBJTARGETS)
159         @echo [AR]    $(subst $(BUILDDIR)/,,$@)
160         @$(CC) $(CC_OBJTARGETS) $(AS_OBJTARGETS) -shared -fPIC -o $@
161