I do think it probably makes sense to divorce the baremetal GCC ports from
powerpc64-gcc and let powerpc64-gcc just be the basis for FreeBSD-specific
toolchains.

On 5/19/19 10:48 AM, James Shuriff wrote:
> I have a Raspberry Pi 3 model b. I use the LLVM toolchain to build the system 
> but the GNU toolchain is required to build U-Boot. U-Boot uses global 
> register variables and LLVM doesn't support this. sysutils/u-boot-pine64 does 
> use aarch64-none-elf-gcc, for the same reason. The family is allwinner64 and 
> that's set to use aarch64-none-elf-gcc. Here is an article explaining the 
> feature U-Boot uses that's not in LLVM (the reason GNU is required for 
> building it):
> 
> https://gcc.gnu.org/onlinedocs/gcc/Global-Register-Variables.html
> 
> Aarch64 is a Tier 2 architecture. The toolchain should have an active 
> maintainer (the maintainer is listed as po...@freebsd.org). I've opened a bug 
> report for the bugs in the Makefile. We should be using a newer toolchain or 
> separate arm-none-eabi and aarch64-none-elf from powerpc64. I am guessing the 
> Makefile bugs occurred because the original designer didn't intend on 
> powerpc64-gcc being used for targets like arm-none-eabi and aarch64-none-elf. 
> The patches you pointed out before don't even have any effect on the bare 
> metal ports. The arm and aarch64 bare metal ports are the oddballs in the 
> group. The difference being: powerpc64-gcc, aarch64-gcc, amd64-gcc, i386-gcc, 
> mips*-gcc, and sparc64-gcc are all intended for, as you said Mark, alternate 
> toolchain work with FreeBSD. These are not the official toolchains for 
> FreeBSD and I can see why they don't have the same level of care as the 
> official toolchain. But the side effect of this is arm-none-eabi-gcc and 
> aarch64-none-elf-gcc recei
 ve the same level of support, though they are *required* to build most FreeBSD 
