[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