Skip to content
Snippets Groups Projects
linux_gcc_build_x64_debug.sh 3.29 KiB
#!/bin/sh

clear

# Should we rebuild BOOST? (yes/no)
REBUILD_BOOST=yes

# Should we build the examples? (yes/no)
BUILD_EXAMPLES=yes

# Should we build the unit-tests? (yes/no)
BUILD_TESTS=yes

# Should we build the lib4neuro library? (yes)
BUILD_LIB=yes

# How should the external dependencies be linked? (shared/static)
DEPENDENCIES_LINK_TYPE=static

# C++ compiler
CXX_COMPILER="g++"
C_COMPILER="gcc"

#**********************DO NOT CHANGE BEYOND THIS LINE****************************************

RED='\033[0;31m'
CYAN='\033[0;36m'
YELLOW='\033[1;33m'
GREEN='\033[0;32m'
WHITE='\033[1;37m'
NC='\033[0m' # No Color
echo "Building the '${CYAN}lib4neuro${NC}' project for ${WHITE}Debug${NC}"


BUILD_SOMETHING=no
BUILD_SOMETHING_LIB=no

if [ $BUILD_LIB = "yes" ]
then
    echo "${CYAN}lib4neuro${NC} build type: ${WHITE}Debug${NC}"
    echo "${CYAN}lib4neuro${NC} build architecture: ${WHITE}x64${NC}"
    echo "${CYAN}lib4neuro${NC} will be built in '${YELLOW}build/lib/${NC}'"
    BUILD_SOMETHING=yes
    BUILD_SOMETHING_LIB=yes
fi

if [ $BUILD_TESTS = "yes" ]
then
    echo "${CYAN}lib4neuro${NC} unit tests will be built in '${YELLOW}build/unit-tests${NC}'"
    BUILD_SOMETHING=yes
    BUILD_SOMETHING_LIB=yes
fi

if [ $BUILD_EXAMPLES = "yes" ]
then
    echo "${CYAN}lib4neuro${NC} examples will be built in '${YELLOW}build/examples${NC}'"
    BUILD_SOMETHING=yes
    BUILD_SOMETHING_LIB=yes
fi

if [ $REBUILD_BOOST = "yes" ]
then
    echo "The required '${CYAN}BOOST${NC}' library will be recompiled in the directory '${YELLOW}external_dependencies/boost${NC}'"
    BUILD_SOMETHING=yes
    BUILD_SOMETHING_LIB=yes
fi


# Boost rebuild
if [ $REBUILD_BOOST = "yes" ]
then
    clear
    echo "Rebuilding '${CYAN}BOOST${NC}' for ${WHITE}Debug${NC}"
    cd ../..
	
    rm -r external_dependencies/boost/stage
    rm -r external_dependencies/boost/bin.v2

    cd external_dependencies/boost
	
    ./b2 cxxflags=-fPIC --layout=system variant=debug link=${DEPENDENCIES_LINK_TYPE} address-model=64 --with-system --with-serialization --with-random
#        ./b2 --layout=system variant=debug link=shared address-model=64 --with-system --with-serialization --with-random
	
    cd ../../build_scripts/linux
fi

if [ $BUILD_SOMETHING_LIB = "yes" ]
then

    if [ $BUILD_LIB = "yes" ]
    then
        ./linux_clean_lib.sh
    fi

    if [ $BUILD_EXAMPLES = "yes" ]
    then
        ./linux_clean_examples.sh
    fi

    if [ $BUILD_TESTS = "yes" ]
    then
        ./linux_clean_tests.sh
    fi	

    clear
    echo "Building the '${CYAN}lib4neuro${NC}' project for ${WHITE}Debug${NC} (preparing makefiles)"
	

    cd ../..

    cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER=${CXX_COMPILER} -DCMAKE_C_COMPILER=${C_COMPILER} -DBOOST_ROOT=${BOOST_ROOT} -DBOOST_LIBRARYDIR=${BOOST_LIBRARYDIR} -DBOOST_INCLUDEDIR=${BOOST_INCLUDEDIR} -DBUILD_TESTS=${BUILD_TESTS} -DBUILD_EXAMPLES=${BUILD_EXAMPLES} -DBUILD_LIB=${BUILD_LIB} -DLIB4NEURO_DIR=${PWD}/build/lib -DDEPENDENCIES_LINK_TYPE=${DEPENDENCIES_LINK_TYPE} . 
	
    echo "Building the '${CYAN}lib4neuro${NC}' project for ${WHITE}Debug${NC} (building)"
    ( cmake --build . --config Debug -- -j${N_CORES}  2> build.log ) && ( echo "${GREEN}Build complete${NC}." ) || ( echo "${RED}Build finished with errors${NC}!"; exit 1; )

    cd build_scripts/linux

    ./linux_clean_garbage.sh
fi