[M3devel] [modula3/cm3] New release for Mac OS X, please? (#13) [Originally From]: notifications at github.com
Jay K
jayk123 at hotmail.com
Wed Jun 1 11:28:08 CEST 2016
I kinda want to encourage a different approach, at least for Unix systems where binary compatibility is currently so low.
So here is what I did/am doing:
I have made assembly and C bootstraps for I386_LINUX and AMD64_LINUX.
I'm still testing them (waiting for boot2 to finish).
Here is roughly how:
For assembly (gcc-bassed ) bootstrap:
cd ${CM3_ROOT}/m3-sys/m3cc
sh -c ./src/buildmany.sh
That actually does way more than necessary,
and might fail in the end. I didn't wait for it.
In particular, it builds a gcc-based backend for every target.
If you look -- buildmany.sh is trivial.
m3cc/src/m3makefile has always had the support. buildmany.sh is a tiny wrapper.
Actually the first step should be redundant with boot1.py anyway.
cd ${CM3_ROOT}/scripts/python
# I don't think these are case sensitive even.
./do-cm3-all.py I386_LINUX realclean
./do-cm3-all.py I386_LINUX c realclean
./do-cm3-all.py AMD64_LINUX realclean
./do-cm3-all.py AMD64_LINUX c realclean
./boot1.py I386_LINUX c
./boot1.py I386_LINUX
./boot1.py AMD64_LINUX c
./boot1.py AMD64_LINUX
If you look, boot1.py doesn't seem obviously simple, but it really is just a wrapper around roughly:
cd
cm3
mkdir
cp
tar
"All else being equal", i.e. lacking broad adoption of the C or LLVM backends,
we should make releases "this way" "and then some".
"and then some":
all supported/tested targets (Darwin, Solaris, FreeBSD, maybe NT).
Enhancing it to include the entire system, installing a proper install, and
supporting shared libraries.
Shared libraries: either autotools or cmake or replicating the config files
i.e. into pylib.py, or moving pylib.py logic into cm3, esp. cm3 -boot
Key advantages of this approach:
1) It is cross building, we can do it all on one machine (or scale it out, but
it doesn't take too long)
2) More importantly, the results are less machine-specific. There are
no paths to dynamic linked libraries or versions thereof.
This is roughly how 3.6 was released -- along with a matching source
tree for the entire system and good directions to build the multiple pieces.
The directions today are like:
get the right bootstrap archive
get the source tree
extract bootstrap
build it (make) (again, if you look, simple stuff)
install it
mkdir /somewhere/bin
mv cm3 /somewhere/bin
export PATH=/somewhere/bin:$PATH
./boot2.py
or
./boot2.py c to use the C backend
(mklib is only for NT targets)
I'd really soon like there to be fewer C variations though -- just unixc32le, unixc32be, unixc64le, posix64be, ntc32le, ntc64le.
And this is almost overkill -- 64le is the vast majority.
- Jay
----------------------------------------
Date: Tue, 31 May 2016 08:28:32 -0700
From: notifications at github.com
To: cm3 at noreply.github.com
CC: jay.krell at cornell.edu; comment at noreply.github.com
Subject: Re: [modula3/cm3] New release for Mac OS X, please? (#13)
Yes, I saw the min and all tar.gz files yesterday. I extracted the "all" tar file and the compiler worked fine. (The tar.gz files are gone from my /var directory now.)
I'd be happy to help with a release. What should I do?
More information about the M3devel
mailing list