rules_foreign_cc/for_workspace/utils_win.sh

91 lines
2.5 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# default placeholder value
REPLACE_VALUE='BAZEL_GEN_ROOT'
export BUILD_PWD=$(cygpath -m $(pwd))
# Append string to PATH variable
# $1 string to append
function path() {
export PATH="$1:$PATH"
}
# Replace string in *.pc and *.la files in directory
# $1 directory to search recursively, absolute path
# $2 string to replace
# $3 replace target
function replace_in_files() {
if [ -d "$1" ]; then
find -L $1 -type f \
\( -name "*.pc" -or -name "*.la" -or -name "*-config" -or -name "*.cmake" \) \
-exec sed -i 's@'"$2"'@'"$3"'@g' {} ';'
fi
}
# copies contents of the directory to target directory
# (create the target directory if needed)
# $1 source directory, immediate children of which are copied
# $2 target directory
function copy_dir_contents_to_dir() {
cp -L -r --no-target-directory "$1" "$2"
}
# Symlink contents of the directory to target directory
# (create the target directory if needed).
# If file is passed, symlink it into the target directory.
# $1 source directory, immediate children of which are symlinked,
# or file to be symlinked.
# $2 target directory
function symlink_contents_to_dir() {
local target="$2"
mkdir -p ${target}
if [[ -f $1 ]]; then
symlink_to_dir $1 ${target}
return 0
fi
local children=$(find $1 -maxdepth 1 -mindepth 1)
for child in $children; do
symlink_to_dir $child ${target}
done
}
# COPIES all files from source directory to target directory
# (create the target directory if needed)
# (Windows complains about long filenames with symlink command, so copy them)
# NB symlinks from the source directory are copied
# $1 source directory
# $2 target directory
function symlink_to_dir() {
cp -r --no-target-directory $1 $2
}
# replace placeholder with absolute path in all files in a directory
# $1 directory
# $2 absolute path
function define_absolute_paths() {
replace_in_files $1 $REPLACE_VALUE $2
}
# replace the absolute path with a placeholder value in all files in a directory
# $1 directory
# $2 absolute path to replace
function replace_absolute_paths() {
replace_in_files $1 $2 $REPLACE_VALUE
}
# function for setting necessary environment variables for the platform
function set_platform_env_vars() {
export MSYS_NO_PATHCONV=1
export MSYS2_ARG_CONV_EXCL="*"
export SYSTEMDRIVE="C:"
}
function increment_pkg_config_path() {
local children=$(find $1 -mindepth 1 -name '*.pc')
# assume there is only one directory with pkg config
for child in $children; do
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$(dirname $child)"
return
done
}