Newer
Older
dub_jkp / scripts / ci / setup-ldc-windows.sh
@Mathias Lang Mathias Lang on 23 Jan 2024 1 KB Remove internal mentions to Travis
#!/usr/bin/env bash

# sets up LDC for cross-compilation. Source this script, s.t. the new LDC is in PATH

# Make sure this version matches the version of LDC2 used in the CI configuration
# otherwise the compiler and the lib used might mismatch.
LDC_VERSION="1.22.0"
ARCH=${ARCH:-32}
VERSION=$(git describe --abbrev=0 --tags)
OS=windows

# LDC should already be installed (see .travis.yml)
# However, we need the libraries, so download them
# We can't use the downloaded ldc2 itself, because obviously it's for Windows

if [ "${ARCH}" == 64 ]; then
	ARCH_SUFFIX='x86_64'
	ZIP_ARCH_SUFFIX='x64'
else
	ARCH_SUFFIX='i686'
	ZIP_ARCH_SUFFIX='x86'
fi

LDC_DIR_PATH="$(pwd)/ldc2-${LDC_VERSION}-windows-${ZIP_ARCH_SUFFIX}"
LDC_XDFLAGS="-conf=${LDC_DIR_PATH}/etc/ldc2.conf -mtriple=${ARCH_SUFFIX}-pc-windows-msvc"

# Step 1: download the LDC Windows release
# Check if the user already have it (e.g. building locally)
if [ ! -d ${LDC_DIR_PATH} ]; then
    if [ ! -d "ldc2-${LDC_VERSION}-windows-${ZIP_ARCH_SUFFIX}.7z" ]; then
        wget "https://github.com/ldc-developers/ldc/releases/download/v${LDC_VERSION}/ldc2-${LDC_VERSION}-windows-${ZIP_ARCH_SUFFIX}.7z"
    fi
    7z x "ldc2-${LDC_VERSION}-windows-${ZIP_ARCH_SUFFIX}.7z" > /dev/null
fi

# Step 2: Generate a config file with the proper path
cat > ${LDC_DIR_PATH}/etc/ldc2.conf <<EOF
default:
{
	switches = [
		"-defaultlib=phobos2-ldc,druntime-ldc",
		"-link-defaultlib-shared=false",
	];
    post-switches = [
        "-I${LDC_DIR_PATH}/import",
    ];
	lib-dirs = [
		"${LDC_DIR_PATH}/lib/",
		"${LDC_DIR_PATH}/lib/mingw/",
	];
};
EOF