# Unable to cross compile git. http.c generating errors.

3 messages from 2023-05-06 to 2023-05-11. Participants: PEEX Gamer, Bagas Sanjaya, Jeff King.
Thread: https://gitlist.dev/t/59701

## PEEX Gamer, 2023-05-06 18:38

Subject: Unable to cross compile git. http.c generating errors.
Message-ID: <CALpgS-OQzoopjKd2a3NBkaefHoqR_wLop5x3Y7U8e0eVUO7XJQ@mail.gmail.com>
URL: https://gitlist.dev/e/CALpgS-OQzoopjKd2a3NBkaefHoqR_wLop5x3Y7U8e0eVUO7XJQ%40mail.gmail.com

```
I was trying to compile git for x86_64 FreeBSD 13.2 on x86_64 linux
without any success.
I was using clang toolchain that worked for native Freebsd 13.2 compilation.
The errors i had:
First thing was that config.mak.uname was trying to include sysinfo
because of host machine being linux which was weird. I ommited this
error by replacing linux section with freebsd and everythink was
smooth until http.c which generates output attached in email. Why
would somethink like this happen when same code was compiled with
success on FreeBSD machine but for some reason it can't cross compile.
stdio.h come from official FreeBSD 13.2 base. I checked also when was
http.c modified but this part is like that for last 5 years. Looks
like i might have done somethink wrong with my toolchain but the same
toolchain generated working tests (i ran them on FreeBSD machine,
worth noting that this tests were using stdio.h) and also built
working curl from source.

```

## Bagas Sanjaya, 2023-05-11 03:39

Subject: Re: Unable to cross compile git. http.c generating errors.
Message-ID: <ZFxjglvEHz9ESyRE@debian.me>
URL: https://gitlist.dev/e/ZFxjglvEHz9ESyRE%40debian.me
In-Reply-To: <CALpgS-OQzoopjKd2a3NBkaefHoqR_wLop5x3Y7U8e0eVUO7XJQ@mail.gmail.com>

```
On Sat, May 06, 2023 at 08:38:40PM +0200, PEEX Gamer wrote:
> I was trying to compile git for x86_64 FreeBSD 13.2 on x86_64 linux
> without any success.
> I was using clang toolchain that worked for native Freebsd 13.2 compilation.
> The errors i had:
> First thing was that config.mak.uname was trying to include sysinfo
> because of host machine being linux which was weird. I ommited this
> error by replacing linux section with freebsd and everythink was
> smooth until http.c which generates output attached in email. Why
> would somethink like this happen when same code was compiled with
> success on FreeBSD machine but for some reason it can't cross compile.
> stdio.h come from official FreeBSD 13.2 base. I checked also when was
> http.c modified but this part is like that for last 5 years. Looks
> like i might have done somethink wrong with my toolchain but the same
> toolchain generated working tests (i ran them on FreeBSD machine,
> worth noting that this tests were using stdio.h) and also built
> working curl from source.

I don't see the error message unless I open this email on Thunderbird
(you attach it as image instead of copy-paste from terminal). Please
show us the error.

Anyway, the culprit line is introduced by e6cf87b12d (http: enable
keep_error for HTTP requests, 2019-01-10), so I Cc: the commit author.

Thanks.

-- 
An old man doll... just what I always wanted! - Clara

```

## Jeff King, 2023-05-11 06:28

Subject: Re: Unable to cross compile git. http.c generating errors.
Message-ID: <20230511062824.GA1971463@coredump.intra.peff.net>
URL: https://gitlist.dev/e/20230511062824.GA1971463%40coredump.intra.peff.net
In-Reply-To: <CALpgS-OQzoopjKd2a3NBkaefHoqR_wLop5x3Y7U8e0eVUO7XJQ@mail.gmail.com>

```
On Sat, May 06, 2023 at 08:38:40PM +0200, PEEX Gamer wrote:

> I was trying to compile git for x86_64 FreeBSD 13.2 on x86_64 linux
> without any success.
> I was using clang toolchain that worked for native Freebsd 13.2 compilation.
> The errors i had:
> First thing was that config.mak.uname was trying to include sysinfo
> because of host machine being linux which was weird. I ommited this
> error by replacing linux section with freebsd and everythink was
> smooth until http.c which generates output attached in email. 

Looks like you're having problems with fileno() being passed a void
pointer. Try compiling with:

  make FILENO_IS_A_MACRO=Yes

That is generally set automatically on FreeBSD via config.mak.uname;
perhaps you missed it when moving things around there.

I've never tried cross-compiling Git, but I'd guess that your best bet
is to override the uname_* variables, like:

  make uname_S=FreeBSD uname_R=13.2

(there are others, but those are the main ones we use to set defaults
for various Makefile knobs). Of course you can tweak all the Makefile
knobs yourself, but that may be tedious.

-Peff

```
