summaryrefslogtreecommitdiff
path: root/vms/genbuild.py
diff options
context:
space:
mode:
Diffstat (limited to 'vms/genbuild.py')
-rw-r--r--vms/genbuild.py155
1 files changed, 155 insertions, 0 deletions
diff --git a/vms/genbuild.py b/vms/genbuild.py
new file mode 100644
index 0000000..df18ce3
--- /dev/null
+++ b/vms/genbuild.py
@@ -0,0 +1,155 @@
+import os.path, string, posix, pyvms
+#
+#
+
+IDIR = ['swig_root:[source.swig]', 'swig_root:[source.doh.include]',
+ 'swig_root:[source.include]', 'swig_root:[source.preprocessor]']
+
+def new_file(fg, dirname):
+ global IDIR
+ fn = 'swig_root:[vms.scripts]compil_' + os.path.basename(dirname) + '.com'
+ print >> fg, '$ @' + fn
+ f = open(fn, 'w')
+ print >> f, '$!'
+ print >> f, '$! Generated by genbuild.py'
+ print >> f, '$!'
+ print >> f, '$ libname = "swig_root:[vms.o_alpha]swig.olb"'
+ print >> f, '$'
+ print >> f, '$ set default', pyvms.crtl_to_vms(dirname)[0][0]
+ print >> f, '$'
+ print >> f, "$ idir := ", IDIR[0]
+ for i in range(1, len(IDIR)):
+ print >> f, '$ idir = idir + ",' + IDIR[i] + '"'
+ print >> f, '$'
+ print >> f, "$ iflags = \"/include=(''idir', sys$disk:[])\""
+ print >> f, '$ oflags = \"/object=swig_root:[vms.o_alpha]'
+ print >> f, "$ cflags = \"''oflags'''iflags'''dflags'\""
+ print >> f, "$ cxxflags = \"''oflags'''iflags'''dflags'\""
+ print >> f, '$'
+ return f
+
+
+def end_file(f):
+ print >>f,"""$ exit
+$!
+$!
+$MAKE: SUBROUTINE !SUBROUTINE TO CHECK DEPENDENCIES
+$ V = 'F$Verify(0)
+$! P1 = What we are trying to make
+$! P2 = Command to make it
+$! P3 = Source file
+$! P4 - P8 What it depends on
+$
+$ modname = f$parse(p3,,,"name")
+$ set noon
+$ set message/nofacility/noident/noseverity/notext
+$ libr/lis=swig_root:[vms]swiglib.tmp/full/width=132/only='modname' 'libname'
+$ set message/facility/ident/severity/text
+$ on error then exit
+$ open/read swigtmp swig_root:[vms]swiglib.tmp
+$! skip header
+$ read swigtmp r
+$ read swigtmp r
+$ read swigtmp r
+$ read swigtmp r
+$ read swigtmp r
+$ read swigtmp r
+$ read swigtmp r
+$ read swigtmp r
+$ read swigtmp r
+$!
+$
+$ read/end=module_not_found swigtmp r
+$ modfound = 1
+$ Time = f$cvtime(f$extract(49, 20, r))
+$ goto end_search_module
+$ module_not_found:
+$ modfound = 0
+$
+$ end_search_module:
+$ close swigtmp
+$ delete swig_root:[vms]swiglib.tmp;*
+$
+$ if modfound .eq. 0 then $ goto Makeit
+$
+$! Time = F$CvTime(F$File(P1,"RDT"))
+$arg=3
+$Loop:
+$ Argument = P'arg
+$ If Argument .Eqs. "" Then Goto Exit
+$ El=0
+$Loop2:
+$ File = F$Element(El," ",Argument)
+$ If File .Eqs. " " Then Goto Endl
+$ AFile = ""
+$Loop3:
+$ OFile = AFile
+$ AFile = F$Search(File)
+$ If AFile .Eqs. "" .Or. AFile .Eqs. OFile Then Goto NextEl
+$ If F$CvTime(F$File(AFile,"RDT")) .Ges. Time Then Goto Makeit
+$ Goto Loop3
+$NextEL:
+$ El = El + 1
+$ Goto Loop2
+$EndL:
+$ arg=arg+1
+$ If arg .Le. 8 Then Goto Loop
+$ Goto Exit
+$
+$Makeit:
+$ VV=F$VERIFY(1)
+$ 'P2' 'P3'
+$ VV='F$Verify(VV)
+$Exit:
+$ If V Then Set Verify
+$ENDSUBROUTINE"""
+
+
+def listRep(args, dirname, filenames):
+ fg = args[0]
+ first = 1
+ for fn in filenames:
+ if fn[-2:] == '.c':
+ if first:
+ first = 0
+ fc = new_file(fg, dirname)
+
+ cstr = "\"cc ''cflags'\" "
+ line = "$ call make swig_root:[vms.o_alpha]"
+ line += fn[:-1] + 'obj -'
+ print >> fc, line
+ line = "\t" + cstr + fn
+ print >> fc, line
+ elif fn[-4:] == '.cxx':
+ if first:
+ first = 0
+ fc = new_file(fg, dirname)
+
+ cstr = "\"cxx ''cxxflags'\" "
+ line = "$ call make swig_root:[vms.o_alpha]"
+ line += fn[:-3] + 'obj -'
+ print >> fc, line
+ line = "\t" + cstr + fn
+ print >> fc, line
+ if first == 0:
+ end_file(fc)
+ fc.close()
+#
+def genbuild(f, dir):
+ os.path.walk(dir, listRep, (f,))
+ cmd = 'set default swig_root:[vms]'
+#
+f = open('swig_root:[vms.scripts]build_all.com','w')
+print >> f, '$!'
+print >> f, '$! Generated by genbuild.py'
+print >> f, '$!'
+print >> f, '$ set default swig_root:[vms]'
+print >> f, '$'
+print >> f, '$ @swig_root:[vms]build_init'
+#
+genbuild(f, '/swig_root/source')
+print >> f, '$'
+print >> f, '$ set default swig_root:[vms]'
+print >> f, '$'
+print >> f, '$ @swig_root:[vms]build_end'
+f.close