Clean up OpenVMS support.
This avoids cluttering the source code with VMS-specific changes.
* include/freetype/internal/ftcalc.h [__VMS], src/base/ftcalc.c
[vms_auto64_source]: Remove.
* builds/vms/patch_ftcalc.sed: New file.
* vms_make.com: Change macro definitions while this script is running; we
use `GNU sed` to inject the necessary preprocessor code on the fly.
diff --git a/builds/vms/patch_ftcalc.sed b/builds/vms/patch_ftcalc.sed
new file mode 100644
index 0000000..7917418
--- /dev/null
+++ b/builds/vms/patch_ftcalc.sed
@@ -0,0 +1,4 @@
+/^# *undef FT_MulFix/ a\
+# ifdef vms_auto64_source\
+# define FT_MulFix FT_MulFix64__\
+# endif
diff --git a/include/freetype/internal/ftcalc.h b/include/freetype/internal/ftcalc.h
index c6a79fb..dd33c56 100644
--- a/include/freetype/internal/ftcalc.h
+++ b/include/freetype/internal/ftcalc.h
@@ -100,12 +100,6 @@
}
-#ifdef __VMS
-# ifdef FT_MulFix
-# undef FT_MulFix
-# endif
-#endif
-
#define FT_MulFix( a, b ) FT_MulFix_64( a, b )
#elif !defined( FT_CONFIG_OPTION_NO_ASSEMBLER )
diff --git a/src/base/ftcalc.c b/src/base/ftcalc.c
index b5e2cba..c30f132 100644
--- a/src/base/ftcalc.c
+++ b/src/base/ftcalc.c
@@ -41,9 +41,6 @@
/* cancel inlining macro from internal/ftcalc.h */
#ifdef FT_MulFix
# undef FT_MulFix
-# ifdef vms_auto64_source
-# define FT_MulFix FT_MulFix64__
-# endif
#endif
diff --git a/vms_make.com b/vms_make.com
index 805a0d9..92b34c4 100644
--- a/vms_make.com
+++ b/vms_make.com
@@ -480,21 +480,22 @@
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
- cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
+ cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3,MACROREDEF))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ clang $(CXXFLAGS) -Wno-macro-redefined\
+ -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
- cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
+ cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3,MACROREDEF))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.endif
-OBJS=ftbase.obj,\
+OBJS=ftbase_vms.obj,\
ftbbox.obj,\
ftbdf.obj,\
ftbitmap.obj,\
@@ -511,7 +512,7 @@
fttype1.obj,\
ftwinfnt.obj,ftpatent.obj,ftgxval.obj,ftotval.obj
-OBJS64=ftbase_64.obj,\
+OBJS64=ftbase_vms_64.obj,\
ftbbox_64.obj,\
ftbdf_64.obj,\
ftbitmap_64.obj,\
@@ -528,7 +529,7 @@
fttype1_64.obj,\
ftwinfnt_64.obj,ftpatent_64.obj,ftgxval_64.obj,ftotval_64.obj
-OBJSCXX=ftbase_cxx.obj,\
+OBJSCXX=ftbase_vms_cxx.obj,\
ftbbox_cxx.obj,\
ftbdf_cxx.obj,\
ftbitmap_cxx.obj,\
@@ -545,7 +546,7 @@
fttype1_cxx.obj,\
ftwinfnt_cxx.obj,ftpatent_cxx.obj,ftgxval_cxx.obj,ftotval_cxx.obj
-OBJSCXX32=ftbase_cxx32.obj,\
+OBJSCXX32=ftbase_vms_cxx32.obj,\
ftbbox_cxx32.obj,\
ftbdf_cxx32.obj,\
ftbitmap_cxx32.obj,\
@@ -571,10 +572,37 @@
library [--.lib]freetype_cxx.olb $(OBJS64)
.endif
-ftbase.obj : ftbase.c ftadvanc.c ftcalc.c ftcolor.c ftdbgmem.c fterrors.c\
+.ifdef X86
+ftbase_vms.obj : ftbase.c ftadvanc.c ftcalc.c_vms ftcolor.c ftdbgmem.c fterrors.c\
ftfntfmt.c ftgloadr.c fthash.c ftlcdfil.c ftmac.c ftobjs.c ftoutln.c\
ftpsprop.c ftrfork.c ftsnames.c ftstream.c fttrigon.c ftutil.c
+ pipe gsed -e "s/ftcalc.c/ftcalc.c_vms/" < ftbase.c > ftbase_vms.c
+ clang $(CXXFLAGS) -pointer-size=32 -o ftbase_vms_cxx32.obj ftbase_vms.c
+ clang $(CXXFLAGS) -o ftbase_vms_cxx.obj ftbase_vms.c
+ cc$(CFLAGS)/warn=noinfo/point=32/list/show=all ftbase_vms.c
+ pipe link/map/full/exec=nl: ftbase_vms.obj | copy sys$input nl:
+ mc sys$library:vms_auto64 ftbase_vms.map
+ cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3,MACROREDEF))/point=64/obj=ftbase_vms_64.obj\
+ ftbase_vms_64.c
+ clang $(CXXFLAGS) -Wno-macro-redefined\
+ -o ftbase_vms_64_cxx.obj ftbase_vms_64.c
+ delete ftbase_vms_64.c;*
+.else
+ftbase_vms.obj : ftbase.c ftadvanc.c ftcalc.c_vms ftcolor.c ftdbgmem.c fterrors.c\
+ ftfntfmt.c ftgloadr.c fthash.c ftlcdfil.c ftmac.c ftobjs.c ftoutln.c\
+ ftpsprop.c ftrfork.c ftsnames.c ftstream.c fttrigon.c ftutil.c
+ pipe gsed -e "s/ftcalc.c/ftcalc.c_vms/" < ftbase.c > ftbase_vms.c
+ cc$(CFLAGS)/warn=noinfo/point=32/list/show=all ftbase_vms.c
+ pipe link/map/full/exec=nl: ftbase_vms.obj | copy sys$input nl:
+ mc sys$library:vms_auto64 ftbase_vms.map
+ cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3,MACROREDEF))/point=64/obj=ftbase_vms_64.obj\
+ ftbase_vms_64.c
+ delete ftbase_vms_64.c;*
+ delete ftbase_vms.c;*
+.endif
+ftcalc.c_vms : ftcalc.c
+ pipe gsed -f [--.builds.vms]patch_ftcalc.sed < ftcalc.c > ftcalc.c_vms
# EOF
$ eod
@@ -2158,9 +2186,9 @@
$ write sys$output "Unsupported compiler choice ''cc_com' ignored"
$ write sys$output "Use DECC, VAXC, or GNUC instead"
$ else
-$ if cc_com .eqs. "DECC" then its_decc = true
-$ if cc_com .eqs. "VAXC" then its_vaxc = true
-$ if cc_com .eqs. "GNUC" then its_gnuc = true
+$ if cc_com .eqs. "DECC" then its_decc = true
+$ if cc_com .eqs. "VAXC" then its_vaxc = true
+$ if cc_com .eqs. "GNUC" then its_gnuc = true
$ endif
$ endif
$ if f$locate("MAKE=",cparm) .lt. f$length(cparm)