# Global variables, read-only after parse_options has run
ARCH=
+CC_PKG=
DESTDIR=
EXTRA_CONFIGURE_ARGS=
INCLUDE_DOCS=false
MAKE="make -j$(getconf _NPROCESSORS_ONLN)"
MSYSTEM=${MSYSTEM:-}
SKIP_CONFIGURE=false
-VERSION=$(tools/get-version-number)
+VERSION=$(tools/get-version-number.sh)
ZIP=false
ZIPFILE=
parse_options()
{
- if [ -z "$MSYSTEM" ]; then
+ case "$MSYSTEM" in
+ "")
ARCH=x86_64
- else
- case "$MSYSTEM" in
- MINGW32)
- ARCH=i686
- CC_PKG=mingw-w64-i686-gcc
- ;;
- MINGW64)
- ARCH=x86_64
- CC_PKG=mingw-w64-x86_64-gcc
- ;;
- CLANG32)
- ARCH=i686
- CC_PKG=mingw-w64-clang-i686-clang
- ;;
- CLANG64)
- ARCH=x86_64
- CC_PKG=mingw-w64-clang-x86_64-clang
- ;;
- CLANGARM64)
- ARCH=aarch64
- # MSYS2 doesn't yet support cross-compiling for ARM64,
- # so use a separate prebuilt toolchain for that case.
- if [ "$(uname -m)" = x86_64 ]; then
- PREBUILT_LLVM_MINGW_ENABLED=true
- export PATH="$PREBUILT_LLVM_MINGW_BIN:$PATH"
- else
- CC_PKG=mingw-w64-clang-aarch64-clang
- fi
- ;;
- *)
- echo 1>&2 "Unsupported MSYS2 environment: $MSYSTEM. This script supports"
- echo 1>&2 "MINGW32, MINGW64, CLANG32, CLANG64, and CLANGARM64."
- echo 1>&2 "See https://www.msys2.org/docs/environments/"
- exit 1
- esac
- fi
+ ;;
+ MINGW32)
+ ARCH=i686
+ CC_PKG=mingw-w64-i686-gcc
+ ;;
+ MINGW64)
+ ARCH=x86_64
+ CC_PKG=mingw-w64-x86_64-gcc
+ ;;
+ CLANG32)
+ ARCH=i686
+ CC_PKG=mingw-w64-clang-i686-clang
+ ;;
+ CLANG64)
+ ARCH=x86_64
+ CC_PKG=mingw-w64-clang-x86_64-clang
+ ;;
+ CLANGARM64)
+ ARCH=aarch64
+ # MSYS2 doesn't yet support cross-compiling for ARM64, so use a
+ # separate prebuilt toolchain for that case.
+ if [ "$(uname -m)" = x86_64 ]; then
+ PREBUILT_LLVM_MINGW_ENABLED=true
+ export PATH="$PREBUILT_LLVM_MINGW_BIN:$PATH"
+ else
+ CC_PKG=mingw-w64-clang-aarch64-clang
+ fi
+ ;;
+ *)
+ echo 1>&2 "Unsupported MSYS2 environment: $MSYSTEM. This script supports"
+ echo 1>&2 "MINGW32, MINGW64, CLANG32, CLANG64, and CLANGARM64."
+ echo 1>&2 "See https://www.msys2.org/docs/environments/"
+ exit 1
+ esac
local longopts="help"
longopts+=",arch:"
configure_args+=("--disable-static")
# -static-libgcc is needed with gcc. It should go in the CFLAGS, but
# libtool strips it, so it must go directly in CC instead. See
- # http://www.gnu.org/software/libtool/manual/libtool.html#Stripped-link-flags
+ # https://www.gnu.org/software/libtool/manual/libtool.html#Stripped-link-flags
local cc="${ARCH}-w64-mingw32-cc"
if ! type -P "$cc" &>/dev/null; then
cc="${ARCH}-w64-mingw32-gcc"
fi
exit 1
fi
- if "$cc" --version | grep -q '(GCC)'; then
+ if ! "$cc" --version | grep -q -i 'clang'; then
configure_args+=("CC=$cc -static-libgcc")
fi
configure_args+=("${EXTRA_CONFIGURE_ARGS[@]}")
install_text_files()
{
echo "Installing NEWS, README, and licenses..."
- cp NEWS README* COPYING* "$DESTDIR"
+ cp NEWS* README* COPYING* "$DESTDIR"
sed -n '/^#/q; s/^[\/\* ]*//; p' src/divsufsort.c > "$DESTDIR"/COPYING.libdivsufsort-lite
if ! grep -q 'Copyright' "$DESTDIR"/COPYING.libdivsufsort-lite; then
echo 1>&2 "ERROR: failed to extract libdivsufsort-lite license text"
exit 1
fi
cd "$DESTDIR"
- for fil in NEWS README* COPYING*; do
- sed < "$fil" > "${fil}".txt -e 's/$/\r/g'
+ for fil in NEWS* README* COPYING*; do
+ sed < "$fil" > "${fil%.md}".txt -e 's/$/\r/g'
rm "$fil"
done
cd ..