delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2021/09/27/13:11:39

X-Recipient: archive-cygwin AT delorie DOT com
X-Original-To: cygwin AT cygwin DOT com
Delivered-To: cygwin AT cygwin DOT com
DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 674A63858408
Authentication-Results: sourceware.org; dmarc=none (p=none dis=none)
header.from=SystematicSw.ab.ca
Authentication-Results: sourceware.org;
spf=none smtp.mailfrom=systematicsw.ab.ca
X-Authority-Analysis: v=2.4 cv=Bbi7bph2 c=1 sm=1 tr=0 ts=6151fb0d
a=T+ovY1NZ+FAi/xYICV7Bgg==:117 a=T+ovY1NZ+FAi/xYICV7Bgg==:17
a=IkcTkHD0fZMA:10 a=w_pzkKWiAAAA:8 a=dbV8a0LY_Rryxn10l5oA:9 a=QEXdDO2ut3YA:10
a=sRI3_1zDfAgwuvI8zelB:22
To: cygwin AT cygwin DOT com
References: <3034fa70-ad4c-3e8a-31da-d892c7deb3b7 AT reckeng DOT com>
<CAD8GWstOqVhJeZKUvf=VfGjAaYZDNeJe3j3R58tP2K-cUNgs7Q AT mail DOT gmail DOT com>
From: Brian Inglis <Brian DOT Inglis AT SystematicSw DOT ab DOT ca>
Organization: Systematic Software
Subject: Re: Setting up toolchains
Message-ID: <3a732f5a-5be3-0d52-7c41-d70e9184fcfc@SystematicSw.ab.ca>
Date: Mon, 27 Sep 2021 11:10:36 -0600
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101
Thunderbird/78.14.0
MIME-Version: 1.0
In-Reply-To: <CAD8GWstOqVhJeZKUvf=VfGjAaYZDNeJe3j3R58tP2K-cUNgs7Q@mail.gmail.com>
X-CMAE-Envelope: MS4xfAlxv26I4TX/av1d0oxNBMbwA0an4/rYPaS9XbM+9HBalQ4uZRRTkswh7yVtlrloSXZyvw/WUjAKCmnKYYEs64zduXGg45keALaqtz+hcfud55NVHe2W
F06EW3skNLEx+l+8OiRmGwKjO1EndEi6LVc/Q1KyjIqDFNOhULFnL8521hYMQB7hJfVt2BIkUar6glxHlOsaG1NpzwFaH5kPjBA=
X-Spam-Status: No, score=-1166.4 required=5.0 tests=BAYES_00, KAM_DMARC_STATUS,
KAM_LAZY_DOMAIN_SECURITY, NICE_REPLY_A, RCVD_IN_BARRACUDACENTRAL,
RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE,
SPF_NONE, TXREP autolearn=no autolearn_force=no version=3.4.4
X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on
server2.sourceware.org
X-BeenThere: cygwin AT cygwin DOT com
X-Mailman-Version: 2.1.29
List-Id: General Cygwin discussions and problem reports <cygwin.cygwin.com>
List-Unsubscribe: <https://cygwin.com/mailman/options/cygwin>,
<mailto:cygwin-request AT cygwin DOT com?subject=unsubscribe>
List-Archive: <https://cygwin.com/pipermail/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-request AT cygwin DOT com?subject=help>
List-Subscribe: <https://cygwin.com/mailman/listinfo/cygwin>,
<mailto:cygwin-request AT cygwin DOT com?subject=subscribe>
Reply-To: cygwin AT cygwin DOT com
Errors-To: cygwin-bounces+archive-cygwin=delorie DOT com AT cygwin DOT com
Sender: "Cygwin" <cygwin-bounces+archive-cygwin=delorie DOT com AT cygwin DOT com>

On 2021-09-27 08:27, Lee via Cygwin wrote:
> On 9/27/21, Anthony Webber wrote:
>> Please excuse the naivety of this question, but I've looked elsewhere
>> and can't find a good answer. Perhaps a good answer is to install MSYS2
>> alongside Cygwin.
> 
> that seems to be the usual answer here :(
> 
>> Anyway, I am trying to set up my gcc toolchains in Cygwin, by which I
>> mean that I'm trying to set up the environment so that the right
>> programs are called at the right time by build systems like cmake and
>> waf,
> 
> cmake supposedly supports cross-compilation.  I've never figured out
> how to do it :(
> 
>> or if I want to build in a more manual fashion. Particularly, I
>> want to be able to switch between toolchains easily.
> 
> GNU autoconf.  Switching between toolchains is as easy as
> 
> autoconf
> autoheader
> ./configure  --host=i686-w64-mingw32
> 
> 
>> I have installed both the x86_64-pc-cygwin-gcc/g++ and
>> x86_64-w64-mingw32-gcc/g++ packages using setup-x86_64.exe.
>>
>> The first thing I notice is that the gcc/g++ programs in /bin are
>> identical to  x86_64-pc-cygwin-gcc/g++, and that symbolic links aren't
>> being used. I presume it's being done this way because this is
>> considered the default, native Cygwin toolchain, and that there should
>> be be relatively little to do in the way of configuration if I want to
>> build Cygwin software.
>>
>> If I do want to cross-compile using x86_64-w64-mingw32-gcc/g++, then I
>> imagine that the very least I should do is set a bunch of environment
>> variables like CC and CXX (perhaps by sourcing a shell script), but
>> really I'd like some advice here. What do you guys do?
> 
> I've never written anything that needed a make file; I just use the
> correct compiler. eg
> 
> $ tail -3 getenv.c
> }
> /* i686-w64-mingw32-gcc -o getenv.exe getenv.c
>   */
> 
> The only time I've had to use environment variables was for building mbedtls:
> 
> export WINDOWS_BUILD=1
> #  build for a Windows platform
> 
> export SHARED=1
> #  want the shared libraries created
> 
> export CC=i686-w64-mingw32-gcc
> export LD=i686-w64-mingw32-gcc
> export CFLAGS="-O2 -fstack-protector-strong -D_FORTIFY_SOURCE=2"
> export LDFLAGS="${LDFLAGS} -fstack-protector-strong"
> 
> make lib
> #  build the libraries
> 
> PATH="${PWD}/library:/usr/i686-w64-mingw32/sys-root/mingw/bin:${PATH}"
> #  so the tests are able to find the mbedtls and mingw libraries
> 
> make check
> #  run the test suite

Install cygport and learn the concepts from the html docs, about helper 
"cygclasses" which DTRT with definitions or provide them for you, 
functions, which you may override with your own shell functions, and 
examples available under:

	https://cygwin.com/git-cygwin-packages/

which contains over a decade of cygport build control shell script 
definitions, patches, and the minimum of everything needed to build many 
of the latest Cygwin packages.

That includes cross-builds of cygwin32-, cygwin64-, mingw64-i686-, and 
mingw64-x86_64- versions packages.

Beware of the playground branches used to try out CI builds of test and 
prerelease versions which may not configure, build, run, or pass any tests.

You can also download the complete source packages which include the 
cygport and other build artifacts.

You will always have to install various ...-devel and lib...-devel 
packages required to build libraries and programs.

Recently updated cygport script definitions include DEPEND now 
BUILD_REQUIRES which define all packages required for building which 
have to be installed before running cygport, and by CI jobs at the start 
of CI cygport builds.

-- 
Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada

This email may be disturbing to some readers as it contains
too much technical detail. Reader discretion is advised.
[Data in binary units and prefixes, physical quantities in SI.]

-- 
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019