systems on those platforms.
> 
> - James Shuriff
> 
> -----Original Message-----
> From: Mark Millard <mark...@yahoo.com>
> Sent: Sunday, May 19, 2019 11:46 AM
> To: James Shuriff <ja...@opentech.cc>
> Cc: ports-list freebsd <freebsd-ports@freebsd.org>; b...@freebsd.org; 
> j...@freebsd.org
> Subject: Re: maintenance of gcc cross ports
> 
> 
> 
> On 2019-May-19, at 07:40, James Shuriff <james at opentech.cc> wrote:
> 
>> I didn't/don't plan on touching binutils. Binutils is okay. I made new 
>> patches as well. What I'm really concerned with bringing up to date is 
>> aarch64-none-elf-gcc.
> 
>> The GNU toolchain is unfortunately required for building an Aarch64
>> system
> 
> Are you specifically referencing contexts that need to build u-boot? (My 
> guess is: yes.)
> 
> I've done buildworld buildkernel based on system clang and lld many times in 
> the past, though not very recently. (I currently do not have access to the 
> environment but will again, eventually.)
> 
> For aarch64 I'd mostly recently built for and used:
> 
> A) a Pine64+ 2GB (needs: sysutils/u-boot-pine64 )
> B) an OverDrive 1000 (no u-boot build needed)
> 
> I've done amd64->aarch64 cross builds and self hosted ones for/on such. The 
> OverDrive 1000 builds did not involve devel/aarch64-none-elf-gcc at all as 
> far as I can remember.
> 
>> and is a prereq for a bunch of sysutils arm ports.
> 
> Yep.
> 
> Are there sysutils/u-boot-* 's that no longer build under gcc 6.4.0?
> Other things?
> 
>> At worst we can do something like what's done with the lang ports gcc6, 
>> gcc7, gcc8. I've CC'd the maintainers so hopefully they can give us some 
>> input and we can come up with a solution.
>>
>> As for Makefile issues, this is only an issue for the arm-none-eabi-gcc and 
>> aarch64-none-elf-gcc ports because they have multiple hyphens. It's mostly a 
>> cosmetic issue. Each port has its own plist because gcc generates different 
>> headers depending on the platform so the PLIST TARGETARCH regex doesn't 
>> really affect all that much. There are some clang flags dependent on 
>> TARGETARCH but whoever wrote the aarch64-none-elf-gcc port must have known 
>> it wasn't working in the master because the check is in the bare metal port 
>> as well. The stripping out of all hyphens causes things like "gcc version 
>> 6.4.0 (FreeBSD Ports Collection for aarch64noneelf)". I use 
>> ${PKGNAMEPREFIX:C/-$//} for the comment and version and 
>> ${PKGNAMEPREFIX:C/-.*//} for TARGETARCH. The original regex for all of those 
>> is ${PKGNAMEPREFIX:C/-//g} and I'm sure you can see how that's a problem 
>> when there's multiple hyphens.
> 
> Thanks for the notes.
> 
>> - James Shuriff
>>
>> -----Original Message-----
>> From: Mark Millard <mark...@yahoo.com>
>> Sent: Sunday, May 19, 2019 1:33 AM
>> To: James Shuriff <ja...@opentech.cc>; ports-list freebsd
>> <freebsd-ports@freebsd.org>
>> Subject: Re: maintenance of gcc cross ports
>>
>> James Shuriff james at opentech.cc wrote on Sat May 18 12:29:22 UTC 2019 :
>>
>>> The powerpc64-gcc port and all the ports that use it as a master 
>>> (aarch64-gcc, aarch64-none-elf-gcc, amd64-gcc, arm-none-eabi-gcc, i386-gcc, 
>>> mips-gcc, mips64-gcc, and sparc64-gcc) are very old and use buggy 
>>> makefiles. I would like to take over maintenance of these ports. 
>>> Powerpc64-gcc uses an old version of gcc and the makefile is buggy. Certain 
>>> variables use bad regular expressions thus don't do what they're supposed 
>>> to do. I've fixed up the makefiles and made new plists with a newer version 
>>> of gcc.
>>
>> Be aware that:
>>
>> /[ports]/head/base/binutils depends on devel/binutils via:
>>
>> MASTERDIR=${.CURDIR}/../../devel/binutils
>>
>> /[ports]/head/base/gcc depends on devel/powerpc64-gcc via:
>>
>> EXTRA_PATCHES+=
>> ${.CURDIR}/../../devel/powerpc64-gcc/files/freebsd-format-extensions
>> EXTRA_PATCHES+=
>> ${.CURDIR}/../../devel/powerpc64-gcc/files/freebsd-libdir
>> EXTRA_PATCHES+=
>> ${.CURDIR}/../../devel/powerpc64-gcc/files/patch-gcc-freebsd-mips
>>
>> The maintainer is listed as: b...@freebsd.org but the activity tends to be 
>> j...@freebsd.org . There are other, more overall FreeBSD toolchain efforts 
>> that these various ports are tied to. That may constrain what can be done 
>> when. You would probably need to consult with these folks about any changes.
>>
>> I use these ports for doing alternate toolchain buildworld buildkernel 
>> activities, including using, say, devel/powerpc64-gcc on a powerpc64 machine 
>> to self host with more modern tools than gcc 4.2.1 based ones.
>> As I understand, being in devel/ instead of lang/ for gcc tools is tied to 
>> being constructed for the system-building activities instead of for general 
>> use.
>>
>> You might want to show your Makefile updates so that that the problems are 
>> fully explicit.
>>
> 
> 
> ===
> Mark Millard
> marklmi at yahoo.com
> ( dsl-only.net went
> away in early 2018-Mar)
> 
> ________________________________
>  DISCLAIMER: This message and any attachments are intended solely for the use 
> of the recipient and may contain confidential information. If you have 
> received this message in error please delete it and promptly notify the 
> sender, James Shuriff (ja...@opentech.cc<mailto:ja...@opentech.cc>).
> 


-- 
John Baldwin
_______________________________________________
freebsd-ports@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"

Reply via email to