Pre-ci test passed git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4000 818b1a75-f10b-46b9-bf7c-635c3b92a50f
216 lines
6.7 KiB
Makefile
Executable File
216 lines
6.7 KiB
Makefile
Executable File
CC = gcc
|
|
|
|
CPUFLAGS = -mmmx -msse -msse2 -m32 #-msse4
|
|
# FORCE ssse3 for compilation of openair on User Mode Linux
|
|
CPUFLAGS += $(shell if grep --silent ssse3 /proc/cpuinfo ; then echo "-mssse3" ; else if grep --silent User\ Mode\ Linux /proc/cpuinfo ; then echo "-mssse3" ; else echo ""; fi; fi)
|
|
CPUFLAGS += $(shell if grep --silent sse4 /proc/cpuinfo ; then echo "-msse4" ; else echo ""; fi)
|
|
linux = $(shell if [ `uname` = "Linux" ] ; then echo "1" ; else echo "0" ; fi)
|
|
|
|
NUM_CORES=$(shell cat /proc/cpuinfo | grep processor | wc -l)
|
|
|
|
TOP_DIR = $(OPENAIR1_DIR)
|
|
OPENAIR1_TOP = $(OPENAIR1_DIR)
|
|
OPENAIR2_TOP = $(OPENAIR2_DIR)
|
|
OPENAIR3_TOP = $(OPENAIR3_DIR)
|
|
OPENAIR3 = $(OPENAIR3_DIR)
|
|
|
|
CFLAGS = -Wall -fno-strict-aliasing -DUSER_MODE -DNB_ANTENNAS_RX=2 -DNB_ANTENNAS_TXRX=2 -DNB_ANTENNAS_TX=2 -g -ggdb $(CPUFLAGS) -I/usr/include/X11 #-Wno-packed-bitfield-compat
|
|
|
|
# Check if GCC version is greater or equal to 4.4
|
|
GCCVERSIONGTEQ44 := $(shell expr `gcc -dumpversion | cut -f1,2 -d. --output-delimiter=""` \>= 44)
|
|
ifeq "$(GCCVERSIONGTEQ44)" "1"
|
|
CFLAGS += -Wno-packed-bitfield-compat
|
|
endif
|
|
|
|
ASN1_MSG_INC = $(OPENAIR2_DIR)/RRC/LITE/MESSAGES
|
|
|
|
CFLAGS += -DOPENAIR_LTE -DPUCCH #-DOFDMA_ULSCH -DIFFT_FPGA -DIFFT_FPGA_UE
|
|
CFLAGS += -DMAC_CONTEXT=1 -DPHY_CONTEXT=1 -DPHY_ABSTRACTION #-DPHY_ABSTRACTION_UL #-DRLC_UM_TEST_TRAFFIC=1
|
|
CFLAGS += -DNEW_FFT
|
|
#CFLAGS += -DLLR8
|
|
|
|
ifndef OPENAIR2
|
|
OPENAIR2=1
|
|
endif
|
|
|
|
ifndef OPENAIR_EMU
|
|
export OPENAIR_EMU=1
|
|
endif
|
|
|
|
ifdef EMOS
|
|
CFLAGS+=-DEMOS
|
|
endif
|
|
|
|
ifdef TRAFFIC_TM5
|
|
CFLAGS += -DRLC_UM_TEST_TRAFFIC=1 #-DFULL_BUFFER=1
|
|
endif
|
|
|
|
# activate OCG and libxml only under linux
|
|
ifeq ($(linux),1)
|
|
CFLAGS += -I/usr/include/libxml2 -L/usr/local/lib -I/usr/include/atlas -L/usr/X11R6/lib
|
|
OCG_FLAG = 1
|
|
cygwin=0
|
|
CFLAGS += -DLINUX
|
|
else
|
|
cygwin=1
|
|
OCG_FLAG = 0
|
|
endif
|
|
|
|
|
|
ifdef XFORMS
|
|
CFLAGS += -DXFORMS
|
|
endif
|
|
|
|
ifdef PRINT_STATS
|
|
CFLAGS += -DPRINT_STATS
|
|
endif
|
|
|
|
ifndef rrc_cellular
|
|
rrc_cellular = 0
|
|
rrc_cellular_eNB = 0
|
|
rrc_cellular_UE = 0
|
|
else
|
|
ifeq ($(eNB_flag),1)
|
|
rrc_cellular_eNB=1
|
|
endif
|
|
ifeq ($(UE_flag),1)
|
|
rrc_cellular_UE=1
|
|
endif
|
|
endif
|
|
|
|
ifdef DEBUG_PHY
|
|
CFLAGS += -DDEBUG_PHY
|
|
endif
|
|
|
|
# ln -sf EUTRA-RRC-Definitions-a20.asn EUTRA-RRC-Definitions.asn
|
|
# make cleanasn1
|
|
#make all Rel10=1
|
|
export IS_REL10=$(shell if [ -f .lock-rel10 ] ; then echo "1" ; else echo "0" ; fi)
|
|
export IS_REL8=$(shell if [ -f .lock-rel8 ] ; then echo "1" ; else echo "0" ; fi)
|
|
|
|
ifdef Rel10
|
|
CFLAGS += -DRel10
|
|
ifeq ($(IS_REL10), 0)
|
|
$(shell cd $(OPENAIR2_DIR)/RRC/LITE/MESSAGES/asn1c/ASN1_files/ ; rm EUTRA-RRC-Definitions.asn ; ln -s EUTRA-RRC-Definitions-a20.asn EUTRA-RRC-Definitions.asn ; cd $(OPENAIR2_DIR)/RRC/LITE/MESSAGES ; ln -s asn1-86_constants.h asn1_constants.h ; cd $(OPENAIR_TARGETS)/SIMU/USER/ ; rm -f $(ASN1_MSG_OBJS1) ; rm -f $(OPENAIR2_DIR)/RRC/LITE/MESSAGES/Makefile.inc.generated ; rm -f $(L2_OBJS) ; rm -f *.o ; rm -f oaisim ; touch .lock-rel10 ; rm .lock-rel8 ;)
|
|
endif
|
|
else # default is rel 8
|
|
ifeq ($(IS_REL8), 0)
|
|
$(shell cd $(OPENAIR2_DIR)/RRC/LITE/MESSAGES/asn1c/ASN1_files/ ; rm EUTRA-RRC-Definitions.asn ; ln -s EUTRA-RRC-Definitions-86.asn EUTRA-RRC-Definitions.asn ; cd $(OPENAIR2_DIR)/RRC/LITE/MESSAGES ; ln -s asn1-a20_constants.h asn1_constants.h ; cd $(OPENAIR_TARGETS)/SIMU/USER/ ; rm -f $(ASN1_MSG_OBJS1) ; rm -f $(OPENAIR2_DIR)/RRC/LITE/MESSAGES/Makefile.inc.generated ; rm -f $(L2_OBJS); rm -f *.o ; rm -f oaisim ; touch .lock-rel8 ; rm .lock-rel10 ; )
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(NAS), 1)
|
|
CFLAGS += -DNAS_NETLINK -DLINUX
|
|
NAS_FLAG=1
|
|
endif
|
|
|
|
ifdef TEST_OMG
|
|
CFLAGS += -DTEST_OMG
|
|
#CFLAGS += -DDEBUG_OMG
|
|
endif
|
|
# after the execution, a profiling output "gmon.out" will be created,
|
|
#then we need to run "gprof ./oaisim > gmon.txt" in the same directory as "gmon.out"
|
|
# you could also use the script "grpof2dot.py gmon.txt" for visual diagrams
|
|
ifdef GPROF
|
|
CFLAGS += -pg
|
|
endif
|
|
|
|
#require kernel patch for oai driver to enable address autoconfiguration (IPv6 only)
|
|
ifdef ADDCONF
|
|
CFLAGS+=-DADDRCONF
|
|
endif
|
|
|
|
ifdef OAI_NW_DRIVER_TYPE_ETHERNET
|
|
CFLAGS+=-DOAI_NW_DRIVER_TYPE_ETHERNET
|
|
endif
|
|
|
|
CFLAGS += $(shell if [ `uname -o` = "Cygwin" ] ; then echo "-DCYGWIN" ;fi)
|
|
|
|
CFLAGS += -DENABLE_FXP -DOAI_EMU -DENABLE_USE_CPU_EXECUTION_TIME
|
|
|
|
ifneq ($(USE_MME), R8)
|
|
UPDATE_RELEASE_9=1
|
|
endif
|
|
|
|
|
|
|
|
EXTRA_CFLAGS += -DOPENAIR2
|
|
EXTRA_CFLAGS += -DASSERT
|
|
EXTRA_CFLAGS += -DNO_RRM
|
|
EXTRA_CFLAGS += -DTEST_RLC_UM
|
|
|
|
COMMON_DIR = $(OPENAIR2_TOP)/COMMON
|
|
L2_INTERFACE_DIR = $(OPENAIR2_TOP)/RRC/L2_INTERFACE
|
|
RLC_UM_DIR = $(OPENAIR2_TOP)/LAYER2/RLC/UM_v9.3.0
|
|
RLC_AM_DIR = $(OPENAIR2_TOP)/LAYER2/RLC/AM_v9.3.0
|
|
RLC_TM_DIR = $(OPENAIR2_TOP)/LAYER2/RLC/TM_v9.3.0
|
|
RLC_DIR = $(OPENAIR2_TOP)/LAYER2/RLC
|
|
PDCP_DIR = $(OPENAIR2_TOP)/LAYER2/PDCP
|
|
MEM_DIR = $(OPENAIR2_TOP)/UTIL/MEM
|
|
LIST_DIR = $(OPENAIR2_TOP)/UTIL/LISTS
|
|
MATH_DIR = $(OPENAIR2_TOP)/UTIL/MATH
|
|
TIMER_DIR = $(OPENAIR2_TOP)/UTIL/TIMER
|
|
PHY_INTERFACE_DIR = $(OPENAIR2_TOP)/PHY_INTERFACE
|
|
RRC_DIR = $(OPENAIR2_TOP)/RRC/LITE
|
|
L2_INTERFACE_DIR = $(OPENAIR2_TOP)/RRC/L2_INTERFACE
|
|
MAC_DIR = $(OPENAIR2_TOP)/LAYER2/MAC
|
|
LOG_DIR=$(OPENAIR2_TOP)/UTIL/LOG
|
|
OCG_DIR=$(OPENAIR2_TOP)/UTIL/OCG
|
|
OPT_DIR=$(OPENAIR2_TOP)/UTIL/OPT
|
|
|
|
|
|
SOURCES_L2 = $(LIST_DIR)/list.c
|
|
SOURCES_L2 += $(LIST_DIR)/list2.c
|
|
|
|
SOURCES_L2 += $(RLC_UM_DIR)/rlc_um.c
|
|
SOURCES_L2 += $(RLC_UM_DIR)/rlc_um_control_primitives.c
|
|
SOURCES_L2 += $(RLC_UM_DIR)/rlc_um_dar.c
|
|
SOURCES_L2 += $(RLC_UM_DIR)/rlc_um_fsm.c
|
|
SOURCES_L2 += $(RLC_UM_DIR)/rlc_um_reassembly.c
|
|
SOURCES_L2 += $(RLC_UM_DIR)/rlc_um_receiver.c
|
|
SOURCES_L2 += $(RLC_UM_DIR)/rlc_um_segment.c
|
|
SOURCES_L2 += $(RLC_UM_DIR)/rlc_um_test.c
|
|
|
|
|
|
SOURCES_L2 += $(MEM_DIR)/mem_block.c
|
|
|
|
LOG_OBJS = $(LOG_DIR)/log.o
|
|
LOG_OBJS += $(LOG_DIR)/vcd_signal_dumper.o
|
|
OPT_OBJS = $(OPT_DIR)/probe.o
|
|
|
|
L2_OBJS=$(addsuffix .o,$(basename $(SOURCES_L2))) $(PHY_INTERFACE_OBJS) $(MAC_OBJS) $(L2_INTERFACE_OBJS) $(RRC_OBJS) $(LOG_OBJS) $(OPT_OBJS)
|
|
|
|
|
|
L2_incl = -I$(OPENAIR2_TOP) -I$(COMMON_DIR) -I$(RLC_DIR) -I$(RLC_AM_DIR) -I$(RLC_UM_DIR) -I$(RLC_TM_DIR) -I$(PDCP_DIR) -I$(MEM_DIR) -I$(LIST_DIR) -I$(LOG_DIR) -I$(MATH_DIR) -I$(TIMER_DIR) -I$(OPENAIR3)/MESH -I$(OPENAIR2_TOP)/RRC/LITE -I$(OPENAIR2_TOP)/RRC/LITE/MESSAGES -I$(OPENAIR3)/MESH/RRM -I$(OPT_DIR)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ASN1_MSG_OBJS2 := $(foreach file, $(ASN1_MSG_OBJS), $(OPENAIR2_DIR)/RRC/LITE/MESSAGES/$(file))
|
|
|
|
OBJ = $(PHY_OBJS) $(SIMULATION_OBJS) $(SCHED_OBJS) $(STATS_OBJS) $(ASN1_MSG_OBJS2)
|
|
|
|
all: testum
|
|
|
|
|
|
$(OBJ) : %.o : %.c
|
|
$(CC) -c $(CFLAGS) $(EXTRA_CFLAGS) -DPHY_CONTEXT=1 -I$(TOP_DIR) $(L2_incl) -I$(ASN1_MSG_INC) -o $@ $<
|
|
|
|
$(L2_OBJS) : %.o : %.c
|
|
$(CC) -c $(CFLAGS) $(EXTRA_CFLAGS) -DMAC_CONTEXT=1 -DTEST_RLC_UM=1 -DPHY_CONTEXT=1 -I$(TOP_DIR) $(L2_incl) -I$(ASN1_MSG_INC) -o $@ $<
|
|
|
|
testum : $(OBJ) $(L2_OBJS) oaisim.c
|
|
echo CYGWIN variable is $(cygwin)
|
|
$(CC) oaisim.c -I$(TOP_DIR) $(L2_incl) -I$(ASN1_MSG_INC) -o testum $(CFLAGS) $(EXTRA_CFLAGS) $(OBJ) $(L2_OBJS) -lm -lrt
|
|
|
|
|
|
clean:
|
|
rm -f testum
|
|
rm -f $(OBJ)
|
|
rm -f $(L2_OBJS)
|
|
rm -f *.o
|
|
rm -f *.exe*
|
|
|