On 02/26/2014 08:07 AM, John E. Malmberg wrote:
> I have removed it, because we need to move on.

Yes. I think beautifying the build environment wasn't really the goal.

> It is an issue on search lists, in some cases if the sys$disk:[] is
> missing, the file may not get found due to the stickyness of DCL file
> handling.  I may be putting in a few more places than absolutely needed
> just as a defensive measure.

There weren't sys$disk:[]s in all the places. In prepare_vms.com I
prefixed the parsed template file with one. It looked strange to search
with that prefix but then to have a result without. That broke the pipe
command, which I changed again to fit the 255 maximum of a DCL command
token (for versions prior to V8.2 of VMS).

In makefile.com, having objdir := sys$disk:[] but no such prefix in the
source file list and in the cc command seems to be inconsistent. I'm
still curious to see a problem without this prefix in the make build
environment.

> I think it is sloppy to have error messages for expected conditions.

Unfortunately VMS has no equivalent of "rm -f", delete/nolog isn't it.
But one can redirect the output of make.


diff --git a/config.h-vms.template b/config.h-vms.template
index 3b4bd3b..2126483 100644
--- a/config.h-vms.template
+++ b/config.h-vms.template
@@ -18,6 +18,12 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* config.h.  Generated automatically by configure.  */
 /* config.h.in.  Generated automatically from configure.ac by autoheader.  */
 
+/* Pull in types.h here to get __CRTL_VER defined for old versions of the
+   compiler which don't define it. */
+#ifdef __DECC
+# include <types.h>
+#endif
+
 /* Define to 1 if on AIX 3.
    System headers sometimes define this.
    We just want to avoid a redefinition error message.  */
@@ -373,14 +379,8 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* #undef _DIRENT_HAVE_D_NAMLEN */
 
 /* On older systems without 7.0 backport of CRTL the first one is defined */
-#ifdef __CRTL_VER
-# if __CRTL_VER < 70000000
-#  define HAVE_VMSDIR_H 1
-# endif
-#else
-# if __VMS_VER < 70000000
-#  define HAVE_VMSDIR_H 1
-# endif
+#if __CRTL_VER < 70000000
+# define HAVE_VMSDIR_H 1
 #endif
 
 #if defined(HAVE_VMSDIR_H) && defined(HAVE_DIRENT_H)
diff --git a/makefile.com b/makefile.com
index 6359c47..8e6b39b 100644
--- a/makefile.com
+++ b/makefile.com
@@ -1,8 +1,7 @@
 $!
 $! Makefile.com - builds GNU Make for VMS
 $!
-$! P1 is non-empty if you want to link with the VAXCRTL library instead
-$!    of the shareable executable
+$! P1 = LIST will provide compiler listings.
 $! P2 = DEBUG will build an image with debug information
 $! P3 = WALL will enable all warning messages (some are suppressed since
 $!      one macro intentionally causes an error condition)
@@ -50,6 +49,12 @@ $      endif
 $   endif
 $ endif
 $!
+$!
+$ if (p1 .eqs. "LIST")
+$ then
+$   ccopt = ccopt + "/list/show=(expan,inclu)"
+$ endif
+$!
 $! Should we build a debug image
 $!
 $ if (p2.eqs."DEBUG")
@@ -67,9 +72,11 @@ $ then
 $   gosub check_cc_qual
 $ endif
 $ filelist = "alloca ar arscan commands default dir expand file function " + -
-             "hash implicit job load main misc read remake remote-stub rule " + -
-	     "output signame variable version vmsfunctions vmsify vpath " + -
+             "guile hash implicit job load main misc read remake " + -
+             "remote-stub rule output signame variable version " + -
+             "vmsfunctions vmsify vpath " + -
 	     "[.glob]glob [.glob]fnmatch getopt1 getopt strcache"
+$!
 $ copy config.h-vms config.h
 $ n=0
 $ open/write optf make.opt
@@ -77,18 +84,14 @@ $ loop:
 $ cfile = f$elem(n," ",filelist)
 $ if cfile .eqs. " " then goto linkit
 $ write sys$output "Compiling ''cfile'..."
-$ call compileit 'cfile' 'p1'
+$ call compileit 'cfile'
 $ n = n + 1
 $ goto loop
 $ linkit:
 $ close optf
-$ if p1 .nes. "" then goto link_using_library
 $ link/exe=make make.opt/opt'lopt
 $ goto cleanup
 $
-$ link_using_library:
-$ link/exe=make make.opt/opt,sys$library:vaxcrtl/lib'lopt
-$
 $ cleanup:
 $ if f$trnlnm("SYS").nes."" then $ deassign sys
 $ if f$trnlnm("OPTF").nes."" then $ close optf
@@ -128,10 +131,15 @@ $!-----------------------------------------------------------------------------
 $!
 $ compileit : subroutine
 $ ploc = f$locate("]",p1)
