A little bit of infrastructure: a build script and a gitignore
This commit is contained in:
parent
816f613cc1
commit
6e349ea298
|
@ -0,0 +1,11 @@
|
||||||
|
|
||||||
|
.local/
|
||||||
|
|
||||||
|
# The build script's working files
|
||||||
|
.build/
|
||||||
|
|
||||||
|
# Executable-/ Object files
|
||||||
|
*.a
|
||||||
|
*.elf
|
||||||
|
*.o
|
||||||
|
*.so
|
|
@ -0,0 +1,77 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
INCLUDE_STATEMENTS="-I code/inc/ -I code/exports/"
|
||||||
|
INVOCATION_PATH=`pwd`
|
||||||
|
|
||||||
|
function build_checks() {
|
||||||
|
if [[ ! -f $INVOCATION_PATH/.build/libparcel.a ]] then
|
||||||
|
build_debug
|
||||||
|
fi
|
||||||
|
cd checks/
|
||||||
|
for check_folder in $(ls)
|
||||||
|
do
|
||||||
|
if [[ -f $check_folder ]] then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd $check_folder
|
||||||
|
gcc src/*.c $INVOCATION_PATH/.build/libparcel.a -o check.elf -I $INVOCATION_PATH/code/inc/
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function create_archive() {
|
||||||
|
ar -rvs .build/libparcel.a .build/objects/*.o
|
||||||
|
}
|
||||||
|
|
||||||
|
function compile_sources() {
|
||||||
|
|
||||||
|
rm -r .build/objects/
|
||||||
|
rm .build/libparcel.a
|
||||||
|
mkdir -p .build/objects
|
||||||
|
for source_file in $(find "code/src/")
|
||||||
|
do
|
||||||
|
if [[ ! -f $source_file ]] then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Cut out the prefix (code/src/)
|
||||||
|
BASENAME=`echo $source_file | cut -c '10-'`
|
||||||
|
echo "==== COMPILING $source_file ===="
|
||||||
|
gcc -c $COMPILATION_FLAGS -o .build/objects/$BASENAME.o $source_file $INCLUDE_STATEMENTS
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function build_debug() {
|
||||||
|
COMPILATION_FLAGS="-g2 -Wall -Wextra -D__PAC_DEBUG__"
|
||||||
|
compile_sources
|
||||||
|
create_archive
|
||||||
|
}
|
||||||
|
|
||||||
|
function build_release() {
|
||||||
|
COMPILATION_FLAGS="-O2 -Wall -D__PAC_RELEASE__"
|
||||||
|
compile_sources
|
||||||
|
create_archive
|
||||||
|
}
|
||||||
|
|
||||||
|
function clean() {
|
||||||
|
rm -R .build/objects/*.o
|
||||||
|
rm .build/libparcel.a
|
||||||
|
}
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
"clean")
|
||||||
|
clean
|
||||||
|
;;
|
||||||
|
"debug")
|
||||||
|
build_debug
|
||||||
|
;;
|
||||||
|
"release")
|
||||||
|
build_release
|
||||||
|
;;
|
||||||
|
"checks")
|
||||||
|
build_checks
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown action '$1'. Possible Actions are:"
|
||||||
|
echo "[ clean | debug | release | checks ]"
|
||||||
|
esac
|
Loading…
Reference in New Issue