#!/bin/bash # # # Copyright 2019 AT&T Intellectual Property # Copyright 2019 Nokia # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # build utility for E2 Agent set -e E2SIM_DIR=$PWD ASN1_C_DIR=$E2SIM_DIR/build/CMakeFiles/ASN1 source $E2SIM_DIR/tools/build_helper.bash print_help() { echo " This program installs E2 Simulator You should have ubuntu 14.xx, updated, and the Linux kernel >= 3.14 The program is run by default with no option Options --clean Erase all files to make a rebuild from start -h Print this help " } generate_asn1c_codes() { X2AP_RELEASE="R14" X2AP_ASN_FILES="x2ap-14.6.0.asn1" ASN_SOURCE_X2AP=$E2SIM_DIR/src/X2AP/MESSAGES/ASN1/${X2AP_RELEASE}/${X2AP_ASN_FILES} ASN_SOURCE_Pendulum=$E2SIM_DIR/src/ONS2019/pendulum.asn1 done_flag="$ASN1_C_DIR"/done #-ot = older than, -nt = newer than if [ "$done_flag" -ot $ASN_SOURCE_X2AP ] ; then echo_info "Generate C codes for from source file" #echo_info $ASN_SOURCE rm -f "$ASN1_C_DIR"/*.c "$ASN1_C_DIR"/*.h mkdir -p $ASN1_C_DIR asn1c -pdu=all -fcompound-names -gen-PER -no-gen-OER -no-gen-example \ -fno-include-deps -D $ASN1_C_DIR $ASN_SOURCE_X2AP \ |& egrep -v "^Copied|^Compiled" | sort -u asn1c -pdu=all -fcompound-names -gen-PER -no-gen-OER -no-gen-example \ -fno-include-deps -D $ASN1_C_DIR $ASN_SOURCE_Pendulum \ |& egrep -v "^Copied|^Compiled" | sort -u echo_success "ASN1 C codes generated at: $ASN1_C_DIR" fi touch $done_flag } install_rmr() { echo_info "Will install rmr library" /bin/bash rmr_interface/rmr_install.sh } compile_asn_api_lib() { echo_info "Will complie ASN1_API library" # rm -rf build/libASN1_API.a # rm -rf build/asn_x2ap.o # rm -rf build/asn_e2ap.o g++ -O3 -std=c++14 -Wall \ -I./src/ASN1/ -I./src/ASN1/asn/ -I./src/ASN1/generated/ \ -c src/ASN1/lib/asn_e2ap.cpp \ -o build/asn_e2ap.o ar -crv build/libASN1_API.a build/asn_e2ap.o g++ -O3 -std=c++14 -Wall \ -I./src/ASN1/ -I./src/ASN1/asn/ -I./src/ASN1/generated/ \ -c src/ASN1/lib/asn_x2ap.cpp \ -o build/asn_x2ap.o ar -crv build/libASN1_API.a build/asn_x2ap.o } function main() { case "$1" in --clean) echo_info "Will clean all previously producted files under build/" rm -rf $E2SIM_DIR/build echo_success "Clean Done" exit ;; "") ;; --rmr) install_rmr exit ;; --lib) compile_asn_api_lib exit ;; -h) print_help exit 1;; *) echo_error "Unknown option $1" exit esac BUILD_DIR=$E2SIM_DIR/build mkdir -p $BUILD_DIR mkdir -p $BUILD_DIR/log # generate_asn1c_codes #X2AP, pendulum compile_asn_api_lib echo_info "Will build e2sim" cd $BUILD_DIR rm -rf CMakeCache.txt cmake .. make -j`nproc` echo_success "e2sim compiled" } main "$@"