[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: GCC front-ends
From: |
Ludovic Courtès |
Subject: |
Re: GCC front-ends |
Date: |
Sat, 26 Oct 2013 22:08:04 +0200 |
User-agent: |
Gnus/5.130007 (Ma Gnus v0.7) Emacs/24.3 (gnu/linux) |
Nikita Karetnikov <address@hidden> skribis:
>> I guess this triggers a complete rebuild, right? (That means it would
>> go in ‘core-updates’.)
>
>> Using the ‘substitute-keyword-arguments’ hack as in base.scm would allow
>> you to avoid that.
>
>> Also, the ‘origin’ thing should be factorized:
>
>> (define (gcc-source version)
>> (origin ...))
>
>> It’s good that you’re tackling this! Then we can also build the
>> Objective-C front-end, and then start GNUstepping.
>
> What do you think about the attached diff? Is there a way to avoid
> multiple ‘map’s?
See below.
> What about the names of the packages? For example, ‘gcc-fortran’ is
> usually called ‘gfortran’, ‘gcc-go’ is called ‘gccgo’, etc. Should we
> use these names? How should we call ‘gcc-objc’, then?
I’d say ‘gfortran’ and ‘gccgo’, and perhaps ‘gcc-objective-c’?
> If you want to test any of the front-ends, don’t forget to set
> LIBRARY_PATH and LD_LIBRARY_PATH, like so:
>
> $ export
> LIBRARY_PATH=/nix/store/wmaxqx3p658v2yqjv00mss2shvn23h7a-glibc-2.18/lib
> $ export
> LD_LIBRARY_PATH=/nix/store/kvhg0fszagsx5y80sq79bkmb7yqvjfmd-gcc-go-4.8.1/lib
I guess that’s unnecessary when using ‘ld-wrapper’.
> Notes:
>
> 1. The Go front-end requires ‘-g’ (see [1]).
That’s a bug, which may have been fixed in 4.8.2 no? I’d rather not
workaround that if it’s been/being fixed.
> 4. The Ada front-end requires GNAT [3] (see [4]).
>
> 5. Not sure why the Java front-end fails:
GNAT and GCJ are definitely trickier, so I’d suggest to leave them for now.
> +(define (custom-gcc gcc name languages)
> + (package (inherit gcc)
> + (name name)
> + (arguments
> + (substitute-keyword-arguments (package-arguments gcc)
> + ((#:configure-flags flags)
> + (map (lambda (x)
> + (if (list? x)
> + (map (lambda (y)
> + (if (equal? "--enable-languages=c,c++" y)
> + (string-append "--enable-languages="
> + languages)
> + y))
> + x)
> + x))
> + flags))))))
That’s unreliable because FLAGS is actually a quoted expression, like
'(cons "--with-foo" (list "--with-bar"))
So the mapping has to be done in builder-side code, not in host-side
code, like ‘gcc-cross-boot0’ does.
Something like:
`(cons "--enable-languages=" ,(string-join languages ",")
(remove (cut string-match "--enable-languages.*" <>) ,flags))
(Note that “c,c++” can be omitted since it’s always enabled.)
Thanks,
Ludo’.
- GFortran can’t find system headers, Nikita Karetnikov, 2013/10/14
- Re: GFortran can’t find system headers, Ludovic Courtès, 2013/10/15
- Re: GFortran can’t find system headers, Nikita Karetnikov, 2013/10/17
- Re: GFortran can’t find system headers, Ludovic Courtès, 2013/10/17
- GCC front-ends (was: GFortran can’t find system headers), Nikita Karetnikov, 2013/10/19
- Re: GCC front-ends,
Ludovic Courtès <=
- Re: GCC front-ends, Andreas Enge, 2013/10/27
- Re: GCC front-ends, Ludovic Courtès, 2013/10/28
- Re: GCC front-ends, Andreas Enge, 2013/10/29
- Re: GCC front-ends, Ludovic Courtès, 2013/10/29
- Re: GCC front-ends, Nikita Karetnikov, 2013/10/28
- Re: GCC front-ends, Ludovic Courtès, 2013/10/28
- Re: GCC front-ends, Nikita Karetnikov, 2013/10/28
- [PATCH] gnu: Add GCC front ends for Fortran, Go, Objective C, and Objective C++., Nikita Karetnikov, 2013/10/31
- Re: [PATCH] gnu: Add GCC front ends for Fortran, Go, Objective C, and Objective C++., Ludovic Courtès, 2013/10/31