Move all to deprecated folder.
This commit is contained in:
138
deprecated/3P/civetweb/build
Executable file
138
deprecated/3P/civetweb/build
Executable file
@@ -0,0 +1,138 @@
|
||||
#!/bin/sh
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
stdout() {
|
||||
cat <<< "$@"
|
||||
}
|
||||
|
||||
stderr() {
|
||||
cat <<< "$@" 1>&2
|
||||
}
|
||||
|
||||
prereqs () {
|
||||
local E_BADARGS=65
|
||||
if [ $# -eq 0 ]; then
|
||||
stderr "Usage: $(basename $0) [prerequisite_program] [another_program...]"
|
||||
return $E_BADARGS
|
||||
fi
|
||||
for prog in $@; do
|
||||
hash $prog 2>&-
|
||||
if [ $? -ne 0 ]; then
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
usage() {
|
||||
if [ $# -ne 0 ]; then
|
||||
stdout $@
|
||||
fi
|
||||
stdout "Usage: $(basename $0) [options]"
|
||||
stdout
|
||||
stdout "A convenience script to quickly build the library with CMake."
|
||||
stdout
|
||||
stdout "Options:"
|
||||
stdout " [--shared|(--static)] Builds either a static or a shared library"
|
||||
stdout " [--debug|(--release)] Builds a certain variant of the library"
|
||||
stdout " -g,--generator name The CMake generator to use ('Unix Makefiles')"
|
||||
stdout " -o,--output folder The place to output the build files (./output)"
|
||||
stdout
|
||||
stdout "Examples:"
|
||||
stdout " ./build"
|
||||
stdout " ./build --shared --debug"
|
||||
stdout " ./build --static --release -o ~/my-output-folder"
|
||||
}
|
||||
|
||||
check() {
|
||||
local E_BADARGS=65
|
||||
if [ $# -ne 1 ]; then
|
||||
stderr "Usage: check prerequisite_program"
|
||||
return $E_BADARGS
|
||||
fi
|
||||
prereqs $1
|
||||
if [ $? -ne 0 ]; then
|
||||
stderr "Failed to find `$1` on the command line:"
|
||||
stderr "Please install it with your package manager"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
sanitize() {
|
||||
local E_BADARGS=65
|
||||
if [ $# -ne 1 ]; then
|
||||
stderr "Usage: sanitize string_to_clean"
|
||||
return $E_BADARGS
|
||||
fi
|
||||
echo $(echo "$1" | sed "s|[^A-Za-z]\+|-|g" | tr '[:upper:]' '[:lower:]')
|
||||
return 0
|
||||
}
|
||||
|
||||
build () {
|
||||
# Get the build locations
|
||||
local src_dir=$(cd $(dirname $0); pwd -P)
|
||||
|
||||
# Arguments
|
||||
local E_BADARGS=65
|
||||
local generator="Unix Makefiles"
|
||||
local shared=NO
|
||||
local build_type=Release
|
||||
local output_dir="${src_dir}/output"
|
||||
while (( "$#" )); do
|
||||
case "$1" in
|
||||
--debug) build_type=Release;;
|
||||
--release) build_type=Debug;;
|
||||
--shared) shared=YES;;
|
||||
--static) shared=NO;;
|
||||
--output) shift; out="$1";;
|
||||
-o) shift; output_dir="$1";;
|
||||
--generator) shift; generator="$1";;
|
||||
-g) shift; generator="$1";;
|
||||
--help) usage; return 0;;
|
||||
--) shift; break;;
|
||||
-*) usage "Bad argument $1"; return ${E_BADARGS};;
|
||||
*) break;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# Update the build folder
|
||||
local build_dir=${output_dir}/build
|
||||
local install_dir=${output_dir}/install
|
||||
|
||||
# Create the build folder
|
||||
mkdir -p ${build_dir}
|
||||
|
||||
# Enter the build folder
|
||||
cd ${build_dir}
|
||||
trap 'cd ${src_dir}' INT TERM EXIT
|
||||
|
||||
# Do the CMake configuration
|
||||
check cmake
|
||||
cmake -G ${generator} -DCMAKE_BUILD_TYPE=${build_type} -DBUILD_SHARED_LIBS:BOOL=${shared} ${src_dir}
|
||||
|
||||
# Do the build
|
||||
if [ "${generator}" = "Unix Makefiles" ]; then
|
||||
check make
|
||||
make all test
|
||||
else
|
||||
stderr "Unknown build system for ${generator}, go to ${build_dir} and run the correct build program"
|
||||
fi
|
||||
|
||||
# Do the install
|
||||
cmake -DCMAKE_INSTALL_PREFIX="${install_dir}" -P "${build_dir}/cmake_install.cmake"
|
||||
|
||||
# Return to the correct folder
|
||||
trap - INT TERM EXIT
|
||||
cd ${src_dir}
|
||||
|
||||
# Notify the user
|
||||
stdout "Built files are available at ${install_dir}"
|
||||
}
|
||||
|
||||
# If the script was not sourced we need to run the function
|
||||
case "$0" in
|
||||
*"build")
|
||||
build "$@"
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user