build_scripts
This commit is contained in:
parent
3018020201
commit
914d4c4e10
15
Makefile
Normal file
15
Makefile
Normal file
@ -0,0 +1,15 @@
|
||||
###### Building tasks #######
|
||||
build:
|
||||
@build_scripts/build_configurations/build.sh
|
||||
|
||||
build_dbg:
|
||||
@build_scripts/build_configurations/build_dbg.sh
|
||||
|
||||
###### Testing tasks #######
|
||||
test: build
|
||||
@build_scripts/build_configurations/test.sh
|
||||
|
||||
test_valgrind: build_dbg
|
||||
@build_scripts/build_configurations/test_valgrind.sh
|
||||
|
||||
all: build
|
||||
10
build_scripts/build_configurations/build.sh
Normal file
10
build_scripts/build_configurations/build.sh
Normal file
@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
|
||||
source build_scripts/init.sh
|
||||
|
||||
print "${CYAN}===============[build]================\n"
|
||||
clear_dir "$OUTDIR"
|
||||
clear_dir "$OBJDIR"
|
||||
compile_c "$BUILD_C_ARGS" "$SRC_C $TESTS_C"
|
||||
compile_cpp "$BUILD_CPP_ARGS" "$SRC_CPP $TESTS_CPP"
|
||||
link "$BUILD_CPP_ARGS $BUILD_LINKER_ARGS" $BUILD_FILE
|
||||
10
build_scripts/build_configurations/build_dbg.sh
Normal file
10
build_scripts/build_configurations/build_dbg.sh
Normal file
@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
|
||||
source build_scripts/init.sh
|
||||
|
||||
print "${CYAN}=============[build_dbg]==============\n"
|
||||
clear_dir "$OUTDIR"
|
||||
clear_dir "$OBJDIR"
|
||||
compile_c "$BUILD_DBG_C_ARGS" "$SRC_C $TESTS_C"
|
||||
compile_cpp "$BUILD_DBG_CPP_ARGS" "$SRC_CPP $TESTS_CPP"
|
||||
link "$BUILD_DBG_CPP_ARGS $BUILD_DBG_LINKER_ARGS" $TEST_DBG_FILE
|
||||
8
build_scripts/build_configurations/test.sh
Normal file
8
build_scripts/build_configurations/test.sh
Normal file
@ -0,0 +1,8 @@
|
||||
#!/bin/bash
|
||||
|
||||
source build_scripts/init.sh
|
||||
|
||||
print "${CYAN}================[test]================\n"
|
||||
cd $OUTDIR
|
||||
./$TEST_FILE
|
||||
cd ..
|
||||
9
build_scripts/build_configurations/test_valgrind.sh
Normal file
9
build_scripts/build_configurations/test_valgrind.sh
Normal file
@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
|
||||
source build_scripts/init.sh
|
||||
|
||||
print "${CYAN}===========[test_valgrind]============\n"
|
||||
cd $OUTDIR
|
||||
valgrind $VALGRIND_ARGS ./$TEST_DBG_FILE
|
||||
cat "valgrind.log"
|
||||
cd ..
|
||||
11
build_scripts/colors.sh
Normal file
11
build_scripts/colors.sh
Normal file
@ -0,0 +1,11 @@
|
||||
#!/bin/bash
|
||||
|
||||
BLACK='\033[0;30m'
|
||||
GRAY='\033[0;37m'
|
||||
WHITE='\033[0;97m'
|
||||
RED='\033[0;91m'
|
||||
GREEN='\033[0;92m'
|
||||
YELLOW='\033[0;93m'
|
||||
BLUE='\033[0;94m'
|
||||
PURPLE='\033[0;95m'
|
||||
CYAN='\033[0;96m'
|
||||
27
build_scripts/default.config.sh
Normal file
27
build_scripts/default.config.sh
Normal file
@ -0,0 +1,27 @@
|
||||
#!/bin/bash
|
||||
|
||||
OUTDIR=bin
|
||||
OBJDIR=obj
|
||||
CMP_C=gcc
|
||||
CMP_CPP=g++
|
||||
STD_C=c11
|
||||
STD_CPP=c++17
|
||||
WARN_C="-Wall -Wno-discarded-qualifiers" #-Wextra
|
||||
WARN_CPP="-Wall -Wno-unused-variable -Wno-return-type" #-Wextra
|
||||
SRC_C="$( find src -name '*.c')"
|
||||
SRC_CPP="$( find src -name '*.cpp')"
|
||||
TESTS_C="$( find tests -name '*.c')"
|
||||
TESTS_CPP="$(find tests -name '*.cpp')"
|
||||
VALGRIND_ARGS="-s --log-file=valgrind.log --read-var-info=yes --track-origins=yes --fullpath-after=cobek/ --leak-check=full --show-leak-kinds=all"
|
||||
|
||||
# build
|
||||
TEST_FILE=cb2c.com
|
||||
BUILD_C_ARGS="-O2"
|
||||
BUILD_CPP_ARGS="$BUILD_C_ARGS"
|
||||
BUILD_LINKER_ARGS=""
|
||||
|
||||
# build_dbg
|
||||
TEST_DBG_FILE=$TEST_FILE
|
||||
BUILD_DBG_C_ARGS="-O0 -g"
|
||||
BUILD_DBG_CPP_ARGS="$BUILD_DBG_C_ARGS"
|
||||
BUILD_DBG_LINKER_ARGS=""
|
||||
72
build_scripts/functions.sh
Normal file
72
build_scripts/functions.sh
Normal file
@ -0,0 +1,72 @@
|
||||
#!/bin/bash
|
||||
|
||||
function print {
|
||||
printf "$1$GRAY"
|
||||
}
|
||||
|
||||
function clear_dir {
|
||||
print "${BLUE}clearing $1\n"
|
||||
rm -rf $1
|
||||
mkdir $1
|
||||
}
|
||||
|
||||
function compile {
|
||||
local cmp=$1
|
||||
print "${BLUE}compiler: ${GRAY}$cmp\n"
|
||||
local std=$2
|
||||
print "${BLUE}standard: ${GRAY}$std\n"
|
||||
local warn=$3
|
||||
print "${BLUE}warnings: ${GRAY}$warn\n"
|
||||
local args=$4
|
||||
print "${BLUE}args: ${GRAY}$args\n"
|
||||
local sources=$5
|
||||
print "${BLUE}sources: ${GRAY}$sources\n"
|
||||
local compilation_error=0
|
||||
|
||||
for srcfile in $sources
|
||||
do (
|
||||
local object="$OBJDIR/$(basename $srcfile).o"
|
||||
if ! $($cmp -std=$std $warn $args -c -o $object $srcfile)
|
||||
then
|
||||
print "${RED}some error happened\n"
|
||||
compilation_error=1
|
||||
fi
|
||||
) & done
|
||||
wait
|
||||
|
||||
if [ $compilation_error != 0 ]
|
||||
then
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# (args, sources)
|
||||
function compile_c {
|
||||
print "${CYAN}-------------[compile_c]--------------\n"
|
||||
compile $CMP_C $STD_C "$WARN_C" "$1" "$2"
|
||||
}
|
||||
|
||||
# (args, sources)
|
||||
function compile_cpp {
|
||||
print "${CYAN}------------[compile_cpp]-------------\n"
|
||||
compile $CMP_CPP $STD_CPP "$WARN_CPP" "$1" "$2"
|
||||
}
|
||||
|
||||
# (args, outfile)
|
||||
function link {
|
||||
print "${CYAN}----------------[link]----------------\n"
|
||||
local args=$1
|
||||
print "${BLUE}args: ${GRAY}$args\n"
|
||||
local outfile=$OUTDIR/$2
|
||||
print "${BLUE}outfile: ${GRAY}$outfile\n"
|
||||
local objects="$(find $OBJDIR -name *.o)"
|
||||
print "${BLUE}objects: ${GRAY}$objects\n"
|
||||
if $CMP_CPP $args -o $outfile $(echo $objects | tr '\n' ' ')
|
||||
then
|
||||
print "${GREEN}file $CYAN$outfile ${GREEN}created\n"
|
||||
rm -rf $OBJDIR
|
||||
else
|
||||
print "${RED}some error happened\n"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
23
build_scripts/init.sh
Normal file
23
build_scripts/init.sh
Normal file
@ -0,0 +1,23 @@
|
||||
#!/bin/bash
|
||||
|
||||
reset
|
||||
tabs 4
|
||||
|
||||
source build_scripts/colors.sh
|
||||
source build_scripts/functions.sh
|
||||
|
||||
if [ ! -f ".config" ]; then
|
||||
print "${YELLOW}./.config doesn't exists\n"
|
||||
cp build_scripts/default.config.sh .config
|
||||
print "${YELLOW}default config created\n"
|
||||
while true; do
|
||||
print "${WHITE}continue? (y/n) "
|
||||
read answ
|
||||
case $answ in
|
||||
[Yy] ) break;;
|
||||
[Nn] ) exit;;
|
||||
* ) print "${RED}incorrect answer\n";;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
source .config
|
||||
@ -25,7 +25,7 @@ Maybe _throw_wrongchar(SharedLexerData* sld){
|
||||
char* errline=string_extract(line);
|
||||
char* _context=string_extract(context);
|
||||
printf("\n\e[91mwrong char <%c> at [%s:%u:%u %s]\n >>> %s\n",
|
||||
source[charnum], filename,linenum,charnum,context, errline);
|
||||
source[charnum], filename,linenum,charnum,_context, errline);
|
||||
exit(96);
|
||||
}
|
||||
#define throw_wrongchar(freeMem) { freeMem; return _throw_wrongchar(sld); }
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
|
||||
#include "../../../kerep/src/base/base.h"
|
||||
|
||||
|
||||
typedef enum lexer_type{
|
||||
AutoarrTokenPtr=my_type_last+1
|
||||
} lexer_type;
|
||||
Loading…
Reference in New Issue
Block a user