Add build script and gitignore
This initial commit adds a relatively advanced build-script and a very small .gitignore file which should definitely be expanded.
This commit is contained in:
commit
ae29a46e8f
|
@ -0,0 +1,4 @@
|
||||||
|
|
||||||
|
.private/
|
||||||
|
.build/
|
||||||
|
voxula
|
|
@ -0,0 +1,83 @@
|
||||||
|
|
||||||
|
cd $(dirname $0)
|
||||||
|
SCRIPT_PATH=$(pwd)
|
||||||
|
cd ../..
|
||||||
|
PROJECT_PATH=$(pwd)
|
||||||
|
|
||||||
|
function list_modules() {
|
||||||
|
MODULE_FOLDER=$1
|
||||||
|
|
||||||
|
MODULES=$(ls $MODULE_FOLDER)
|
||||||
|
for MODULE in $MODULES
|
||||||
|
do
|
||||||
|
if [[ -d "$MODULE_FOLDER/$MODULE/src-c" ]];
|
||||||
|
then
|
||||||
|
echo $MODULE
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function make_object_name() {
|
||||||
|
SOURCE_PATH=$1
|
||||||
|
|
||||||
|
OBJECT_NAME=$(echo $SOURCE_PATH | tr "-" "_" | tr "/" "-")
|
||||||
|
echo $OBJECT_NAME.o
|
||||||
|
}
|
||||||
|
|
||||||
|
function list_sources() {
|
||||||
|
MODULE_PATH=$1
|
||||||
|
ENTRY_PATH=$(pwd)
|
||||||
|
|
||||||
|
cd $MODULE_PATH
|
||||||
|
SOURCES=$(find . -type f | grep ".c$")
|
||||||
|
for SOURCE in $SOURCES
|
||||||
|
do
|
||||||
|
echo $SOURCE | cut -c 3-
|
||||||
|
done
|
||||||
|
cd $ENTRY_PATH
|
||||||
|
}
|
||||||
|
|
||||||
|
function make_include_statements() {
|
||||||
|
MODULE_NAME=$1
|
||||||
|
|
||||||
|
for INCLUDE_PATH in $(cat modules/$MODULE_NAME/includes.txt)
|
||||||
|
do
|
||||||
|
MODIFIED_PATH="${INCLUDE_PATH//"{self}"/"modules/$PROJECT_PATH/$MODULE_NAME"}"
|
||||||
|
MODIFIED_PATH="${MODIFIED_PATH//"{module-folder}"/"$PROJECT_PATH/modules"}"
|
||||||
|
echo "-I ${MODIFIED_PATH//"{dependencies}"/"$PROJECT_PATH/dependencies"}"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function build_single_module() {
|
||||||
|
MODULE_NAME=$1
|
||||||
|
|
||||||
|
mkdir -p $PROJECT_PATH/.build/modules/$MODULE_NAME/objects
|
||||||
|
rm -f $PROJECT_PATH/.build/modules/$MODULE_NAME/objects/*.o
|
||||||
|
|
||||||
|
echo "| ========================================>"
|
||||||
|
echo "| Now building module: $MODULE_NAME"
|
||||||
|
echo "| ========================================>"
|
||||||
|
|
||||||
|
INCLUDE_STATEMENTS=$(make_include_statements $MODULE_NAME)
|
||||||
|
|
||||||
|
SOURCES=$(list_sources modules/$MODULE_NAME/src-c)
|
||||||
|
for SOURCE in $SOURCES
|
||||||
|
do
|
||||||
|
echo "> $SOURCE"
|
||||||
|
OBJECT_NAME=$(make_object_name $SOURCE)
|
||||||
|
gcc -c -o .build/modules/$MODULE_NAME/objects/$OBJECT_NAME -g3 modules/$MODULE_NAME/src-c/$SOURCE $INCLUDE_STATEMENTS
|
||||||
|
done
|
||||||
|
|
||||||
|
ar -rvs .build/archives/voxula-$MODULE_NAME.a .build/modules/$MODULE_NAME/objects/*.o
|
||||||
|
}
|
||||||
|
|
||||||
|
mkdir -p .build/archives
|
||||||
|
rm -f .build/archives/*.a
|
||||||
|
|
||||||
|
MODULE_LIST=$(list_modules "modules")
|
||||||
|
for MODULE in $MODULE_LIST
|
||||||
|
do
|
||||||
|
build_single_module $MODULE
|
||||||
|
done
|
||||||
|
|
||||||
|
gcc -g3 -o voxula .build/archives/*.a
|
Loading…
Reference in New Issue