72 lines
2.4 KiB
Bash
Executable File
72 lines
2.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
include "@cbuild/include/myprint.sh"
|
|
include "@cbuild/include/functions.sh"
|
|
include "@cbuild/include/detect_os.sh"
|
|
|
|
function load_config {
|
|
local proj_conf_file="$1"
|
|
TASK="$2"
|
|
#true or false
|
|
local quiet=$3
|
|
|
|
myprint "${BLUE}loading ${WHITE}'$proj_conf_file'"
|
|
|
|
if [ -z "$proj_conf_file" ]; then
|
|
error "config path is null"
|
|
fi
|
|
if [ ! -f "$proj_conf_file" ]; then
|
|
error "${YELLOW}$proj_conf_file doesn't exist"
|
|
fi
|
|
|
|
OS=$(detect_os)
|
|
ARCH=$(detect_arch)
|
|
myprint_quiet $quiet "${GREEN}detected OS: $OS"
|
|
|
|
# getting version of cbuild installation
|
|
if [ -z "$INSTALLED_CBUILD_VERSION" ]; then
|
|
error "couldnt get current cbuild installation version"
|
|
fi
|
|
|
|
# undefined task
|
|
[ -z "$TASK" ] && TASK="no_task"
|
|
|
|
# getting cbuild version from config (CBUILD_VERSION declaration is at line 2)
|
|
exec_script_line "$proj_conf_file" 2 $quiet
|
|
|
|
myprint_quiet $quiet "${WHITE}'${proj_conf_file}' cbuild version: ${CYAN}$CBUILD_VERSION"
|
|
myprint_quiet $quiet "${WHITE}installed cbuild version: ${CYAN}$INSTALLED_CBUILD_VERSION"
|
|
|
|
# checking versions
|
|
version_parse $INSTALLED_CBUILD_VERSION installed
|
|
version_parse $CBUILD_VERSION config
|
|
if [ "$installed_version_major.$installed_version_minor" != "$config_version_major.$config_version_minor" ]; then
|
|
error "config was created for cbuild$config_version_major.$config_version_minor, but loaded whith cbuild$installed_version_major.$installed_version_minor which is incompatible"
|
|
fi
|
|
if [[ $installed_version_patch < $config_version_patch ]]; then
|
|
myprint "${YELLOW}New patch for cbuild$installed_version_major.$installed_version_minor is abaliable."
|
|
myprint "${YELLOW}Install it to get latest bugfixes."
|
|
fi
|
|
|
|
# throw error on undefined variable usage
|
|
set -u
|
|
include "$proj_conf_file"
|
|
|
|
# load project user config
|
|
local proj_conf_user_file="$proj_conf_file.user"
|
|
file_copy_default_if_not_present "$proj_conf_user_file" "$proj_conf_user_file.default"
|
|
myprint "${BLUE}loading ${WHITE}'$proj_conf_user_file'"
|
|
include "$proj_conf_user_file"
|
|
|
|
mkdir -p "$OUTDIR"
|
|
mkdir -p "$OBJDIR/objects"
|
|
mkdir -p "$OBJDIR/static_libs"
|
|
mkdir -p "$OBJDIR/dynamic_libs"
|
|
mkdir -p "$OBJDIR/profile"
|
|
|
|
# dont thorw error on undefined variable
|
|
set +u
|
|
|
|
myprint_quiet $quiet "${GREEN}config loading completed"
|
|
}
|