PKGBUILDs/cmake/mingw-w64/mingw-cmake.sh

48 lines
2.0 KiB
Bash

#!/bin/sh
mingw_prefix=/usr/@TRIPLE@
export PKG_CONFIG_LIBDIR="${mingw_prefix}/lib/pkgconfig"
default_mingw_pp_flags="-D_FORTIFY_SOURCE=2"
default_mingw_compiler_flags="$default_mingw_pp_flags -O2 -pipe -fno-plt -fexceptions --param=ssp-buffer-size=4"
default_mingw_linker_flags="-Wl,-O1,--sort-common,--as-needed"
export CPPFLAGS="${MINGW_CPPFLAGS:-$default_mingw_pp_flags $CPPFLAGS}"
export CFLAGS="${MINGW_CFLAGS:-$default_mingw_compiler_flags $CFLAGS}"
export CXXFLAGS="${MINGW_CXXFLAGS:-$default_mingw_compiler_flags $CXXFLAGS}"
export LDFLAGS="${MINGW_LDFLAGS:-$default_mingw_linker_flags $LDFLAGS}"
# allow overriding certain defaults
extra_args=()
declare -A variables_to_preserve=(
[CMAKE_BUILD_TYPE]=Release
[BUILD_SHARED_LIBS]=ON
)
variable_to_preserve_regex='-D(CMAKE_BUILD_TYPE|BUILD_SHARED_LIBS)(:.*)=(.*)'
for arg in "$@"; do
if [[ $arg =~ $variable_to_preserve_regex ]]; then
variables_to_preserve[${BASH_REMATCH[1]}]=${BASH_REMATCH[3]}
else
extra_args+=("$arg")
fi
done
PATH=${mingw_prefix}/bin:$PATH cmake \
-DCMAKE_INSTALL_PREFIX:PATH=${mingw_prefix} \
-DCMAKE_INSTALL_LIBDIR:PATH=${mingw_prefix}/lib \
-DINCLUDE_INSTALL_DIR:PATH=${mingw_prefix}/include \
-DLIB_INSTALL_DIR:PATH=${mingw_prefix}/lib \
-DSYSCONF_INSTALL_DIR:PATH=${mingw_prefix}/etc \
-DSHARE_INSTALL_DIR:PATH=${mingw_prefix}/share \
-DCMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES:PATH=${mingw_prefix}/include \
-DCMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES:PATH=${mingw_prefix}/include \
-DBUILD_SHARED_LIBS:BOOL="${variables_to_preserve[BUILD_SHARED_LIBS]}" \
-DCMAKE_TOOLCHAIN_FILE=/usr/share/mingw/toolchain-@TRIPLE@.cmake \
-DCMAKE_CROSSCOMPILING_EMULATOR=/usr/bin/@TRIPLE@-wine \
-DCMAKE_BUILD_TYPE="${variables_to_preserve[CMAKE_BUILD_TYPE]}" \
-DCMAKE_C_FLAGS_RELEASE="$CFLAGS" \
-DCMAKE_CXX_FLAGS_RELEASE="$CXXFLAGS" \
-DCMAKE_SHARED_LINKER_FLAGS_RELEASE="$LDFLAGS" \
-DCMAKE_EXE_LINKER_FLAGS_RELEASE="$LDFLAGS" \
"${extra_args[@]}"