Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 24 Oct 2017 09:20:01 +0300
From:      =?UTF-8?Q?Eddy_Petri=C8=99or?= <eddy.petrisor@gmail.com>
To:        Warner Losh <imp@bsdimp.com>
Cc:        freebsd-arm@freebsd.org
Subject:   Re: How does (src)/sys/x86/machine/endian.h get deplyoed as DESTDIR/usr/include/x86/endian.h
Message-ID:  <CAK0XTWeGpBZ95OeD%2B%2BwyV=-1eGtr5v1RH-YcU%2BL0fKtX0vqRhw@mail.gmail.com>
In-Reply-To: <CANCZdfoJ4amvc_=8JCA2jtOdRL=%2ByMhPE44h0iH4wpFy6ba3ng@mail.gmail.com>
References:  <CAK0XTWeL5Ut6ADs0sN2zPEyz8k9MJqGjMZPoN9PteWEO0AhZaQ@mail.gmail.com> <CANCZdfoJ4amvc_=8JCA2jtOdRL=%2ByMhPE44h0iH4wpFy6ba3ng@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Pe 23 oct. 2017 10:30 PM, "Warner Losh" <imp@bsdimp.com> a scris:



On Mon, Oct 23, 2017 at 1:26 PM, Eddy Petri=C8=99or <eddy.petrisor@gmail.co=
m>
wrote:

> Hello,
>
> I am trying to add cross build support of FreeBSD from a Linux build
> system and I am taking it one small step at a time.
>
> I have a wrapper script to consistently set environment variables, to
> set the correct bmake and the proper MAKEFLAGS to pass the correct
> dirs for the .mk files and made some changes to map the uname -p/uname
> -m's reported x86_64 to amd64 for the MACHINE* variables.
>
> During 'make TARGET=3Damd64 toolchain' the compilation of
> contrib/libc-pwcache/pwcache.c fails to find some definitions. Of
> course, before implementing the changes in the build system (or my
> Linux wrapper script) definitons that might make sense for a build
> from Linux, I am trying to compile by hand the offending pwcache.c
> file, and, although some of them I was able to resolve either by using
> the files from freebsd-glue or by adding -Isys, I am a little puzzled
> by the mix of build and freebsd headers/definitions and also got stuck
> because in my mind the compilation at this stage needs to generate
> binaries for running on a linux system, but some definitions seem to
> be freebsd specfic.
>
> In either case, I saw that on the FreeBSD system I am using as a
> reference there are some files (such as endian.h) are in
> /usr/include/x86, but in the source tree they were in the source tree
> in sys/x86/machine.
>
> Since at this stage it looks like I need some kind of way to do an
> install-headers(?) from sys/$MACHINE/machine (+x86, in case of x86_64)
> to a $NON_BSD_WRAPPERSDIR/$MACHINE/usr/include directory:
>
> 1) does it make sense to try to use the headers from src, or is the
> right way (tm) to add definitions which are 100% correct for Linux?
> 1.1) I am thinking that since the definitions were originally in the
> src tree under sys, they are related to the FreeBSD kernel, so it
> makes little sense to try to define something for Linux. Am I wrong?
> Does it make sense to continue on this route?
> 2) is there such a target/script that I can run to populate my
> wrappers dir with the right headers no matter which $MACHINE we're
> talking about?


In the past, I've walked through the bootstrapping steps to get a full
sysroot to do the build of the rest of the system.


I have thought of simply downloading a base.txz to get the headers, but I
dislike that idea because I should be able to bootstrap everything without
involving precompiled/prebuilt base.txz since all sources are available.

That's likely the best path forward (so the binaries you are building for
FreeBSD/arm are all built with gcc/clang --sysroot /path/to/arm/sysroot).


Please note that I am still at the stage when I am trying to build the
cross tool chain, so the TARGET at this stage is still amd64 (not arm64).
Because of this there is no sysroot yet. That's why I was asking at 2 for a
simple way to install the headers, and if that made sense 1.1. Does it?

I preferred to try amd64 since I know there are some things to be ironed
out for arm64/aarch64, while for amd64 things should be pretty solid.

I expect that after I make my cross tool chain (to be ran on Linux) I will
be able to generate binaries for FreeBSD and can buildworld and buildkernel
no matter the TARGET (after building the proper toolchain).



Warner



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAK0XTWeGpBZ95OeD%2B%2BwyV=-1eGtr5v1RH-YcU%2BL0fKtX0vqRhw>