......@@ -17,7 +17,7 @@
</attribute>
<!-- its_aid_ssp_list -->
<attribute type="its_aid_ssp_list">
<ssp aid="CAM">01 DF FF</ssp> <!-- CAM: no specialTransport -->
<ssp aid="CAM">01 DF FC</ssp> <!-- CAM: no specialTransport -->
</attribute>
</subject>
<validity>
......
......@@ -37,6 +37,7 @@ RUN echo "docker-STF-dev" > /etc/hostname \
libffi-dev \
libglib2.0-dev \
libgcrypt-dev \
libjsoncpp-dev \
libncurses5-dev \
libpcap-dev \
libqt5svg5-dev \
......
#!/bin/bash
ECLIPSE_URL='https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/2020-06/R/eclipse-jee-2020-06-R-linux-gtk-x86_64.tar.gz&r=1'
TITAN_URL='https://www.eclipse.org/downloads/download.php?file=/titan/TITAN_Designer_and_Executor_Plugin_7.1.0.zip&r=1'
#set -e
set -vx
echo -e "*****************************\n* Install eclipse\n*****************************\n"
mkdir -p ${HOME}/frameworks
cd ${HOME}/frameworks || exit 1
wget --progress=dot:mega 'http://www.mirrorservice.org/sites/download.eclipse.org/eclipseMirror/technology/epp/downloads/release/2020-06/R/eclipse-cpp-2020-06-R-linux-gtk-x86_64.tar.gz' -Oeclipse-cpp-2020-06-R-linux-gtk-x86_64.tar.gz || exit 1
......@@ -13,8 +17,8 @@ rm -f ./eclipse-cpp-2020-06-R-linux-gtk-x86_64.tar.gz
if wget --progress=dot:mega 'https://mirrors.dotsrc.org/eclipse//titan/TITAN_Designer_and_Executor_Plugin_7.1.0.zip' -OTITAN_Designer_and_Executor_plugin.zip; then
eclipse/eclipse -noSplash -application org.eclipse.equinox.p2.director \
-destination ${HOME}/frameworks/eclipse \
-repository jar:file://${HOME}/frameworks/TITAN_Designer_and_Executor_plugin.zip!/ \
-destination /home/etsi/frameworks/eclipse \
-repository 'jar:file:///home/etsi/frameworks/TITAN_Designer_and_Executor_plugin.zip!/' \
-installIU TITAN_Designer.feature.group,TITAN_Executor.feature.group,TITAN_Log_Viewer.feature.group,Titan_external_dependencies.feature.group,Titanium.feature.group,Titanium_external_dependencies.feature.group
rm -f TITAN_Designer_and_Executor_plugin.zip
fi
......
......@@ -21,10 +21,6 @@ cd ${HOME}/dev/Workspace/TTF0002
ln -s ../../TTF0002_Its/testdata
ln -s ../../TTF0002_Its/data
echo -e "*****************************\n* Make ASN.1 sources\n*****************************\n"
cd ${HOME}/dev/Workspace/TTF0002/bin/asn1
make -f ../../../../TTF0002_Its/asn1/Makefile
echo -e "*****************************\n* Make Certificate generator \n*****************************\n"
# make V3 certificate generators
cd ${HOME}/dev/TTF0002_Its/tools/itscertgen/asn1certgen
......
......@@ -8,17 +8,14 @@ echo -e "*****************************\n* Change user in cfg files\n************
cd ${HOME}/dev/TTF0002_Its/scripts || exit 1
./update_user_name.sh || exit 1
echo -e "*****************************\n* Install test suites\n*****************************\n"
./update_its_project.bash || exit 1
echo -e "*****************************\n* Build test suites\n*****************************\n"
cd ${HOME}/dev/etsi_its/src
cd ${HOME}/dev/TTF0002_Its
ATS_LIST="AtsCAM AtsDENM AtsGeoNetworking AtsPki AtsSecurity AtsIVIM AtsMapemSpatem AtsSremSsem AtsRtcmem AtsRSUsSimulator"
for i in ${ATS_LIST}
do
cd $i/objs
../bin/*_generate_makefile.bash
cd ../..
export ATS=$i
make
done
cd ${HOME}
......
......@@ -11,7 +11,7 @@ LibItsMapemSpatem_Pics.PICS_IS_IUT_SECURED := false
# In this section you can specify the name of the log file and the classes of events
# you want to log into the file or display on console (standard error).
LogFile := "../logs/%e.%h-%r.%s"
LogFile := "../logs/AtsMapemSpatem/%e.%h-%r.%s"
FileMask := LOG_ALL | USER | DEBUG | MATCHING
ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING
#FileMask := ERROR | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP
......
......@@ -65,12 +65,12 @@ ItsRSUsSimulator_Pics.PICS_SEND_RTCMEM_INDICATION := true
# Enable Security support
LibItsGeoNetworking_Pics.PICS_GN_SECURITY := false
# Root path to access certificate stored in files, identified by certficate ID
LibItsSecurity_Pixits.PX_CERTIFICATE_POOL_PATH := "/home/yann/tmp"
LibItsSecurity_Pixits.PX_CERTIFICATE_POOL_PATH := "data/v3/certificates"
# Configuration sub-directory to access certificate stored in files
LibItsSecurity_Pixits.PX_IUT_SEC_CONFIG_NAME := "asn1c_cert"
LibItsSecurity_Pixits.PX_IUT_SEC_CONFIG_NAME := ""
LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/x-its-request"
LibItsHttp_Pics.PICS_HEADER_HOST := "192.168.42.252"
LibItsHttp_Pics.PICS_HEADER_HOST := "127.0.0.1"
LibItsPki_Pics.PICS_HTTP_POST_URI := "/ea/enrolment"
LibItsPki_Pics.PICS_MULTIPLE_END_POINT := false
......@@ -89,7 +89,7 @@ LibItsPki_Pics.PICS_IUT_AA_CERTIFICATE_ID := "CERT_TS_A_AA"
[LOGGING]
# In this section you can specify the name of the log file and the classes of events
# you want to log into the file or display on console (standard error).
LogFile := "../logs/%e.%h-%r.%s"
LogFile := "../logs/AtsRSUsSimulator/%e.%h-%r.%s"
FileMask := LOG_ALL | USER | DEBUG | MATCHING
ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING
#FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP
......
#!/bin/bash
#set -e
set -vx
function f_exit {
cd ${CURPWD}
unset TTCN_FILES
unset CC_FILES
unset CFG_FILES
unset EXECUTABLE
echo $1
exit $2
}
function f_usage {
echo "build.bash: This script import from External Disk the "
echo "Optional arguments:"
echo " prof: Generate a makefile including profiling options (e.g. ./build.bash prof)"
exit 0
}
clear
if [ "$1" == "help" ]
then
f_usage
fi
ATS_NAME=AutoInterop
#CURPWD=`pwd`
if [ ! "${PWD##*/}" == "objs" ]
then
cd ../objs
if [ ! $? == 0 ]
then
echo "Please move to PROJECT/obj directory"
exit 1
fi
fi
# Remove everything
rm -fr ../objs/*.hh
rm -fr ../objs/*.cc
rm -fr ../objs/*.log
rm -fr ../objs/*.o
rm -fr ../objs/Makefile
# Remove useless files
find .. -type f -name "*~" -exec rm {} \;
find .. -type f -name "*.bak" -exec rm {} \;
find .. -type f -name "*.log" -exec rm {} \;
# Build XSD files if any and put them in objs directory
if [ -d ../xsd ]
then
XSD_FILES=`find ../xsd -name '*.xsd'`
if [ "${OSTYPE}" == "cygwin" ]
then
xsd2ttcn.exe ${XSD_FILES}
else
xsd2ttcn ${XSD_FILES}
fi
if [ "$?" != "0" ]
then
f_exit "Failed to generate XSD source code" 2
fi
fi
# Build ASN.1 files if any and put them in objs directory
ASN1_PATH=${PATH_DEV_ITS}/ttcn/LibIts/asn1
if [ -d ${ASN1_PATH} ]
then
ASN1_FILES=`find ${ASN1_PATH} -name '*.asn*'`
if [ "${OSTYPE}" == "cygwin" ]
then
asn1_compiler.exe -e ${ASN1_FILES}
else
asn1_compiler -e ${ASN1_FILES}
fi
if [ "$?" != "0" ]
then
f_exit "Failed to generate ASN.1 source code" 3
fi
fi
REFERENCES="LibCommon LibIts/Common LibIts/BTP LibIts/GeoNetworking LibIts/Ipv6OverGeoNetworking LibIts/Security LibIts/CAM LibIts/DENM LibIts/IVIM LibIts/MapemSpatem LibIts/SremSsem LibIts/Http LibIts/Pki"
for i in ${REFERENCES}
do
# TTCN code
for j in `find ${PATH_DEV_ITS}/src/$i/ttcn -type f -name "*.ttcn"`;
do
ln -sf $j ../ttcn/`basename $j`
done
# Include source code
files=`find ${PATH_DEV_ITS}/src/$i/include -type f`
if [ "${files}" != " " ]
then
for j in ${files};
do
ln -sf $j ../include/`basename $j`
done
fi
# CC source code
files=`find ${PATH_DEV_ITS}/src/$i/src -type f`
if [ "${files}" != " " ]
then
for j in ${files};
do
ln -sf $j ../src/`basename $j`
done
fi
done
# Generate the list of the TTCN-3 files
TTCN_FILES=`find .. -name '*.ttcn*'`
# Start ATS generation - Step 1
if [ "${OSTYPE}" == "cygwin" ]
then
rm ../bin/*.exe ../lib/*.dll
compiler.exe -d -e -f -g -j -l -L -n -t -R -U none -x -X ${TTCN_FILES} ${ASN1_FILES} 2>&1 3>&1 | tee build.log
if [ "$?" == "1" ]
then
f_exit "Failed to compile ATS" 4
fi
else
compiler -d -e -f -g -l -L -n -t -R -U none -x -X ${TTCN_FILES} ${ASN1_FILES} 2>&1 3>&1 | tee build.log
if [ "$?" == "1" ]
then
f_exit "Failed to generate ATS source code" 6
fi
fi
# Sart ATS generation - Step 2
# Create working variables
CC_FILES=`find ../src -name '*.c*'`
FWK_FILES=`find ${PATH_DEV_ITS}/framework/ -name '*.c*'`
CFG_FILES=`find ../etc -name '*.cfg'`
# Sart ATS generation - Step 3
if [ "${OSTYPE}" == "cygwin" ]
then
ttcn3_makefilegen.exe -d -f -g -m -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${ASN1_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log
if [ "$?" == "1" ]
then
f_exit "Failed to compile ATS" 5
fi
else
ttcn3_makefilegen -d -f -g -m -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${ASN1_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log
if [ "$?" == "1" ]
then
f_exit "Failed to generate ATS source code" 7
fi
fi
# Remove port skeletons to use src/<port skeletons>
for i in `ls ../include/*.hh`
do
if [ -f ./`basename $i` ]
then
rm ./`basename $i`
fi
done
for i in `ls ../src/*.cc`
do
if [ -f ./`basename $i` ]
then
rm ./`basename $i`
fi
done
# Check if Makefile was generated
if [ ! -f ./Makefile ]
then
f_exit "Failed to generate ATS source code" 8
fi
# Patch ATS generated files
#./bin/patch.bash 2>&1 3>&1 | tee --append build.log
# Add compiler/linker options
if [ "$1" == "prof" ]
then
if [ "${OSTYPE}" == "cygwin" ]
then
CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -D_XOPEN_SOURCE=700 -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' # -DASN_DISABLE_OER_SUPPORT
else
CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' # -DASN_DISABLE_OER_SUPPORT
fi
LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
if [ "${OSTYPE}" == "cygwin" ]
then
CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' # -DASN_DISABLE_OER_SUPPORT
else
CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' # -DASN_DISABLE_OER_SUPPORT
fi
LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_ITS)/include -I$(PATH_DEV_ITS)/include/asn1 -I$(PATH_DEV_ITS)/framework/include -I../include -I../../LibIts/Common/include -I../../LibIts/BTP/include -I../../LibIts/CAM/include -I../../LibIts/DENM/include -I$(HOME_INC) -I.'
ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lstdc++fs -lpcap -L$(PATH_DEV_ITS)\/lib -lItsAsn /g'
sed --in-place "${CXXFLAGS_DEBUG_MODE}" ./Makefile
sed --in-place "${LDFLAGS_DEBUG_MODE}" ./Makefile
sed --in-place "${ADD_INCLUDE}" ./Makefile
sed --in-place "${ADD_LIBRARIES}" ./Makefile
# Update COMPILER_FLAGS
COMPILER_FLAGS='s/COMPILER_FLAGS = /COMPILER_FLAGS = -e /g'
sed --in-place "${COMPILER_FLAGS}" ./Makefile
# Update clean clause
CLEAN_LINE='s/$(RM) $(EXECUTABLE)/$(RM) ..\/bin\/$(EXECUTABLE) ..\/src\/*.o/g'
sed --in-place "${CLEAN_LINE}" ./Makefile
# Move binary file command
EXECUTABLE=MyExample
MV_CMD='s/all: $(TARGET) ;/all: $(TARGET) ; @if [ -f ..\/objs\/$(EXECUTABLE) ]; then mv ..\/objs\/$(EXECUTABLE) ..\/bin; fi ;/g'
sed --in-place "${MV_CMD}" ./Makefile
# Add run command
ADD_HOST='/PLATFORM = /aHOST=127.0.0.1'
ADD_PORT='/PLATFORM = /aPORT=12000'
sed --in-place "${ADD_PORT}" ./Makefile
sed --in-place "${ADD_HOST}" ./Makefile
ADD_RUN_LINE_1='$arun: all'
ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
ADD_RUN_LINE_1='$arun_d: all'
ADD_RUN_LINE_2='$a\\t@gdb --args $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
ADD_RUN_LINE_1='$arun_v: all'
ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --track-fds=yes --run-cxx-freeres=yes $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
# Add Doxygen entry
ADD_RUN_LINE_1='$agendoc:'
ADD_RUN_LINE_2='$a\\tdoxygen ../docs/o2.cfg'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
# Build all
make all 2>&1 3>&1 | tee --append build.log
if [ "$?" != "0" ]
then
f_exit "Failed to generate ATS source code" 9
fi
../bin/Ats${ATS_NAME} -v
if [ "$?" != "0" ]
then
f_exit "Failed to execute binary file Ats${ATS_NAME}" 10
fi
f_exit "Build done successfully" 0
#!/bin/bash
#set -e
set -vx
function f_exit {
cd ${CURPWD}
unset TTCN_FILES
unset CC_FILES
unset CFG_FILES
unset EXECUTABLE
echo $1
exit $2
}
function f_usage {
echo "build.bash: This script import from External Disk the "
echo "Optional arguments:"
echo " prof: Generate a makefile including profiling options (e.g. ./build.bash prof)"
exit 0
}
clear
if [ "$1" == "help" ]
then
f_usage
fi
ATS_NAME=BTP
#CURPWD=`pwd`
if [ ! "${PWD##*/}" == "objs" ]
then
cd ../objs
if [ ! $? == 0 ]
then
echo "Please move to PROJECT/obj directory"
exit 1
fi
fi
# Remove everything
rm -fr ../objs/*.hh
rm -fr ../objs/*.cc
rm -fr ../objs/*.log
rm -fr ../objs/*.o
rm -fr ../objs/Makefile
# Remove useless files
find .. -type f -name "*~" -exec rm {} \;
find .. -type f -name "*.bak" -exec rm {} \;
find .. -type f -name "*.log" -exec rm {} \;
# Build XSD files if any and put them in objs directory
if [ -d ../xsd ]
then
XSD_FILES=`find ../xsd -name '*.xsd'`
if [ "${OSTYPE}" == "cygwin" ]
then
xsd2ttcn.exe ${XSD_FILES}
else
xsd2ttcn ${XSD_FILES}
fi
if [ "$?" != "0" ]
then
f_exit "Failed to generate XSD source code" 2
fi
fi
# Build ASN.1 files if any and put them in objs directory
ASN1_PATH=${PATH_DEV_ITS}/ttcn/LibIts/asn1
if [ -d ${ASN1_PATH} ]
then
ASN1_FILES=`find ${ASN1_PATH} -name '*.asn*'`
if [ "${OSTYPE}" == "cygwin" ]
then
asn1_compiler.exe -e ${ASN1_FILES}
else
asn1_compiler -e ${ASN1_FILES}
fi
if [ "$?" != "0" ]
then
f_exit "Failed to generate ASN.1 source code" 3
fi
fi
REFERENCES="LibCommon LibIts/Common LibIts/BTP LibIts/GeoNetworking LibIts/Ipv6OverGeoNetworking LibIts/Security LibIts/CAM LibIts/DENM LibIts/IVIM LibIts/MapemSpatem LibIts/SremSsem LibIts/Rtcmem LibIts/Http LibIts/Pki"
for i in ${REFERENCES}
do
# TTCN code
for j in `find ${PATH_DEV_ITS}/src/$i/ttcn -type f -name "*.ttcn"`;
do
ln -sf $j ../ttcn/`basename $j`
done
# Include source code
files=`find ${PATH_DEV_ITS}/src/$i/include -type f`
if [ "${files}" != " " ]
then
for j in ${files};
do
ln -sf $j ../include/`basename $j`
done
fi
# CC source code
files=`find ${PATH_DEV_ITS}/src/$i/src -type f`
if [ "${files}" != " " ]
then
for j in ${files};
do
ln -sf $j ../src/`basename $j`
done
fi
done
# Generate the list of the TTCN-3 files
TTCN_FILES=`find .. -name '*.ttcn*'`
# Start ATS generation - Step 1
if [ "${OSTYPE}" == "cygwin" ]
then
rm ../bin/*.exe ../lib/*.dll
compiler.exe -d -e -f -g -j -l -L -n -t -R -U none -x -X ${TTCN_FILES} ${ASN1_FILES} 2>&1 3>&1 | tee build.log
if [ "$?" == "1" ]
then
f_exit "Failed to compile ATS" 4
fi
else
compiler -d -e -f -g -l -L -n -t -R -U none -x -X ${TTCN_FILES} ${ASN1_FILES} 2>&1 3>&1 | tee build.log
if [ "$?" == "1" ]
then
f_exit "Failed to generate ATS source code" 6
fi
fi
# Sart ATS generation - Step 2
# Create working variables
CC_FILES=`find ../src -name '*.c*'`
FWK_FILES=`find ${PATH_DEV_ITS}/framework/ -name '*.c*'`
CFG_FILES=`find ../etc -name '*.cfg'`
# Sart ATS generation - Step 3
if [ "${OSTYPE}" == "cygwin" ]
then
ttcn3_makefilegen.exe -d -f -g -m -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${ASN1_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log
if [ "$?" == "1" ]
then
f_exit "Failed to compile ATS" 5
fi
else
ttcn3_makefilegen -d -f -g -m -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${ASN1_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log
if [ "$?" == "1" ]
then
f_exit "Failed to generate ATS source code" 7
fi
fi
# Remove port skeletons to use src/<port skeletons>
for i in `ls ../include/*.hh`
do
if [ -f ./`basename $i` ]
then
rm ./`basename $i`
fi
done
for i in `ls ../src/*.cc`
do
if [ -f ./`basename $i` ]
then
rm ./`basename $i`
fi
done
# Check if Makefile was generated
if [ ! -f ./Makefile ]
then
f_exit "Failed to generate ATS source code" 8
fi
# Patch ATS generated files
#./bin/patch.bash 2>&1 3>&1 | tee --append build.log
# Add compiler/linker options
if [ "$1" == "prof" ]
then
if [ "${OSTYPE}" == "cygwin" ]
then
CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
if [ "${OSTYPE}" == "cygwin" ]
then
CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_ITS)/include -I$(PATH_DEV_ITS)/include/asn1 -I$(PATH_DEV_ITS)/framework/include -I../include -I../../LibIts/Common/include -I../../LibIts/BTP/include -I../../LibIts/CAM/include -I../../LibIts/DENM/include -I$(HOME_INC) -I.'
ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lssl -lstdc++fs -lpcap -L$(PATH_DEV_ITS)\/lib -lItsAsn /g'
sed --in-place "${CXXFLAGS_DEBUG_MODE}" ./Makefile
sed --in-place "${LDFLAGS_DEBUG_MODE}" ./Makefile
sed --in-place "${ADD_INCLUDE}" ./Makefile
sed --in-place "${ADD_LIBRARIES}" ./Makefile
# Update COMPILER_FLAGS
COMPILER_FLAGS='s/COMPILER_FLAGS = /COMPILER_FLAGS = -e /g'
sed --in-place "${COMPILER_FLAGS}" ./Makefile
# Update clean clause
CLEAN_LINE='s/$(RM) $(EXECUTABLE)/$(RM) ..\/bin\/$(EXECUTABLE) ..\/src\/*.o/g'
sed --in-place "${CLEAN_LINE}" ./Makefile
# Move binary file command
EXECUTABLE=MyExample
MV_CMD='s/all: $(TARGET) ;/all: $(TARGET) ; @if [ -f ..\/objs\/$(EXECUTABLE) ]; then mv ..\/objs\/$(EXECUTABLE) ..\/bin; fi ;/g'
sed --in-place "${MV_CMD}" ./Makefile
# Add run command
ADD_HOST='/PLATFORM = /aHOST=127.0.0.1'
ADD_PORT='/PLATFORM = /aPORT=12000'
sed --in-place "${ADD_PORT}" ./Makefile
sed --in-place "${ADD_HOST}" ./Makefile
ADD_RUN_LINE_1='$arun: all'
ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
ADD_RUN_LINE_1='$arun_d: all'
ADD_RUN_LINE_2='$a\\t@gdb --args $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
ADD_RUN_LINE_1='$arun_v: all'
ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --track-fds=yes --run-cxx-freeres=yes $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
# Add Doxygen entry
ADD_RUN_LINE_1='$agendoc:'
ADD_RUN_LINE_2='$a\\tdoxygen ../docs/o2.cfg'
ADD_RUN_LINE_3='$a\\tmandb ../docs/man'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
sed --in-place "${ADD_RUN_LINE_3}" ./Makefile
# Build all
make all 2>&1 3>&1 | tee --append build.log
if [ "$?" != "0" ]
then
f_exit "Failed to generate ATS source code" 9
fi
../bin/Ats${ATS_NAME} -v
#if [ "$?" != "0" ]
#then
# f_exit "Failed to execute binary file Ats${ATS_NAME}" 10
#fi
f_exit "Build done successfully" 0
#!/bin/bash
#set -e
set -vx
function f_exit {
cd ${CURPWD}
unset TTCN_FILES
unset CC_FILES
unset CFG_FILES
unset EXECUTABLE
echo $1
exit $2
}
function f_usage {
echo "build.bash: This script import from External Disk the "
echo "Optional arguments:"
echo " prof: Generate a makefile including profiling options (e.g. ./build.bash prof)"
exit 0
}
clear
if [ "$1" == "help" ]
then
f_usage
fi
ATS_NAME=CAM
#CURPWD=`pwd`
if [ ! "${PWD##*/}" == "objs" ]
then
cd ../objs
if [ ! $? == 0 ]
then
echo "Please move to PROJECT/obj directory"
exit 1
fi
fi
# Remove everything
rm -fr ../objs/*.hh
rm -fr ../objs/*.cc
rm -fr ../objs/*.log
rm -fr ../objs/*.o
rm -fr ../objs/Makefile
# Remove useless files
find .. -type f -name "*~" -exec rm {} \;
find .. -type f -name "*.bak" -exec rm {} \;
find .. -type f -name "*.log" -exec rm {} \;
# Build XSD files if any and put them in objs directory
if [ -d ../xsd ]
then
XSD_FILES=`find ../xsd -name '*.xsd'`
if [ "${OSTYPE}" == "cygwin" ]
then
xsd2ttcn.exe ${XSD_FILES}
else
xsd2ttcn ${XSD_FILES}
fi
if [ "$?" != "0" ]
then
f_exit "Failed to generate XSD source code" 2
fi
fi
# Build ASN.1 files if any and put them in objs directory
ASN1_PATH=${PATH_DEV_ITS}/ttcn/LibIts/asn1
if [ -d ${ASN1_PATH} ]
then
ASN1_FILES=`find ${ASN1_PATH} -name '*.asn*'`
if [ "${OSTYPE}" == "cygwin" ]
then
asn1_compiler.exe -e ${ASN1_FILES}
else
asn1_compiler -e ${ASN1_FILES}
fi
if [ "$?" != "0" ]
then
f_exit "Failed to generate ASN.1 source code" 3
fi
fi
REFERENCES="LibCommon LibIts/Common LibIts/BTP LibIts/GeoNetworking LibIts/Ipv6OverGeoNetworking LibIts/Security LibIts/CAM LibIts/DENM LibIts/IVIM LibIts/MapemSpatem LibIts/SremSsem LibIts/Rtcmem LibIts/Http LibIts/Pki"
for i in ${REFERENCES}
do
# TTCN code
for j in `find ${PATH_DEV_ITS}/src/$i/ttcn -type f -name "*.ttcn"`;
do
ln -sf $j ../ttcn/`basename $j`
done
# Include source code
files=`find ${PATH_DEV_ITS}/src/$i/include -type f`
if [ "${files}" != " " ]
then
for j in ${files};
do
ln -sf $j ../include/`basename $j`
done
fi
# CC source code
files=`find ${PATH_DEV_ITS}/src/$i/src -type f`
if [ "${files}" != " " ]
then
for j in ${files};
do
ln -sf $j ../src/`basename $j`
done
fi
done
# Generate the list of the TTCN-3 files
TTCN_FILES=`find .. -name '*.ttcn*'`
# Start ATS generation - Step 1
if [ "${OSTYPE}" == "cygwin" ]
then
rm ../bin/*.exe ../lib/*.dll
compiler.exe -d -e -f -g -j -l -L -n -t -R -U none -x -X ${TTCN_FILES} ${ASN1_FILES} 2>&1 3>&1 | tee build.log
if [ "$?" == "1" ]
then
f_exit "Failed to compile ATS" 4
fi
else
compiler -d -e -f -g -l -L -n -t -R -U none -x -X ${TTCN_FILES} ${ASN1_FILES} 2>&1 3>&1 | tee build.log
if [ "$?" == "1" ]
then
f_exit "Failed to generate ATS source code" 6
fi
fi
# Sart ATS generation - Step 2
# Create working variables
CC_FILES=`find ../src -name '*.c*'`
FWK_FILES=`find ${PATH_DEV_ITS}/framework/ -name '*.c*'`
CFG_FILES=`find ../etc -name '*.cfg'`
# Sart ATS generation - Step 3
if [ "${OSTYPE}" == "cygwin" ]
then
ttcn3_makefilegen.exe -d -f -g -m -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${ASN1_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log
if [ "$?" == "1" ]
then
f_exit "Failed to compile ATS" 5
fi
else
ttcn3_makefilegen -d -f -g -m -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${ASN1_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log
if [ "$?" == "1" ]
then
f_exit "Failed to generate ATS source code" 7
fi
fi
# Remove port skeletons to use src/<port skeletons>
for i in `ls ../include/*.hh`
do
if [ -f ./`basename $i` ]
then
rm ./`basename $i`
fi
done
for i in `ls ../src/*.cc`
do
if [ -f ./`basename $i` ]
then
rm ./`basename $i`
fi
done
# Check if Makefile was generated
if [ ! -f ./Makefile ]
then
f_exit "Failed to generate ATS source code" 8
fi
# Patch ATS generated files
#./bin/patch.bash 2>&1 3>&1 | tee --append build.log
# Add compiler/linker options
if [ "$1" == "prof" ]
then
if [ "${OSTYPE}" == "cygwin" ]
then
CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
if [ "${OSTYPE}" == "cygwin" ]
then
CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_ITS)/include -I$(PATH_DEV_ITS)/include/asn1 -I$(PATH_DEV_ITS)/framework/include -I../include -I../../LibIts/Common/include -I../../LibIts/BTP/include -I../../LibIts/CAM/include -I../../LibIts/DENM/include -I$(HOME_INC) -I.'
ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lssl -lstdc++fs -lpcap -L$(PATH_DEV_ITS)\/lib -lItsAsn /g'
sed --in-place "${CXXFLAGS_DEBUG_MODE}" ./Makefile
sed --in-place "${LDFLAGS_DEBUG_MODE}" ./Makefile
sed --in-place "${ADD_INCLUDE}" ./Makefile
sed --in-place "${ADD_LIBRARIES}" ./Makefile
# Update COMPILER_FLAGS
COMPILER_FLAGS='s/COMPILER_FLAGS = /COMPILER_FLAGS = -e /g'
sed --in-place "${COMPILER_FLAGS}" ./Makefile
# Update clean clause
CLEAN_LINE='s/$(RM) $(EXECUTABLE)/$(RM) ..\/bin\/$(EXECUTABLE) ..\/src\/*.o/g'
sed --in-place "${CLEAN_LINE}" ./Makefile
# Move binary file command
EXECUTABLE=MyExample
MV_CMD='s/all: $(TARGET) ;/all: $(TARGET) ; @if [ -f ..\/objs\/$(EXECUTABLE) ]; then mv ..\/objs\/$(EXECUTABLE) ..\/bin; fi ;/g'
sed --in-place "${MV_CMD}" ./Makefile
# Add run command
ADD_HOST='/PLATFORM = /aHOST=127.0.0.1'
ADD_PORT='/PLATFORM = /aPORT=12000'
sed --in-place "${ADD_PORT}" ./Makefile
sed --in-place "${ADD_HOST}" ./Makefile
ADD_RUN_LINE_1='$arun: all'
ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
ADD_RUN_LINE_1='$arun_d: all'
ADD_RUN_LINE_2='$a\\t@gdb --args $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
ADD_RUN_LINE_1='$arun_v: all'
ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --track-fds=yes --run-cxx-freeres=yes $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
# Add Doxygen entry
ADD_RUN_LINE_1='$agendoc:'
ADD_RUN_LINE_2='$a\\tdoxygen ../docs/o2.cfg'
ADD_RUN_LINE_3='$a\\tmandb ../docs/man'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
sed --in-place "${ADD_RUN_LINE_3}" ./Makefile
# Build all
make all 2>&1 3>&1 | tee --append build.log
if [ "$?" != "0" ]
then
f_exit "Failed to generate ATS source code" 9
fi
../bin/Ats${ATS_NAME} -v
#if [ "$?" != "0" ]
#then
# f_exit "Failed to execute binary file Ats${ATS_NAME}" 10
#fi
f_exit "Build done successfully" 0
#!/bin/bash
#set -e
set -vx
function f_exit {
cd ${CURPWD}
unset TTCN_FILES
unset CC_FILES
unset CFG_FILES
unset EXECUTABLE
echo $1
exit $2
}
function f_usage {
echo "build.bash: This script import from External Disk the "
echo "Optional arguments:"
echo " prof: Generate a makefile including profiling options (e.g. ./build.bash prof)"
exit 0
}
clear
if [ "$1" == "help" ]
then
f_usage
fi
ATS_NAME=DENM
#CURPWD=`pwd`
if [ ! "${PWD##*/}" == "objs" ]
then
cd ../objs
if [ ! $? == 0 ]
then
echo "Please move to PROJECT/obj directory"
exit 1
fi
fi
# Remove everything
rm -fr ../objs/*.hh
rm -fr ../objs/*.cc
rm -fr ../objs/*.log
rm -fr ../objs/*.o
rm -fr ../objs/Makefile
# Remove useless files
find .. -type f -name "*~" -exec rm {} \;
find .. -type f -name "*.bak" -exec rm {} \;
find .. -type f -name "*.log" -exec rm {} \;
# Build XSD files if any and put them in objs directory
if [ -d ../xsd ]
then
XSD_FILES=`find ../xsd -name '*.xsd'`
if [ "${OSTYPE}" == "cygwin" ]
then
xsd2ttcn.exe ${XSD_FILES}
else
xsd2ttcn ${XSD_FILES}
fi
if [ "$?" != "0" ]
then
f_exit "Failed to generate XSD source code" 2
fi
fi
# Build ASN.1 files if any and put them in objs directory
ASN1_PATH=${PATH_DEV_ITS}/ttcn/LibIts/asn1
if [ -d ${ASN1_PATH} ]
then
ASN1_FILES=`find ${ASN1_PATH} -name '*.asn*'`
if [ "${OSTYPE}" == "cygwin" ]
then
asn1_compiler.exe -e ${ASN1_FILES}
else
asn1_compiler -e ${ASN1_FILES}
fi
if [ "$?" != "0" ]
then
f_exit "Failed to generate ASN.1 source code" 3
fi
fi
REFERENCES="LibCommon LibIts/Common LibIts/BTP LibIts/GeoNetworking LibIts/Ipv6OverGeoNetworking LibIts/Security LibIts/CAM LibIts/DENM LibIts/IVIM LibIts/MapemSpatem LibIts/SremSsem LibIts/Rtcmem LibIts/Http LibIts/Pki"
for i in ${REFERENCES}
do
# TTCN code
for j in `find ${PATH_DEV_ITS}/src/$i/ttcn -type f -name "*.ttcn"`;
do
ln -sf $j ../ttcn/`basename $j`
done
# Include source code
files=`find ${PATH_DEV_ITS}/src/$i/include -type f`
if [ "${files}" != " " ]
then
for j in ${files};
do
ln -sf $j ../include/`basename $j`
done
fi
# CC source code
files=`find ${PATH_DEV_ITS}/src/$i/src -type f`
if [ "${files}" != " " ]
then
for j in ${files};
do
ln -sf $j ../src/`basename $j`
done
fi
done
# Generate the list of the TTCN-3 files
TTCN_FILES=`find .. -name '*.ttcn*'`
# Start ATS generation - Step 1
if [ "${OSTYPE}" == "cygwin" ]
then
rm ../bin/*.exe ../lib/*.dll
compiler.exe -d -e -f -g -j -l -L -n -t -R -U none -x -X ${TTCN_FILES} ${ASN1_FILES} 2>&1 3>&1 | tee build.log
if [ "$?" == "1" ]
then
f_exit "Failed to compile ATS" 4
fi
else
compiler -d -e -f -g -l -L -n -t -R -U none -x -X ${TTCN_FILES} ${ASN1_FILES} 2>&1 3>&1 | tee build.log
if [ "$?" == "1" ]
then
f_exit "Failed to generate ATS source code" 6
fi
fi
# Sart ATS generation - Step 2
# Create working variables
CC_FILES=`find ../src -name '*.c*'`
FWK_FILES=`find ${PATH_DEV_ITS}/framework/ -name '*.c*'`
CFG_FILES=`find ../etc -name '*.cfg'`
# Sart ATS generation - Step 3
if [ "${OSTYPE}" == "cygwin" ]
then
ttcn3_makefilegen.exe -d -f -g -m -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${ASN1_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log
if [ "$?" == "1" ]
then
f_exit "Failed to compile ATS" 5
fi
else
ttcn3_makefilegen -d -f -g -m -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${ASN1_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log
if [ "$?" == "1" ]
then
f_exit "Failed to generate ATS source code" 7
fi
fi
# Remove port skeletons to use src/<port skeletons>
for i in `ls ../include/*.hh`
do
if [ -f ./`basename $i` ]
then
rm ./`basename $i`
fi
done
for i in `ls ../src/*.cc`
do
if [ -f ./`basename $i` ]
then
rm ./`basename $i`
fi
done
# Check if Makefile was generated
if [ ! -f ./Makefile ]
then
f_exit "Failed to generate ATS source code" 8
fi
# Patch ATS generated files
#./bin/patch.bash 2>&1 3>&1 | tee --append build.log
# Add compiler/linker options
if [ "$1" == "prof" ]
then
if [ "${OSTYPE}" == "cygwin" ]
then
CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
if [ "${OSTYPE}" == "cygwin" ]
then
CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_ITS)/include -I$(PATH_DEV_ITS)/include/asn1 -I$(PATH_DEV_ITS)/framework/include -I../include -I../../LibIts/Common/include -I../../LibIts/BTP/include -I../../LibIts/CAM/include -I../../LibIts/DENM/include -I$(HOME_INC) -I.'
ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lssl -lstdc++fs -lpcap -L$(PATH_DEV_ITS)\/lib -lItsAsn /g'
sed --in-place "${CXXFLAGS_DEBUG_MODE}" ./Makefile
sed --in-place "${LDFLAGS_DEBUG_MODE}" ./Makefile
sed --in-place "${ADD_INCLUDE}" ./Makefile
sed --in-place "${ADD_LIBRARIES}" ./Makefile
# Update COMPILER_FLAGS
COMPILER_FLAGS='s/COMPILER_FLAGS = /COMPILER_FLAGS = -e /g'
sed --in-place "${COMPILER_FLAGS}" ./Makefile
# Update clean clause
CLEAN_LINE='s/$(RM) $(EXECUTABLE)/$(RM) ..\/bin\/$(EXECUTABLE) ..\/src\/*.o/g'
sed --in-place "${CLEAN_LINE}" ./Makefile
# Move binary file command
EXECUTABLE=MyExample
MV_CMD='s/all: $(TARGET) ;/all: $(TARGET) ; @if [ -f ..\/objs\/$(EXECUTABLE) ]; then mv ..\/objs\/$(EXECUTABLE) ..\/bin; fi ;/g'
sed --in-place "${MV_CMD}" ./Makefile
# Add run command
ADD_HOST='/PLATFORM = /aHOST=127.0.0.1'
ADD_PORT='/PLATFORM = /aPORT=12000'
sed --in-place "${ADD_PORT}" ./Makefile
sed --in-place "${ADD_HOST}" ./Makefile
ADD_RUN_LINE_1='$arun: all'
ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
ADD_RUN_LINE_1='$arun_d: all'
ADD_RUN_LINE_2='$a\\t@gdb --args $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
ADD_RUN_LINE_1='$arun_v: all'
ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --track-fds=yes --run-cxx-freeres=yes $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
# Add Doxygen entry
ADD_RUN_LINE_1='$agendoc:'
ADD_RUN_LINE_2='$a\\tdoxygen ../docs/o2.cfg'
ADD_RUN_LINE_3='$a\\tmandb ../docs/man'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
sed --in-place "${ADD_RUN_LINE_3}" ./Makefile
# Build all
make all 2>&1 3>&1 | tee --append build.log
if [ "$?" == "0" ]
then
f_exit "Failed to generate ATS source code" 9
fi
../bin/Ats${ATS_NAME} -v
#if [ "$?" != "0" ]
#then
# f_exit "Failed to execute binary file Ats${ATS_NAME}" 10
#fi
f_exit "Build done successfully" 0
#!/bin/bash
#set -e
set -vx
function f_exit {
cd ${CURPWD}
unset TTCN_FILES
unset CC_FILES
unset CFG_FILES
unset EXECUTABLE
echo $1
exit $2
}
function f_usage {
echo "build.bash: This script import from External Disk the "
echo "Optional arguments:"
echo " prof: Generate a makefile including profiling options (e.g. ./build.bash prof)"
exit 0
}
clear
if [ "$1" == "help" ]
then
f_usage
fi
ATS_NAME=GenCat
#CURPWD=`pwd`
if [ ! "${PWD##*/}" == "objs" ]
then
cd ../objs
if [ ! $? == 0 ]
then
echo "Please move to PROJECT/obj directory"
exit 1
fi
fi
# Remove everything
rm -fr ../objs/*.hh
rm -fr ../objs/*.cc
rm -fr ../objs/*.log
rm -fr ../objs/*.o
rm -fr ../objs/Makefile
# Remove useless files
find .. -type f -name "*~" -exec rm {} \;
find .. -type f -name "*.bak" -exec rm {} \;
find .. -type f -name "*.log" -exec rm {} \;
# Build XSD files if any and put them in objs directory
if [ -d ../xsd ]
then
XSD_FILES=`find ../xsd -name '*.xsd'`
if [ "${OSTYPE}" == "cygwin" ]
then
xsd2ttcn.exe ${XSD_FILES}
else
xsd2ttcn ${XSD_FILES}
fi
if [ "$?" != "0" ]
then
f_exit "Failed to generate XSD source code" 2
fi
fi
# Build ASN.1 files if any and put them in objs directory
ASN1_PATH=${PATH_DEV_ITS}/ttcn/LibIts/asn1
if [ -d ${ASN1_PATH} ]
then
ASN1_FILES=`find ${ASN1_PATH} -name '*.asn*'`
if [ "${OSTYPE}" == "cygwin" ]
then
asn1_compiler.exe -e ${ASN1_FILES}
else
asn1_compiler -e ${ASN1_FILES}
fi
if [ "$?" != "0" ]
then
f_exit "Failed to generate ASN.1 source code" 3
fi
fi
REFERENCES="LibCommon LibIts/Common LibIts/BTP LibIts/GeoNetworking LibIts/Ipv6OverGeoNetworking LibIts/Security LibIts/CAM LibIts/DENM LibIts/IVIM LibIts/MapemSpatem LibIts/SremSsem LibIts/Http LibIts/Pki"
for i in ${REFERENCES}
do
# TTCN code
for j in `find ${PATH_DEV_ITS}/src/$i/ttcn -type f -name "*.ttcn"`;
do
ln -sf $j ../ttcn/`basename $j`
done
# Include source code
files=`find ${PATH_DEV_ITS}/src/$i/include -type f`
if [ "${files}" != " " ]
then
for j in ${files};
do
ln -sf $j ../include/`basename $j`
done
fi
# CC source code
files=`find ${PATH_DEV_ITS}/src/$i/src -type f`
if [ "${files}" != " " ]
then
for j in ${files};
do
ln -sf $j ../src/`basename $j`
done
fi
done
# Generate the list of the TTCN-3 files
TTCN_FILES=`find .. -name '*.ttcn*'`
# Start ATS generation - Step 1
if [ "${OSTYPE}" == "cygwin" ]
then
rm ../bin/*.exe ../lib/*.dll
compiler.exe -d -e -f -g -j -l -L -n -t -R -U none -x -X ${TTCN_FILES} ${ASN1_FILES} 2>&1 3>&1 | tee build.log
if [ "$?" == "1" ]
then
f_exit "Failed to compile ATS" 4
fi
else
compiler -d -e -f -g -l -L -n -t -R -U none -x -X ${TTCN_FILES} ${ASN1_FILES} 2>&1 3>&1 | tee build.log
if [ "$?" == "1" ]
then
f_exit "Failed to generate ATS source code" 6
fi
fi
# Sart ATS generation - Step 2
# Create working variables
CC_FILES=`find ../src -name '*.c*'`
FWK_FILES=`find ${PATH_DEV_ITS}/framework/ -name '*.c*'`
CFG_FILES=`find ../etc -name '*.cfg'`
# Sart ATS generation - Step 3
if [ "${OSTYPE}" == "cygwin" ]
then
ttcn3_makefilegen.exe -d -f -g -m -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${ASN1_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log
if [ "$?" == "1" ]
then
f_exit "Failed to compile ATS" 5
fi
else
ttcn3_makefilegen -d -f -g -m -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${ASN1_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log
if [ "$?" == "1" ]
then
f_exit "Failed to generate ATS source code" 7
fi
fi
# Remove port skeletons to use src/<port skeletons>
for i in `ls ../include/*.hh`
do
if [ -f ./`basename $i` ]
then
rm ./`basename $i`
fi
done
for i in `ls ../src/*.cc`
do
if [ -f ./`basename $i` ]
then
rm ./`basename $i`
fi
done
# Check if Makefile was generated
if [ ! -f ./Makefile ]
then
f_exit "Failed to generate ATS source code" 8
fi
# Patch ATS generated files
#./bin/patch.bash 2>&1 3>&1 | tee --append build.log
# Add compiler/linker options
if [ "$1" == "prof" ]
then
if [ "${OSTYPE}" == "cygwin" ]
then
CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
if [ "${OSTYPE}" == "cygwin" ]
then
CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_ITS)/include -I$(PATH_DEV_ITS)/include/asn1 -I$(PATH_DEV_ITS)/framework/include -I../include -I../../LibIts/Common/include -I../../LibIts/BTP/include -I../../LibIts/CAM/include -I../../LibIts/DENM/include -I$(HOME_INC) -I.'
ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lssl -lstdc++fs -lpcap -L$(PATH_DEV_ITS)\/lib -lItsAsn /g'
sed --in-place "${CXXFLAGS_DEBUG_MODE}" ./Makefile
sed --in-place "${LDFLAGS_DEBUG_MODE}" ./Makefile
sed --in-place "${ADD_INCLUDE}" ./Makefile
sed --in-place "${ADD_LIBRARIES}" ./Makefile
# Update COMPILER_FLAGS
COMPILER_FLAGS='s/COMPILER_FLAGS = /COMPILER_FLAGS = -e /g'
sed --in-place "${COMPILER_FLAGS}" ./Makefile
# Update clean clause
CLEAN_LINE='s/$(RM) $(EXECUTABLE)/$(RM) ..\/bin\/$(EXECUTABLE) ..\/src\/*.o/g'
sed --in-place "${CLEAN_LINE}" ./Makefile
# Move binary file command
EXECUTABLE=MyExample
MV_CMD='s/all: $(TARGET) ;/all: $(TARGET) ; @if [ -f ..\/objs\/$(EXECUTABLE) ]; then mv ..\/objs\/$(EXECUTABLE) ..\/bin; fi ;/g'
sed --in-place "${MV_CMD}" ./Makefile
# Add run command
ADD_HOST='/PLATFORM = /aHOST=127.0.0.1'
ADD_PORT='/PLATFORM = /aPORT=12000'
sed --in-place "${ADD_PORT}" ./Makefile
sed --in-place "${ADD_HOST}" ./Makefile
ADD_RUN_LINE_1='$arun: all'
ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
ADD_RUN_LINE_1='$arun_d: all'
ADD_RUN_LINE_2='$a\\t@gdb --args $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
ADD_RUN_LINE_1='$arun_v: all'
ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --track-fds=yes --run-cxx-freeres=yes $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
# Add Doxygen entry
ADD_RUN_LINE_1='$agendoc:'
ADD_RUN_LINE_2='$a\\tdoxygen ../docs/o2.cfg'
ADD_RUN_LINE_3='$a\\tmandb ../docs/man'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
sed --in-place "${ADD_RUN_LINE_3}" ./Makefile
# Build all
make all 2>&1 3>&1 | tee --append build.log
if [ "$?" != "0" ]
then
f_exit "Failed to generate ATS source code" 9
fi
../bin/Ats${ATS_NAME} -v
if [ "$?" != "0" ]
then
f_exit "Failed to execute binary file Ats${ATS_NAME}" 10
fi
f_exit "Build done successfully" 0
#!/bin/bash
#set -e
set -vx
function f_exit {
cd ${CURPWD}
unset TTCN_FILES
unset CC_FILES
unset CFG_FILES
unset EXECUTABLE
echo $1
exit $2
}
function f_usage {
echo "build.bash: This script import from External Disk the "
echo "Optional arguments:"
echo " prof: Generate a makefile including profiling options (e.g. ./build.bash prof)"
exit 0
}
clear
if [ "$1" == "help" ]
then
f_usage
fi
ATS_NAME=GeoNetworking
#CURPWD=`pwd`
if [ ! "${PWD##*/}" == "objs" ]
then
cd ../objs
if [ ! $? == 0 ]
then
echo "Please move to PROJECT/obj directory"
exit 1
fi
fi
# Remove everything
rm -fr ../objs/*.hh
rm -fr ../objs/*.cc
rm -fr ../objs/*.log
rm -fr ../objs/*.o
rm -fr ../objs/Makefile
# Remove useless files
find .. -type f -name "*~" -exec rm {} \;
find .. -type f -name "*.bak" -exec rm {} \;
find .. -type f -name "*.log" -exec rm {} \;
# Build XSD files if any and put them in objs directory
if [ -d ../xsd ]
then
XSD_FILES=`find ../xsd -name '*.xsd'`
if [ "${OSTYPE}" == "cygwin" ]
then
xsd2ttcn.exe ${XSD_FILES}
else
xsd2ttcn ${XSD_FILES}
fi
if [ "$?" != "0" ]
then
f_exit "Failed to generate XSD source code" 2
fi
fi
# Build ASN.1 files if any and put them in objs directory
ASN1_PATH=${PATH_DEV_ITS}/ttcn/LibIts/asn1
if [ -d ${ASN1_PATH} ]
then
ASN1_FILES=`find ${ASN1_PATH} -name '*.asn*'`
if [ "${OSTYPE}" == "cygwin" ]
then
asn1_compiler.exe -e ${ASN1_FILES}
else
asn1_compiler -e ${ASN1_FILES}
fi
if [ "$?" != "0" ]
then
f_exit "Failed to generate ASN.1 source code" 3
fi
fi
REFERENCES="LibCommon LibIts/Common LibIts/BTP LibIts/GeoNetworking LibIts/Ipv6OverGeoNetworking LibIts/Security LibIts/CAM LibIts/DENM LibIts/IVIM LibIts/MapemSpatem LibIts/SremSsem LibIts/Rtcmem LibIts/Http LibIts/Pki"
for i in ${REFERENCES}
do
# TTCN code
for j in `find ${PATH_DEV_ITS}/src/$i/ttcn -type f -name "*.ttcn"`;
do
ln -sf $j ../ttcn/`basename $j`
done
# Include source code
files=`find ${PATH_DEV_ITS}/src/$i/include -type f`
if [ "${files}" != " " ]
then
for j in ${files};
do
ln -sf $j ../include/`basename $j`
done
fi
# CC source code
files=`find ${PATH_DEV_ITS}/src/$i/src -type f`
if [ "${files}" != " " ]
then
for j in ${files};
do
ln -sf $j ../src/`basename $j`
done
fi
done
# Generate the list of the TTCN-3 files
TTCN_FILES=`find .. -name '*.ttcn*'`
# Start ATS generation - Step 1
if [ "${OSTYPE}" == "cygwin" ]
then
rm ../bin/*.exe ../lib/*.dll
compiler.exe -d -e -f -g -j -l -L -n -t -R -U none -x -X ${TTCN_FILES} ${ASN1_FILES} 2>&1 3>&1 | tee build.log
if [ "$?" == "1" ]
then
f_exit "Failed to compile ATS" 4
fi
else
compiler -d -e -f -g -l -L -n -t -R -U none -x -X ${TTCN_FILES} ${ASN1_FILES} 2>&1 3>&1 | tee build.log
if [ "$?" == "1" ]
then
f_exit "Failed to generate ATS source code" 6
fi
fi
# Sart ATS generation - Step 2
# Create working variables
CC_FILES=`find ../src -name '*.c*'`
FWK_FILES=`find ${PATH_DEV_ITS}/framework/ -name '*.c*'`
CFG_FILES=`find ../etc -name '*.cfg'`
# Sart ATS generation - Step 3
if [ "${OSTYPE}" == "cygwin" ]
then
ttcn3_makefilegen.exe -d -f -g -m -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${ASN1_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log
if [ "$?" == "1" ]
then
f_exit "Failed to compile ATS" 5
fi
else
ttcn3_makefilegen -d -f -g -m -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${ASN1_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log
if [ "$?" == "1" ]
then
f_exit "Failed to generate ATS source code" 7
fi
fi
# Remove port skeletons to use src/<port skeletons>
for i in `ls ../include/*.hh`
do
if [ -f ./`basename $i` ]
then
rm ./`basename $i`
fi
done
for i in `ls ../src/*.cc`
do
if [ -f ./`basename $i` ]
then
rm ./`basename $i`
fi
done
# Check if Makefile was generated
if [ ! -f ./Makefile ]
then
f_exit "Failed to generate ATS source code" 8
fi
# Patch ATS generated files
#./bin/patch.bash 2>&1 3>&1 | tee --append build.log
# Add compiler/linker options
if [ "$1" == "prof" ]
then
if [ "${OSTYPE}" == "cygwin" ]
then
CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
if [ "${OSTYPE}" == "cygwin" ]
then
CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_ITS)/include -I$(PATH_DEV_ITS)/include/asn1 -I$(PATH_DEV_ITS)/framework/include -I../include -I../../LibIts/Common/include -I../../LibIts/BTP/include -I../../LibIts/CAM/include -I../../LibIts/DENM/include -I$(HOME_INC) -I.'
ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lssl -lstdc++fs -lpcap -L$(PATH_DEV_ITS)\/lib -lItsAsn /g'
sed --in-place "${CXXFLAGS_DEBUG_MODE}" ./Makefile
sed --in-place "${LDFLAGS_DEBUG_MODE}" ./Makefile
sed --in-place "${ADD_INCLUDE}" ./Makefile
sed --in-place "${ADD_LIBRARIES}" ./Makefile
# Update COMPILER_FLAGS
COMPILER_FLAGS='s/COMPILER_FLAGS = /COMPILER_FLAGS = -e /g'
sed --in-place "${COMPILER_FLAGS}" ./Makefile
# Update clean clause
CLEAN_LINE='s/$(RM) $(EXECUTABLE)/$(RM) ..\/bin\/$(EXECUTABLE) ..\/src\/*.o/g'
sed --in-place "${CLEAN_LINE}" ./Makefile
# Move binary file command
EXECUTABLE=MyExample
MV_CMD='s/all: $(TARGET) ;/all: $(TARGET) ; @if [ -f ..\/objs\/$(EXECUTABLE) ]; then mv ..\/objs\/$(EXECUTABLE) ..\/bin; fi ;/g'
sed --in-place "${MV_CMD}" ./Makefile
# Add run command
ADD_HOST='/PLATFORM = /aHOST=127.0.0.1'
ADD_PORT='/PLATFORM = /aPORT=12000'
sed --in-place "${ADD_PORT}" ./Makefile
sed --in-place "${ADD_HOST}" ./Makefile
ADD_RUN_LINE_1='$arun: all'
ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
ADD_RUN_LINE_1='$arun_d: all'
ADD_RUN_LINE_2='$a\\t@gdb --args $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
ADD_RUN_LINE_1='$arun_v: all'
ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --track-fds=yes --run-cxx-freeres=yes $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
# Add Doxygen entry
ADD_RUN_LINE_1='$agendoc:'
ADD_RUN_LINE_2='$a\\tdoxygen ../docs/o2.cfg'
ADD_RUN_LINE_3='$a\\tmandb ../docs/man'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
sed --in-place "${ADD_RUN_LINE_3}" ./Makefile
# Build all
make all 2>&1 3>&1 | tee --append build.log
if [ "$?" != "0" ]
then
f_exit "Failed to generate ATS source code" 9
fi
../bin/Ats${ATS_NAME} -v
#if [ "$?" != "0" ]
#then
# f_exit "Failed to execute binary file Ats${ATS_NAME}" 10
#fi
f_exit "Build done successfully" 0
#!/bin/bash
#set -e
set -vx
function f_exit {
cd ${CURPWD}
unset TTCN_FILES
unset CC_FILES
unset CFG_FILES
unset EXECUTABLE
echo $1
exit $2
}
function f_usage {
echo "build.bash: This script import from External Disk the "
echo "Optional arguments:"
echo " prof: Generate a makefile including profiling options (e.g. ./build.bash prof)"
exit 0
}
clear
if [ "$1" == "help" ]
then
f_usage
fi
ATS_NAME=Ivim
#CURPWD=`pwd`
if [ ! "${PWD##*/}" == "objs" ]
then
cd ../objs
if [ ! $? == 0 ]
then
echo "Please move to PROJECT/obj directory"
exit 1
fi
fi
# Remove everything
rm -fr ../objs/*.hh
rm -fr ../objs/*.cc
rm -fr ../objs/*.log
rm -fr ../objs/*.o
rm -fr ../objs/Makefile
# Remove useless files
find .. -type f -name "*~" -exec rm {} \;
find .. -type f -name "*.bak" -exec rm {} \;
find .. -type f -name "*.log" -exec rm {} \;
# Build XSD files if any and put them in objs directory
if [ -d ../xsd ]
then
XSD_FILES=`find ../xsd -name '*.xsd'`
if [ "${OSTYPE}" == "cygwin" ]
then
xsd2ttcn.exe ${XSD_FILES}
else
xsd2ttcn ${XSD_FILES}
fi
if [ "$?" != "0" ]
then
f_exit "Failed to generate XSD source code" 2
fi
fi
# Build ASN.1 files if any and put them in objs directory
ASN1_PATH=${PATH_DEV_ITS}/ttcn/LibIts/asn1
if [ -d ${ASN1_PATH} ]
then
ASN1_FILES=`find ${ASN1_PATH} -name '*.asn*'`
if [ "${OSTYPE}" == "cygwin" ]
then
asn1_compiler.exe -e ${ASN1_FILES}
else
asn1_compiler -e ${ASN1_FILES}
fi
if [ "$?" != "0" ]
then
f_exit "Failed to generate ASN.1 source code" 3
fi
fi
REFERENCES="LibCommon LibIts/Common LibIts/BTP LibIts/GeoNetworking LibIts/Ipv6OverGeoNetworking LibIts/Security LibIts/CAM LibIts/DENM LibIts/IVIM LibIts/MapemSpatem LibIts/SremSsem LibIts/Rtcmem LibIts/Http LibIts/Pki"
for i in ${REFERENCES}
do
# TTCN code
for j in `find ${PATH_DEV_ITS}/src/$i/ttcn -type f -name "*.ttcn"`;
do
ln -sf $j ../ttcn/`basename $j`
done
# Include source code
files=`find ${PATH_DEV_ITS}/src/$i/include -type f`
if [ "${files}" != " " ]
then
for j in ${files};
do
ln -sf $j ../include/`basename $j`
done
fi
# CC source code
files=`find ${PATH_DEV_ITS}/src/$i/src -type f`
if [ "${files}" != " " ]
then
for j in ${files};
do
ln -sf $j ../src/`basename $j`
done
fi
done
# Generate the list of the TTCN-3 files
TTCN_FILES=`find .. -name '*.ttcn*'`
# Start ATS generation - Step 1
if [ "${OSTYPE}" == "cygwin" ]
then
rm ../bin/*.exe ../lib/*.dll
compiler.exe -d -e -f -g -j -l -L -n -t -R -U none -x -X ${TTCN_FILES} ${ASN1_FILES} 2>&1 3>&1 | tee build.log
if [ "$?" == "1" ]
then
f_exit "Failed to compile ATS" 4
fi
else
compiler -d -e -f -g -l -L -n -t -R -U none -x -X ${TTCN_FILES} ${ASN1_FILES} 2>&1 3>&1 | tee build.log
if [ "$?" == "1" ]
then
f_exit "Failed to generate ATS source code" 6
fi
fi
# Sart ATS generation - Step 2
# Create working variables
CC_FILES=`find ../src -name '*.c*'`
FWK_FILES=`find ${PATH_DEV_ITS}/framework/ -name '*.c*'`
CFG_FILES=`find ../etc -name '*.cfg'`
# Sart ATS generation - Step 3
if [ "${OSTYPE}" == "cygwin" ]
then
ttcn3_makefilegen.exe -d -f -g -m -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${ASN1_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log
if [ "$?" == "1" ]
then
f_exit "Failed to compile ATS" 5
fi
else
ttcn3_makefilegen -d -f -g -m -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${ASN1_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log
if [ "$?" == "1" ]
then
f_exit "Failed to generate ATS source code" 7
fi
fi
# Remove port skeletons to use src/<port skeletons>
for i in `ls ../include/*.hh`
do
if [ -f ./`basename $i` ]
then
rm ./`basename $i`
fi
done
for i in `ls ../src/*.cc`
do
if [ -f ./`basename $i` ]
then
rm ./`basename $i`
fi
done
# Check if Makefile was generated
if [ ! -f ./Makefile ]
then
f_exit "Failed to generate ATS source code" 8
fi
# Patch ATS generated files
#./bin/patch.bash 2>&1 3>&1 | tee --append build.log
# Add compiler/linker options
if [ "$1" == "prof" ]
then
if [ "${OSTYPE}" == "cygwin" ]
then
CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
if [ "${OSTYPE}" == "cygwin" ]
then
CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_ITS)/include -I$(PATH_DEV_ITS)/include/asn1 -I$(PATH_DEV_ITS)/framework/include -I../include -I../../LibIts/Common/include -I../../LibIts/BTP/include -I../../LibIts/CAM/include -I../../LibIts/DENM/include -I$(HOME_INC) -I.'
ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lssl -lstdc++fs -lpcap -L$(PATH_DEV_ITS)\/lib -lItsAsn /g'
sed --in-place "${CXXFLAGS_DEBUG_MODE}" ./Makefile
sed --in-place "${LDFLAGS_DEBUG_MODE}" ./Makefile
sed --in-place "${ADD_INCLUDE}" ./Makefile
sed --in-place "${ADD_LIBRARIES}" ./Makefile
# Update COMPILER_FLAGS
COMPILER_FLAGS='s/COMPILER_FLAGS = /COMPILER_FLAGS = -e /g'
sed --in-place "${COMPILER_FLAGS}" ./Makefile
# Update clean clause
CLEAN_LINE='s/$(RM) $(EXECUTABLE)/$(RM) ..\/bin\/$(EXECUTABLE) ..\/src\/*.o/g'
sed --in-place "${CLEAN_LINE}" ./Makefile
# Move binary file command
EXECUTABLE=MyExample
MV_CMD='s/all: $(TARGET) ;/all: $(TARGET) ; @if [ -f ..\/objs\/$(EXECUTABLE) ]; then mv ..\/objs\/$(EXECUTABLE) ..\/bin; fi ;/g'
sed --in-place "${MV_CMD}" ./Makefile
# Add run command
ADD_HOST='/PLATFORM = /aHOST=127.0.0.1'
ADD_PORT='/PLATFORM = /aPORT=12000'
sed --in-place "${ADD_PORT}" ./Makefile
sed --in-place "${ADD_HOST}" ./Makefile
ADD_RUN_LINE_1='$arun: all'
ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
ADD_RUN_LINE_1='$arun_d: all'
ADD_RUN_LINE_2='$a\\t@gdb --args $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
ADD_RUN_LINE_1='$arun_v: all'
ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --track-fds=yes --run-cxx-freeres=yes $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
# Add Doxygen entry
ADD_RUN_LINE_1='$agendoc:'
ADD_RUN_LINE_2='$a\\tdoxygen ../docs/o2.cfg'
ADD_RUN_LINE_3='$a\\tmandb ../docs/man'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
sed --in-place "${ADD_RUN_LINE_3}" ./Makefile
# Build all
make all 2>&1 3>&1 | tee --append build.log
if [ "$?" != "0" ]
then
f_exit "Failed to generate ATS source code" 9
fi
../bin/Ats${ATS_NAME} -v
#if [ "$?" != "0" ]
#then
# f_exit "Failed to execute binary file Ats${ATS_NAME}" 10
#fi
f_exit "Build done successfully" 0
#!/bin/bash
#set -e
set -vx
function f_exit {
cd ${CURPWD}
unset TTCN_FILES
unset CC_FILES
unset CFG_FILES
unset EXECUTABLE
echo $1
exit $2
}
function f_usage {
echo "build.bash: This script import from External Disk the "
echo "Optional arguments:"
echo " prof: Generate a makefile including profiling options (e.g. ./build.bash prof)"
exit 0
}
clear
if [ "$1" == "help" ]
then
f_usage
fi
ATS_NAME=MapemSpatem
#CURPWD=`pwd`
if [ ! "${PWD##*/}" == "objs" ]
then
cd ../objs
if [ ! $? == 0 ]
then
echo "Please move to PROJECT/obj directory"
exit 1
fi
fi
# Remove everything
rm -fr ../objs/*.hh
rm -fr ../objs/*.cc
rm -fr ../objs/*.log
rm -fr ../objs/*.o
rm -fr ../objs/Makefile
# Remove useless files
find .. -type f -name "*~" -exec rm {} \;
find .. -type f -name "*.bak" -exec rm {} \;
find .. -type f -name "*.log" -exec rm {} \;
# Build XSD files if any and put them in objs directory
if [ -d ../xsd ]
then
XSD_FILES=`find ../xsd -name '*.xsd'`
if [ "${OSTYPE}" == "cygwin" ]
then
xsd2ttcn.exe ${XSD_FILES}
else
xsd2ttcn ${XSD_FILES}
fi
if [ "$?" != "0" ]
then
f_exit "Failed to generate XSD source code" 2
fi
fi
# Build ASN.1 files if any and put them in objs directory
ASN1_PATH=${PATH_DEV_ITS}/ttcn/LibIts/asn1
if [ -d ${ASN1_PATH} ]
then
ASN1_FILES=`find ${ASN1_PATH} -name '*.asn*'`
if [ "${OSTYPE}" == "cygwin" ]
then
asn1_compiler.exe -e ${ASN1_FILES}
else
asn1_compiler -e ${ASN1_FILES}
fi
if [ "$?" != "0" ]
then
f_exit "Failed to generate ASN.1 source code" 3
fi
fi
REFERENCES="LibCommon LibIts/Common LibIts/BTP LibIts/GeoNetworking LibIts/Ipv6OverGeoNetworking LibIts/Security LibIts/CAM LibIts/DENM LibIts/IVIM LibIts/MapemSpatem LibIts/SremSsem LibIts/Rtcmem LibIts/Http LibIts/Pki"
for i in ${REFERENCES}
do
# TTCN code
for j in `find ${PATH_DEV_ITS}/src/$i/ttcn -type f -name "*.ttcn"`;
do
ln -sf $j ../ttcn/`basename $j`
done
# Include source code
files=`find ${PATH_DEV_ITS}/src/$i/include -type f`
if [ "${files}" != " " ]
then
for j in ${files};
do
ln -sf $j ../include/`basename $j`
done
fi
# CC source code
files=`find ${PATH_DEV_ITS}/src/$i/src -type f`
if [ "${files}" != " " ]
then
for j in ${files};
do
ln -sf $j ../src/`basename $j`
done
fi
done
# Generate the list of the TTCN-3 files
TTCN_FILES=`find .. -name '*.ttcn*'`
# Start ATS generation - Step 1
if [ "${OSTYPE}" == "cygwin" ]
then
rm ../bin/*.exe ../lib/*.dll
compiler.exe -d -e -f -g -j -l -L -n -t -R -U none -x -X ${TTCN_FILES} ${ASN1_FILES} 2>&1 3>&1 | tee build.log
if [ "$?" == "1" ]
then
f_exit "Failed to compile ATS" 4
fi
else
compiler -d -e -f -g -l -L -n -t -R -U none -x -X ${TTCN_FILES} ${ASN1_FILES} 2>&1 3>&1 | tee build.log
if [ "$?" == "1" ]
then
f_exit "Failed to generate ATS source code" 6
fi
fi
# Sart ATS generation - Step 2
# Create working variables
CC_FILES=`find ../src -name '*.c*'`
FWK_FILES=`find ${PATH_DEV_ITS}/framework/ -name '*.c*'`
CFG_FILES=`find ../etc -name '*.cfg'`
# Sart ATS generation - Step 3
if [ "${OSTYPE}" == "cygwin" ]
then
ttcn3_makefilegen.exe -d -f -g -m -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${ASN1_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log
if [ "$?" == "1" ]
then
f_exit "Failed to compile ATS" 5
fi
else
ttcn3_makefilegen -d -f -g -m -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${ASN1_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log
if [ "$?" == "1" ]
then
f_exit "Failed to generate ATS source code" 7
fi
fi
# Remove port skeletons to use src/<port skeletons>
for i in `ls ../include/*.hh`
do
if [ -f ./`basename $i` ]
then
rm ./`basename $i`
fi
done
for i in `ls ../src/*.cc`
do
if [ -f ./`basename $i` ]
then
rm ./`basename $i`
fi
done
# Check if Makefile was generated
if [ ! -f ./Makefile ]
then
f_exit "Failed to generate ATS source code" 8
fi
# Patch ATS generated files
#./bin/patch.bash 2>&1 3>&1 | tee --append build.log
# Add compiler/linker options
if [ "$1" == "prof" ]
then
if [ "${OSTYPE}" == "cygwin" ]
then
CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
if [ "${OSTYPE}" == "cygwin" ]
then
CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_ITS)/include -I$(PATH_DEV_ITS)/include/asn1 -I$(PATH_DEV_ITS)/framework/include -I../include -I../../LibIts/Common/include -I../../LibIts/BTP/include -I../../LibIts/CAM/include -I../../LibIts/DENM/include -I$(HOME_INC) -I.'
ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lssl -lstdc++fs -lpcap -L$(PATH_DEV_ITS)\/lib -lItsAsn /g'
sed --in-place "${CXXFLAGS_DEBUG_MODE}" ./Makefile
sed --in-place "${LDFLAGS_DEBUG_MODE}" ./Makefile
sed --in-place "${ADD_INCLUDE}" ./Makefile
sed --in-place "${ADD_LIBRARIES}" ./Makefile
# Update COMPILER_FLAGS
COMPILER_FLAGS='s/COMPILER_FLAGS = /COMPILER_FLAGS = -e /g'
sed --in-place "${COMPILER_FLAGS}" ./Makefile
# Update clean clause
CLEAN_LINE='s/$(RM) $(EXECUTABLE)/$(RM) ..\/bin\/$(EXECUTABLE) ..\/src\/*.o/g'
sed --in-place "${CLEAN_LINE}" ./Makefile
# Move binary file command
EXECUTABLE=MyExample
MV_CMD='s/all: $(TARGET) ;/all: $(TARGET) ; @if [ -f ..\/objs\/$(EXECUTABLE) ]; then mv ..\/objs\/$(EXECUTABLE) ..\/bin; fi ;/g'
sed --in-place "${MV_CMD}" ./Makefile
# Add run command
ADD_HOST='/PLATFORM = /aHOST=127.0.0.1'
ADD_PORT='/PLATFORM = /aPORT=12000'
sed --in-place "${ADD_PORT}" ./Makefile
sed --in-place "${ADD_HOST}" ./Makefile
ADD_RUN_LINE_1='$arun: all'
ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
ADD_RUN_LINE_1='$arun_d: all'
ADD_RUN_LINE_2='$a\\t@gdb --args $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
ADD_RUN_LINE_1='$arun_v: all'
ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --track-fds=yes --run-cxx-freeres=yes $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
# Add Doxygen entry
ADD_RUN_LINE_1='$agendoc:'
ADD_RUN_LINE_2='$a\\tdoxygen ../docs/o2.cfg'
ADD_RUN_LINE_3='$a\\tmandb ../docs/man'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
sed --in-place "${ADD_RUN_LINE_3}" ./Makefile
# Build all
make all 2>&1 3>&1 | tee --append build.log
if [ "$?" != "0" ]
then
f_exit "Failed to generate ATS source code" 9
fi
../bin/Ats${ATS_NAME} -v
#if [ "$?" != "0" ]
#then
# f_exit "Failed to execute binary file Ats${ATS_NAME}" 10
#fi
f_exit "Build done successfully" 0
#!/bin/bash
# Debug mode
#set -vx
#set -e
# Usage: sudo ./merge_ite_project.bash
# TODO Use git clone in temporary directory
OLDPWD=`pwd`
# Storing path
DEST_DIR=~/tmp
if [ ! -d ${DEST_DIR} ]
then
exit -1
else
DEST_DIR=${DEST_DIR}/to_be_merged
if [ -d ${DEST_DIR} ]
then
rm -f ${DEST_DIR}/*
else
mkdir ${DEST_DIR}
fi
fi
chmod 775 ${DEST_DIR}
# Execution path
RUN_PATH="${0%/*}"
SRC_ITS_PATH=~/dev/TTF0002_Its
if [ "${PATH_DEV_ITS}" == "" ]
then
PATH_DEV_ITS=~/dev/etsi_its
fi
# Update ETSI Framework files
echo 'Merging ETSI Framework files'
FWK_SRC_PATH=${SRC_ITS_PATH}/ccsrc
FWK_DST_PATH=${PATH_DEV_ITS}/framework
FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/Protocols/ -name "*.h*" -type f`
for i in ${FWK_DIR_LIST_HH}
do
BN=`basename $i`
if [ "${BN}" != "BTPPort.hh" ]
then
s1=`sha256sum -b $i | cut -d' ' -f1`
s2=`sha256sum -b ${FWK_DST_PATH}/include/${BN} | cut -d' ' -f1`
if [ ${s1} != ${s2} ]
then
cp ${FWK_DST_PATH}/include/${BN} ${DEST_DIR}
if [ -f ${FWK_DST_PATH}/include/${BN}~ ]
then
rm ${FWK_DST_PATH}/include/${BN}~
fi
fi
fi
done
FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/Protocols/ -name "*.c*" -type f`
for i in ${FWK_DIR_LIST_CC}
do
BN=`basename $i`
if [ ${BN} != BTPPort.cc ]
then
s1=`sha256sum -b $i | cut -d' ' -f1`
s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1`
if [ ${s1} != ${s2} ]
then
cp ${FWK_DST_PATH}/src/${BN} ${DEST_DIR}
if [ -f ${FWK_DST_PATH}/src/${BN}~ ]
then
rm ${FWK_DST_PATH}/src/${BN}~
fi
fi
fi
done
FWK_DIR_LIST_Y=`find ${FWK_SRC_PATH}/Protocols/ -name "*.y" -type f`
for i in ${FWK_DIR_LIST_Y}
do
BN=`basename $i`
s1=`sha256sum -b $i | cut -d' ' -f1`
s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1`
if [ "${s1}" != "${s2}" ]
then
cp ${FWK_DST_PATH}/src/${BN} ${DEST_DIR}
if [ -f ${FWK_DST_PATH}/src/${BN}~ ]
then
rm ${FWK_DST_PATH}/src/${BN}~
fi
fi
done
FWK_DIR_LIST_L=`find ${FWK_SRC_PATH}/Protocols/ -name "*.l" -type f`
for i in ${FWK_DIR_LIST_L}
do
BN=`basename $i`
s1=`sha256sum -b $i | cut -d' ' -f1`
s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1`
if [ "${s1}" != "${s2}" ]
then
cp ${FWK_DST_PATH}/src/${BN} ${DEST_DIR}
if [ -f ${FWK_DST_PATH}/src/${BN}~ ]
then
rm ${FWK_DST_PATH}/src/${BN}~
fi
fi
done
FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/Framework/ -name "*.h*" -type f`
FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/Framework/ -name "*.c*" -type f`
for i in ${FWK_DIR_LIST_HH}
do
BN=`basename $i`
s1=`sha256sum -b $i | cut -d' ' -f1`
s2=`sha256sum -b ${FWK_DST_PATH}/include/${BN} | cut -d' ' -f1`
if [ ${s1} != ${s2} ]
then
cp ${FWK_DST_PATH}/include/${BN} ${DEST_DIR}
if [ -f ${FWK_DST_PATH}/include/${BN}~ ]
then
rm ${FWK_DST_PATH}/include/${BN}~
fi
fi
done
for i in ${FWK_DIR_LIST_CC}
do
BN=`basename $i`
s1=`sha256sum -b $i | cut -d' ' -f1`
s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1`
if [ ${s1} != ${s2} ]
then
cp ${FWK_DST_PATH}/src/${BN} ${DEST_DIR}
if [ -f ${FWK_DST_PATH}/src/${BN}~ ]
then
rm ${FWK_DST_PATH}/src/${BN}~
fi
fi
done
FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/loggers/ -name "*.h*" -type f`
for i in ${FWK_DIR_LIST_HH}
do
BN=`basename $i`
s1=`sha256sum -b $i | cut -d' ' -f1`
s2=`sha256sum -b ${FWK_DST_PATH}/include/${BN} | cut -d' ' -f1`
if [ ${s1} != ${s2} ]
then
cp ${FWK_DST_PATH}/include/${BN} ${DEST_DIR}
if [ -f ${FWK_DST_PATH}/include/${BN}~ ]
then
rm ${FWK_DST_PATH}/include/${BN}~
fi
fi
done
FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/loggers/ -name "*.c*" -type f`
for i in ${FWK_DIR_LIST_CC}
do
BN=`basename $i`
s1=`sha256sum -b $i | cut -d' ' -f1`
s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1`
if [ ${s1} != ${s2} ]
then
cp ${FWK_DST_PATH}/src/${BN} ${DEST_DIR}
if [ -f ${FWK_DST_PATH}/src/${BN}~ ]
then
rm ${FWK_DST_PATH}/src/${BN}~
fi
fi
done
# Update ATS TTCN-3 files
echo 'Update TTCN-3 files'
TTCN_3_ORG_PATH=${SRC_ITS_PATH}/ttcn
TTCN_3_DST_PATH=${PATH_DEV_ITS}/src
TTCN_3_ATS_LIST='AtsAutoInterop AtsCAM AtsDENM AtsBTP AtsGeoNetworking AtsSecurity AtsPki AtsIVIM AtsMapemSpatem AtsSremSsem AtsRtcmem AtsRSUsSimulator LibCommon'
for i in ${TTCN_3_ATS_LIST}
do
LIST_TTCN_FILES=`find ${TTCN_3_ORG_PATH}/$i -name "*.ttcn" -type f`
for j in ${LIST_TTCN_FILES}
do
BN=`basename $j`
s1=`sha256sum -b $j | cut -d' ' -f1`
s2=`sha256sum -b ${TTCN_3_DST_PATH}/$i/ttcn/${BN} | cut -d' ' -f1`
if [ ${s1} != ${s2} ]
then
cp ${TTCN_3_DST_PATH}/$i/ttcn/${BN} ${DEST_DIR}
fi
done
# Other files
if [ -f ${SRC_ITS_PATH}/docs/$i/o2.cfg ]
then
s1=`sha256sum -b ${PATH_DEV_ITS}/src/$i/docs/o2.cfg | cut -d' ' -f1`
s2=`sha256sum -b ${SRC_ITS_PATH}/docs/$i/o2.cfg | cut -d' ' -f1`
if [ ${s1} != ${s2} ]
then
mkdir -p ${DEST_DIR}/docs/$i
cp ${PATH_DEV_ITS}/src/$i/docs/o2.cfg ${DEST_DIR}/docs/$i
fi
fi
for k in `ls *.cfg`
do
if [ -f ${SRC_ITS_PATH}/etc/$i/$k ]
then
s1=`sha256sum -b ${PATH_DEV_ITS}/src/$i/etc/$k | cut -d' ' -f1`
s2=`sha256sum -b ${SRC_ITS_PATH}/etc/$i/$k | cut -d' ' -f1`
if [ ${s1} != ${s2} ]
then
mkdir -p ${DEST_DIR}/etc/$i
cp ${PATH_DEV_ITS}/src/$i/etc/$k ${DEST_DIR}/etc/$i
fi
fi
done
for k in `ls *.cfg_`
do
if [ -f ${SRC_ITS_PATH}/etc/$i/$k ]
then
s1=`sha256sum -b ${PATH_DEV_ITS}/src/$i/etc/$k | cut -d' ' -f1`
s2=`sha256sum -b ${SRC_ITS_PATH}/etc/$i/$k | cut -d' ' -f1`
if [ ${s1} != ${s2} ]
then
mkdir -p ${DEST_DIR}/etc/$i
cp ${PATH_DEV_ITS}/src/$i/etc/$k ${DEST_DIR}/etc/$i
fi
fi
done
done
TTCN_3_LIB_LIST='BTP CAM Common DENM GeoNetworking Http Ipv6OverGeoNetworking IVIM MapemSpatem Pki Rtcmem Security SremSsem'
for i in ${TTCN_3_LIB_LIST}
do
LIST_TTCN_FILES=`find ${TTCN_3_ORG_PATH}/LibIts/ttcn/$i -name "*.ttcn" -type f`
for j in ${LIST_TTCN_FILES}
do
BN=`basename $j`
s1=`sha256sum -b $j | cut -d' ' -f1`
s2=`sha256sum -b ${TTCN_3_DST_PATH}/LibIts/$i/ttcn/${BN} | cut -d' ' -f1`
if [ ${s1} != ${s2} ]
then
cp ${TTCN_3_DST_PATH}/LibIts/$i/ttcn/${BN} ${DEST_DIR}
rm ${TTCN_3_DST_PATH}/LibIts/$i/ttcn/${BN}~
fi
done
# FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/src/LibIts/$i/include -name "*.h*" -type f`
# FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/src/LibIts/$i/src -name "*.c*" -type f`
# for j in ${FWK_DIR_LIST_HH}
# do
# BN=`basename $j`
# s1=`sha256sum -b $j | cut -d' ' -f1`
# s2=`sha256sum -b ${PATH_DEV_ITS}/src/LibIts/$i/include/${BN} | cut -d' ' -f1`
# if [ ${s1} != ${s2} ]
# then
# cp ${PATH_DEV_ITS}/src/LibIts/$i/include/${BN} ${DEST_DIR}
# rm ${PATH_DEV_ITS}/src/LibIts/$i/include/${BN}~
# fi
# done
# for j in ${FWK_DIR_LIST_CC}
# do
# BN=`basename $j`
# s1=`sha256sum -b $j | cut -d' ' -f1`
# s2=`sha256sum -b ${PATH_DEV_ITS}/src/LibIts/$i/src/${BN} | cut -d' ' -f1`
# if [ ${s1} != ${s2} ]
# then
# cp ${PATH_DEV_ITS}/src/LibIts/$i/src/${BN} ${DEST_DIR}
# rm ${PATH_DEV_ITS}/src/LibIts/$i/src/${BN}~
# fi
# done
done
LIST_FILES=`find ${PATH_DEV_ITS} -name "*~" -type f`
for i in ${LIST_FILES}
do
BN=$i
BN=${BN:: -1} # Remove the last character
cp ${BN} ${DEST_DIR}
rm $i
done
chmod -R 664 ${DEST_DIR}/*
exit 0
#!/bin/bash
#set -e
set -vx
function f_exit {
cd ${CURPWD}
unset TTCN_FILES
unset CC_FILES
unset CFG_FILES
unset EXECUTABLE
echo $1
exit $2
}
function f_usage {
echo "build.bash: This script import from External Disk the "
echo "Optional arguments:"
echo " prof: Generate a makefile including profiling options (e.g. ./build.bash prof)"
exit 0
}
clear
if [ "$1" == "help" ]
then
f_usage
fi
ATS_NAME=Pki
#CURPWD=`pwd`
if [ ! "${PWD##*/}" == "objs" ]
then
cd ../objs
if [ ! $? == 0 ]
then
echo "Please move to PROJECT/obj directory"
exit 1
fi
fi
# Remove everything
rm -fr ../objs/*.hh
rm -fr ../objs/*.cc
rm -fr ../objs/*.log
rm -fr ../objs/*.o
rm -fr ../objs/Makefile
# Remove useless files
find .. -type f -name "*~" -exec rm {} \;
find .. -type f -name "*.bak" -exec rm {} \;
find .. -type f -name "*.log" -exec rm {} \;
# Build XSD files if any and put them in objs directory
if [ -d ../xsd ]
then
XSD_FILES=`find ../xsd -name '*.xsd'`
if [ "${OSTYPE}" == "cygwin" ]
then
xsd2ttcn.exe ${XSD_FILES}
else
xsd2ttcn ${XSD_FILES}
fi
if [ "$?" != "0" ]
then
f_exit "Failed to generate XSD source code" 2
fi
fi
# Build ASN.1 files if any and put them in objs directory
ASN1_PATH=${PATH_DEV_ITS}/ttcn/LibIts/asn1
if [ -d ${ASN1_PATH} ]
then
ASN1_FILES=`find ${ASN1_PATH} -name '*.asn*'`
if [ "${OSTYPE}" == "cygwin" ]
then
asn1_compiler.exe -e ${ASN1_FILES}
else
asn1_compiler -e ${ASN1_FILES}
fi
if [ "$?" != "0" ]
then
f_exit "Failed to generate ASN.1 source code" 3
fi
fi
REFERENCES="LibCommon LibIts/Common LibIts/BTP LibIts/GeoNetworking LibIts/Ipv6OverGeoNetworking LibIts/Security LibIts/CAM LibIts/DENM LibIts/IVIM LibIts/MapemSpatem LibIts/SremSsem LibIts/Rtcmem LibIts/Http LibIts/Pki"
for i in ${REFERENCES}
do
# TTCN code
for j in `find ${PATH_DEV_ITS}/src/$i/ttcn -type f -name "*.ttcn"`;
do
ln -sf $j ../ttcn/`basename $j`
done
# Include source code
files=`find ${PATH_DEV_ITS}/src/$i/include -type f`
if [ "${files}" != " " ]
then
for j in ${files};
do
ln -sf $j ../include/`basename $j`
done
fi
# CC source code
files=`find ${PATH_DEV_ITS}/src/$i/src -type f`
if [ "${files}" != " " ]
then
for j in ${files};
do
ln -sf $j ../src/`basename $j`
done
fi
done
# Generate the list of the TTCN-3 files
TTCN_FILES=`find .. -name '*.ttcn*'`
# Start ATS generation - Step 1
if [ "${OSTYPE}" == "cygwin" ]
then
rm ../bin/*.exe ../lib/*.dll
compiler.exe -d -e -f -g -j -l -L -n -t -R -U none -x -X ${TTCN_FILES} ${ASN1_FILES} 2>&1 3>&1 | tee build.log
if [ "$?" == "1" ]
then
f_exit "Failed to compile ATS" 4
fi
else
compiler -d -e -f -g -l -L -n -t -R -U none -x -X ${TTCN_FILES} ${ASN1_FILES} 2>&1 3>&1 | tee build.log
if [ "$?" == "1" ]
then
f_exit "Failed to generate ATS source code" 6
fi
fi
# Sart ATS generation - Step 2
# Create working variables
CC_FILES=`find ../src -name '*.c*'`
FWK_FILES=`find ${PATH_DEV_ITS}/framework/ -name '*.c*'`
CFG_FILES=`find ../etc -name '*.cfg'`
# Sart ATS generation - Step 3
if [ "${OSTYPE}" == "cygwin" ]
then
ttcn3_makefilegen.exe -d -f -g -m -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${ASN1_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log
if [ "$?" == "1" ]
then
f_exit "Failed to compile ATS" 5
fi
else
ttcn3_makefilegen -d -f -g -m -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${ASN1_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log
if [ "$?" == "1" ]
then
f_exit "Failed to generate ATS source code" 7
fi
fi
# Remove port skeletons to use src/<port skeletons>
for i in `ls ../include/*.hh`
do
if [ -f ./`basename $i` ]
then
rm ./`basename $i`
fi
done
for i in `ls ../src/*.cc`
do
if [ -f ./`basename $i` ]
then
rm ./`basename $i`
fi
done
# Check if Makefile was generated
if [ ! -f ./Makefile ]
then
f_exit "Failed to generate ATS source code" 8
fi
# Patch ATS generated files
#./bin/patch.bash 2>&1 3>&1 | tee --append build.log
# Add compiler/linker options
if [ "$1" == "prof" ]
then
if [ "${OSTYPE}" == "cygwin" ]
then
CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
if [ "${OSTYPE}" == "cygwin" ]
then
CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_ITS)/include -I$(PATH_DEV_ITS)/include/asn1 -I$(PATH_DEV_ITS)/framework/include -I../include -I../../LibIts/Common/include -I../../LibIts/BTP/include -I../../LibIts/CAM/include -I../../LibIts/DENM/include -I$(HOME_INC) -I.'
ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lssl -lstdc++fs -lpcap -L$(PATH_DEV_ITS)\/lib -lItsAsn /g'
sed --in-place "${CXXFLAGS_DEBUG_MODE}" ./Makefile
sed --in-place "${LDFLAGS_DEBUG_MODE}" ./Makefile
sed --in-place "${ADD_INCLUDE}" ./Makefile
sed --in-place "${ADD_LIBRARIES}" ./Makefile
# Update COMPILER_FLAGS
COMPILER_FLAGS='s/COMPILER_FLAGS = /COMPILER_FLAGS = -e /g'
sed --in-place "${COMPILER_FLAGS}" ./Makefile
# Update clean clause
CLEAN_LINE='s/$(RM) $(EXECUTABLE)/$(RM) ..\/bin\/$(EXECUTABLE) ..\/src\/*.o/g'
sed --in-place "${CLEAN_LINE}" ./Makefile
# Move binary file command
EXECUTABLE=MyExample
MV_CMD='s/all: $(TARGET) ;/all: $(TARGET) ; @if [ -f ..\/objs\/$(EXECUTABLE) ]; then mv ..\/objs\/$(EXECUTABLE) ..\/bin; fi ;/g'
sed --in-place "${MV_CMD}" ./Makefile
# Add run command
ADD_HOST='/PLATFORM = /aHOST=127.0.0.1'
ADD_PORT='/PLATFORM = /aPORT=12000'
sed --in-place "${ADD_PORT}" ./Makefile
sed --in-place "${ADD_HOST}" ./Makefile
ADD_RUN_LINE_1='$arun: all'
ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
ADD_RUN_LINE_1='$arun_d: all'
ADD_RUN_LINE_2='$a\\t@gdb --args $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
ADD_RUN_LINE_1='$arun_v: all'
ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --track-fds=yes --run-cxx-freeres=yes $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
# Add Doxygen entry
ADD_RUN_LINE_1='$agendoc:'
ADD_RUN_LINE_2='$a\\tdoxygen ../docs/o2.cfg'
ADD_RUN_LINE_3='$a\\tmandb ../docs/man'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
sed --in-place "${ADD_RUN_LINE_3}" ./Makefile
# Build all
make all 2>&1 3>&1 | tee --append build.log
if [ "$?" != "0" ]
then
f_exit "Failed to generate ATS source code" 9
fi
../bin/Ats${ATS_NAME} -v
#if [ "$?" != "0" ]
#then
# f_exit "Failed to execute binary file Ats${ATS_NAME}" 10
#fi
f_exit "Build done successfully" 0
#!/bin/bash
#set -e
set -vx
function f_exit {
cd ${CURPWD}
unset TTCN_FILES
unset CC_FILES
unset CFG_FILES
unset EXECUTABLE
echo $1
exit $2
}
function f_usage {
echo "build.bash: This script import from External Disk the "
echo "Optional arguments:"
echo " prof: Generate a makefile including profiling options (e.g. ./build.bash prof)"
exit 0
}
clear
if [ "$1" == "help" ]
then
f_usage
fi
ATS_NAME=RsuSimulator
#CURPWD=`pwd`
if [ ! "${PWD##*/}" == "objs" ]
then
cd ../objs
if [ ! $? == 0 ]
then
echo "Please move to PROJECT/obj directory"
exit 1
fi
fi
# Remove everything
rm -fr ../objs/*.hh
rm -fr ../objs/*.cc
rm -fr ../objs/*.log
rm -fr ../objs/*.o
rm -fr ../objs/Makefile
# Remove useless files
find .. -type f -name "*~" -exec rm {} \;
find .. -type f -name "*.bak" -exec rm {} \;
find .. -type f -name "*.log" -exec rm {} \;
# Build XSD files if any and put them in objs directory
if [ -d ../xsd ]
then
XSD_FILES=`find ../xsd -name '*.xsd'`
if [ "${OSTYPE}" == "cygwin" ]
then
xsd2ttcn.exe ${XSD_FILES}
else
xsd2ttcn ${XSD_FILES}
fi
if [ "$?" != "0" ]
then
f_exit "Failed to generate XSD source code" 2
fi
fi
# Build ASN.1 files if any and put them in objs directory
ASN1_PATH=${PATH_DEV_ITS}/ttcn/LibIts/asn1
if [ -d ${ASN1_PATH} ]
then
ASN1_FILES=`find ${ASN1_PATH} -name '*.asn*'`
if [ "${OSTYPE}" == "cygwin" ]
then
asn1_compiler.exe -e ${ASN1_FILES}
else
asn1_compiler -e ${ASN1_FILES}
fi
if [ "$?" != "0" ]
then
f_exit "Failed to generate ASN.1 source code" 3
fi
fi
REFERENCES="LibCommon LibIts/Common LibIts/BTP LibIts/GeoNetworking LibIts/Ipv6OverGeoNetworking LibIts/Security LibIts/CAM LibIts/DENM LibIts/IVIM LibIts/MapemSpatem LibIts/SremSsem LibIts/Rtcmem LibIts/Http LibIts/Pki"
for i in ${REFERENCES}
do
# TTCN code
for j in `find ${PATH_DEV_ITS}/src/$i/ttcn -type f -name "*.ttcn"`;
do
ln -sf $j ../ttcn/`basename $j`
done
# Include source code
files=`find ${PATH_DEV_ITS}/src/$i/include -type f`
if [ "${files}" != " " ]
then
for j in ${files};
do
ln -sf $j ../include/`basename $j`
done
fi
# CC source code
files=`find ${PATH_DEV_ITS}/src/$i/src -type f`
if [ "${files}" != " " ]
then
for j in ${files};
do
ln -sf $j ../src/`basename $j`
done
fi
done
# Generate the list of the TTCN-3 files
TTCN_FILES=`find .. -name '*.ttcn*'`
# Start ATS generation - Step 1
if [ "${OSTYPE}" == "cygwin" ]
then
rm ../bin/*.exe ../lib/*.dll
compiler.exe -d -e -f -g -j -l -L -n -t -R -U none -x -X ${TTCN_FILES} ${ASN1_FILES} 2>&1 3>&1 | tee build.log
if [ "$?" == "1" ]
then
f_exit "Failed to compile ATS" 4
fi
else
compiler -d -e -f -g -l -L -n -t -R -U none -x -X ${TTCN_FILES} ${ASN1_FILES} 2>&1 3>&1 | tee build.log
if [ "$?" == "1" ]
then
f_exit "Failed to generate ATS source code" 6
fi
fi
# Sart ATS generation - Step 2
# Create working variables
CC_FILES=`find ../src -name '*.c*'`
FWK_FILES=`find ${PATH_DEV_ITS}/framework/ -name '*.c*'`
CFG_FILES=`find ../etc -name '*.cfg'`
# Sart ATS generation - Step 3
if [ "${OSTYPE}" == "cygwin" ]
then
ttcn3_makefilegen.exe -d -f -g -m -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${ASN1_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log
if [ "$?" == "1" ]
then
f_exit "Failed to compile ATS" 5
fi
else
ttcn3_makefilegen -d -f -g -m -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${ASN1_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log
if [ "$?" == "1" ]
then
f_exit "Failed to generate ATS source code" 7
fi
fi
# Remove port skeletons to use src/<port skeletons>
for i in `ls ../include/*.hh`
do
if [ -f ./`basename $i` ]
then
rm ./`basename $i`
fi
done
for i in `ls ../src/*.cc`
do
if [ -f ./`basename $i` ]
then
rm ./`basename $i`
fi
done
# Check if Makefile was generated
if [ ! -f ./Makefile ]
then
f_exit "Failed to generate ATS source code" 8
fi
# Patch ATS generated files
#./bin/patch.bash 2>&1 3>&1 | tee --append build.log
# Add compiler/linker options
if [ "$1" == "prof" ]
then
if [ "${OSTYPE}" == "cygwin" ]
then
CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
if [ "${OSTYPE}" == "cygwin" ]
then
CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_ITS)/include -I$(PATH_DEV_ITS)/include/asn1 -I$(PATH_DEV_ITS)/framework/include -I../include -I../../LibIts/Common/include -I../../LibIts/BTP/include -I../../LibIts/CAM/include -I../../LibIts/DENM/include -I$(HOME_INC) -I.'
ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lssl -lstdc++fs -lpcap -L$(PATH_DEV_ITS)\/lib -lItsAsn /g'
sed --in-place "${CXXFLAGS_DEBUG_MODE}" ./Makefile
sed --in-place "${LDFLAGS_DEBUG_MODE}" ./Makefile
sed --in-place "${ADD_INCLUDE}" ./Makefile
sed --in-place "${ADD_LIBRARIES}" ./Makefile
# Update COMPILER_FLAGS
COMPILER_FLAGS='s/COMPILER_FLAGS = /COMPILER_FLAGS = -e /g'
sed --in-place "${COMPILER_FLAGS}" ./Makefile
# Update clean clause
CLEAN_LINE='s/$(RM) $(EXECUTABLE)/$(RM) ..\/bin\/$(EXECUTABLE) ..\/src\/*.o/g'
sed --in-place "${CLEAN_LINE}" ./Makefile
# Move binary file command
EXECUTABLE=MyExample
MV_CMD='s/all: $(TARGET) ;/all: $(TARGET) ; @if [ -f ..\/objs\/$(EXECUTABLE) ]; then mv ..\/objs\/$(EXECUTABLE) ..\/bin; fi ;/g'
sed --in-place "${MV_CMD}" ./Makefile
# Add run command
ADD_HOST='/PLATFORM = /aHOST=127.0.0.1'
ADD_PORT='/PLATFORM = /aPORT=12001'
sed --in-place "${ADD_PORT}" ./Makefile
sed --in-place "${ADD_HOST}" ./Makefile
ADD_RUN_LINE_1='$arun: all'
ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
ADD_RUN_LINE_1='$arun_d: all'
ADD_RUN_LINE_2='$a\\t@gdb --args $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
ADD_RUN_LINE_1='$arun_v: all'
ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --track-fds=yes --run-cxx-freeres=yes $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
# Add Doxygen entry
ADD_RUN_LINE_1='$agendoc:'
ADD_RUN_LINE_2='$a\\tdoxygen ../docs/o2.cfg'
ADD_RUN_LINE_3='$a\\tmandb ../docs/man'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
sed --in-place "${ADD_RUN_LINE_3}" ./Makefile
# Build all
make all 2>&1 3>&1 | tee --append build.log
if [ "$?" != "0" ]
then
f_exit "Failed to generate ATS source code" 9
fi
../bin/Ats${ATS_NAME} -v
if [ "$?" != "0" ]
then
f_exit "Failed to execute binary file Ats${ATS_NAME}" 10
fi
f_exit "Build done successfully" 0
#!/bin/bash
#set -e
set -vx
function f_exit {
cd ${CURPWD}
unset TTCN_FILES
unset CC_FILES
unset CFG_FILES
unset EXECUTABLE
echo $1
exit $2
}
function f_usage {
echo "build.bash: This script import from External Disk the "
echo "Optional arguments:"
echo " prof: Generate a makefile including profiling options (e.g. ./build.bash prof)"
exit 0
}
clear
if [ "$1" == "help" ]
then
f_usage
fi
ATS_NAME=Rtcmem
#CURPWD=`pwd`
if [ ! "${PWD##*/}" == "objs" ]
then
cd ../objs
if [ ! $? == 0 ]
then
echo "Please move to PROJECT/obj directory"
exit 1
fi
fi
# Remove everything
rm -fr ../objs/*.hh
rm -fr ../objs/*.cc
rm -fr ../objs/*.log
rm -fr ../objs/*.o
rm -fr ../objs/Makefile
# Remove useless files
find .. -type f -name "*~" -exec rm {} \;
find .. -type f -name "*.bak" -exec rm {} \;
find .. -type f -name "*.log" -exec rm {} \;
# Build XSD files if any and put them in objs directory
if [ -d ../xsd ]
then
XSD_FILES=`find ../xsd -name '*.xsd'`
if [ "${OSTYPE}" == "cygwin" ]
then
xsd2ttcn.exe ${XSD_FILES}
else
xsd2ttcn ${XSD_FILES}
fi
if [ "$?" != "0" ]
then
f_exit "Failed to generate XSD source code" 2
fi
fi
# Build ASN.1 files if any and put them in objs directory
ASN1_PATH=${PATH_DEV_ITS}/ttcn/LibIts/asn1
if [ -d ${ASN1_PATH} ]
then
ASN1_FILES=`find ${ASN1_PATH} -name '*.asn*'`
if [ "${OSTYPE}" == "cygwin" ]
then
asn1_compiler.exe -e ${ASN1_FILES}
else
asn1_compiler -e ${ASN1_FILES}
fi
if [ "$?" != "0" ]
then
f_exit "Failed to generate ASN.1 source code" 3
fi
fi
REFERENCES="LibCommon LibIts/Common LibIts/BTP LibIts/GeoNetworking LibIts/Ipv6OverGeoNetworking LibIts/Security LibIts/CAM LibIts/DENM LibIts/IVIM LibIts/MapemSpatem LibIts/SremSsem LibIts/Rtcmem LibIts/Http LibIts/Pki"
for i in ${REFERENCES}
do
# TTCN code
for j in `find ${PATH_DEV_ITS}/src/$i/ttcn -type f -name "*.ttcn"`;
do
ln -sf $j ../ttcn/`basename $j`
done
# Include source code
files=`find ${PATH_DEV_ITS}/src/$i/include -type f`
if [ "${files}" != " " ]
then
for j in ${files};
do
ln -sf $j ../include/`basename $j`
done
fi
# CC source code
files=`find ${PATH_DEV_ITS}/src/$i/src -type f`
if [ "${files}" != " " ]
then
for j in ${files};
do
ln -sf $j ../src/`basename $j`
done
fi
done
# Generate the list of the TTCN-3 files
TTCN_FILES=`find .. -name '*.ttcn*'`
# Start ATS generation - Step 1
if [ "${OSTYPE}" == "cygwin" ]
then
rm ../bin/*.exe ../lib/*.dll
compiler.exe -d -e -f -g -j -l -L -n -t -R -U none -x -X ${TTCN_FILES} ${ASN1_FILES} 2>&1 3>&1 | tee build.log
if [ "$?" == "1" ]
then
f_exit "Failed to compile ATS" 4
fi
else
compiler -d -e -f -g -l -L -n -t -R -U none -x -X ${TTCN_FILES} ${ASN1_FILES} 2>&1 3>&1 | tee build.log
if [ "$?" == "1" ]
then
f_exit "Failed to generate ATS source code" 6
fi
fi
# Sart ATS generation - Step 2
# Create working variables
CC_FILES=`find ../src -name '*.c*'`
FWK_FILES=`find ${PATH_DEV_ITS}/framework/ -name '*.c*'`
CFG_FILES=`find ../etc -name '*.cfg'`
# Sart ATS generation - Step 3
if [ "${OSTYPE}" == "cygwin" ]
then
ttcn3_makefilegen.exe -d -f -g -m -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${ASN1_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log
if [ "$?" == "1" ]
then
f_exit "Failed to compile ATS" 5
fi
else
ttcn3_makefilegen -d -f -g -m -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${ASN1_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log
if [ "$?" == "1" ]
then
f_exit "Failed to generate ATS source code" 7
fi
fi
# Remove port skeletons to use src/<port skeletons>
for i in `ls ../include/*.hh`
do
if [ -f ./`basename $i` ]
then
rm ./`basename $i`
fi
done
for i in `ls ../src/*.cc`
do
if [ -f ./`basename $i` ]
then
rm ./`basename $i`
fi
done
# Check if Makefile was generated
if [ ! -f ./Makefile ]
then
f_exit "Failed to generate ATS source code" 8
fi
# Patch ATS generated files
#./bin/patch.bash 2>&1 3>&1 | tee --append build.log
# Add compiler/linker options
if [ "$1" == "prof" ]
then
if [ "${OSTYPE}" == "cygwin" ]
then
CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
if [ "${OSTYPE}" == "cygwin" ]
then
CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_ITS)/include -I$(PATH_DEV_ITS)/include/asn1 -I$(PATH_DEV_ITS)/framework/include -I../include -I../../LibIts/Common/include -I../../LibIts/BTP/include -I../../LibIts/CAM/include -I../../LibIts/DENM/include -I$(HOME_INC) -I.'
ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lssl -lstdc++fs -lpcap -L$(PATH_DEV_ITS)\/lib -lItsAsn /g'
sed --in-place "${CXXFLAGS_DEBUG_MODE}" ./Makefile
sed --in-place "${LDFLAGS_DEBUG_MODE}" ./Makefile
sed --in-place "${ADD_INCLUDE}" ./Makefile
sed --in-place "${ADD_LIBRARIES}" ./Makefile
# Update COMPILER_FLAGS
COMPILER_FLAGS='s/COMPILER_FLAGS = /COMPILER_FLAGS = -e /g'
sed --in-place "${COMPILER_FLAGS}" ./Makefile
# Update clean clause
CLEAN_LINE='s/$(RM) $(EXECUTABLE)/$(RM) ..\/bin\/$(EXECUTABLE) ..\/src\/*.o/g'
sed --in-place "${CLEAN_LINE}" ./Makefile
# Move binary file command
EXECUTABLE=MyExample
MV_CMD='s/all: $(TARGET) ;/all: $(TARGET) ; @if [ -f ..\/objs\/$(EXECUTABLE) ]; then mv ..\/objs\/$(EXECUTABLE) ..\/bin; fi ;/g'
sed --in-place "${MV_CMD}" ./Makefile
# Add run command
ADD_HOST='/PLATFORM = /aHOST=127.0.0.1'
ADD_PORT='/PLATFORM = /aPORT=12000'
sed --in-place "${ADD_PORT}" ./Makefile
sed --in-place "${ADD_HOST}" ./Makefile
ADD_RUN_LINE_1='$arun: all'
ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
ADD_RUN_LINE_1='$arun_d: all'
ADD_RUN_LINE_2='$a\\t@gdb --args $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
ADD_RUN_LINE_1='$arun_v: all'
ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --track-fds=yes --run-cxx-freeres=yes $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
# Add Doxygen entry
ADD_RUN_LINE_1='$agendoc:'
ADD_RUN_LINE_2='$a\\tdoxygen ../docs/o2.cfg'
ADD_RUN_LINE_3='$a\\tmandb ../docs/man'
sed --in-place "${ADD_RUN_LINE_1}" ./Makefile
sed --in-place "${ADD_RUN_LINE_2}" ./Makefile
sed --in-place "${ADD_RUN_LINE_3}" ./Makefile
# Build all
make all 2>&1 3>&1 | tee --append build.log
if [ "$?" != "0" ]
then
f_exit "Failed to generate ATS source code" 9
fi
../bin/Ats${ATS_NAME} -v
#if [ "$?" != "0" ]
#then
# f_exit "Failed to execute binary file Ats${ATS_NAME}" 10
#fi
f_exit "Build done successfully" 0
......@@ -4,6 +4,12 @@
clear
if [ -z $ATS ]
then
echo "ATS shall be defined"
exit 1
fi
if ! [[ $1 =~ "^[0-9]+$" ]]
then
COUNTER=$1
......@@ -12,22 +18,22 @@ else
fi
CURPWD=`pwd`
if [ ! "${PWD##*/}" == "objs" ]
if [ ! "${PWD##*/}" == "scripts" ]
then
cd ../objs
cd ../scripts
if [ ! $? == 0 ]
then
echo "Please move to PROJECT/obj directory"
echo "Please move to PROJECT/scripts directory"
exit 1
fi
fi
rm ../logs/merged.*.log
rm ../bin/S1/logs/merged.*.log
for i in $(seq 1 1 $COUNTER)
do
../bin/run_mtc.bash &
../bin/run_ptcs.bash $2
./run_mtc.bash &
./run_ptcs.bash
dup=$(ps -ef | grep "$0" | grep -v grep | wc -l)
while [ ${dup} -eq 3 ]
......@@ -37,7 +43,7 @@ do
done
sleep 1
mv ../logs/merged.log ../logs/merged.`date +'%Y%m%d%S'`.log
mv ../logs/$ATS/merged.log ../logs/$ATS/merged.`date +'%Y%m%d%S'`.log
done
exit 0
......