From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2195) id 6412A388F057; Mon, 11 May 2020 15:48:49 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6412A388F057 To: cygwin-apps-cvs@sourceware.org Subject: [cygport - the Cygwin packaging tool] branch topic/mingw, updated. 0.34.0-30-gc052276 X-Git-Refname: refs/heads/topic/mingw X-Git-Reftype: branch X-Git-Oldrev: 4c7f4070410be79bbd43d222bccccab738255ff9 X-Git-Newrev: c052276338066515134d7316974ab7ddd962ad50 Message-Id: <20200511154849.6412A388F057@sourceware.org> Date: Mon, 11 May 2020 15:48:49 +0000 (GMT) From: Yaakov Selkowitz X-BeenThere: cygwin-apps-cvs@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Cygwin-apps git logs List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 May 2020 15:48:49 -0000 https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=c052276338066515134d7316974ab7ddd962ad50 commit c052276338066515134d7316974ab7ddd962ad50 Author: Yaakov Selkowitz Date: Mon May 11 11:48:35 2020 -0400 mingw: split up into separate cygclasses per arch Diff: --- cygclass/meson.build | 15 +- cygclass/mingw-internal.cygclass | 126 +++++ cygclass/mingw.cygclass | 771 +------------------------------ cygclass/mingw32.cygclass | 205 ++++++++ cygclass/mingw64.cygclass | 205 ++++++++ cygclass/mingwarm32.cygclass | 205 ++++++++ cygclass/mingwarm64.cygclass | 205 ++++++++ testsuite/mingw/make/mingw-crypt.cygport | 7 +- 8 files changed, 978 insertions(+), 761 deletions(-) diff --git a/cygclass/meson.build b/cygclass/meson.build index 27f57e5..b22ca30 100644 --- a/cygclass/meson.build +++ b/cygclass/meson.build @@ -142,7 +142,15 @@ # * cross.cygclass - # For packaging libraries to be used with generic cross-compiler toolchains. # * mingw.cygclass - -# For packaging libraries to be used with MinGW cross-compiler toolchains. +# For packaging libraries to be used with all MinGW cross-compiler toolchains. +# * mingw32.cygclass - +# For packaging libraries to be used with the i686 MinGW cross-compiler toolchain. +# * mingw64.cygclass - +# For packaging libraries to be used with the x86_64 MinGW cross-compiler toolchain. +# * mingwarm32.cygclass - +# For packaging libraries to be used with the armv7 MinGW cross-compiler toolchain. +# * mingwarm64.cygclass - +# For packaging libraries to be used with the aarch64 MinGW cross-compiler toolchain. # * multilib.cygclass - # For packaging libraries for cross-compiler toolchains which support # multiple ABIs. @@ -200,6 +208,11 @@ cygclasses = files( 'mate.cygclass', 'meson.cygclass', 'mingw.cygclass', + 'mingw-internal.cygclass', + 'mingw32.cygclass', + 'mingw64.cygclass', + 'mingwarm32.cygclass', + 'mingwarm64.cygclass', 'mtn.cygclass', 'multilib.cygclass', 'ninja.cygclass', diff --git a/cygclass/mingw-internal.cygclass b/cygclass/mingw-internal.cygclass new file mode 100644 index 0000000..3ccd5c7 --- /dev/null +++ b/cygclass/mingw-internal.cygclass @@ -0,0 +1,126 @@ +################################################################################ +# +# mingw-internal.cygclass - internal functions for mingw*.cygclass +# +# Part of cygport - Cygwin packaging application +# Copyright (C) 2006-2020 Cygport authors +# Provided by the Cygwin project +# +# cygport is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cygport is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cygport. If not, see . +# +################################################################################ + +__mingw_init() { + local a=${1} t=${2} + local c h n p r s v + + declare -g MINGW${t}_HOST="${a}-w64-mingw32" + declare -g MINGW${t}_TARGET="${a}-w64-mingw32" + + h=MINGW${t}_HOST + for c in CC=gcc CXX=g++ F77=gfortran FC=gfortran OBJC=gcc OBJCXX=g++ \ + AR=ar DLLTOOL=dlltool NM=nm OBJDUMP=objdump RANLIB=ranlib \ + RC=windres STRIP=strip PKG_CONFIG=pkg-config QT5_QMAKE=qmake-qt5 + do + declare -g MINGW${t}_${c%=*}="${!h}-${c#*=}" + done + if inherited clang + then + declare -g MINGW${t}_CC="${!h}-clang" + declare -g MINGW${t}_CXX="${!h}-clang++" + fi + + declare -g MINGW${t}_SYSROOT="/usr/${!h}/sys-root" + r=MINGW${t}_SYSROOT + declare -g MINGW${t}_PREFIX="${!r}/mingw" + p=MINGW${t}_PREFIX + declare -g MINGW${t}_BINDIR="${!p}/bin" + declare -g MINGW${t}_INCLUDEDIR="${!p}/include" + declare -g MINGW${t}_LIBDIR="${!p}/lib" + declare -g MINGW${t}_DATADIR="${!p}/share" + + if inherited mingw && [[ ${MINGW_ARCHS} =~ "${a}" ]] && [[ "${NAME}" =~ "mingw-" ]] + then + _CYGPORT_INTERNAL_multi_doc_=1 + n=${NAME#mingw-} + PKG_NAMES+=" mingw64-${a}-${n}" + declare -g mingw64_${a}_${n//[-\.]/_}_CONTENTS="${!p#/} usr/share/doc/mingw64-${a}-${n}/" + fi +} + +__mingw_wrapper() { + local ovar var + local toolvars=(CC=gcc CXX=g++ F77=gfortran FC=gfortran OBJC=gcc OBJCXX=g++ \ + AR=ar DLLTOOL=dlltool NM=nm OBJDUMP=objdump RANLIB=ranlib \ + RC=windres STRIP=strip PKG_CONFIG=pkg-config QT5_QMAKE=qmake-qt5) + local miscvars=(CHOST CTARGET CC_SYSROOT) + local expvars=(CFLAGS CXXFLAGS) + + __check_triplet ${1} + + for var in ${miscvars[*]} ${toolvars[*]%=*} ${expvars[*]} + do + ovar="orig_${var}" + local ${ovar}="${!var}" + done + declare -g CHOST=${1} + shift + declare -g CTARGET=${CHOST} + declare -g CC_SYSROOT=/usr/${CHOST}/sys-root + # mingw-w64 actually supports these now, but with libssp it is fragile + declare -gx CFLAGS="${CFLAGS/-Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong}" + declare -gx CXXFLAGS="${CXXFLAGS/-Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong}" + + for var in ${toolvars[*]} + do + declare -g ${var%=*}=${CHOST}-${var#*=} + done + if inherited clang + then + declare -g CC="${CHOST}-clang" + declare -g CXX="${CHOST}-clang++" + fi + + if ! check_prog ${CC} || ! check_prog ${STRIP} + then + error "This package requires ${CHOST} binutils and gcc" + fi + + if ! defined __MINGW_WRAPPER_NO_CWD + then + mkdir -p ${CHOST}/${MINGW_BUILDDIR_SUFFIX} + pushd ${CHOST}/${MINGW_BUILDDIR_SUFFIX} + fi + + inform "cross-compiling for ${CHOST}" + "${@}" || error "${1} for ${CHOST} failed" + + if ! defined __MINGW_WRAPPER_NO_CWD + then + popd + fi + + for var in ${miscvars[*]} ${toolvars[*]%=*} + do + ovar="orig_${var}" + declare -g ${var}="${!ovar}" + done + for var in ${expvars[*]} + do + ovar="orig_${var}" + declare -gx ${var}="${!ovar}" + done +} + +readonly -f __mingw_init __mingw_wrapper diff --git a/cygclass/mingw.cygclass b/cygclass/mingw.cygclass index 0ebf344..272c168 100644 --- a/cygclass/mingw.cygclass +++ b/cygclass/mingw.cygclass @@ -1,6 +1,6 @@ ################################################################################ # -# mingw.cygclass - for building cross-compiled packages +# mingw.cygclass - for building cross-compiled MinGW packages # # Part of cygport - Cygwin packaging application # Copyright (C) 2006-2020 Cygport authors @@ -40,8 +40,16 @@ # Supported build systems for cross-compiling are autotools, cmake, meson, # Qt5 qmake, and custom Makefiles. The respective cygclasses still need # to be inherit()ed, with mingw.cygclass being inherit()ed last. +# INHERITS +# mingw32.cygclass, mingw64.cygclass, mingwarm32.cygclass, mingwarm64.cygclass #**** +case ${MINGW_ARCHS:=i686;x86_64} in +all) MINGW_ARCHS="i686;x86_64;armv7;aarch64" ;; +esac + +inherit mingw32 mingw64 mingwarm32 mingwarm64 + ARCH=noarch unset ARCH_i686 ARCH_x86_64 @@ -55,387 +63,6 @@ unset ARCH_i686 ARCH_x86_64 # This variable must be defined before inherit()ing mingw.cygclass. # If undefined, defaults to "i686;x86_64". #**** -case ${MINGW_ARCHS:=i686;x86_64} in -all) MINGW_ARCHS="i686;x86_64;armv7;aarch64" ;; -esac - -#****d* mingw.cygclass/MINGW32_HOST -# DESCRIPTION -# The host triplet for the i686 toolchain. -#**** -#****d* mingw.cygclass/MINGW32_TARGET -# DESCRIPTION -# The target triplet for the i686 toolchain. -#**** -#****d* mingw.cygclass/MINGW32_CC -# DESCRIPTION -# The C compiler for the i686 toolchain. -#**** -#****d* mingw.cygclass/MINGW32_CXX -# DESCRIPTION -# The C++ compiler for the i686 toolchain. -#**** -#****d* mingw.cygclass/MINGW32_F77 -# DESCRIPTION -# The Fortran 77 compiler for the i686 toolchain. -#**** -#****d* mingw.cygclass/MINGW32_FC -# DESCRIPTION -# The Fortran 95 compiler for the i686 toolchain. -#**** -#****d* mingw.cygclass/MINGW32_AR -# DESCRIPTION -# The static library archiver for the i686 toolchain. -#**** -#****d* mingw.cygclass/MINGW32_DLLTOOL -# DESCRIPTION -# The DLL import creation tool for the i686 toolchain. -#**** -#****d* mingw.cygclass/MINGW32_NM -# DESCRIPTION -# The symbol listing tool for the i686 toolchain. -#**** -#****d* mingw.cygclass/MINGW32_RANLIB -# DESCRIPTION -# The static library indexer for the i686 toolchain. -#**** -#****d* mingw.cygclass/MINGW32_RC -# DESCRIPTION -# The Windows resource compiler for the i686 toolchain. -#**** -#****d* mingw.cygclass/MINGW32_STRIP -# DESCRIPTION -# The symbol remover tool for the i686 toolchain. -#**** -#****d* mingw.cygclass/MINGW32_PKG_CONFIG -# DESCRIPTION -# The pkg-config tool for the i686 toolchain. -#**** -#****d* mingw.cygclass/MINGW32_QT5_QMAKE -# DESCRIPTION -# The Qt5 qmake tool for the i686 toolchain. -#**** -#****d* mingw.cygclass/MINGW32_SYSROOT -# DESCRIPTION -# The virtual root for files used by the i686 toolchain. -#**** -#****d* mingw.cygclass/MINGW32_PREFIX -# DESCRIPTION -# The prefix directory under the i686 sysroot. -#**** -#****d* mingw.cygclass/MINGW32_BINDIR -# DESCRIPTION -# The bin directory under the i686 sysroot -#**** -#****d* mingw.cygclass/MINGW32_INCLUDEDIR -# DESCRIPTION -# The include directory under the i686 sysroot. -#**** -#****d* mingw.cygclass/MINGW32_LIBDIR -# DESCRIPTION -# The lib directory under the i686 sysroot. -#**** -#****d* mingw.cygclass/MINGW32_DATADIR -# DESCRIPTION -# The data directory under the i686 sysroot. -#**** - -#****d* mingw.cygclass/MINGW64_HOST -# DESCRIPTION -# The host triplet for the x86_64 toolchain. -#**** -#****d* mingw.cygclass/MINGW64_TARGET -# DESCRIPTION -# The target triplet for the x86_64 toolchain. -#**** -#****d* mingw.cygclass/MINGW64_CC -# DESCRIPTION -# The C compiler for the x86_64 toolchain. -#**** -#****d* mingw.cygclass/MINGW64_CXX -# DESCRIPTION -# The C++ compiler for the x86_64 toolchain. -#**** -#****d* mingw.cygclass/MINGW64_F77 -# DESCRIPTION -# The Fortran 77 compiler for the x86_64 toolchain. -#**** -#****d* mingw.cygclass/MINGW64_FC -# DESCRIPTION -# The Fortran 95 compiler for the x86_64 toolchain. -#**** -#****d* mingw.cygclass/MINGW64_AR -# DESCRIPTION -# The static library archiver for the x86_64 toolchain. -#**** -#****d* mingw.cygclass/MINGW64_DLLTOOL -# DESCRIPTION -# The DLL import creation tool for the x86_64 toolchain. -#**** -#****d* mingw.cygclass/MINGW64_NM -# DESCRIPTION -# The symbol listing tool for the x86_64 toolchain. -#**** -#****d* mingw.cygclass/MINGW64_RANLIB -# DESCRIPTION -# The static library indexer for the x86_64 toolchain. -#**** -#****d* mingw.cygclass/MINGW64_RC -# DESCRIPTION -# The Windows resource compiler for the x86_64 toolchain. -#**** -#****d* mingw.cygclass/MINGW64_STRIP -# DESCRIPTION -# The symbol remover tool for the x86_64 toolchain. -#**** -#****d* mingw.cygclass/MINGW64_PKG_CONFIG -# DESCRIPTION -# The pkg-config tool for the x86_64 toolchain. -#**** -#****d* mingw.cygclass/MINGW64_QT5_QMAKE -# DESCRIPTION -# The Qt5 qmake tool for the x86_64 toolchain. -#**** -#****d* mingw.cygclass/MINGW64_SYSROOT -# DESCRIPTION -# The virtual root for files used by the x86_64 toolchain. -#**** -#****d* mingw.cygclass/MINGW64_PREFIX -# DESCRIPTION -# The prefix directory under the x86_64 sysroot. -#**** -#****d* mingw.cygclass/MINGW64_BINDIR -# DESCRIPTION -# The bin directory under the x86_64 sysroot -#**** -#****d* mingw.cygclass/MINGW64_INCLUDEDIR -# DESCRIPTION -# The include directory under the x86_64 sysroot. -#**** -#****d* mingw.cygclass/MINGW64_LIBDIR -# DESCRIPTION -# The lib directory under the x86_64 sysroot. -#**** -#****d* mingw.cygclass/MINGW64_DATADIR -# DESCRIPTION -# The data directory under the x86_64 sysroot. -#**** - -#****d* mingw.cygclass/MINGWARM32_HOST -# DESCRIPTION -# The host triplet for the armv7 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM32_TARGET -# DESCRIPTION -# The target triplet for the armv7 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM32_CC -# DESCRIPTION -# The C compiler for the armv7 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM32_CXX -# DESCRIPTION -# The C++ compiler for the armv7 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM32_F77 -# DESCRIPTION -# The Fortran 77 compiler for the armv7 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM32_FC -# DESCRIPTION -# The Fortran 95 compiler for the armv7 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM32_AR -# DESCRIPTION -# The static library archiver for the armv7 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM32_DLLTOOL -# DESCRIPTION -# The DLL import creation tool for the armv7 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM32_NM -# DESCRIPTION -# The symbol listing tool for the armv7 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM32_RANLIB -# DESCRIPTION -# The static library indexer for the armv7 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM32_RC -# DESCRIPTION -# The Windows resource compiler for the armv7 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM32_STRIP -# DESCRIPTION -# The symbol remover tool for the armv7 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM32_PKG_CONFIG -# DESCRIPTION -# The pkg-config tool for the armv7 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM32_QT5_QMAKE -# DESCRIPTION -# The Qt5 qmake tool for the armv7 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM32_SYSROOT -# DESCRIPTION -# The virtual root for files used by the armv7 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM32_PREFIX -# DESCRIPTION -# The prefix directory under the armv7 sysroot. -#**** -#****d* mingw.cygclass/MINGWARM32_BINDIR -# DESCRIPTION -# The bin directory under the armv7 sysroot -#**** -#****d* mingw.cygclass/MINGWARM32_INCLUDEDIR -# DESCRIPTION -# The include directory under the armv7 sysroot. -#**** -#****d* mingw.cygclass/MINGWARM32_LIBDIR -# DESCRIPTION -# The lib directory under the armv7 sysroot. -#**** -#****d* mingw.cygclass/MINGWARM32_DATADIR -# DESCRIPTION -# The data directory under the armv7 sysroot. -#**** - -#****d* mingw.cygclass/MINGWARM64_HOST -# DESCRIPTION -# The host triplet for the aarch64 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM64_TARGET -# DESCRIPTION -# The target triplet for the aarch64 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM64_CC -# DESCRIPTION -# The C compiler for the aarch64 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM64_CXX -# DESCRIPTION -# The C++ compiler for the aarch64 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM64_F77 -# DESCRIPTION -# The Fortran 77 compiler for the aarch64 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM64_FC -# DESCRIPTION -# The Fortran 95 compiler for the aarch64 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM64_AR -# DESCRIPTION -# The static library archiver for the aarch64 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM64_DLLTOOL -# DESCRIPTION -# The DLL import creation tool for the aarch64 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM64_NM -# DESCRIPTION -# The symbol listing tool for the aarch64 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM64_RANLIB -# DESCRIPTION -# The static library indexer for the aarch64 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM64_RC -# DESCRIPTION -# The Windows resource compiler for the aarch64 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM64_STRIP -# DESCRIPTION -# The symbol remover tool for the aarch64 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM64_PKG_CONFIG -# DESCRIPTION -# The pkg-config tool for the aarch64 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM64_QT5_QMAKE -# DESCRIPTION -# The Qt5 qmake tool for the aarch64 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM64_SYSROOT -# DESCRIPTION -# The virtual root for files used by the aarch64 toolchain. -#**** -#****d* mingw.cygclass/MINGWARM64_PREFIX -# DESCRIPTION -# The prefix directory under the aarch64 sysroot. -#**** -#****d* mingw.cygclass/MINGWARM64_BINDIR -# DESCRIPTION -# The bin directory under the aarch64 sysroot -#**** -#****d* mingw.cygclass/MINGWARM64_INCLUDEDIR -# DESCRIPTION -# The include directory under the aarch64 sysroot. -#**** -#****d* mingw.cygclass/MINGWARM64_LIBDIR -# DESCRIPTION -# The lib directory under the aarch64 sysroot. -#**** -#****d* mingw.cygclass/MINGWARM64_DATADIR -# DESCRIPTION -# The data directory under the aarch64 sysroot. -#**** - -__mingw_init() { - local c h n p r s t v - - for t in 32:i686 64:x86_64 ARM32:armv7 ARM64:aarch64 - do - declare -g MINGW${t%:*}_HOST="${t#*:}-w64-mingw32" - declare -g MINGW${t%:*}_TARGET="${t#*:}-w64-mingw32" - - h=MINGW${t%:*}_HOST - for c in CC=gcc CXX=g++ F77=gfortran FC=gfortran OBJC=gcc OBJCXX=g++ \ - AR=ar DLLTOOL=dlltool NM=nm OBJDUMP=objdump RANLIB=ranlib \ - RC=windres STRIP=strip PKG_CONFIG=pkg-config QT5_QMAKE=qmake-qt5 - do - declare -g MINGW${t%:*}_${c%=*}="${!h}-${c#*=}" - done - if inherited clang - then - declare -g MINGW${t%:*}_CC="${!h}-clang" - declare -g MINGW${t%:*}_CXX="${!h}-clang++" - fi - - declare -g MINGW${t%:*}_SYSROOT="/usr/${!h}/sys-root" - r=MINGW${t%:*}_SYSROOT - declare -g MINGW${t%:*}_PREFIX="${!r}/mingw" - p=MINGW${t%:*}_PREFIX - declare -g MINGW${t%:*}_BINDIR="${!p}/bin" - declare -g MINGW${t%:*}_INCLUDEDIR="${!p}/include" - declare -g MINGW${t%:*}_LIBDIR="${!p}/lib" - declare -g MINGW${t%:*}_DATADIR="${!p}/share" - - if ! [[ ${MINGW_ARCHS} =~ "${t#*:}" ]] - then - continue - fi - - v=MINGW${t%:*}_CC - s=MINGW${t%:*}_STRIP - if ! (check_prog ${!v} && check_prog ${!s}) - then - error "This package requires ${t#*:}-w64-mingw32 binutils and gcc" - fi - - if [[ "${NAME}" =~ "mingw-" ]] - then - _CYGPORT_INTERNAL_multi_doc_=1 - n=${NAME#mingw-} - PKG_NAMES+=" mingw64-${t#*:}-${n}" - declare -g mingw64_${t#*:}_${n//[-\.]/_}_CONTENTS="${!p#/} usr/share/doc/mingw64-${t#*:}-${n}/" - fi - done -} - -__mingw_init #****v* mingw.cygclass/MINGW_BUILDDIR_SUFFIX # DESCRIPTION @@ -448,108 +75,21 @@ __mingw_init # avoids having to manage separate build directories manually. #**** -__mingw_wrapper() { - local ovar var - local toolvars=(CC=gcc CXX=g++ F77=gfortran FC=gfortran OBJC=gcc OBJCXX=g++ \ - AR=ar DLLTOOL=dlltool NM=nm OBJDUMP=objdump RANLIB=ranlib \ - RC=windres STRIP=strip PKG_CONFIG=pkg-config QT5_QMAKE=qmake-qt5) - local miscvars=(CHOST CTARGET CC_SYSROOT) - local expvars=(CFLAGS CXXFLAGS) - - __check_triplet ${1} - - for var in ${miscvars[*]} ${toolvars[*]%=*} ${expvars[*]} - do - ovar="orig_${var}" - local ${ovar}="${!var}" - done - declare -g CHOST=${1} - shift - declare -g CTARGET=${CHOST} - declare -g CC_SYSROOT=/usr/${CHOST}/sys-root - # mingw-w64 actually supports these now, but with libssp it is fragile - declare -gx CFLAGS="${CFLAGS/-Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong}" - declare -gx CXXFLAGS="${CXXFLAGS/-Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong}" - - for var in ${toolvars[*]} - do - declare -g ${var%=*}=${CHOST}-${var#*=} - done - if inherited clang - then - declare -g CC="${CHOST}-clang" - declare -g CXX="${CHOST}-clang++" - fi - - if ! defined __MINGW_WRAPPER_NO_CWD - then - mkdir -p ${CHOST}/${MINGW_BUILDDIR_SUFFIX} - pushd ${CHOST}/${MINGW_BUILDDIR_SUFFIX} - fi - - inform "cross-compiling for ${CHOST}" - "${@}" || error "${1} for ${CHOST} failed" - - if ! defined __MINGW_WRAPPER_NO_CWD - then - popd - fi - - for var in ${miscvars[*]} ${toolvars[*]%=*} - do - ovar="orig_${var}" - declare -g ${var}="${!ovar}" - done - for var in ${expvars[*]} - do - ovar="orig_${var}" - declare -gx ${var}="${!ovar}" - done -} - +#****C* mingw.cygclass/mingw_lndirs +# DESCRIPTION +# Runs lndirs separately for each enabled architecture's build directory. +#**** mingw_lndirs() { local t for t in 32:i686 64:x86_64 arm32:armv7 arm64:aarch64 do if [[ ${MINGW_ARCHS} =~ "${t#*:}" ]] then - __mingw_wrapper ${t#*:}-w64-mingw32 lndirs ${S} + mingw${t%:*}_lndirs "${@}" fi done } -#****C* mingw.cygclass/mingw32_configure -# DESCRIPTION -# Runs cygconf using the i686 toolchain. Any arguments are passed along. -#**** -mingw32_configure() { - __mingw_wrapper ${MINGW32_HOST} cygconf ${MINGW32_CONFIGURE_ARGS} "${@}" -} - -#****C* mingw.cygclass/mingw64_configure -# DESCRIPTION -# Runs cygconf using the x86_64 toolchain. Any arguments are passed along. -#**** -mingw64_configure() { - __mingw_wrapper ${MINGW64_HOST} cygconf ${MINGW64_CONFIGURE_ARGS} "${@}" -} - -#****C* mingw.cygclass/mingwarm32_configure -# DESCRIPTION -# Runs cygconf using the armv7 toolchain. Any arguments are passed along. -#**** -mingwarm32_configure() { - __mingw_wrapper ${MINGWARM32_HOST} cygconf ${MINGWARM32_CONFIGURE_ARGS} "${@}" -} - -#****C* mingw.cygclass/mingwarm64_configure -# DESCRIPTION -# Runs cygconf using the aarch64 toolchain. Any arguments are passed along. -#**** -mingwarm64_configure() { - __mingw_wrapper ${MINGWARM64_HOST} cygconf ${MINGWARM64_CONFIGURE_ARGS} "${@}" -} - #****C* mingw.cygclass/mingw_configure # DESCRIPTION # Runs cygconf separately for each enabled architecture. Any arguments are passed along. @@ -581,38 +121,6 @@ mingw_configure() { done } -#****C* mingw.cygclass/mingw32_make -# DESCRIPTION -# Runs cygmake using the i686 toolchain. Any arguments are passed along. -#**** -mingw32_make() { - __mingw_wrapper ${MINGW32_HOST} cygmake "${@}" -} - -#****C* mingw.cygclass/mingw64_make -# DESCRIPTION -# Runs cygmake using the x86_64 toolchain. Any arguments are passed along. -#**** -mingw64_make() { - __mingw_wrapper ${MINGW64_HOST} cygmake "${@}" -} - -#****C* mingw.cygclass/mingwarm32_make -# DESCRIPTION -# Runs cygmake using the armv7 toolchain. Any arguments are passed along. -#**** -mingwarm32_make() { - __mingw_wrapper ${MINGWARM32_HOST} cygmake "${@}" -} - -#****C* mingw.cygclass/mingwarm64_make -# DESCRIPTION -# Runs cygmake using the aarch64 toolchain. Any arguments are passed along. -#**** -mingwarm64_make() { - __mingw_wrapper ${MINGWARM64_HOST} cygmake "${@}" -} - #****C* mingw.cygclass/mingw_make # DESCRIPTION # Runs cygmake separately for each enabled architecture. Any arguments are passed along. @@ -628,39 +136,6 @@ mingw_make() { done } - -#****C* mingw.cygclass/mingw32_cmake -# DESCRIPTION -# Runs cygcmake using the i686 toolchain. Any arguments are passed along. -#**** -mingw32_cmake() { - __mingw_wrapper ${MINGW32_HOST} cygcmake ${MINGW32_CMAKE_ARGS} "${@}" -} - -#****C* mingw.cygclass/mingw64_cmake -# DESCRIPTION -# Runs cygcmake using the i686 toolchain. Any arguments are passed along. -#**** -mingw64_cmake() { - __mingw_wrapper ${MINGW64_HOST} cygcmake ${MINGW64_CMAKE_ARGS} "${@}" -} - -#****C* mingw.cygclass/mingwarn32_cmake -# DESCRIPTION -# Runs cygcmake using the i686 toolchain. Any arguments are passed along. -#**** -mingwarm32_cmake() { - __mingw_wrapper ${MINGWARM32_HOST} cygcmake ${MINGWARM32_CMAKE_ARGS} "${@}" -} - -#****C* mingw.cygclass/mingwarm64_cmake -# DESCRIPTION -# Runs cygcmake using the i686 toolchain. Any arguments are passed along. -#**** -mingwarm64_cmake() { - __mingw_wrapper ${MINGWARM64_HOST} cygcmake ${MINGWARM64_CMAKE_ARGS} "${@}" -} - #****C* mingw.cygclass/mingw_cmake # DESCRIPTION # Runs cygcmake separately for each enabled architecture. Any arguments are passed along. @@ -692,43 +167,6 @@ mingw_cmake() { done } - -#****C* mingw.cygclass/mingw32_meson -# DESCRIPTION -# Runs cygmeson using the i686 toolchain. Any arguments are passed along. -#**** -mingw32_meson() { - __MINGW_WRAPPER_NO_CWD=1 \ - __mingw_wrapper ${MINGW32_HOST} cygmeson ${MINGW32_MESON_ARGS} "${@}" -} - -#****C* mingw.cygclass/mingw64_meson -# DESCRIPTION -# Runs cygmeson using the x86_64 toolchain. Any arguments are passed along. -#**** -mingw64_meson() { - __MINGW_WRAPPER_NO_CWD=1 \ - __mingw_wrapper ${MINGW64_HOST} cygmeson ${MINGW64_MESON_ARGS}"${@}" -} - -#****C* mingw.cygclass/mingwarm32_meson -# DESCRIPTION -# Runs cygmeson using the armv7 toolchain. Any arguments are passed along. -#**** -mingwarm32_meson() { - __MINGW_WRAPPER_NO_CWD=1 \ - __mingw_wrapper ${MINGWARM32_HOST} cygmeson ${MINGWARM32_MESON_ARGS} "${@}" -} - -#****C* mingw.cygclass/mingwarm64_meson -# DESCRIPTION -# Runs cygmeson using the aarch64 toolchain. Any arguments are passed along. -#**** -mingwarm64_meson() { - __MINGW_WRAPPER_NO_CWD=1 \ - __mingw_wrapper ${MINGWARM64_HOST} cygmeson ${MINGWARM64_MESON_ARGS} "${@}" -} - #****C* mingw.cygclass/mingw_meson # DESCRIPTION # Runs cygmeson separately for each enabled architecture. Any arguments are passed along. @@ -760,38 +198,6 @@ mingw_meson() { done } -#****C* mingw.cygclass/mingw32_ninja -# DESCRIPTION -# Runs cygninja using the i686 toolchain. Any arguments are passed along. -#**** -mingw32_ninja() { - __mingw_wrapper ${MINGW32_HOST} cygninja "${@}" -} - -#****C* mingw.cygclass/mingw64_ninja -# DESCRIPTION -# Runs cygninja using the x86_64 toolchain. Any arguments are passed along. -#**** -mingw64_ninja() { - __mingw_wrapper ${MINGW64_HOST} cygninja "${@}" -} - -#****C* mingw.cygclass/mingwarm32_ninja -# DESCRIPTION -# Runs cygninja using the armv7 toolchain. Any arguments are passed along. -#**** -mingwarm32_ninja() { - __mingw_wrapper ${MINGWARM32_HOST} cygninja "${@}" -} - -#****C* mingw.cygclass/mingwarm64_ninja -# DESCRIPTION -# Runs cygninja using the aarch64 toolchain. Any arguments are passed along. -#**** -mingwarm64_ninja() { - __mingw_wrapper ${MINGWARM64_HOST} cygninja "${@}" -} - #****C* mingw.cygclass/mingw_ninja # DESCRIPTION # Runs cygninja separately for each enabled architecture. Any arguments are passed along. @@ -807,38 +213,6 @@ mingw_ninja() { done } -#****C* mingw.cygclass/mingw32_qt5_qmake -# DESCRIPTION -# Runs cygqmake5 using the i686 toolchain. Any arguments are passed along. -#**** -mingw32_qt5_qmake() { - __mingw_wrapper ${MINGW32_HOST} cygqmake5 "${@}" -} - -#****C* mingw.cygclass/mingw64_qt5_qmake -# DESCRIPTION -# Runs cygqmake5 using the x86_64 toolchain. Any arguments are passed along. -#**** -mingw64_qt5_qmake() { - __mingw_wrapper ${MINGW64_HOST} cygqmake5 "${@}" -} - -#****C* mingw.cygclass/mingwarm32_qt5_qmake -# DESCRIPTION -# Runs cygqmake5 using the armv7 toolchain. Any arguments are passed along. -#**** -mingwarm32_qt5_qmake() { - __mingw_wrapper ${MINGWARM32_HOST} cygqmake5 "${@}" -} - -#****C* mingw.cygclass/mingwarm64_qt5_qmake -# DESCRIPTION -# Runs cygqmake5 using the aarch64 toolchain. Any arguments are passed along. -#**** -mingwarm64_qt5_qmake() { - __mingw_wrapper ${MINGWARM64_HOST} cygqmake5 "${@}" -} - #****C* mingw.cygclass/mingw_qt5_qmake # DESCRIPTION # Runs cygqmake5 separately for each enabled architecture. Any arguments are passed along. @@ -854,38 +228,6 @@ mingw_qt5_qmake() { done } -#****I* mingw.cygclass/mingw32_make_install -# DESCRIPTION -# Runs cyginstall using the i686 toolchain. Any arguments are passed along. -#**** -mingw32_make_install() { - __mingw_wrapper ${MINGW32_HOST} cyginstall "${@}" -} - -#****I* mingw.cygclass/mingw64_make_install -# DESCRIPTION -# Runs cyginstall using the x86_64 toolchain. Any arguments are passed along. -#**** -mingw64_make_install() { - __mingw_wrapper ${MINGW64_HOST} cyginstall "${@}" -} - -#****I* mingw.cygclass/mingwarm32_make_install -# DESCRIPTION -# Runs cyginstall using the armv7 toolchain. Any arguments are passed along. -#**** -mingwarm32_make_install() { - __mingw_wrapper ${MINGWARM32_HOST} cyginstall "${@}" -} - -#****I* mingw.cygclass/mingwarm64_make_install -# DESCRIPTION -# Runs cyginstall using the aarch64 toolchain. Any arguments are passed along. -#**** -mingwarm64_make_install() { - __mingw_wrapper ${MINGWARM64_HOST} cyginstall "${@}" -} - #****I* mingw.cygclass/mingw_make_install # DESCRIPTION # Runs cyginstall separately for each enabled architecture. Any arguments are passed along. @@ -901,42 +243,6 @@ mingw_make_install() { done } -#****I* mingw.cygclass/mingw32_ninja_install -# DESCRIPTION -# Runs ninja_install using the i686 toolchain. Any arguments are passed along. -#**** -mingw32_ninja_install() { - DESTDIR=${D} \ - __mingw_wrapper ${MINGW32_HOST} cygninja install "${@}" -} - -#****I* mingw.cygclass/mingw64_ninja_install -# DESCRIPTION -# Runs ninja_install using the x86_64 toolchain. Any arguments are passed along. -#**** -mingw64_ninja_install() { - DESTDIR=${D} \ - __mingw_wrapper ${MINGW64_HOST} cygninja install "${@}" -} - -#****I* mingw.cygclass/mingwarm32_ninja_install -# DESCRIPTION -# Runs ninja_install using the armv7 toolchain. Any arguments are passed along. -#**** -mingwarm32_ninja_install() { - DESTDIR=${D} \ - __mingw_wrapper ${MINGWARM32_HOST} cygninja install "${@}" -} - -#****I* mingw.cygclass/mingwarm64_ninja_install -# DESCRIPTION -# Runs ninja_install using the aarch64 toolchain. Any arguments are passed along. -#**** -mingwarm64_ninja_install() { - DESTDIR=${D} \ - __mingw_wrapper ${MINGWARM64_HOST} cygninja install "${@}" -} - #****I* mingw.cygclass/mingw_ninja_install # DESCRIPTION # Runs ninja_install separately for each enabled architecture. Any arguments are passed along. @@ -952,42 +258,6 @@ mingw_ninja_install() { done } -#****I* mingw.cygclass/mingw32_qt5_qmake_install -# DESCRIPTION -# Runs qt5_qmake_install using the i686 toolchain. Any arguments are passed along. -#**** -mingw32_qt5_qmake_install() { - DESTDIR=${D} \ - __mingw_wrapper ${MINGW32_HOST} qt5_qmake_install "${@}" -} - -#****I* mingw.cygclass/mingw64_qt5_qmake_install -# DESCRIPTION -# Runs qt5_qmake_install using the x86_64 toolchain. Any arguments are passed along. -#**** -mingw64_qt5_qmake_install() { - DESTDIR=${D} \ - __mingw_wrapper ${MINGW64_HOST} qt5_qmake_install "${@}" -} - -#****I* mingw.cygclass/mingwarm32_qt5_qmake_install -# DESCRIPTION -# Runs qt5_qmake_install using the armv7 toolchain. Any arguments are passed along. -#**** -mingwarm32_qt5_qmake_install() { - DESTDIR=${D} \ - __mingw_wrapper ${MINGWARM32_HOST} qt5_qmake_install "${@}" -} - -#****I* mingw.cygclass/mingwarm64_qt5_qmake_install -# DESCRIPTION -# Runs qt5_qmake_install using the aarch64 toolchain. Any arguments are passed along. -#**** -mingwarm64_qt5_qmake_install() { - DESTDIR=${D} \ - __mingw_wrapper ${MINGWARM64_HOST} qt5_qmake_install "${@}" -} - #****I* mingw.cygclass/mingw_qt5_qmake_install # DESCRIPTION # Runs qt5_qmake_install separately for each enabled architecture. Any arguments are passed along. @@ -1053,14 +323,7 @@ src_install() { fi } -readonly -f __mingw_init __mingw_wrapper mingw_lndirs \ - mingw32_configure mingw64_configure mingwarm32_configure mingwarm64_configure mingw_configure \ - mingw32_make mingw64_make mingwarm32_make mingwarm64_make mingw_make \ - mingw32_cmake mingw64_cmake mingwarm32_cmake mingwarm64_cmake mingw_cmake \ - mingw32_meson mingw64_meson mingwarm32_meson mingwarm64_meson mingw_meson \ - mingw32_ninja mingw64_ninja mingwarm32_ninja mingwarm64_ninja mingw_ninja \ - mingw32_qt5_qmake mingw64_qt5_qmake mingwarm32_qt5_qmake mingwarm64_qt5_qmake mingw_qt5_qmake \ - mingw32_make_install mingw64_make_install mingwarm32_make_install mingwarm64_make_install mingw_make_install \ - mingw32_ninja_install mingw64_ninja_install mingwarm32_ninja_install mingwarm64_ninja_install mingw_ninja_install \ - mingw32_qt5_qmake_install mingw64_qt5_qmake_install mingwarm32_qt5_qmake_install mingwarm64_qt5_qmake_install mingw_qt5_qmake_install +readonly -f mingw_lndirs mingw_configure mingw_make mingw_cmake \ + mingw_meson mingw_ninja mingw_qt5_qmake mingw_make_install \ + mingw_ninja_install mingw_qt5_qmake_install \ No newline at end of file diff --git a/cygclass/mingw32.cygclass b/cygclass/mingw32.cygclass new file mode 100644 index 0000000..7af2183 --- /dev/null +++ b/cygclass/mingw32.cygclass @@ -0,0 +1,205 @@ +################################################################################ +# +# mingw32.cygclass - for building cross-compiled MinGW i686 packages +# +# Part of cygport - Cygwin packaging application +# Copyright (C) 2006-2020 Cygport authors +# Provided by the Cygwin project +# +# cygport is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cygport is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cygport. If not, see . +# +################################################################################ + +#****h* Cygclasses/mingw32.cygclass +# DESCRIPTION +# This cygclass provides the mingw32_* functions and MINGW32_ definitions +# for cross-compiling packages for Windows/x86 using the MinGW-w64 toolchain. +# Generally, this cygclass is not inherit'ed directly, but its functions +# and definitions are used by inherit'ing mingw.cygclass. +# INHERITED BY +# mingw.cygclass +# REQUIRES +# mingw64-i686-gcc-core +#**** +inherit mingw-internal + +#****d* mingw32.cygclass/MINGW32_HOST +# DESCRIPTION +# The host triplet for the i686 toolchain. +#**** +#****d* mingw32.cygclass/MINGW32_TARGET +# DESCRIPTION +# The target triplet for the i686 toolchain. +#**** +#****d* mingw32.cygclass/MINGW32_CC +# DESCRIPTION +# The C compiler for the i686 toolchain. +#**** +#****d* mingw32.cygclass/MINGW32_CXX +# DESCRIPTION +# The C++ compiler for the i686 toolchain. +#**** +#****d* mingw32.cygclass/MINGW32_F77 +# DESCRIPTION +# The Fortran 77 compiler for the i686 toolchain. +#**** +#****d* mingw32.cygclass/MINGW32_FC +# DESCRIPTION +# The Fortran 95 compiler for the i686 toolchain. +#**** +#****d* mingw32.cygclass/MINGW32_AR +# DESCRIPTION +# The static library archiver for the i686 toolchain. +#**** +#****d* mingw32.cygclass/MINGW32_DLLTOOL +# DESCRIPTION +# The DLL import creation tool for the i686 toolchain. +#**** +#****d* mingw32.cygclass/MINGW32_NM +# DESCRIPTION +# The symbol listing tool for the i686 toolchain. +#**** +#****d* mingw32.cygclass/MINGW32_RANLIB +# DESCRIPTION +# The static library indexer for the i686 toolchain. +#**** +#****d* mingw32.cygclass/MINGW32_RC +# DESCRIPTION +# The Windows resource compiler for the i686 toolchain. +#**** +#****d* mingw32.cygclass/MINGW32_STRIP +# DESCRIPTION +# The symbol remover tool for the i686 toolchain. +#**** +#****d* mingw32.cygclass/MINGW32_PKG_CONFIG +# DESCRIPTION +# The pkg-config tool for the i686 toolchain. +#**** +#****d* mingw32.cygclass/MINGW32_QT5_QMAKE +# DESCRIPTION +# The Qt5 qmake tool for the i686 toolchain. +#**** +#****d* mingw32.cygclass/MINGW32_SYSROOT +# DESCRIPTION +# The virtual root for files used by the i686 toolchain. +#**** +#****d* mingw32.cygclass/MINGW32_PREFIX +# DESCRIPTION +# The prefix directory under the i686 sysroot. +#**** +#****d* mingw32.cygclass/MINGW32_BINDIR +# DESCRIPTION +# The bin directory under the i686 sysroot +#**** +#****d* mingw32.cygclass/MINGW32_INCLUDEDIR +# DESCRIPTION +# The include directory under the i686 sysroot. +#**** +#****d* mingw32.cygclass/MINGW32_LIBDIR +# DESCRIPTION +# The lib directory under the i686 sysroot. +#**** +#****d* mingw32.cygclass/MINGW32_DATADIR +# DESCRIPTION +# The data directory under the i686 sysroot. +#**** + +__mingw_init i686 32 + +#****C* mingw32.cygclass/mingw32_lndirs +# DESCRIPTION +# Runs lndirs into the build directory used by other mingw32_* functions. +#**** +mingw32_lndirs() { + __mingw_wrapper ${MINGW32_HOST} lndirs ${S} +} + +#****C* mingw32.cygclass/mingw32_configure +# DESCRIPTION +# Runs cygconf using the i686 toolchain. Any arguments are passed along. +#**** +mingw32_configure() { + __mingw_wrapper ${MINGW32_HOST} cygconf ${MINGW32_CONFIGURE_ARGS} "${@}" +} + +#****C* mingw32.cygclass/mingw32_make +# DESCRIPTION +# Runs cygmake using the i686 toolchain. Any arguments are passed along. +#**** +mingw32_make() { + __mingw_wrapper ${MINGW32_HOST} cygmake "${@}" +} + +#****C* mingw32.cygclass/mingw32_cmake +# DESCRIPTION +# Runs cygcmake using the i686 toolchain. Any arguments are passed along. +#**** +mingw32_cmake() { + __mingw_wrapper ${MINGW32_HOST} cygcmake ${MINGW32_CMAKE_ARGS} "${@}" +} + +#****C* mingw32.cygclass/mingw32_meson +# DESCRIPTION +# Runs cygmeson using the i686 toolchain. Any arguments are passed along. +#**** +mingw32_meson() { + __MINGW_WRAPPER_NO_CWD=1 \ + __mingw_wrapper ${MINGW32_HOST} cygmeson ${MINGW32_MESON_ARGS} "${@}" +} + +#****C* mingw32.cygclass/mingw32_ninja +# DESCRIPTION +# Runs cygninja using the i686 toolchain. Any arguments are passed along. +#**** +mingw32_ninja() { + __mingw_wrapper ${MINGW32_HOST} cygninja "${@}" +} + +#****C* mingw32.cygclass/mingw32_qt5_qmake +# DESCRIPTION +# Runs cygqmake5 using the i686 toolchain. Any arguments are passed along. +#**** +mingw32_qt5_qmake() { + __mingw_wrapper ${MINGW32_HOST} cygqmake5 "${@}" +} + +#****I* mingw32.cygclass/mingw32_make_install +# DESCRIPTION +# Runs cyginstall using the i686 toolchain. Any arguments are passed along. +#**** +mingw32_make_install() { + __mingw_wrapper ${MINGW32_HOST} cyginstall "${@}" +} + +#****I* mingw32.cygclass/mingw32_ninja_install +# DESCRIPTION +# Runs ninja_install using the i686 toolchain. Any arguments are passed along. +#**** +mingw32_ninja_install() { + DESTDIR=${D} \ + __mingw_wrapper ${MINGW32_HOST} cygninja install "${@}" +} + +#****I* mingw32.cygclass/mingw32_qt5_qmake_install +# DESCRIPTION +# Runs qt5_qmake_install using the i686 toolchain. Any arguments are passed along. +#**** +mingw32_qt5_qmake_install() { + DESTDIR=${D} \ + __mingw_wrapper ${MINGW32_HOST} qt5_qmake_install "${@}" +} + +readonly -f mingw32_lndirs mingw32_configure mingw32_make mingw32_cmake \ + mingw32_meson mingw32_ninja mingw32_qt5_qmake mingw32_make_install \ + mingw32_ninja_install mingw32_qt5_qmake_install diff --git a/cygclass/mingw64.cygclass b/cygclass/mingw64.cygclass new file mode 100644 index 0000000..9f08af1 --- /dev/null +++ b/cygclass/mingw64.cygclass @@ -0,0 +1,205 @@ +################################################################################ +# +# mingw64.cygclass - for building cross-compiled MinGW x86_64 packages +# +# Part of cygport - Cygwin packaging application +# Copyright (C) 2006-2020 Cygport authors +# Provided by the Cygwin project +# +# cygport is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cygport is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cygport. If not, see . +# +################################################################################ + +#****h* Cygclasses/mingw64.cygclass +# DESCRIPTION +# This cygclass provides the mingw64_* functions and MINGW64_ definitions +# for cross-compiling packages for Windows/x86 using the MinGW-w64 toolchain. +# Generally, this cygclass is not inherit'ed directly, but its functions +# and definitions are used by inherit'ing mingw.cygclass. +# INHERITED BY +# mingw.cygclass +# REQUIRES +# mingw64-x86_64-gcc-core +#**** +inherit mingw-internal + +#****d* mingw64.cygclass/MINGW64_HOST +# DESCRIPTION +# The host triplet for the x86_64 toolchain. +#**** +#****d* mingw64.cygclass/MINGW64_TARGET +# DESCRIPTION +# The target triplet for the x86_64 toolchain. +#**** +#****d* mingw64.cygclass/MINGW64_CC +# DESCRIPTION +# The C compiler for the x86_64 toolchain. +#**** +#****d* mingw64.cygclass/MINGW64_CXX +# DESCRIPTION +# The C++ compiler for the x86_64 toolchain. +#**** +#****d* mingw64.cygclass/MINGW64_F77 +# DESCRIPTION +# The Fortran 77 compiler for the x86_64 toolchain. +#**** +#****d* mingw64.cygclass/MINGW64_FC +# DESCRIPTION +# The Fortran 95 compiler for the x86_64 toolchain. +#**** +#****d* mingw64.cygclass/MINGW64_AR +# DESCRIPTION +# The static library archiver for the x86_64 toolchain. +#**** +#****d* mingw64.cygclass/MINGW64_DLLTOOL +# DESCRIPTION +# The DLL import creation tool for the x86_64 toolchain. +#**** +#****d* mingw64.cygclass/MINGW64_NM +# DESCRIPTION +# The symbol listing tool for the x86_64 toolchain. +#**** +#****d* mingw64.cygclass/MINGW64_RANLIB +# DESCRIPTION +# The static library indexer for the x86_64 toolchain. +#**** +#****d* mingw64.cygclass/MINGW64_RC +# DESCRIPTION +# The Windows resource compiler for the x86_64 toolchain. +#**** +#****d* mingw64.cygclass/MINGW64_STRIP +# DESCRIPTION +# The symbol remover tool for the x86_64 toolchain. +#**** +#****d* mingw64.cygclass/MINGW64_PKG_CONFIG +# DESCRIPTION +# The pkg-config tool for the x86_64 toolchain. +#**** +#****d* mingw64.cygclass/MINGW64_QT5_QMAKE +# DESCRIPTION +# The Qt5 qmake tool for the x86_64 toolchain. +#**** +#****d* mingw64.cygclass/MINGW64_SYSROOT +# DESCRIPTION +# The virtual root for files used by the x86_64 toolchain. +#**** +#****d* mingw64.cygclass/MINGW64_PREFIX +# DESCRIPTION +# The prefix directory under the x86_64 sysroot. +#**** +#****d* mingw64.cygclass/MINGW64_BINDIR +# DESCRIPTION +# The bin directory under the x86_64 sysroot +#**** +#****d* mingw64.cygclass/MINGW64_INCLUDEDIR +# DESCRIPTION +# The include directory under the x86_64 sysroot. +#**** +#****d* mingw64.cygclass/MINGW64_LIBDIR +# DESCRIPTION +# The lib directory under the x86_64 sysroot. +#**** +#****d* mingw64.cygclass/MINGW64_DATADIR +# DESCRIPTION +# The data directory under the x86_64 sysroot. +#**** + +__mingw_init x86_64 64 + +#****C* mingw64.cygclass/mingw64_lndirs +# DESCRIPTION +# Runs lndirs into the build directory used by other mingw64_* functions. +#**** +mingw64_lndirs() { + __mingw_wrapper ${MINGW64_HOST} lndirs ${S} +} + +#****C* mingw64.cygclass/mingw64_configure +# DESCRIPTION +# Runs cygconf using the x86_64 toolchain. Any arguments are passed along. +#**** +mingw64_configure() { + __mingw_wrapper ${MINGW64_HOST} cygconf ${MINGW64_CONFIGURE_ARGS} "${@}" +} + +#****C* mingw64.cygclass/mingw64_make +# DESCRIPTION +# Runs cygmake using the x86_64 toolchain. Any arguments are passed along. +#**** +mingw64_make() { + __mingw_wrapper ${MINGW64_HOST} cygmake "${@}" +} + +#****C* mingw64.cygclass/mingw64_cmake +# DESCRIPTION +# Runs cygcmake using the x86_64 toolchain. Any arguments are passed along. +#**** +mingw64_cmake() { + __mingw_wrapper ${MINGW64_HOST} cygcmake ${MINGW64_CMAKE_ARGS} "${@}" +} + +#****C* mingw64.cygclass/mingw64_meson +# DESCRIPTION +# Runs cygmeson using the x86_64 toolchain. Any arguments are passed along. +#**** +mingw64_meson() { + __MINGW_WRAPPER_NO_CWD=1 \ + __mingw_wrapper ${MINGW64_HOST} cygmeson ${MINGW64_MESON_ARGS} "${@}" +} + +#****C* mingw64.cygclass/mingw64_ninja +# DESCRIPTION +# Runs cygninja using the x86_64 toolchain. Any arguments are passed along. +#**** +mingw64_ninja() { + __mingw_wrapper ${MINGW64_HOST} cygninja "${@}" +} + +#****C* mingw64.cygclass/mingw64_qt5_qmake +# DESCRIPTION +# Runs cygqmake5 using the x86_64 toolchain. Any arguments are passed along. +#**** +mingw64_qt5_qmake() { + __mingw_wrapper ${MINGW64_HOST} cygqmake5 "${@}" +} + +#****I* mingw64.cygclass/mingw64_make_install +# DESCRIPTION +# Runs cyginstall using the x86_64 toolchain. Any arguments are passed along. +#**** +mingw64_make_install() { + __mingw_wrapper ${MINGW64_HOST} cyginstall "${@}" +} + +#****I* mingw64.cygclass/mingw64_ninja_install +# DESCRIPTION +# Runs ninja_install using the x86_64 toolchain. Any arguments are passed along. +#**** +mingw64_ninja_install() { + DESTDIR=${D} \ + __mingw_wrapper ${MINGW64_HOST} cygninja install "${@}" +} + +#****I* mingw64.cygclass/mingw64_qt5_qmake_install +# DESCRIPTION +# Runs qt5_qmake_install using the x86_64 toolchain. Any arguments are passed along. +#**** +mingw64_qt5_qmake_install() { + DESTDIR=${D} \ + __mingw_wrapper ${MINGW64_HOST} qt5_qmake_install "${@}" +} + +readonly -f mingw64_lndirs mingw64_configure mingw64_make mingw64_cmake \ + mingw64_meson mingw64_ninja mingw64_qt5_qmake mingw64_make_install \ + mingw64_ninja_install mingw64_qt5_qmake_install diff --git a/cygclass/mingwarm32.cygclass b/cygclass/mingwarm32.cygclass new file mode 100644 index 0000000..5cc9877 --- /dev/null +++ b/cygclass/mingwarm32.cygclass @@ -0,0 +1,205 @@ +################################################################################ +# +# mingwarm32.cygclass - for building cross-compiled MinGW armv7 packages +# +# Part of cygport - Cygwin packaging application +# Copyright (C) 2006-2020 Cygport authors +# Provided by the Cygwin project +# +# cygport is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cygport is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cygport. If not, see . +# +################################################################################ + +#****h* Cygclasses/mingwarm32.cygclass +# DESCRIPTION +# This cygclass provides the mingwarm32_* functions and MINGWARM32_ definitions +# for cross-compiling packages for Windows/x86 using the MinGW-w64 toolchain. +# Generally, this cygclass is not inherit'ed directly, but its functions +# and definitions are used by inherit'ing mingw.cygclass. +# INHERITED BY +# mingw.cygclass +# REQUIRES +# mingw64-armv7-gcc-core +#**** +inherit mingw-internal + +#****d* mingwarm32.cygclass/MINGWARM32_HOST +# DESCRIPTION +# The host triplet for the armv7 toolchain. +#**** +#****d* mingwarm32.cygclass/MINGWARM32_TARGET +# DESCRIPTION +# The target triplet for the armv7 toolchain. +#**** +#****d* mingwarm32.cygclass/MINGWARM32_CC +# DESCRIPTION +# The C compiler for the armv7 toolchain. +#**** +#****d* mingwarm32.cygclass/MINGWARM32_CXX +# DESCRIPTION +# The C++ compiler for the armv7 toolchain. +#**** +#****d* mingwarm32.cygclass/MINGWARM32_F77 +# DESCRIPTION +# The Fortran 77 compiler for the armv7 toolchain. +#**** +#****d* mingwarm32.cygclass/MINGWARM32_FC +# DESCRIPTION +# The Fortran 95 compiler for the armv7 toolchain. +#**** +#****d* mingwarm32.cygclass/MINGWARM32_AR +# DESCRIPTION +# The static library archiver for the armv7 toolchain. +#**** +#****d* mingwarm32.cygclass/MINGWARM32_DLLTOOL +# DESCRIPTION +# The DLL import creation tool for the armv7 toolchain. +#**** +#****d* mingwarm32.cygclass/MINGWARM32_NM +# DESCRIPTION +# The symbol listing tool for the armv7 toolchain. +#**** +#****d* mingwarm32.cygclass/MINGWARM32_RANLIB +# DESCRIPTION +# The static library indexer for the armv7 toolchain. +#**** +#****d* mingwarm32.cygclass/MINGWARM32_RC +# DESCRIPTION +# The Windows resource compiler for the armv7 toolchain. +#**** +#****d* mingwarm32.cygclass/MINGWARM32_STRIP +# DESCRIPTION +# The symbol remover tool for the armv7 toolchain. +#**** +#****d* mingwarm32.cygclass/MINGWARM32_PKG_CONFIG +# DESCRIPTION +# The pkg-config tool for the armv7 toolchain. +#**** +#****d* mingwarm32.cygclass/MINGWARM32_QT5_QMAKE +# DESCRIPTION +# The Qt5 qmake tool for the armv7 toolchain. +#**** +#****d* mingwarm32.cygclass/MINGWARM32_SYSROOT +# DESCRIPTION +# The virtual root for files used by the armv7 toolchain. +#**** +#****d* mingwarm32.cygclass/MINGWARM32_PREFIX +# DESCRIPTION +# The prefix directory under the armv7 sysroot. +#**** +#****d* mingwarm32.cygclass/MINGWARM32_BINDIR +# DESCRIPTION +# The bin directory under the armv7 sysroot +#**** +#****d* mingwarm32.cygclass/MINGWARM32_INCLUDEDIR +# DESCRIPTION +# The include directory under the armv7 sysroot. +#**** +#****d* mingwarm32.cygclass/MINGWARM32_LIBDIR +# DESCRIPTION +# The lib directory under the armv7 sysroot. +#**** +#****d* mingwarm32.cygclass/MINGWARM32_DATADIR +# DESCRIPTION +# The data directory under the armv7 sysroot. +#**** + +__mingw_init armv7 ARM32 + +#****C* mingwarm32.cygclass/mingwarm32_lndirs +# DESCRIPTION +# Runs lndirs into the build directory used by other mingwarm32_* functions. +#**** +mingwarm32_lndirs() { + __mingw_wrapper ${MINGWARM32_HOST} lndirs ${S} +} + +#****C* mingwarm32.cygclass/mingwarm32_configure +# DESCRIPTION +# Runs cygconf using the armv7 toolchain. Any arguments are passed along. +#**** +mingwarm32_configure() { + __mingw_wrapper ${MINGWARM32_HOST} cygconf ${MINGWARM32_CONFIGURE_ARGS} "${@}" +} + +#****C* mingwarm32.cygclass/mingwarm32_make +# DESCRIPTION +# Runs cygmake using the armv7 toolchain. Any arguments are passed along. +#**** +mingwarm32_make() { + __mingw_wrapper ${MINGWARM32_HOST} cygmake "${@}" +} + +#****C* mingwarm32.cygclass/mingwarm32_cmake +# DESCRIPTION +# Runs cygcmake using the armv7 toolchain. Any arguments are passed along. +#**** +mingwarm32_cmake() { + __mingw_wrapper ${MINGWARM32_HOST} cygcmake ${MINGWARM32_CMAKE_ARGS} "${@}" +} + +#****C* mingwarm32.cygclass/mingwarm32_meson +# DESCRIPTION +# Runs cygmeson using the armv7 toolchain. Any arguments are passed along. +#**** +mingwarm32_meson() { + __MINGW_WRAPPER_NO_CWD=1 \ + __mingw_wrapper ${MINGWARM32_HOST} cygmeson ${MINGWARM32_MESON_ARGS} "${@}" +} + +#****C* mingwarm32.cygclass/mingwarm32_ninja +# DESCRIPTION +# Runs cygninja using the armv7 toolchain. Any arguments are passed along. +#**** +mingwarm32_ninja() { + __mingw_wrapper ${MINGWARM32_HOST} cygninja "${@}" +} + +#****C* mingwarm32.cygclass/mingwarm32_qt5_qmake +# DESCRIPTION +# Runs cygqmake5 using the armv7 toolchain. Any arguments are passed along. +#**** +mingwarm32_qt5_qmake() { + __mingw_wrapper ${MINGWARM32_HOST} cygqmake5 "${@}" +} + +#****I* mingwarm32.cygclass/mingwarm32_make_install +# DESCRIPTION +# Runs cyginstall using the armv7 toolchain. Any arguments are passed along. +#**** +mingwarm32_make_install() { + __mingw_wrapper ${MINGWARM32_HOST} cyginstall "${@}" +} + +#****I* mingwarm32.cygclass/mingwarm32_ninja_install +# DESCRIPTION +# Runs ninja_install using the armv7 toolchain. Any arguments are passed along. +#**** +mingwarm32_ninja_install() { + DESTDIR=${D} \ + __mingw_wrapper ${MINGWARM32_HOST} cygninja install "${@}" +} + +#****I* mingwarm32.cygclass/mingwarm32_qt5_qmake_install +# DESCRIPTION +# Runs qt5_qmake_install using the armv7 toolchain. Any arguments are passed along. +#**** +mingwarm32_qt5_qmake_install() { + DESTDIR=${D} \ + __mingw_wrapper ${MINGWARM32_HOST} qt5_qmake_install "${@}" +} + +readonly -f mingwarm32_lndirs mingwarm32_configure mingwarm32_make mingwarm32_cmake \ + mingwarm32_meson mingwarm32_ninja mingwarm32_qt5_qmake mingwarm32_make_install \ + mingwarm32_ninja_install mingwarm32_qt5_qmake_install diff --git a/cygclass/mingwarm64.cygclass b/cygclass/mingwarm64.cygclass new file mode 100644 index 0000000..5e980d3 --- /dev/null +++ b/cygclass/mingwarm64.cygclass @@ -0,0 +1,205 @@ +################################################################################ +# +# mingwarm64.cygclass - for building cross-compiled MinGW aarch64 packages +# +# Part of cygport - Cygwin packaging application +# Copyright (C) 2006-2020 Cygport authors +# Provided by the Cygwin project +# +# cygport is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cygport is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cygport. If not, see . +# +################################################################################ + +#****h* Cygclasses/mingwarm64.cygclass +# DESCRIPTION +# This cygclass provides the mingwarm64_* functions and MINGWARM64_ definitions +# for cross-compiling packages for Windows/x86 using the MinGW-w64 toolchain. +# Generally, this cygclass is not inherit'ed directly, but its functions +# and definitions are used by inherit'ing mingw.cygclass. +# INHERITED BY +# mingw.cygclass +# REQUIRES +# mingw64-aarch64-gcc-core +#**** +inherit mingw-internal + +#****d* mingwarm64.cygclass/MINGWARM64_HOST +# DESCRIPTION +# The host triplet for the aarch64 toolchain. +#**** +#****d* mingwarm64.cygclass/MINGWARM64_TARGET +# DESCRIPTION +# The target triplet for the aarch64 toolchain. +#**** +#****d* mingwarm64.cygclass/MINGWARM64_CC +# DESCRIPTION +# The C compiler for the aarch64 toolchain. +#**** +#****d* mingwarm64.cygclass/MINGWARM64_CXX +# DESCRIPTION +# The C++ compiler for the aarch64 toolchain. +#**** +#****d* mingwarm64.cygclass/MINGWARM64_F77 +# DESCRIPTION +# The Fortran 77 compiler for the aarch64 toolchain. +#**** +#****d* mingwarm64.cygclass/MINGWARM64_FC +# DESCRIPTION +# The Fortran 95 compiler for the aarch64 toolchain. +#**** +#****d* mingwarm64.cygclass/MINGWARM64_AR +# DESCRIPTION +# The static library archiver for the aarch64 toolchain. +#**** +#****d* mingwarm64.cygclass/MINGWARM64_DLLTOOL +# DESCRIPTION +# The DLL import creation tool for the aarch64 toolchain. +#**** +#****d* mingwarm64.cygclass/MINGWARM64_NM +# DESCRIPTION +# The symbol listing tool for the aarch64 toolchain. +#**** +#****d* mingwarm64.cygclass/MINGWARM64_RANLIB +# DESCRIPTION +# The static library indexer for the aarch64 toolchain. +#**** +#****d* mingwarm64.cygclass/MINGWARM64_RC +# DESCRIPTION +# The Windows resource compiler for the aarch64 toolchain. +#**** +#****d* mingwarm64.cygclass/MINGWARM64_STRIP +# DESCRIPTION +# The symbol remover tool for the aarch64 toolchain. +#**** +#****d* mingwarm64.cygclass/MINGWARM64_PKG_CONFIG +# DESCRIPTION +# The pkg-config tool for the aarch64 toolchain. +#**** +#****d* mingwarm64.cygclass/MINGWARM64_QT5_QMAKE +# DESCRIPTION +# The Qt5 qmake tool for the aarch64 toolchain. +#**** +#****d* mingwarm64.cygclass/MINGWARM64_SYSROOT +# DESCRIPTION +# The virtual root for files used by the aarch64 toolchain. +#**** +#****d* mingwarm64.cygclass/MINGWARM64_PREFIX +# DESCRIPTION +# The prefix directory under the aarch64 sysroot. +#**** +#****d* mingwarm64.cygclass/MINGWARM64_BINDIR +# DESCRIPTION +# The bin directory under the aarch64 sysroot +#**** +#****d* mingwarm64.cygclass/MINGWARM64_INCLUDEDIR +# DESCRIPTION +# The include directory under the aarch64 sysroot. +#**** +#****d* mingwarm64.cygclass/MINGWARM64_LIBDIR +# DESCRIPTION +# The lib directory under the aarch64 sysroot. +#**** +#****d* mingwarm64.cygclass/MINGWARM64_DATADIR +# DESCRIPTION +# The data directory under the aarch64 sysroot. +#**** + +__mingw_init aarch64 ARM64 + +#****C* mingwarm64.cygclass/mingwarm64_lndirs +# DESCRIPTION +# Runs lndirs into the build directory used by other mingwarm64_* functions. +#**** +mingwarm64_lndirs() { + __mingw_wrapper ${MINGWARM64_HOST} lndirs ${S} +} + +#****C* mingwarm64.cygclass/mingwarm64_configure +# DESCRIPTION +# Runs cygconf using the aarch64 toolchain. Any arguments are passed along. +#**** +mingwarm64_configure() { + __mingw_wrapper ${MINGWARM64_HOST} cygconf ${MINGWARM64_CONFIGURE_ARGS} "${@}" +} + +#****C* mingwarm64.cygclass/mingwarm64_make +# DESCRIPTION +# Runs cygmake using the aarch64 toolchain. Any arguments are passed along. +#**** +mingwarm64_make() { + __mingw_wrapper ${MINGWARM64_HOST} cygmake "${@}" +} + +#****C* mingwarm64.cygclass/mingwarm64_cmake +# DESCRIPTION +# Runs cygcmake using the aarch64 toolchain. Any arguments are passed along. +#**** +mingwarm64_cmake() { + __mingw_wrapper ${MINGWARM64_HOST} cygcmake ${MINGWARM64_CMAKE_ARGS} "${@}" +} + +#****C* mingwarm64.cygclass/mingwarm64_meson +# DESCRIPTION +# Runs cygmeson using the aarch64 toolchain. Any arguments are passed along. +#**** +mingwarm64_meson() { + __MINGW_WRAPPER_NO_CWD=1 \ + __mingw_wrapper ${MINGWARM64_HOST} cygmeson ${MINGWARM64_MESON_ARGS} "${@}" +} + +#****C* mingwarm64.cygclass/mingwarm64_ninja +# DESCRIPTION +# Runs cygninja using the aarch64 toolchain. Any arguments are passed along. +#**** +mingwarm64_ninja() { + __mingw_wrapper ${MINGWARM64_HOST} cygninja "${@}" +} + +#****C* mingwarm64.cygclass/mingwarm64_qt5_qmake +# DESCRIPTION +# Runs cygqmake5 using the aarch64 toolchain. Any arguments are passed along. +#**** +mingwarm64_qt5_qmake() { + __mingw_wrapper ${MINGWARM64_HOST} cygqmake5 "${@}" +} + +#****I* mingwarm64.cygclass/mingwarm64_make_install +# DESCRIPTION +# Runs cyginstall using the aarch64 toolchain. Any arguments are passed along. +#**** +mingwarm64_make_install() { + __mingw_wrapper ${MINGWARM64_HOST} cyginstall "${@}" +} + +#****I* mingwarm64.cygclass/mingwarm64_ninja_install +# DESCRIPTION +# Runs ninja_install using the aarch64 toolchain. Any arguments are passed along. +#**** +mingwarm64_ninja_install() { + DESTDIR=${D} \ + __mingw_wrapper ${MINGWARM64_HOST} cygninja install "${@}" +} + +#****I* mingwarm64.cygclass/mingwarm64_qt5_qmake_install +# DESCRIPTION +# Runs qt5_qmake_install using the aarch64 toolchain. Any arguments are passed along. +#**** +mingwarm64_qt5_qmake_install() { + DESTDIR=${D} \ + __mingw_wrapper ${MINGWARM64_HOST} qt5_qmake_install "${@}" +} + +readonly -f mingwarm64_lndirs mingwarm64_configure mingwarm64_make mingwarm64_cmake \ + mingwarm64_meson mingwarm64_ninja mingwarm64_qt5_qmake mingwarm64_make_install \ + mingwarm64_ninja_install mingwarm64_qt5_qmake_install diff --git a/testsuite/mingw/make/mingw-crypt.cygport b/testsuite/mingw/make/mingw-crypt.cygport index fb694bb..e0c6621 100644 --- a/testsuite/mingw/make/mingw-crypt.cygport +++ b/testsuite/mingw/make/mingw-crypt.cygport @@ -16,13 +16,8 @@ PATCH_URI="1.1-mingw.patch" src_compile() { cd ${B} - - mkdir -p ${B}/${MINGW32_TARGET} - lndirs ${S} ${B}/${MINGW32_TARGET} + mingw_lndirs mingw32_make CC=${MINGW32_CC} AR=${MINGW32_AR} - - mkdir -p ${B}/${MINGW64_TARGET} - lndirs ${S} ${B}/${MINGW64_TARGET} mingw64_make CC=${MINGW64_CC} AR=${MINGW64_AR} }