diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-17 21:41:51 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-17 21:41:51 +0000 |
commit | 487ca4806cc046076293cf6cc5fbba0db282bac7 (patch) | |
tree | 847b412ab5158dd7bdd7ed7e5a4cc3fbca94be32 /Build/source/texk/dvipsk/vms/vms_gcc.txt | |
parent | a3d3111bfe26b8e5f5bc6049dfb2a4ca2edc7881 (diff) |
texk 1
git-svn-id: svn://tug.org/texlive/trunk@1485 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/dvipsk/vms/vms_gcc.txt')
-rw-r--r-- | Build/source/texk/dvipsk/vms/vms_gcc.txt | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/Build/source/texk/dvipsk/vms/vms_gcc.txt b/Build/source/texk/dvipsk/vms/vms_gcc.txt new file mode 100644 index 00000000000..5159ce6ddb1 --- /dev/null +++ b/Build/source/texk/dvipsk/vms/vms_gcc.txt @@ -0,0 +1,75 @@ + DVIPS & GNU C + +Changes that had to be made in order to compile the DVIPS program with the GNU +CC (GCC) compiler on Vax/VMS. + +(1) DVIPS.C +(a) Problem with 'include' files. The person who did the original port to VMS +used the : +#include filename +notation rather than the more traditional +#include "filename.h" +notation. With the VAX C compiler this means that the chosen header file is +extracted from the SYS$SHARE:VAXCDEF.TLB text library. Well, the GCC compiler +doesn't understand this notation. Now, I could've simply changed it so that if +the code was being compiled on a VMS machine then use the +#include "filename.h" +notation regardless of the compiler. But some sites may not have extracted the +header files from the text library when the VAX C compiler was installed. +This problem also affects the VMSCLI.C file on the [.VMS] directory. + +(b) The TFMPATH, PKPATH, etc.., definitions cannot be defined in the MAKEFILE +because the GCC.EXE program complains with the following error message... +% gcc-cpp command too long. Unable to compile. + +After removing some of the path definitions to shorten the command (just too +see roughly how big the buffer was) I eventually tricked the GCC.EXE program +into getting as far as executing the GNU_CC:[000000]GCC.COM command file but +it then complained, giving the following message... +%DCL-W-TKNOVF, command element is too long - shorten +So, I gave up and took the easy way out, i.e. put these PATH definitions back +in to a new GCC-specific PATHS.H, called VMS_GCC_PATHS.H + +(2) DOSPECIAL.C +The "tolower" macro, defined in GNU_CC:[INCLUDE]CTYPE.H, is too simple. It +doesn't check to see if the character is in the range 'A' to 'Z' therefore +we may as well use the "Tolower" function supplied in the DOSPECIAL.C file. + +(3) The MAKEFILE has been updated to handle the GCC compiler. It must be edited +by the user to select either the VAX11C or the GCC compiler. Search for the +strings VAXC or GNUC and comment out the appropriate lines. + +(4) VMS.H +The "getchar" macro is undefined if it already exists. This is just to stop the +warning message from the GCC compiler informing us that it is being redefined. +GNUC defines it in GNU_CC:[INCLUDE]STDIO.H + +(5) VAXVMS.C +Defined all the functions at the top of the file to keep the GCC compiler +quiet, since it reported the following problems... + +vaxvms.c;1: In function vms_ftell: +vaxvms.c;1:223: warning: `vms_ftell' was previously implicitly declared to return `int' +vaxvms.c;1: In function vms_ungetc: +vaxvms.c;1:296: warning: `vms_ungetc' was previously implicitly declared to return `int' +vaxvms.c;1: In function vms_getenv: + +Next, if using the GNU CC compiler then #include <stdlib.h> so that the +compiler knows all about the `strchr' and `getenv' functions, hence avoiding +the following warnings... + +vaxvms.c;1:331: warning: assignment of pointer from integer lacks a cast +vaxvms.c;1:333: warning: assignment of pointer from integer lacks a cast +vaxvms.c;1:336: warning: assignment of pointer from integer lacks a cast +vaxvms.c;1:340: warning: assignment of pointer from integer lacks a cast + +------------------------------------------------------------------------------- +These changes were tested with GCC 1.42 which is the current official release +of VMS GCC, available from any of the many GNU archive sites. These changes +were also tested with GCC 2.3.3 which is avaliable from MANGO.RSMAS.MIAMI.EDU +(pub/VMS-gcc). The problem to be aware of is that GNUC doesn't have a +CLIMSGDEF.H header file (needed for DVIPS.C). One way out it to create one by +hand from the output from ... +$ LIBRARY/MACRO/EXTRACT=$CLIMSGDEF/OUTPUT=SYS$OUTPUT SYS$LIBRARY:STARLET.MLB +The other solution is to use the more complete package of C header files +provided by Pat Rankin, also available at MANGO.RSMAS.MIAMI.EDU |