public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
From: Lee <ler762@gmail.com>
To: Anthony Webber <akwebber@reckeng.com>
Cc: cygwin@cygwin.com
Subject: Re: Setting up toolchains
Date: Mon, 27 Sep 2021 10:27:40 -0400	[thread overview]
Message-ID: <CAD8GWstOqVhJeZKUvf=VfGjAaYZDNeJe3j3R58tP2K-cUNgs7Q@mail.gmail.com> (raw)
In-Reply-To: <3034fa70-ad4c-3e8a-31da-d892c7deb3b7@reckeng.com>

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


Regards,
Lee

  reply	other threads:[~2021-09-27 14:27 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-27 11:27 Anthony Webber
2021-09-27 14:27 ` Lee [this message]
2021-09-27 17:10   ` Brian Inglis
2021-09-27 21:06 ` Hans-Bernhard Bröker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAD8GWstOqVhJeZKUvf=VfGjAaYZDNeJe3j3R58tP2K-cUNgs7Q@mail.gmail.com' \
    --to=ler762@gmail.com \
    --cc=akwebber@reckeng.com \
    --cc=cygwin@cygwin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).