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

Yaakov Selkowitz via Cygwin-apps-cvs <[email protected]>
Newsgroups gmane.os.cygwin.cvs.apps
Message-ID <[email protected]>


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

commit 8544a0b9eb893e6dc34061f94f931ba19b8fb201
Author: Yaakov Selkowitz <[email protected]>
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 <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.