From mboxrd@z Thu Jan 1 00:00:00 1970 MIME-Version: 1.0 In-Reply-To: <201503112030.t2BKU71p008530@skeeve.com> References: <201503112030.t2BKU71p008530@skeeve.com> From: Ryan Gonzalez Date: Wed, 11 Mar 2015 16:04:04 -0500 Message-ID: To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net> Content-Type: multipart/alternative; boundary=f46d04389183add8590511099ce5 Subject: Re: [9fans] ken cc for linux Topicbox-Message-UUID: 49175054-ead9-11e9-9d60-3106f5b1d025 --f46d04389183add8590511099ce5 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Warning: this will get messy *fast*. On Wed, Mar 11, 2015 at 3:30 PM, Aharon Robbins wrote: > Thanks for the link to the Google code repo. > > I'm currently on x86_64 Ubuntu 12.04. Building was not so smooth, several > files are missing for the Power 64 port. > Yup. Comment out the lines in the mkfiles. In src/cmd/mkfile, I commented out lines 34-36. I think you already need mk installed; you can grab it from here . > > I did as best I could to build things. I suppose my expectations aren't > what they should be. I was looking for the usual > > configure && make && make install > > experience, and it wasn't there. I like to compile gawk with multiple > compilers and thought I'd try ken's, but it wasn't clear to me which > o.out file to use, or how to install it such that it will get the > system's include files and libraries. > > I doubt the Plan 9 compilers will even get *close* to building gawk. See, the compilers implement a variant of ANSI C with some C99-ish extensions. For once, the preprocessor does not work with #if's. You can only use #ifdef's. Because of this, 99% of the C standard library headers will NOT work with the compilers. Another issue is that it seems that the linker does not read ELF files, so linking with about anything is out of the question. As for the compilers you need to invoke... The directories in src/cmd are formatting like *n*c, *n*a, and *n*l, where the *c ones are the compiles, *a, the assemblers, and *l, the linkers. The executable is at src/cmd//o.out. For Ubuntu 64-bit, you'll want src/cmd/6c/o.out to compile and src/cmd/6l/o.out to link. Or, at least you would...if the files weren't missing. Since half of them are, you'll instead want src/cmd/8c/o.out to compile and src/cmd/8l/o.out to link. Those are the 32-bit compilers. I set up symlinks in ken-cc/bin using bin/8c as an alias for src/cmd/8c/o.out. Same thing for 8l. The command lines look something like: 8c tst.c # outputs tst.8 8l -o tst tst.8 # outputs tst Bottom line: you may be out of luck if you want to use ken-cc as a general-purpose C compiler. It isn't. At all. It's fun to toy with, though. Go had vastly better versions, but it seems they got ripped out recently. I think Go 1.3 may have had them, in which case you'd do something like: go tool 6c tst.c go tool 6l -o tst tst.6 As you can see, Go actually had a working 64-bit compiler. I have yet to figure out why the hell symlinks to the compilers never get set up in the bin directory. > If this is easy to do, I'd appreciate hearing how. If not, then I'm not > going to worry about it. :-) > > Much thanks, > > Arnold > > --=20 Ryan [ERROR]: Your autotools build scripts are 200 lines longer than your program. Something=E2=80=99s wrong. http://kirbyfan64.github.io/ --f46d04389183add8590511099ce5 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Warning: this will get messy *fast*.

On Wed, Mar 11, 2015 at 3:30 PM, Aharon= Robbins <arnold@skeeve.com> wrote:
Thanks for the link to the Google code repo.

I'm currently on x86_64 Ubuntu 12.04. Building was not so smooth, sever= al
files are missing for the Power 64 port.

Yup. Comment out the lines in the mkfiles. In src/cmd/mkfile, I commented= out lines 34-36.

I think you already need mk inst= alled; you can grab it from=C2=A0here.
=C2=A0

I did as best I could to build things.=C2=A0 I suppose my expectations aren= 't
what they should be. I was looking for the usual

=C2=A0 =C2=A0 =C2=A0 =C2=A0 configure && make && make insta= ll

experience, and it wasn't there. I like to compile gawk with multiple compilers and thought I'd try ken's, but it wasn't clear to me = which
o.out file to use, or how to install it such that it will get the
system's include files and libraries.


I doubt the Plan 9 compilers will even= get *close* to building gawk.

See, the compilers = implement a variant of ANSI C with some C99-ish extensions. For once, the p= reprocessor does not work with #if's. You can only use #ifdef's.

Because of this, 99% of the C standard library heade= rs will NOT work with the compilers.

Another issue= is that it seems that the linker does not read ELF files, so linking with = about anything is out of the question.

As for the = compilers you need to invoke...

The directories in= src/cmd are formatting like nc, na, and nl, where the= *c ones are the compiles, *a, the assemblers, and *l, the linkers.

The executable is at src/cmd/<dir>/o.out. For Ubunt= u 64-bit, you'll want src/cmd/6c/o.out to compile and src/cmd/6l/o.out = to link. Or, at least you would...if the files weren't missing. Since h= alf of them are, you'll instead want src/cmd/8c/o.out to compile and sr= c/cmd/8l/o.out to link. Those are the 32-bit compilers.

I set up symlinks in ken-cc/bin using bin/8c as an alias for src/cmd/= 8c/o.out. Same thing for 8l.

The command lines loo= k something like:

8c tst.c # outputs tst.8
8l -o tst tst.8 # outputs tst

Bottom line: you = may be out of luck if you want to use ken-cc as a general-purpose C compile= r. It isn't. At all.

It's fun to toy with,= though.

Go had vastly better versions, but it see= ms they got ripped out recently. I think Go 1.3 may have had them, in which= case you'd do something like:

go tool 6c tst.= c
go tool 6l -o tst tst.6

As you can see= , Go actually had a working 64-bit compiler.

I hav= e yet to figure out why the hell symlinks to the compilers never get set up= in the bin directory.
=C2=A0
If this is easy to do, I'd appreciate hearing how. If not, then I'm= not
going to worry about it. :-)

Much thanks,

Arnold




--
Ryan
[ERROR]: Your autotools build= scripts are 200 lines longer than your program. Something=E2=80=99s wrong.=
<= /div>
--f46d04389183add8590511099ce5--