Make flags in mingw-w64 build wrappers configurable

- Add mingw-w64-cmake and mingw-w64-configure
- Make default build flags configurable via
  CUSTOM_MINGW_FLAGS
This commit is contained in:
Martchus 2016-07-13 19:39:28 +02:00
parent 44458a7402
commit ac647e596a
6 changed files with 149 additions and 0 deletions

32
cmake/mingw-w64/PKGBUILD Normal file
View File

@ -0,0 +1,32 @@
pkgname=mingw-w64-cmake
pkgver=1
pkgrel=13
arch=('any')
pkgdesc="CMake wrapper for MinGW (mingw-w64)"
depends=('cmake' 'mingw-w64-gcc' 'mingw-w64-pkg-config')
license=("GPL")
url="http://fedoraproject.org/wiki/MinGW"
source=("mingw-cmake.sh"
"toolchain-mingw.cmake"
"mingw-wine.sh")
md5sums=('SKIP' 'SKIP' 'SKIP')
_architectures="i686-w64-mingw32 x86_64-w64-mingw32"
build() {
for _arch in ${_architectures}; do
sed "s|@TRIPLE@|${_arch}|g" toolchain-mingw.cmake > toolchain-${_arch}.cmake
sed "s|@TRIPLE@|${_arch}|g" mingw-cmake.sh > ${_arch}-cmake
sed "s|@TRIPLE@|${_arch}|g" mingw-wine.sh > ${_arch}-wine
done
}
package() {
install -d "${pkgdir}"/usr/bin
install -d "${pkgdir}"/usr/share/mingw
for _arch in ${_architectures}; do
install -m 644 toolchain-${_arch}.cmake "${pkgdir}"/usr/share/mingw/
install -m 755 ${_arch}-cmake "${pkgdir}"/usr/bin/
install -m 755 ${_arch}-wine "${pkgdir}"/usr/bin/
done
}

View File

@ -0,0 +1,20 @@
#!/bin/sh
mingw_prefix=/usr/@TRIPLE@
export PKG_CONFIG_LIBDIR="${mingw_prefix}/lib/pkgconfig"
mingw_flags="${CUSTOM_MINGW_FLAGS:--O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions --param=ssp-buffer-size=4}"
export CFLAGS="$mingw_flags $CFLAGS"
export CXXFLAGS="$mingw_flags $CXXFLAGS"
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 \
-DBUILD_SHARED_LIBS:BOOL=ON \
-DCMAKE_TOOLCHAIN_FILE=/usr/share/mingw/toolchain-@TRIPLE@.cmake \
-DCMAKE_CROSSCOMPILING_EMULATOR=/usr/bin/@TRIPLE@-wine \
"$@"

View File

@ -0,0 +1,21 @@
#!/bin/sh
set -e
mingw_prefix=/usr/@TRIPLE@
# run it in a custom WINEPREFIX to not mess with default ~/.wine
# also default prefix might be a 32 bits prefix, which will fail to run x86_64 exes
if ! test -d "${WINEPREFIX}"
then
export WINEPREFIX=~/.wine-@TRIPLE@
fi
# WINEPATH is used to find dlls, otherwise they should lie next to the exe
if test -z "${WINEPATH}"
then
export WINEPATH=${mingw_prefix}/bin
fi
wine "$@"

View File

@ -0,0 +1,32 @@
set (CMAKE_SYSTEM_NAME Windows)
# specify the cross compiler
set (CMAKE_C_COMPILER @TRIPLE@-gcc)
set (CMAKE_CXX_COMPILER @TRIPLE@-g++)
# where is the target environment
set (CMAKE_FIND_ROOT_PATH /usr/@TRIPLE@)
# search for programs in the build host directories
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# for libraries and headers in the target directories
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set (CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
# Make sure Qt can be detected by CMake
set (QT_BINARY_DIR /usr/@TRIPLE@/bin /usr/bin)
set (QT_INCLUDE_DIRS_NO_SYSTEM ON)
# set the resource compiler (RHBZ #652435)
set (CMAKE_RC_COMPILER @TRIPLE@-windres)
set (CMAKE_MC_COMPILER @TRIPLE@-windmc)
# override boost thread component suffix as mingw-w64-boost is compiled with threadapi=win32
set (Boost_THREADAPI win32)
# These are needed for compiling lapack (RHBZ #753906)
set (CMAKE_Fortran_COMPILER @TRIPLE@-gfortran)
set (CMAKE_AR:FILEPATH @TRIPLE@-ar)
set (CMAKE_RANLIB:FILEPATH @TRIPLE@-ranlib)

View File

@ -0,0 +1,26 @@
pkgname=mingw-w64-configure
pkgver=0.1
pkgrel=2
arch=(any)
pkgdesc="configure wrapper for MinGW (mingw-w64)"
depends=('mingw-w64-gcc' 'mingw-w64-pkg-config')
license=("GPL")
url="http://fedoraproject.org/wiki/MinGW"
source=("mingw-configure.sh")
md5sums=('SKIP')
_architectures="i686-w64-mingw32 x86_64-w64-mingw32"
build() {
for _arch in ${_architectures}; do
sed "s|@TRIPLE@|${_arch}|g" mingw-configure.sh > ${_arch}-configure
done
}
package() {
install -d "${pkgdir}"/usr/bin
for _arch in ${_architectures}; do
install -m 755 ${_arch}-configure "${pkgdir}"/usr/bin/
done
}

View File

@ -0,0 +1,18 @@
#!/bin/sh
# check if last arg is a path to configure, else use parent
for last; do true; done
if test -x "${last}/configure"
then
config_path="$last"
else
config_path=".."
fi
mingw_flags="${CUSTOM_MINGW_FLAGS:--O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions --param=ssp-buffer-size=4}"
LDFLAGS=""
export CFLAGS="$mingw_flags $CFLAGS"
export CXXFLAGS="$mingw_flags $CXXFLAGS"
${config_path}/configure --host=@TRIPLE@ --target=@TRIPLE@ --build="$CHOST" \
--prefix=/usr/@TRIPLE@ --libdir=/usr/@TRIPLE@/lib --includedir=/usr/@TRIPLE@/include \
--enable-shared --enable-static "$@"