[M3commit] CVS Update: cm3

Jay Krell jkrell at elego.de
Sat Apr 24 21:29:46 CEST 2010


CVSROOT:	/usr/cvs
Changes by:	jkrell at birch.	10/04/24 21:29:46

Modified files:
	cm3/scripts/python/: pylib.py 

Log message:
	When building "boot" archives, instead of foo.ms => foo.ms.o
	foo.is => foo.is.o
	foo.c => foo.c.o
	
	and ld *.o
	
	do
	foo.ms => foo.mo
	foo.is => foo.io
	foo.c => foo.o
	
	and ld *.mo *.io *.o (or ld *o would work)
	
	This is faithful to the mainline methods, and
	doesn't produce files with multiple dots -- so they
	can be directly stored on VMS ODS-2 file system.
	Though ODS-5 would be nice.
	Might also help with MS-DOS down the line.
	
	Some other tweaks, for example
	instead of foo.contains("BAR") or foo.startswith("BAR_")
	or foo.endswith("_BAR") use:
	
	def StringTagged(a, b):
	return a.startswith(b + "_") or a.endswith("_" + b) or StringContains(a, "_" + b + "_")
	
	which will work if we have any multipart targetnames
	(granted, much slower due to extra string concats)
	
	more lazily form up tons of target names, since that takes less code,
	just every architecture + OS combination,
	even if it forms invalid names like I386_IRIX, etc.
	
	write out a separate vmsmake.com file for building cm3 on the target system
	(.com is a file containing DCL commands; DCL is the usual command
	line interface -- Digital Command Language)
	
	In the generated makefile, instead of
	Objects += foo
	say:
	Objects=$(Objects) foo
	
	in case that is more portable.
	e.g. to Microsoft nmake.
	But we should really investigate more and depend on GNU make on
	the more GNUish systems (Linux, Cygwin) and find out what BSD make can do.
	As well, for NT, we write out a simple little Makefile that doesn't use either.
	(Relying on the fact that for NT we have already produced .obj files)
	
	For VMS, run a cross assembler on the host and copy the object files
	to the target, instead of copying the assembly source and running
	the assembler on the target. However the object files I'm getting
	are being rejected by the linker, so more investigation is needed,
	possibly using the more common pattern of running the assembler
	on the target, though I'm skeptical we have the matching syntax.
	Might undo this part. Or make it a command line option, or make
	it probe for the cross assembler -- it is actually legitimate for
	all/many targets, though it doesn't make a big difference either way.
	Still lots of warnings/errors in the C code to look into as well.




More information about the M3commit mailing list