[cygport - the Cygwin packaging tool] branch topic/mingw, updated. 0.34.0-32-g8544a0b

Yaakov Selkowitz yselkowitz@sourceware.org
Fri May 15 04:15:55 GMT 2020




https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=8544a0b9eb893e6dc34061f94f931ba19b8fb201

commit 8544a0b9eb893e6dc34061f94f931ba19b8fb201
Author: Yaakov Selkowitz <yselkowi@redhat.com>
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 <yselkowi@redhat.com>
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



More information about the Cygwin-apps-cvs mailing list