From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2195) id A4D0D386F457; Fri, 15 May 2020 04:15:55 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A4D0D386F457 To: cygwin-apps-cvs@sourceware.org Subject: [cygport - the Cygwin packaging tool] branch topic/mingw, updated. 0.34.0-32-g8544a0b X-Git-Refname: refs/heads/topic/mingw X-Git-Reftype: branch X-Git-Oldrev: c052276338066515134d7316974ab7ddd962ad50 X-Git-Newrev: 8544a0b9eb893e6dc34061f94f931ba19b8fb201 Message-Id: <20200515041555.A4D0D386F457@sourceware.org> Date: Fri, 15 May 2020 04:15:55 +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: Fri, 15 May 2020 04:15:55 -0000 https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=8544a0b9eb893e6dc34061f94f931ba19b8fb201 commit 8544a0b9eb893e6dc34061f94f931ba19b8fb201 Author: Yaakov Selkowitz Date: Fri May 15 00:15:19 2020 -0400 mingw: better handle variable overrides https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=6df7ece1c6b86b70e6d981ddf95e672f6ed9876c commit 6df7ece1c6b86b70e6d981ddf95e672f6ed9876c Author: Yaakov Selkowitz Date: Tue May 12 18:29:28 2020 -0400 cmake: define CMAKE_SYSTEM_PROCESSOR when cross-compiling Diff: --- cygclass/cmake.cygclass | 7 ++-- cygclass/mingw-internal.cygclass | 77 ++++++++++++++++++---------------------- 2 files changed, 39 insertions(+), 45 deletions(-) diff --git a/cygclass/cmake.cygclass b/cygclass/cmake.cygclass index fe06e9d..528ea63 100644 --- a/cygclass/cmake.cygclass +++ b/cygclass/cmake.cygclass @@ -40,7 +40,7 @@ inherit ninja -__cmake_system() { +__cmake_system_name() { local cmsys # FIXME: do binutils/gcc really support all these? @@ -141,7 +141,8 @@ cygcmake() { if cross_compiling then - crossargs="-DCMAKE_SYSTEM_NAME=$(__cmake_system) + crossargs="-DCMAKE_SYSTEM_NAME=$(__cmake_system_name) + -DCMAKE_SYSTEM_PROCESSOR=${CHOST%%-*} -D_CMAKE_TOOLCHAIN_PREFIX=${CHOST}- -DCMAKE_FIND_ROOT_PATH=${CC_SYSROOT} -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY @@ -228,4 +229,4 @@ src_install() { } #**** -readonly -f __cmake_system cygcmake +readonly -f __cmake_system_name cygcmake diff --git a/cygclass/mingw-internal.cygclass b/cygclass/mingw-internal.cygclass index 3ccd5c7..68a7ebf 100644 --- a/cygclass/mingw-internal.cygclass +++ b/cygclass/mingw-internal.cygclass @@ -60,67 +60,60 @@ __mingw_init() { } __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} + local mingw_cc mingw_cxx + local tgt=${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 + __check_triplet ${tgt} + if inherited clang then - declare -g CC="${CHOST}-clang" - declare -g CXX="${CHOST}-clang++" + mingw_cc=${tgt}-clang + mingw_cxx=${tgt}-clang++ + else + mingw_cc=${tgt}-gcc + mingw_cxx=${tgt}-g++ fi - if ! check_prog ${CC} || ! check_prog ${STRIP} + if ! check_prog ${mingw_cc} || ! check_prog ${tgt}-strip then - error "This package requires ${CHOST} binutils and gcc" + error "This package requires ${tgt} binutils and gcc" fi if ! defined __MINGW_WRAPPER_NO_CWD then - mkdir -p ${CHOST}/${MINGW_BUILDDIR_SUFFIX} - pushd ${CHOST}/${MINGW_BUILDDIR_SUFFIX} + mkdir -p ${tgt}/${MINGW_BUILDDIR_SUFFIX} + pushd ${tgt}/${MINGW_BUILDDIR_SUFFIX} fi - inform "cross-compiling for ${CHOST}" + inform "running ${1} for ${tgt}" + + CHOST=${tgt} \ + CTARGET=${tgt} \ + CC=${mingw_cc} \ + CXX=${mingw_cxx} \ + F77=${tgt}-gfortran \ + FC=${tgt}-gfortran \ + OBJC=${mingw_cc} \ + OBJCXX=${mingw_cxx} \ + AR=${tgt}-ar \ + DLLTOOL=${tgt}-dlltool \ + NM=${tgt}-nm \ + OBJDUMP=${tgt}-objdump \ + RANLIB=${tgt}-ranlib \ + RC=${tgt}-windres \ + STRIP=${tgt}-strip \ + PKG_CONFIG=${tgt}-pkg-config \ + QT5_QMAKE=${tgt}-qmake-qt5 \ + CC_SYSROOT=/usr/${tgt}/sys-root \ + CFLAGS="${CFLAGS/-Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong}" \ + CXXFLAGS="${CXXFLAGS/-Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong}" \ "${@}" || 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