www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - GDC in Slackware and a bit about GDC development

reply Eugene Wissner <belka caraus.de> writes:
Hi,

lately I finally got some time to create GDC package for 
Slackware Linux [1].
Slackware ships gcc 5.3.0, therefore GDC package is the latest 
version from "gcc5" branch. It has phobos and druntime 2.076.0-b1 
and the frontend somewhere between 2.075 and 2.076.
Since Slackware packages are built by plain shell scripts, I 
thought I make an announce, because it can be used as a reference 
by people, who whant to build the latest GDC from source. The 
only difference between Slackware and mainstream Linux 
distributions (Ubuntu, Debian) I'm aware of, is that x86-64 
Slackware isn't multiarch by default.

The package is on slackbuilds.org [2]. The direct link to the 
build script is [3].
GDC looks pretty nice. I had only one problem: I got a linking 
error if I use core.stdc.stdarg; not sure if it is my failure or 
a bug. But I could build my library and run tests. Pretty nice.

I also would like to point to the "GCC tiny" tutorial [4]. The 
tutorial tells how to create a GCC frontend for a Pascal-like 
language, tiny. And it is a great thing to learn about GCC 
internals for someone who wants to help with GDC development, the 
best one I could find in the last months.


[1] http://www.slackware.com/
[2] https://slackbuilds.org/repository/14.2/development/gcc-d/
[3] 
https://slackbuilds.org/slackbuilds/14.2/development/gcc-d/gcc-d.SlackBuild
[4] http://thinkingeek.com/gcc-tiny/
Sep 23
parent reply Iain Buclaw <ibuclaw gdcproject.org> writes:
On 23 September 2017 at 21:45, Eugene Wissner via
Digitalmars-d-announce <digitalmars-d-announce puremagic.com> wrote:
 Hi,

 lately I finally got some time to create GDC package for Slackware Linux
 [1].
 Slackware ships gcc 5.3.0, therefore GDC package is the latest version from
 "gcc5" branch. It has phobos and druntime 2.076.0-b1 and the frontend
 somewhere between 2.075 and 2.076.
 Since Slackware packages are built by plain shell scripts, I thought I make
 an announce, because it can be used as a reference by people, who whant to
 build the latest GDC from source. The only difference between Slackware and
 mainstream Linux distributions (Ubuntu, Debian) I'm aware of, is that x86-64
 Slackware isn't multiarch by default.

 The package is on slackbuilds.org [2]. The direct link to the build script
 is [3].
 GDC looks pretty nice. I had only one problem: I got a linking error if I
 use core.stdc.stdarg; not sure if it is my failure or a bug. But I could
 build my library and run tests. Pretty nice.
What's the linker error?
 I also would like to point to the "GCC tiny" tutorial [4]. The tutorial
 tells how to create a GCC frontend for a Pascal-like language, tiny. And it
 is a great thing to learn about GCC internals for someone who wants to help
 with GDC development, the best one I could find in the last months.

 [4] http://thinkingeek.com/gcc-tiny/
Looks good. A simpler GCC frontend would be https://github.com/giuseppe/gccbrainfuck Regards Iain.
Sep 23
parent reply Eugene Wissner <belka caraus.de> writes:
On Saturday, 23 September 2017 at 20:34:51 UTC, Iain Buclaw wrote:
 On 23 September 2017 at 21:45, Eugene Wissner via 
 Digitalmars-d-announce <digitalmars-d-announce puremagic.com> 
 wrote:
 GDC looks pretty nice. I had only one problem: I got a linking 
 error if I
 use core.stdc.stdarg; not sure if it is my failure or a bug. 
 But I could
 build my library and run tests. Pretty nice.
What's the linker error?
Here is the code, test.d: import core.stdc.stdarg; void format(char[] buf, ...) { va_list va; va_start(va, buf); va_end(va); } void main() { } $ gdc test.d /tmp/ccwm5f8o.o: In function `_D4test6formatFAaYv': test.d:(.text+0x114): undefined reference to `_D4core4stdc6stdarg6va_endFNbPS4core4stdc6stdarg13__va_list_tagZv' collect2: ld returned 1 exit status
 Looks good.  A simpler GCC frontend would be 
 https://github.com/giuseppe/gccbrainfuck
But without the great explanations :)
Sep 23
parent Iain Buclaw <ibuclaw gdcproject.org> writes:
On 23 September 2017 at 22:55, Eugene Wissner via
Digitalmars-d-announce <digitalmars-d-announce puremagic.com> wrote:
 On Saturday, 23 September 2017 at 20:34:51 UTC, Iain Buclaw wrote:
 On 23 September 2017 at 21:45, Eugene Wissner via Digitalmars-d-announce
 <digitalmars-d-announce puremagic.com> wrote:
 GDC looks pretty nice. I had only one problem: I got a linking error if I
 use core.stdc.stdarg; not sure if it is my failure or a bug. But I could
 build my library and run tests. Pretty nice.
What's the linker error?
Here is the code, test.d: import core.stdc.stdarg; void format(char[] buf, ...) { va_list va; va_start(va, buf); va_end(va); } void main() { } $ gdc test.d /tmp/ccwm5f8o.o: In function `_D4test6formatFAaYv': test.d:(.text+0x114): undefined reference to `_D4core4stdc6stdarg6va_endFNbPS4core4stdc6stdarg13__va_list_tagZv' collect2: ld returned 1 exit status
That would almost certainly only happen if you were using a different druntime. Check where your import modules are coming from, they probably aren't gdc's.
 Looks good.  A simpler GCC frontend would be
 https://github.com/giuseppe/gccbrainfuck
But without the great explanations :)
True, it's more a skeleton front-end, which shows you only the most important files and hooks to be aware of in order to get started.
Sep 24