-$ filnam = p1
-$ if ploc .lt. f$length(p1) then filnam=f$extract(ploc+1,100,p1)
-$ write optf "''filnam'"
-$ cc'ccopt'/include=([],[.glob]) -
+$ if ploc .lt. f$length(p1)
+$ then
+$   objdir = f$extract(0, ploc+1, p1)
+$   write optf p1
+$ else
+$   objdir := []
+$   write optf objdir+p1
+$ endif
+$ cc'ccopt'/include=([],[.glob])/obj='objdir' -
   /define=("allocated_variable_expand_for_file=alloc_var_expand_for_file","unlink=remove","HAVE_CONFIG_H","VMS") -
   'p1'
 $ exit
diff --git a/makefile.vms b/makefile.vms
index e5950b7..113ae54 100644
--- a/makefile.vms
+++ b/makefile.vms
@@ -88,13 +88,13 @@ mandir = []
 # Number to put on the man page filename.
 manext = 1
 
-#guile = ,guile.obj
+guile = ,guile.obj
 
 objs = commands.obj,job.obj,output.obj,dir.obj,file.obj,misc.obj,hash.obj,\
        load.obj,main.obj,read.obj,remake.obj,rule.obj,implicit.obj,\
        default.obj,variable.obj,expand.obj,function.obj,strcache.obj,\
-       vpath.obj,version.obj\
-       $(ARCHIVES)$(ALLOCA)$(extras)$(getopt)$(glob)$(guile)
+       vpath.obj,version.obj$(guile)\
+       $(ARCHIVES)$(ALLOCA)$(extras)$(getopt)$(glob)
 
 srcs = commands.c job.c output.c dir.c file.c misc.c guile.c hash.c \
 	load.c main.c read.c remake.c rule.c implicit.c \
@@ -131,7 +131,7 @@ file.obj: file.c makeint.h commands.h dep.h filedef.h variable.h job.h debug.h
 function.obj: function.c makeint.h variable.h dep.h commands.h filedef.h debug.h job.h
 getopt.obj: getopt.c getopt.h config.h gettext.h
 getopt1.obj: getopt1.c getopt.h config.h
-guile.obj: guile.c makeint.h debug.h dep.h gmk-default.h
+guile.obj: guile.c makeint.h debug.h dep.h
 hash.obj: hash.c makeint.h hash.h
 implicit.obj: implicit.c makeint.h rule.h dep.h filedef.h debug.h variable.h job.h commands.h
 job.obj: job.c vmsjobs.c makeint.h commands.h job.h filedef.h variable.h debug.h
diff --git a/prepare_vms.com b/prepare_vms.com
new file mode 100644
index 0000000..04f581f
--- /dev/null
+++ b/prepare_vms.com
@@ -0,0 +1,59 @@
+$!
+$! prepare_vms.com  - Build config.h-vms from master on VMS.
+$!
+$! This is used for building off the master instead of a release tarball.
+$!
+$!
+$!
+$! First try ODS-5, Pathworks V6 or UNZIP name.
+$!
+$ config_template = f$search("sys$disk:[]config*h-vms.template")
+$ if config_template .eqs. ""
+$ then
+$!
+$!  Try NFS, VMStar, or Pathworks V5 ODS-2 encoded name.
+$!
+$   config_template = f$search("sys$disk:[]config.h-vms*template")
+$   if config_template .eqs. ""
+$   then
+$       write sys$output "Could not find config.h-vms*template!"
+$       exit 44
+$   endif
+$ endif
+$ config_template_file = f$parse(config_template,,,"name")
+$ config_template_type = f$parse(config_template,,,"type")
+$ config_template = "sys$disk:[]" + config_template_file + config_template_type
+$!
+$!
+$! Pull the package and version from configure.ac
+$!
+$ open/read ac_file sys$disk:[]configure.ac
+$ac_read_loop:
+$ read ac_file/end=ac_read_loop_end line_in
+$ key = f$extract(0, 7, line_in)
+$ if key .nes. "AC_INIT" then goto ac_read_loop
+$ package = f$element (1,"[",line_in)
+$ package = f$element (0,"]",package)
+$ version = f$element (2,"[",line_in)
+$ version = f$element (0,"]",version)
+$ac_read_loop_end:
+$ close ac_file
+$!
+$ if (package .eqs. "") .or. (version .eqs. "")
+$ then
+$    write sys$output "Unable to determine package and/or version!"
+$    exit 44
+$ endif
+$!
+$!
+$ outfile = "sys$disk:[]config.h-vms"
+$!
+$! Note the pipe command is close to the length of 255, which is the
+$! maximum token length prior to VMS V8.2:
+$! %DCL-W-TKNOVF, command element is too long - shorten
+$ pipe (write sys$output "sub/%PACKAGE%/''package'/WHOLE/NOTYPE" ;-
+        write sys$output "sub/%VERSION%/''version'/WHOLE/NOTYPE" ;-
+        write sys$output "exit") |-
+       edit/edt 'config_template'/out='outfile'/command=sys$pipe >nla0:
+$!
+$ write sys$output package, ", version: ", version, " prepared for VMS"
_______________________________________________
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make

Reply via email to