Patches refreshed. Also removed `configure' from ghostscript-sys-zlib.patch since the PKGBUILD will run autoconf anyway.
603 lines
21 KiB
Diff
603 lines
21 KiB
Diff
--- a/base/gp_mswin.c
|
|
+++ b/base/gp_mswin.c
|
|
@@ -989,7 +989,7 @@
|
|
|
|
/* ------------------------- _snprintf -----------------------------*/
|
|
|
|
-#if defined(_MSC_VER) && _MSC_VER>=1900 /* VS 2014 and later have (finally) snprintf */
|
|
+#if (defined(_MSC_VER) && _MSC_VER>=1900) || defined(__MINGW64_VERSION_MAJOR) /* VS 2014 and later have (finally) snprintf */
|
|
# define STDC99
|
|
#else
|
|
/* Microsoft Visual C++ 2005 doesn't properly define snprintf,
|
|
--- a/base/gp_mswin.h
|
|
+++ b/base/gp_mswin.h
|
|
@@ -56,4 +56,13 @@
|
|
|
|
#endif /* !defined(RC_INVOKED) */
|
|
|
|
+// in gp_mswin.c, mswin_popen is called
|
|
+// before it is implemented, so we must
|
|
+// provide a prototype (at least with GCC) to
|
|
+// avoid implicit definition with the wrong return type
|
|
+
|
|
+#ifdef __GNUC__
|
|
+FILE *mswin_popen(const char *cmd, const char *mode);
|
|
+#endif
|
|
+
|
|
#endif /* gp_mswin_INCLUDED */
|
|
--- a/base/gs.mak
|
|
+++ b/base/gs.mak
|
|
@@ -520,6 +520,7 @@
|
|
# save our set of makefile variables that are defined in every build (paths, etc.)
|
|
$(gconfigd_h) : $(ECHOGS_XE) $(GS_MAK) $(GLSRCDIR)$(D)version.mak $(MAKEDIRS)
|
|
$(EXP)$(ECHOGS_XE) -w $(gconfigd_h) -x 23 define -s -u GS_LIB_DEFAULT -x 2022 $(GS_LIB_DEFAULT) -x 22
|
|
+ $(MINGW_FONTPATH_PATCH_OR_EMPTY_COMMAND)
|
|
$(EXP)$(ECHOGS_XE) -a $(gconfigd_h) -x 23 define -s -u GS_DEV_DEFAULT -x 2022 $(GS_DEV_DEFAULT) -x 22
|
|
$(EXP)$(ECHOGS_XE) -a $(gconfigd_h) -x 23 define -s -u GS_CACHE_DIR -x 2022 $(GS_CACHE_DIR) -x 22
|
|
$(EXP)$(ECHOGS_XE) -a $(gconfigd_h) -x 23 define -s -u SEARCH_HERE_FIRST -s $(SEARCH_HERE_FIRST)
|
|
--- a/base/lib.mak
|
|
+++ b/base/lib.mak
|
|
@@ -42,13 +42,13 @@
|
|
# We can't use $(CC_) for GLLCMSCC becuase that includes /Za on
|
|
# msvc builds, and lcms configures itself to depend on msvc extensions
|
|
# (inline asm, including windows.h) when compiled under msvc.
|
|
-GLLCMSCC=$(CC) $(LCMS_CFLAGS) $(CFLAGS) $(I_)$(GLI_) $(II)$(LCMSSRCDIR)$(D)include$(_I) $(GLF_)
|
|
+GLLCMSCC=$(CC) $(LCMS_CFLAGS) $(CFLAGS) $(I_)$(GLI_) $(GLF_)
|
|
lcms_h=$(LCMSSRCDIR)$(D)include$(D)lcms.h
|
|
icc34_h=$(GLSRC)icc34.h
|
|
# We can't use $(CC_) for GLLCMS2CC becuase that includes /Za on
|
|
# msvc builds, and lcms configures itself to depend on msvc extensions
|
|
# (inline asm, including windows.h) when compiled under msvc.
|
|
-GLLCMS2CC=$(CC) $(LCMS2_CFLAGS) $(CFLAGS) $(I_)$(GLI_) $(II)$(LCMS2SRCDIR)$(D)include$(_I) $(GLF_)
|
|
+GLLCMS2CC=$(CC) $(LCMS2_CFLAGS) $(CFLAGS) $(I_)$(GLI_) $(GLF_)
|
|
lcms2_h=$(LCMS2SRCDIR)$(D)include$(D)lcms2.h
|
|
lcms2_plugin_h=$(LCMS2SRCDIR)$(D)include$(D)lcms2_plugin.h
|
|
|
|
--- /dev/null
|
|
+++ b/base/mingw-fp.sh
|
|
@@ -0,0 +1 @@
|
|
+sed -i -e 's?\\?/?g' $1
|
|
--- /dev/null
|
|
+++ b/base/mingw-fs.mak
|
|
@@ -0,0 +1,34 @@
|
|
+# MSys/MinGW file- and operating-system section
|
|
+# adapted from winplat.mak
|
|
+
|
|
+# Define the name of this makefile.
|
|
+
|
|
+MINGW_FS_MAK=$(GLSRC)mingw-fs.mak
|
|
+
|
|
+# Define generic Windows-specific modules.
|
|
+
|
|
+mingw-fs_=$(GLOBJ)gp_ntfs.$(OBJ) $(GLOBJ)gp_win32.$(OBJ)
|
|
+$(GLD)mingw-fs.dev : $(MINGW_FS_MAK) $(ECHOGS_XE) $(mingw-fs_)
|
|
+ $(SETMOD) $(GLD)mingw-fs $(mingw-fs_)
|
|
+
|
|
+$(GLOBJ)gp_ntfs.$(OBJ): $(GLSRC)gp_ntfs.c $(AK)\
|
|
+ $(dos__h) $(memory__h) $(stdio__h) $(string__h) $(windows__h)\
|
|
+ $(gp_h) $(gpmisc_h) $(gsmemory_h) $(gsstruct_h) $(gstypes_h) $(gsutil_h)
|
|
+ $(GLCC) $(GLO_)gp_ntfs.$(OBJ) $(C_) $(GLSRC)gp_ntfs.c
|
|
+
|
|
+$(GLOBJ)gp_win32.$(OBJ): $(GLSRC)gp_win32.c $(AK)\
|
|
+ $(dos__h) $(malloc__h) $(stdio__h) $(string__h) $(windows__h)\
|
|
+ $(gp_h) $(gsmemory_h) $(gstypes_h)
|
|
+ $(GLCC) $(GLO_)gp_win32.$(OBJ) $(C_) $(GLSRC)gp_win32.c
|
|
+
|
|
+# Define the Windows thread / synchronization module.
|
|
+
|
|
+winsync_=$(GLOBJ)gp_wsync.$(OBJ)
|
|
+$(GLD)winsync.dev : $(MINGW_FS_MAK) $(ECHOGS_XE) $(winsync_)
|
|
+ $(SETMOD) $(GLD)winsync $(winsync_)
|
|
+ $(ADDMOD) $(GLD)winsync -replace $(GLD)nosync
|
|
+
|
|
+$(GLOBJ)gp_wsync.$(OBJ): $(GLSRC)gp_wsync.c $(AK)\
|
|
+ $(dos__h) $(malloc__h) $(stdio__h) $(string__h) $(windows__h)\
|
|
+ $(gp_h) $(gsmemory_h) $(gstypes_h)
|
|
+ $(GLCC) $(GLO_)gp_wsync.$(OBJ) $(C_) $(GLSRC)gp_wsync.c
|
|
--- /dev/null
|
|
+++ b/base/mingwlib.mak
|
|
@@ -0,0 +1,76 @@
|
|
+# Common makefile section for MSys/MinGW
|
|
+# adapted from winlib.mak
|
|
+
|
|
+# Define the files to be removed by `make clean'.
|
|
+# nmake expands macros when encountered, not when used,
|
|
+# so this must precede the !include statements.
|
|
+
|
|
+BEGINFILES=$(GLGENDIR)\ccf32.tr\
|
|
+ $(GLOBJDIR)\*.res $(GLOBJDIR)\*.ico\
|
|
+ $(BINDIR)\$(GSDLL).dll $(BINDIR)\$(GSCONSOLE).exe\
|
|
+ $(BINDIR)\setupgs.exe $(BINDIR)\uninstgs.exe\
|
|
+ $(GLOBJDIR)\cups\*.h\
|
|
+ $(BEGINFILES2)
|
|
+
|
|
+# -------------------------------- Library -------------------------------- #
|
|
+
|
|
+# The MSys/MinGW Win32 platform
|
|
+
|
|
+mingw32__=$(GLOBJ)gp_mswin.$(OBJ) $(GLOBJ)gp_wgetv.$(OBJ) $(GLOBJ)gp_wpapr.$(OBJ) \
|
|
+ $(GLOBJ)gp_stdia.$(OBJ) $(GLOBJ)gp_wutf8.$(OBJ)
|
|
+mingw32_inc=$(GLD)nosync.dev $(GLD)mingw-fs.dev
|
|
+
|
|
+$(GLGEN)mingw32_.dev: $(mingw32__) $(ECHOGS_XE) $(mingw32_inc)
|
|
+ $(SETMOD) $(GLGEN)mingw32_ $(mingw32__)
|
|
+ $(ADDMOD) $(GLGEN)mingw32_ -include $(mingw32_inc)
|
|
+
|
|
+$(GLOBJ)gp_mswin.$(OBJ): $(GLSRC)gp_mswin.c $(AK) $(gp_mswin_h) \
|
|
+ $(ctype__h) $(dos__h) $(malloc__h) $(memory__h) $(pipe__h) \
|
|
+ $(stdio__h) $(string__h) $(windows__h) $(winspool_h)\
|
|
+ $(gx_h) $(gp_h) $(gpcheck_h) $(gpmisc_h) $(gserrors_h) $(gsexit_h)
|
|
+ $(GLCC) $(GLO_)gp_mswin.$(OBJ) $(C_) $(GLSRC)gp_mswin.c
|
|
+
|
|
+$(GLOBJ)gp_wutf8.$(OBJ): $(GLSRC)gp_wutf8.c $(windows__h)
|
|
+ $(GLCC) $(GLO_)gp_wutf8.$(OBJ) $(C_) $(GLSRC)gp_wutf8.c
|
|
+
|
|
+$(GLOBJ)gp_wgetv.$(OBJ): $(GLSRC)gp_wgetv.c $(AK) $(gscdefs_h)
|
|
+ $(GLCC) $(GLO_)gp_wgetv.$(OBJ) $(C_) $(GLSRC)gp_wgetv.c
|
|
+
|
|
+$(GLOBJ)gp_wpapr.$(OBJ): $(GLSRC)gp_wpapr.c $(AK) $(gp_h)
|
|
+ $(GLCC) $(GLO_)gp_wpapr.$(OBJ) $(C_) $(GLSRC)gp_wpapr.c
|
|
+
|
|
+# Define MS-Windows handles (file system) as a separable feature.
|
|
+
|
|
+mshandle_=$(GLOBJ)gp_mshdl.$(OBJ)
|
|
+$(GLD)mshandle.dev: $(ECHOGS_XE) $(mshandle_)
|
|
+ $(SETMOD) $(GLD)mshandle $(mshandle_)
|
|
+ $(ADDMOD) $(GLD)mshandle -iodev handle
|
|
+
|
|
+$(GLOBJ)gp_mshdl.$(OBJ): $(GLSRC)gp_mshdl.c $(AK)\
|
|
+ $(ctype__h) $(errno__h) $(stdio__h) $(string__h)\
|
|
+ $(gsmemory_h) $(gstypes_h) $(gxiodev_h) $(gserrors_h)
|
|
+ $(GLCC) $(GLO_)gp_mshdl.$(OBJ) $(C_) $(GLSRC)gp_mshdl.c
|
|
+
|
|
+# Define MS-Windows printer (file system) as a separable feature.
|
|
+
|
|
+msprinter_=$(GLOBJ)gp_msprn.$(OBJ)
|
|
+$(GLD)msprinter.dev: $(ECHOGS_XE) $(msprinter_)
|
|
+ $(SETMOD) $(GLD)msprinter $(msprinter_)
|
|
+ $(ADDMOD) $(GLD)msprinter -iodev printer
|
|
+
|
|
+$(GLOBJ)gp_msprn.$(OBJ): $(GLSRC)gp_msprn.c $(AK)\
|
|
+ $(ctype__h) $(errno__h) $(stdio__h) $(string__h)\
|
|
+ $(gsmemory_h) $(gstypes_h) $(gxiodev_h)
|
|
+ $(GLCC) $(GLO_)gp_msprn.$(OBJ) $(C_) $(GLSRC)gp_msprn.c
|
|
+
|
|
+# Define MS-Windows polling as a separable feature
|
|
+# because it is not needed by the gslib.
|
|
+mspoll_=$(GLOBJ)gp_mspol.$(OBJ)
|
|
+$(GLD)mspoll.dev: $(ECHOGS_XE) $(mspoll_)
|
|
+ $(SETMOD) $(GLD)mspoll $(mspoll_)
|
|
+
|
|
+$(GLOBJ)gp_mspol.$(OBJ): $(GLSRC)gp_mspol.c $(AK)\
|
|
+ $(gx_h) $(gp_h) $(gpcheck_h)
|
|
+ $(GLCC) $(GLO_)gp_mspol.$(OBJ) $(C_) $(GLSRC)gp_mspol.c
|
|
+
|
|
+# end of mingwlib.mak
|
|
--- a/base/time_.h
|
|
+++ b/base/time_.h
|
|
@@ -78,7 +78,7 @@
|
|
#endif
|
|
|
|
/* Some System V environments, and Posix environments, need <sys/times.h>. */
|
|
-#if defined(HAVE_SYS_TIMES_H) && HAVE_SYS_TIMES_H == 1
|
|
+#if defined(HAVE_SYS_TIMES_H) && HAVE_SYS_TIMES_H == 1 && !defined(__MINGW32__)
|
|
# include <sys/times.h>
|
|
# define use_times_for_usertime 1
|
|
/* Posix 1003.1b-1993 section 4.8.1.5 says that
|
|
--- a/base/unix-aux.mak
|
|
+++ b/base/unix-aux.mak
|
|
@@ -69,6 +69,13 @@
|
|
$(UNIX_AUX_MAK) $(MAKEDIRS)
|
|
$(GLCC) $(GLO_)gp_sysv.$(OBJ) $(C_) $(GLSRC)gp_sysv.c
|
|
|
|
+# the MINGW platform / build environment, joining unix for the ride
|
|
+mingw__=$(GLOBJ)gp_wgetv.$(OBJ) $(GLOBJ)gp_wpapr.$(OBJ) $(GLOBJ)gp_win32.$(OBJ) $(GLOBJ)gp_mswin.$(OBJ) $(GLOBJ)gp_ntfs.$(OBJ) $(GLOBJ)gp_stdia.$(OBJ) $(GLOBJ)gp_wutf8.$(OBJ) $(GLOBJ)gp_nxpsprn.$(OBJ)
|
|
+$(GLGEN)mingw_.dev: $(mingw__) $(GLD)nosync.dev $(GLD)smd5.dev
|
|
+ $(SETMOD) $(GLGEN)mingw_ $(mingw__) -include $(GLD)nosync
|
|
+ $(ADDMOD) $(GLGEN)mingw_ -include $(GLD)smd5
|
|
+
|
|
+
|
|
# -------------------------- Auxiliary programs --------------------------- #
|
|
|
|
$(ECHOGS_XE): $(GLSRC)echogs.c $(AK) $(stdpre_h) $(UNIX_AUX_MAK) $(MAKEDIRS)
|
|
@@ -91,18 +98,31 @@
|
|
# To get GS to use the system zlib, you remove/hide the gs/zlib directory
|
|
# which means that the mkromfs build can't find the zlib source it needs.
|
|
# So it's split into two targets, one using the zlib source directly.....
|
|
-MKROMFS_OBJS_0=$(MKROMFS_ZLIB_OBJS) $(AUX)gpmisc.$(OBJ) $(AUX)gp_getnv.$(OBJ) \
|
|
- $(AUX)gscdefs.$(OBJ) $(AUX)gp_unix.$(OBJ) $(AUX)gp_unifs.$(OBJ) $(AUX)gp_unifn.$(OBJ) \
|
|
- $(AUX)gp_stdia.$(OBJ) $(AUX)gsutil.$(OBJ) $(AUX)memento.$(OBJ)
|
|
+ifeq ($(MINGW_BUILD), 1)
|
|
+ MKROMFS_OBJS_0=$(MKROMFS_ZLIB_OBJS) $(AUX)gpmisc.$(OBJ) $(AUX)gp_getnv.$(OBJ) \
|
|
+ $(AUX)gscdefs.$(OBJ) $(AUX)gp_ntfs.$(OBJ) $(AUX)gp_mswin.$(OBJ) \
|
|
+ $(AUX)gp_stdia.$(OBJ) $(AUX)gsutil.$(OBJ) $(AUX)memento.$(OBJ)
|
|
+else
|
|
+ MKROMFS_OBJS_0=$(MKROMFS_ZLIB_OBJS) $(AUX)gpmisc.$(OBJ) $(AUX)gp_getnv.$(OBJ) \
|
|
+ $(AUX)gscdefs.$(OBJ) $(AUX)gp_unix.$(OBJ) $(AUX)gp_unifs.$(OBJ) $(AUX)gp_unifn.$(OBJ) \
|
|
+ $(AUX)gp_stdia.$(OBJ) $(AUX)gsutil.$(OBJ) $(AUX)memento.$(OBJ)
|
|
+endif
|
|
|
|
$(MKROMFS_XE)_0: $(GLSRC)mkromfs.c $(MKROMFS_COMMON_DEPS) $(MKROMFS_OBJS_0) $(UNIX_AUX_MAK) $(MAKEDIRS)
|
|
$(CCAUX_) $(GENOPT) $(CFLAGS) $(I_)$(GLSRCDIR)$(_I) $(I_)$(GLOBJ)$(_I) $(I_)$(ZSRCDIR)$(_I) $(GLSRC)mkromfs.c $(O_)$(MKROMFS_XE)_0 $(MKROMFS_OBJS_0) $(AUXEXTRALIBS)
|
|
|
|
# .... and one using the zlib library linked via the command line
|
|
-MKROMFS_OBJS_1=$(AUX)gscdefs.$(OBJ) \
|
|
- $(AUX)gpmisc.$(OBJ) $(AUX)gp_getnv.$(OBJ) \
|
|
- $(AUX)gp_unix.$(OBJ) $(AUX)gp_unifs.$(OBJ) $(AUX)gp_unifn.$(OBJ) \
|
|
- $(AUX)gp_stdia.$(OBJ) $(AUX)gsutil.$(OBJ)
|
|
+# (here two, MINGW has a different set of dependencies,
|
|
+# most notably gp_ntfs and gp_wutf8)
|
|
+ifeq ($(MINGW_BUILD), 1)
|
|
+ MKROMFS_OBJS_1=$(GLOBJ)gp_ntfs.$(OBJ) $(GLOBJ)gp_wutf8.$(OBJ) \
|
|
+ $(GLOBJ)gpmisc.$(OBJ) $(GLOBJ)gp_wgetv.$(OBJ) $(GLOBJ)gscdefs.$(OBJ)
|
|
+else
|
|
+ MKROMFS_OBJS_1=$(AUX)gscdefs.$(OBJ) \
|
|
+ $(AUX)gpmisc.$(OBJ) $(AUX)gp_getnv.$(OBJ) \
|
|
+ $(AUX)gp_unix.$(OBJ) $(AUX)gp_unifs.$(OBJ) $(AUX)gp_unifn.$(OBJ) \
|
|
+ $(AUX)gp_stdia.$(OBJ) $(AUX)gsutil.$(OBJ)
|
|
+endif
|
|
|
|
$(MKROMFS_XE)_1: $(GLSRC)mkromfs.c $(MKROMFS_COMMON_DEPS) $(MKROMFS_OBJS_1) $(UNIX_AUX_MAK) $(MAKEDIRS)
|
|
$(CCAUX_) $(GENOPT) $(CFLAGS) $(I_)$(GLSRCDIR)$(_I) $(I_)$(GLOBJ)$(_I) $(I_)$(ZSRCDIR)$(_I) $(GLSRC)mkromfs.c $(O_)$(MKROMFS_XE)_1 $(MKROMFS_OBJS_1) $(AUXEXTRALIBS)
|
|
--- a/base/unix-dll.mak
|
|
+++ b/base/unix-dll.mak
|
|
@@ -35,17 +35,38 @@
|
|
# Shared object names
|
|
|
|
# simple loader (no support for display device)
|
|
-GSSOC_XENAME=$(GS_SO_BASE)c$(XE)
|
|
+ifeq ($(MINGW_WITH_WINLIB_NAMES), 1)
|
|
+ GSSOC_XENAME=gswin$(MINGW_PLATFORM_BITS)c$(XE)
|
|
+else
|
|
+ GSSOC_XENAME=$(GS_SO_BASE)c$(XE)
|
|
+endif
|
|
+
|
|
GSSOC_XE=$(BINDIR)/$(GSSOC_XENAME)
|
|
GSSOC=$(BINDIR)/$(GSSOC_XENAME)
|
|
|
|
# loader suporting display device using Gtk+
|
|
-GSSOX_XENAME=$(GS_SO_BASE)x$(XE)
|
|
+ifeq ($(MINGW_WITH_WINLIB_NAMES), 1)
|
|
+ GSSOX_XENAME=gswin$(MINGW_PLATFORM_BITS)$(XE)
|
|
+else
|
|
+ GSSOX_XENAME=$(GS_SO_BASE)x$(XE)
|
|
+endif
|
|
+
|
|
GSSOX_XE=$(BINDIR)/$(GSSOX_XENAME)
|
|
GSSOX=$(BINDIR)/$(GSSOX_XENAME)
|
|
|
|
-# shared library
|
|
-GS_SONAME_BASE=lib$(GS_SO_BASE)
|
|
+# shared library: handle unix and mingw library names
|
|
+ifeq ($(MINGW_BUILD), 1)
|
|
+ ifeq ($(MINGW_WITH_WINLIB_NAMES), 1)
|
|
+ GS_SONAME_BASE=gsdll$(MINGW_PLATFORM_BITS)
|
|
+ GS_SONAME_LINK=$(GS_SONAME_BASE)
|
|
+ else
|
|
+ GS_SONAME_BASE=lib$(GS_SO_BASE)
|
|
+ GS_SONAME_LINK=lib$(GS_SO_BASE)
|
|
+ endif
|
|
+else
|
|
+ GS_SONAME_BASE=lib$(GS_SO_BASE)
|
|
+ GS_SONAME_LINK=$(GS_SO_BASE)
|
|
+endif
|
|
|
|
# GNU/Linux
|
|
GS_SOEXT=$(SO_LIB_EXT)
|
|
@@ -82,30 +103,30 @@
|
|
|
|
# Create symbolic links to the Ghostscript interpreter library
|
|
|
|
-$(GS_SO): $(GS_SO_MAJOR) $(UNIX_DLL_MAK) $(MAKEDIRS)
|
|
+$(GS_SO): $(GS_SO_MAJOR_MINOR) $(UNIX_DLL_MAK) $(MAKEDIRS)
|
|
$(RM_) $(GS_SO)
|
|
- ln -s $(GS_SONAME_MAJOR_MINOR) $(GS_SO)
|
|
+ ln -s $(GS_SONAME_MAJOR) $(GS_SO)
|
|
|
|
-$(GS_SO_MAJOR): $(GS_SO_MAJOR_MINOR) $(UNIX_DLL_MAK) $(MAKEDIRS)
|
|
- $(RM_) $(GS_SO_MAJOR)
|
|
- ln -s $(GS_SONAME_MAJOR_MINOR) $(GS_SO_MAJOR)
|
|
+$(GS_SO_MAJOR_MINOR): $(GS_SO_MAJOR) $(UNIX_DLL_MAK) $(MAKEDIRS)
|
|
+ $(RM_) $(GS_SO_MAJOR_MINOR)
|
|
+ ln -s $(GS_SONAME_MAJOR) $(GS_SO_MAJOR_MINOR)
|
|
|
|
so-links-subtarget: $(GS_SO) $(UNIX_DLL_MAK) $(MAKEDIRS)
|
|
$(NO_OP)
|
|
|
|
# Build the small Ghostscript loaders, with Gtk+ and without
|
|
$(GSSOC_XE): so-links-subtarget $(PSSRC)$(SOC_LOADER) $(UNIX_DLL_MAK) $(MAKEDIRS)
|
|
- $(GLCC) -g -o $(GSSOC_XE) $(PSSRC)dxmainc.c \
|
|
- -L$(BINDIR) -l$(GS_SO_BASE)
|
|
+ $(GLCC) -g -o $(GSSOC_XE) $(PSSRC)$(SOC_LOADER_PLAIN) \
|
|
+ -L$(BINDIR) -l$(GS_SONAME_LINK)
|
|
|
|
$(GSSOX_XE): so-links-subtarget $(PSSRC)$(SOC_LOADER) $(UNIX_DLL_MAK) $(MAKEDIRS)
|
|
$(GLCC) -g $(SOC_CFLAGS) -o $(GSSOX_XE) $(PSSRC)$(SOC_LOADER) \
|
|
- -L$(BINDIR) -l$(GS_SO_BASE) $(SOC_LIBS)
|
|
+ -L$(BINDIR) -l$(GS_SONAME_LINK) $(SOC_LIBS)
|
|
|
|
# ------------------------- Recursive make targets ------------------------- #
|
|
|
|
SODEFS=\
|
|
- GS_XE=$(BINDIR)/$(GS_SONAME_MAJOR_MINOR)\
|
|
+ GS_XE=$(BINDIR)/$(GS_SONAME_MAJOR)\
|
|
DISPLAY_DEV=$(DD)display.dev\
|
|
STDIO_IMPLEMENTATION=c\
|
|
BUILDDIRPREFIX=$(BUILDDIRPREFIX)
|
|
@@ -179,11 +200,17 @@
|
|
-mkdir -p $(DESTDIR)$(gsincludedir)
|
|
$(INSTALL_PROGRAM) $(GSSOC) $(DESTDIR)$(bindir)/$(GSSOC_XENAME)
|
|
$(INSTALL_PROGRAM) $(GSSOX) $(DESTDIR)$(bindir)/$(GSSOX_XENAME)
|
|
- $(INSTALL_PROGRAM) $(BINDIR)/$(GS_SONAME_MAJOR_MINOR) $(DESTDIR)$(libdir)/$(GS_SONAME_MAJOR_MINOR)
|
|
- $(RM_) $(DESTDIR)$(libdir)/$(GS_SONAME)
|
|
- ln -s $(GS_SONAME_MAJOR_MINOR) $(DESTDIR)$(libdir)/$(GS_SONAME)
|
|
- $(RM_) $(DESTDIR)$(libdir)/$(GS_SONAME_MAJOR)
|
|
- ln -s $(GS_SONAME_MAJOR_MINOR) $(DESTDIR)$(libdir)/$(GS_SONAME_MAJOR)
|
|
+ @if test "$(MINGW_BUILD)" = "1" ; then \
|
|
+ $(INSTALL_PROGRAM) $(BINDIR)/$(GS_SONAME_MAJOR) $(DESTDIR)$(bindir)/$(GS_SONAME_MAJOR) ; \
|
|
+ $(INSTALL_PROGRAM) $(BINDIR)/$(GS_SONAME_LINK).dll.a $(DESTDIR)$(libdir)/$(GS_SONAME_LINK).dll.a ; \
|
|
+ else \
|
|
+ $(INSTALL_PROGRAM) $(BINDIR)/$(GS_SONAME_MAJOR) $(DESTDIR)$(libdir)/$(GS_SONAME_MAJOR) ; \
|
|
+ $(RM_) $(DESTDIR)$(libdir)/$(GS_SONAME) ; \
|
|
+ ln -s $(GS_SONAME_MAJOR) $(DESTDIR)$(libdir)/$(GS_SONAME) ; \
|
|
+ $(RM_) $(DESTDIR)$(libdir)/$(GS_SONAME_MAJOR) ; \
|
|
+ ln -s $(GS_SONAME_MAJOR) $(DESTDIR)$(libdir)/$(GS_SONAME_MAJOR_MINOR) ; \
|
|
+ fi
|
|
+ $(INSTALL_DATA) $(GLSRCDIR)/gserrors.h $(DESTDIR)$(gsincludedir)gserrors.h
|
|
$(INSTALL_DATA) $(PSSRC)iapi.h $(DESTDIR)$(gsincludedir)iapi.h
|
|
$(INSTALL_DATA) $(PSSRC)ierrors.h $(DESTDIR)$(gsincludedir)ierrors.h
|
|
$(INSTALL_DATA) $(GLSRC)gserrors.h $(DESTDIR)$(gsincludedir)gserrors.h
|
|
--- a/base/unix-gcc.mak
|
|
+++ b/base/unix-gcc.mak
|
|
@@ -79,7 +79,7 @@
|
|
INSTALL_DATA = $(INSTALL) -m 644
|
|
INSTALL_SHARED =
|
|
|
|
-prefix = /usr/local
|
|
+prefix = /usr
|
|
exec_prefix = ${prefix}
|
|
bindir = ${exec_prefix}/bin
|
|
scriptdir = $(bindir)
|
|
@@ -98,7 +98,7 @@
|
|
gssharedir = ${exec_prefix}/lib/ghostscript/$(GS_DOT_VERSION)
|
|
gsincludedir = ${prefix}/include/ghostscript/
|
|
|
|
-docdir=$(gsdatadir)/doc
|
|
+docdir=$(gsdatadir)/doc/ghostscript-$(GS_DOT_VERSION)
|
|
exdir=$(gsdatadir)/examples
|
|
GS_DOCDIR=$(docdir)
|
|
|
|
--- a/base/unixhead.mak
|
|
+++ b/base/unixhead.mak
|
|
@@ -22,7 +22,12 @@
|
|
# Define the platform name. For a "stock" System V platform,
|
|
# use sysv_ instead of unix_.
|
|
|
|
-GSPLATFORM=unix_
|
|
+# select platform: unix or mingw
|
|
+ifeq ($(MINGW_BUILD), 1)
|
|
+ GSPLATFORM=mingw_
|
|
+else
|
|
+ GSPLATFORM=unix_
|
|
+endif
|
|
|
|
# Define the syntax for command, object, and executable files.
|
|
|
|
@@ -65,3 +70,9 @@
|
|
# Define the compilation rules and flags.
|
|
|
|
BEGINFILES=
|
|
+
|
|
+ifeq ($(MINGW_BUILD), 1)
|
|
+ MINGW_FONTPATH_PATCH_OR_EMPTY_COMMAND=$(SH) $(GLSRCDIR)/mingw-fp.sh $(gconfigd_h)
|
|
+else
|
|
+ MINGW_FONTPATH_PATCH_OR_EMPTY_COMMAND=
|
|
+endif
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -187,6 +187,26 @@
|
|
SET_DT_SONAME="so"
|
|
fi
|
|
;;
|
|
+ MINGW*)
|
|
+ MINGW_BUILD=1
|
|
+ MINGW_PLATFORM=`uname`
|
|
+ MINGW_XTLIBS="-lwinspool"
|
|
+
|
|
+ # inner MINGW case statement: 32/64 bits
|
|
+ case $MINGW_PLATFORM in
|
|
+ MINGW32*)
|
|
+ MINGW_PLATFORM_BITS=32
|
|
+ ;;
|
|
+ MINGW64*)
|
|
+ MINGW_PLATFORM_BITS=64
|
|
+ ;;
|
|
+ esac
|
|
+
|
|
+ AC_SUBST(MINGW_BUILD)
|
|
+ AC_SUBST(MINGW_PLATFORM)
|
|
+ AC_SUBST(MINGW_PLATFORM_BITS)
|
|
+ AC_SUBST(MINGW_XTLIBS)
|
|
+ ;;
|
|
esac
|
|
|
|
AC_SUBST(SET_DT_SONAME)
|
|
@@ -1521,12 +1541,41 @@
|
|
AC_SUBST(SHARE_JPX)
|
|
AC_SUBST(JPXDEVS)
|
|
|
|
+dnl checks for MinGW shared object name and gdi must precede the gtk checks
|
|
+dnl check whether MinGW should use the MSVC dll names
|
|
+AC_ARG_WITH([winlib-names], AC_HELP_STRING([--with-winlib-names],
|
|
+ [MSys/MinGW only: dll and executable names should be gsdll32.dll (gsdll64.dll), gswin32.exe (gswin64.exe), and gswin32c.exe (gswin64c.exe)]),
|
|
+ [], [with_winlib_names=no])
|
|
+if test "x$with_winlib_names" = "xyes"; then
|
|
+ MINGW_WITH_WINLIB_NAMES=1
|
|
+fi
|
|
+
|
|
+dnl check whether MinGW should use the gdi-based (dwmain.c, dwmainc.c) front end
|
|
+AC_ARG_WITH([gdi], AC_HELP_STRING([--with-gdi],
|
|
+ [MSys/MinGW only: use the gdi-based Shared Object loaders (dwmain.c & dwmainc.c; implies --with-winlib-names=yes): not yet implemented]),
|
|
+ [], [with_gdi=no])
|
|
+if test "x$with_gdi" = "xyes"; then
|
|
+ MINGW_WITH_WINLIB_NAMES=1
|
|
+ MINGW_WITH_GDI=1
|
|
+ # SOC_LOADER value will be set after the initial gtk test
|
|
+fi
|
|
+
|
|
+AC_SUBST(MINGW_WITH_WINLIB_NAMES)
|
|
+AC_SUBST(MINGW_WITH_GDI)
|
|
+
|
|
dnl check if we can/should build the gtk loader
|
|
AC_ARG_ENABLE([gtk], AC_HELP_STRING([--disable-gtk],
|
|
[Do not build the gtk loader]))
|
|
SOC_CFLAGS=""
|
|
SOC_LIBS=""
|
|
-SOC_LOADER=""
|
|
+SOC_LOADER="" # default may not be set before the gtk+-2.0 test
|
|
+SOC_LOADER_PLAIN=""
|
|
+
|
|
+if test "x$with_gdi" = "xyes"; then
|
|
+ AC_MSG_WARN([the gdi front end under MSys/MinGW is not yet implemented])
|
|
+ enable_gtk=yes # try to use gtk+ instead
|
|
+fi
|
|
+
|
|
if test "x$enable_gtk" != "xno"; then
|
|
# Try GTK+ 3.x first...
|
|
if test "x$PKGCONFIG" != x; then
|
|
@@ -1559,9 +1608,15 @@
|
|
SOC_LOADER="dxmainc.c"
|
|
fi
|
|
|
|
+dnl set default SOC_LOADER_PLAIN as necessary
|
|
+if test "x$SOC_LOADER_PLAIN" = x; then
|
|
+ SOC_LOADER_PLAIN="dxmainc.c"
|
|
+fi
|
|
+
|
|
AC_SUBST(SOC_CFLAGS)
|
|
AC_SUBST(SOC_LIBS)
|
|
AC_SUBST(SOC_LOADER)
|
|
+AC_SUBST(SOC_LOADER_PLAIN)
|
|
|
|
dnl look for omni implementation
|
|
AC_ARG_WITH([omni], AC_HELP_STRING([--with-omni],
|
|
@@ -2103,6 +2158,12 @@
|
|
DYNAMIC_LDFLAGS="-shared -Wl,-brtl,-G -fPIC"
|
|
SO_LIB_EXT=".so"
|
|
;;
|
|
+ MINGW*)
|
|
+ DYNAMIC_CFLAGS="-fPIC"
|
|
+ DYNAMIC_LDFLAGS="-fPIC -shared"
|
|
+ DYNAMIC_LIBS=""
|
|
+ DYNANIC_LIB_EXT="dll"
|
|
+ ;;
|
|
esac
|
|
|
|
AC_ARG_ENABLE([dynamic], AC_HELP_STRING([--enable-dynamic],
|
|
@@ -2175,6 +2236,20 @@
|
|
fi
|
|
|
|
dnl Fix "fontpath" variable...
|
|
+if test $MINGW_BUILD = 1; then
|
|
+ # Add a reference to the Windows Fonts directory.
|
|
+ # This must take place priot to the test below,
|
|
+ # as it is also our way to avoid inclusion
|
|
+ # of the various unix font directories.
|
|
+ # Since gs uses here a colon as delimiter,
|
|
+ # we must refer to %windir% as /c/Windows
|
|
+ if test "x$fontpath" = "x"; then
|
|
+ fontpath="/c/Windows/Fonts"
|
|
+ else
|
|
+ fontpath="${fontpath}:/c/Windows/Fonts"
|
|
+ fi
|
|
+fi
|
|
+
|
|
if test "x$fontpath" = "x"; then
|
|
# These font directories are used by various Linux distributions...
|
|
fontpath="$datadir/fonts/default/ghostscript"
|
|
--- a/Makefile.in
|
|
+++ b/Makefile.in
|
|
@@ -60,6 +60,14 @@
|
|
|
|
CONTRIBDIR=@srcdir@/contrib
|
|
|
|
+# ------ MINGW options ------ #
|
|
+
|
|
+MINGW_BUILD=@MINGW_BUILD@
|
|
+MINGW_PLATFORM=@MINGW_PLATFORM@
|
|
+MINGW_PLATFORM_BITS=@MINGW_PLATFORM_BITS@
|
|
+MINGW_WITH_WINLIB_NAMES=@MINGW_WITH_WINLIB_NAMES@
|
|
+MINGW_WITH_GDI=@MINGW_WITH_GDI@
|
|
+
|
|
# Do not edit the next group of lines.
|
|
|
|
include $(GLSRCDIR)/version.mak
|
|
@@ -433,8 +441,8 @@
|
|
# Solaris may need -lnsl -lsocket -lposix4.
|
|
# (Libraries required by individual drivers are handled automatically.)
|
|
|
|
-EXTRALIBS=$(XTRALIBS) @LIBS@ @DYNAMIC_LIBS@ @FONTCONFIG_LIBS@ @FT_LIBS@ @JPX_AUTOCONF_LIBS@
|
|
-AUXEXTRALIBS=$(XTRALIBS) @LIBS@ @DYNAMIC_LIBS@ @FONTCONFIG_LIBS@ @FT_LIBS@ @JPX_AUTOCONF_LIBS@ @AUX_SHARED_ZLIB@
|
|
+EXTRALIBS=$(XTRALIBS) @LIBS@ @MINGW_XTLIBS@ @DYNAMIC_LIBS@ @FONTCONFIG_LIBS@ @FT_LIBS@ @JPX_AUTOCONF_LIBS@
|
|
+AUXEXTRALIBS=$(XTRALIBS) @LIBS@ @MINGW_XTLIBS@ @DYNAMIC_LIBS@ @FONTCONFIG_LIBS@ @FT_LIBS@ @JPX_AUTOCONF_LIBS@ @AUX_SHARED_ZLIB@
|
|
|
|
# Define the standard libraries to search at the end of linking.
|
|
# Most platforms require -lpthread for the POSIX threads library;
|
|
@@ -484,9 +492,10 @@
|
|
RM=rm -f
|
|
|
|
# ------ Dynamic loader options ------- #
|
|
-SOC_CFLAGS = @SOC_CFLAGS@
|
|
-SOC_LIBS = @SOC_LIBS@
|
|
-SOC_LOADER = @SOC_LOADER@
|
|
+SOC_CFLAGS = @SOC_CFLAGS@
|
|
+SOC_LIBS = @SOC_LIBS@
|
|
+SOC_LOADER = @SOC_LOADER@
|
|
+SOC_LOADER_PLAIN = @SOC_LOADER_PLAIN@
|
|
|
|
# on virtually every Unix-a-like system, this is "so",
|
|
# but Apple just had to be different, so it's now set
|
|
@@ -637,7 +646,17 @@
|
|
|
|
CCFLAGS=$(GENOPT) $(CAPOPT) $(CFLAGS)
|
|
CC_=$(CC) $(CCFLAGS)
|
|
-CCAUX_=$(CCAUX) $(CFLAGS)
|
|
+
|
|
+ifeq ($(MINGW_BUILD), 1)
|
|
+ # adding -lz to the compilation flags seems to be an error:
|
|
+ # if not always, then at least under MSys/MinGW,
|
|
+ # compiled against the system's zlib,
|
|
+ # and having no zlib sub-folder (see also: unixaux.mak)
|
|
+ CCAUX_=$(CCAUX) $(CFLAGS)
|
|
+else
|
|
+ CCAUX_=$(CCAUX) $(CFLAGS) @AUX_SHARED_ZLIB@
|
|
+endif
|
|
+
|
|
CC_LEAF=$(CC_)
|
|
# note gcc can't use -fomit-frame-pointer with -pg.
|
|
CC_LEAF_PG=$(CC_)
|
|
@@ -707,6 +726,12 @@
|
|
@CONTRIBINCLUDE@
|
|
@CUPSINCLUDE@
|
|
|
|
+# conditionally include the two .mak files that are only needed with a MINGW build
|
|
+ifeq ($(MINGW_BUILD), 1)
|
|
+ include $(GLSRCDIR)/mingw-fs.mak
|
|
+ include $(GLSRCDIR)/mingwlib.mak
|
|
+endif
|
|
+
|
|
# Clean up after the autotools scripts
|
|
distclean : clean config-clean soclean pgclean debugclean mementoclean
|
|
-$(RM_) -r $(BINDIR) $(GLOBJDIR) $(PSOBJDIR) $(AUXDIR)
|
|
--- a/base/stat_.h
|
|
+++ b/base/stat_.h
|
|
@@ -43,7 +43,7 @@
|
|
* Microsoft C uses _stat instead of stat,
|
|
* for both the function name and the structure name.
|
|
*/
|
|
-#ifdef _MSC_VER
|
|
+#if defined(_MSC_VER) || defined(__MINGW32__)
|
|
# define stat _stat
|
|
#define struct_stat struct _stat
|
|
#else
|