Initial contribution
This commit is contained in:
parent
7b5cc4fa59
commit
11d9ce37aa
580 changed files with 155133 additions and 162 deletions
21
src/scripts/CMakeLists.txt
Normal file
21
src/scripts/CMakeLists.txt
Normal file
|
@ -0,0 +1,21 @@
|
|||
#
|
||||
# Copyright(c) 2006 to 2018 ADLINK Technology Limited and others
|
||||
#
|
||||
# This program and the accompanying materials are made available under the
|
||||
# terms of the Eclipse Public License v. 2.0 which is available at
|
||||
# http://www.eclipse.org/legal/epl-2.0, or the Eclipse Distribution License
|
||||
# v. 1.0 which is available at
|
||||
# http://www.eclipse.org/org/documents/edl-v10.php.
|
||||
#
|
||||
# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
|
||||
#
|
||||
|
||||
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
configure_file(
|
||||
"cmake/vdds_install_examples.in" "vdds_install_examples" @ONLY)
|
||||
|
||||
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/vdds_install_examples
|
||||
DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
||||
COMPONENT dev)
|
||||
endif()
|
||||
|
199
src/scripts/cmake/vdds_install_examples.in
Executable file
199
src/scripts/cmake/vdds_install_examples.in
Executable file
|
@ -0,0 +1,199 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Copyright(c) 2006 to 2018 ADLINK Technology Limited and others
|
||||
#
|
||||
# This program and the accompanying materials are made available under the
|
||||
# terms of the Eclipse Public License v. 2.0 which is available at
|
||||
# http://www.eclipse.org/legal/epl-2.0, or the Eclipse Distribution License
|
||||
# v. 1.0 which is available at
|
||||
# http://www.eclipse.org/org/documents/edl-v10.php.
|
||||
#
|
||||
# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
|
||||
#
|
||||
|
||||
OUTPUT_DIR=
|
||||
SCRIPT_DIR=
|
||||
EXAMPLES_DIR=
|
||||
EXPLICIT_YES=false
|
||||
HELP_SHOWN=false
|
||||
|
||||
|
||||
show_help() {
|
||||
# Show help only once.
|
||||
if [ $HELP_SHOWN = false ]; then
|
||||
cat << EOF
|
||||
Usage: ${0##*/} [-h] [-y] [-d OUTDIR]
|
||||
|
||||
The @CMAKE_PROJECT_NAME@ examples are probably installed in a read-only location.
|
||||
By executing this script, the examples can be (re)installed to a writable
|
||||
location. That could be helpful when trying to experiment with the examples.
|
||||
|
||||
-d|--dir OUTDIR Install the examples in OUTDIR.
|
||||
This directory should not be a sub-directory of the
|
||||
examples location.
|
||||
If not set, an output dir will be asked for. When asking
|
||||
for an output dir, the current directory is used as
|
||||
suggestion.
|
||||
-h|--help This text.
|
||||
-y|--yes Use 'yes' for every question.
|
||||
EOF
|
||||
HELP_SHOWN=true
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
#
|
||||
# Parse command line arguments.
|
||||
#
|
||||
if [ -z "$1" ]; then
|
||||
show_help
|
||||
printf '\n'
|
||||
else
|
||||
while :; do
|
||||
case $1 in
|
||||
-h|-\?|--help)
|
||||
show_help
|
||||
exit
|
||||
;;
|
||||
-d|--dir)
|
||||
if [ "$2" ]; then
|
||||
OUTPUT_DIR=$2
|
||||
shift
|
||||
else
|
||||
show_help
|
||||
printf '\nERROR: "-d|--dir" requires a non-empty option argument.\n' "$1" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
-y|--yes)
|
||||
EXPLICIT_YES=true
|
||||
;;
|
||||
-?*)
|
||||
printf 'WARN: Unknown option (ignored): %s\n' "$1" >&2
|
||||
;;
|
||||
*)
|
||||
break
|
||||
esac
|
||||
shift
|
||||
done
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
# Get the location of the script.
|
||||
#
|
||||
SCRIPT=`readlink -f "$0"`
|
||||
SCRIPT_DIR=`dirname "$SCRIPT"`
|
||||
|
||||
|
||||
#
|
||||
# Try a few locations where the examples probably are.
|
||||
#
|
||||
EXAMPLES_DIR_DEFAULT="/usr/share/@CMAKE_PROJECT_NAME@/examples"
|
||||
EXAMPLES_DIR_RELATIVE="$SCRIPT_DIR/../share/@CMAKE_PROJECT_NAME@/examples"
|
||||
EXAMPLES_DIR_CURRENT=`pwd`
|
||||
|
||||
if [ -d "$EXAMPLES_DIR_DEFAULT" ]; then
|
||||
EXAMPLES_DIR="$EXAMPLES_DIR_DEFAULT"
|
||||
elif [ -d "$EXAMPLES_DIR_RELATIVE" ]; then
|
||||
EXAMPLES_DIR="$EXAMPLES_DIR_RELATIVE"
|
||||
elif [ -d "$EXAMPLES_DIR_CURRENT" ]; then
|
||||
case "$EXAMPLES_DIR_CURRENT" in
|
||||
*@CMAKE_PROJECT_NAME@/examples) EXAMPLES_DIR="$EXAMPLES_DIR_CURRENT"
|
||||
esac
|
||||
fi
|
||||
|
||||
if [ -z "$EXAMPLES_DIR" ]; then
|
||||
show_help
|
||||
printf '\nERROR: Could not find the @CMAKE_PROJECT_NAME@ examples at any of these locations:\n' >&2
|
||||
printf ' - [Default ] - %s\n' "$EXAMPLES_DIR_DEFAULT" >&2
|
||||
printf ' - [Relative] - %s\n' "$EXAMPLES_DIR_RELATIVE" >&2
|
||||
printf ' - [Current ] - %s\n' "$EXAMPLES_DIR_CURRENT" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
# Only get the output dir ourselves when it wasn't already set by the
|
||||
# command line arguments.
|
||||
#
|
||||
if [ -z "$OUTPUT_DIR" ]; then
|
||||
# Assume the examples should be installed in the current directory.
|
||||
OUTPUT_DIR=`pwd`
|
||||
|
||||
# When explicit 'yes' is provided as a command line argument, then
|
||||
# don't ask if the assumption is correct.
|
||||
if [ $EXPLICIT_YES = false ]; then
|
||||
|
||||
# Keep pestering the user until we have a proper answer.
|
||||
while true; do
|
||||
YNC=
|
||||
if [ "$OUTPUT_DIR" = "$EXAMPLES_DIR" ]; then
|
||||
YNC="N"
|
||||
elif [ ! -w "$OUTPUT_DIR" ]; then
|
||||
YNC="N"
|
||||
else
|
||||
read -p "Do you wish to install the @CMAKE_PROJECT_NAME@ examples in \"$OUTPUT_DIR\"? [Yes|No|Cancel] " YNC
|
||||
fi
|
||||
case $YNC in
|
||||
[Yy]* ) break;;
|
||||
[Nn]* ) read -p "New examples install directory> " OUTPUT_DIR; break;;
|
||||
[Cc]* ) exit;;
|
||||
* ) echo "Please answer yes, no or cancel.";;
|
||||
esac
|
||||
done
|
||||
elif [ "$OUTPUT_DIR" = "$EXAMPLES_DIR" ]; then
|
||||
show_help
|
||||
printf '\nERROR: Destination is same as source.\n'
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
# Check if the output dir is valid.
|
||||
#
|
||||
if [ ! -d "$OUTPUT_DIR" ]; then
|
||||
# Only ask for permission if an explicit yes wasn't part of
|
||||
# the command line arguments.
|
||||
if [ $EXPLICIT_YES = false ]; then
|
||||
while true; do
|
||||
read -p "Do you wish to create directory \"$OUTPUT_DIR\"? [Yes|No] " YN
|
||||
case $YN in
|
||||
[Yy]* ) break;;
|
||||
[Nn]* ) exit;;
|
||||
* ) echo "Please answer yes or no.";;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
mkdir -p "$OUTPUT_DIR"
|
||||
if [ $? -ne 0 ]; then
|
||||
printf 'ERROR: Could not create directory "%s"\n' "$OUTPUT_DIR"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
# If the directory still doesn't exist, exit.
|
||||
if [ ! -d "$OUTPUT_DIR" ]; then
|
||||
show_help
|
||||
printf '\nERROR: Directory "%s" does not exist.\n' "$OUTPUT_DIR" >&2
|
||||
exit 1
|
||||
fi
|
||||
# If the directory isn't writable, exit.
|
||||
if [ ! -w "$OUTPUT_DIR" ]; then
|
||||
show_help
|
||||
printf '\nERROR: Directory "%s" does not have write permission.\n' "$OUTPUT_DIR" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
# Copy the examples.
|
||||
#
|
||||
cp -Rf "$EXAMPLES_DIR" "$OUTPUT_DIR"
|
||||
if [ $? -ne 0 ]; then
|
||||
printf 'ERROR: Could not install examples\n'
|
||||
exit 1
|
||||
else
|
||||
printf 'Installed @CMAKE_PROJECT_NAME@ examples into "%s"\n' "$OUTPUT_DIR"
|
||||
fi
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue