| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
I actually fixed this BEFORE the previous commit, but somehow I
failed to include it in the commit.
|
|
|
|
|
|
|
|
| |
Attempt to autodetect between linux and darwin. 32bit/64bit/arm
options are just gravy.
Credit to Chris for the original version of this (that I've
probably broken).
|
|
|
|
|
|
|
|
|
| |
The "dynamic" X11 devices rely on accessing symbols that are not part of our
"public API", symbols that are "hidden" with --enable-hidden-visibility (now the
default).
So, in configure, throw an error if --enable-dynamic is used without opting
out of hidden symbols (--disable-hidden-visibility).
|
| |
|
| |
|
|
|
|
|
|
| |
Removing the option to disable FAPI meant configuring for cross compiling would
fail because the option being passed to the sub-call to configure would include
an unknown command line option.
|
| |
|
|
|
|
| |
Link with an external SO lib, rather than calling out to an exe.
|
|
|
|
|
| |
No actual SmartOffice code here, just the framework for adding
the (private) "SO" interpreter.
|
| |
|
|
|
|
| |
When PDF is included.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If left to its defaults, the build system on Unix will assume GNU make, and use
GNU make features to speed up the build process.
configure would check for GNU make for this reason, but wasn't checking if there
was a "make" program available first, leading to a potentiall confusing error
message.
This checks that a "make" program exists, before trying to check it's GNU make.
Secondly, in recognition that some systems (Solaris, for example) have their own
make, but often have GNU make available as "gmake", add a "--with-make=" option
allowing a user to set a custom name for the make executable to look for and
check the version.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This avoids symbol name clashes when linking our shared library with something
that also links to over shared libraries.
This also enforces a defined API in our shared library, like the Windows DLL
does.
Requires commit 64bffc6bd
|
| |
|
| |
|
| |
|
|
|
|
|
| |
This commit (from Chris) should have been rolled into the previous
one (from me). Apologies.
|
|
|
|
|
|
|
|
|
| |
Add a new device 'pclm8' which outputs in DeviceGray, for use with
'WiFi Direct Print' enabled monochrome printers.
While the printer is supposed to be able to accept RGB, and print to
gray, it's quicker to send Gray instead of RGB when we know it is
required.
|
|
|
|
|
|
| |
Also cups device: Ignore deprecated function warnings
Using gcc pragmas
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Apple Raster (aka URF) output: With -sDEVICE=appleraster or
-sDEVICE=urf (instead of -sDEVICE=cups) the output is in the Apple
Raster format and not in CUPS Raster format.
The format is used by Apple's AirPrint which allows printing from iOS
devices. Due to this practically all modern printers understand this
format and so providing it allows easy, driverless printing.
Before, in order to output Apple Raster, the gstoraster filter of
cups-filters had used the "cups" output device of Ghostscript to
produce CUPS Raster and after that the rastertopwg filter of CUPS had
to turn this into Apple Raster. With this commit a future version of
cups-filters can let gstoraster (the ghostscript() filter function)
directly output Apple Raster and this way save one filter step.
Outputting Apple Raster instead of PWG Raster (which we could already
do via -sDEVICE=pwgraster) is trivial. One has only to tell the
cupsRasterOpen() function of libcups to write Apple Raster headers
instead of PWG Raster headers by a simple flag, so this commit
consists mainly of the definition of the output device names
"appleraster" and "urf" and make the output device set said flag when
one of these device names is used.
I have defined two device names for exactly the same thing, as I am
not really sure which one is the better or if one could cause any
problems. We could remove one later if needed. The output is
absolutely identical for both.
Apple Raster support was introduced to libcups in CUPS 2.2.2, so the
CUPS 2.2 API does not contain it necessarily, therefore the 2.3 CUPS
API is the minimum requirement by the ./configure script to build
Ghostscript with Apple Raster/URF output support.
The libcups which is included with the Ghostscript source is too old,
and when you build with it (--with-local-cups) you will not get Apple
Raster support. But remember that this build option is only for
development and debugging and not for production.
The commit also contains a bug fix: devs.mak hard-coded -I./cups/libs/
in the compilation command line of gdevcups.c, making always the
included cups/raster.h being used instead of the system's one and so
always having a too old cups/raster.h which suggests that Apple Raster
is not supported. This I have fixed by removing the -I./cups/libs/,
--with-local-cups works also without.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add example tags devn devices, both 8 and 16 bit. The tags
plane is always placed as the last plane in the data (i.e
it follows any spots that get added). Changes were made to
remove tags conditionals in the planar memory device code,
since it really should not care what the extra planes are
used for and it should not add components to the device based
upon the tags support. The target device should handle any
of this sort of setup. There were
also some changes needed in the pdf14 code, as the tags
information was not getting properly communicated when we
had knockout objects and devn colors.
Also, fix various whitespace issues.
|
|
|
|
|
|
|
|
|
|
|
|
| |
If the compiler is not identified as gcc, either the GCC variable will be unset
or an empty string, either way $GCC will expand to nothing, meaning a clause
like:
if test $GCC = yes; then
is invalid.
Ensure that can't happen.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some devices within Ghostscript (currently the x11 devices,
uniprint and opvp/oprp) use non const static variables, so cannot
be run in multiple instances at a time.
We now maintain a core "count" of how many non-threadsafe devices are
being used at any time. This value can be atomically adjusted by calls
to gs_lib_ctx_nts_adjust.
Non threadsafe devices now call gx_init_non_threadsafe_device either
as or as part of their initialise_device proc. This function attempts
to increment the non-threadsafe count and fails to init if there is
already a non-threadsafe device running.
On success, the device finalize method is modified so that it will
decrement the count at the end.
The known non-threadsafe devices are updated to call this.
In order to have somewhere safe to store this count, we introduce
a gs_globals structure, shared between instances. Setting this up
without race conditions requires some new gp_ functions that can
make use of platform specific threading primitives. We have these
implemented for both windows and pthread based platforms. On other
platforms, we drop back to the old unsafe mechanism for counting
instances.
While we do this work, we take the opportunity to push the
gs_memory_t pointer used for non-threadsafe debug printing into thread
local storage.
This enables us to remove the remaining GS_THREADSAFE guarded
compilation from the source code. What is left is broadly down to
allowing debugging collection for statistics, and these are now
controlled by specific COLLECT_STATS_XXX defines. It is assumed
that anyone wanting to collect such stats is smart enough to not
try to do so while using Ghostscript in a multi-instance environment.
|
|
|
|
| |
This should make the devices threadsafe.
|
|
|
|
|
|
|
|
| |
gpdf is based on the gpdl infrastructure, so relies on the pcl/pl/ level APIs.
And pcl/pl/ is only available if we include pcl in the available products.
So disable gpdf when pcl isn't being built (the same as already done for
gpdl and gxps).
|
|
|
|
|
| |
Since the standalone gpdf is based on the pl API layer, we need to leave it
out when only the gs source is available (i.e. gs release archives)
|
| |
|
|
|
|
|
|
|
|
|
|
| |
If tesseract/leptonica is present, check if the the compiler is g++ (or
compatible) and if so, check it understands the -std=c++17 option. If not,
drop the OCR devices, and emit a warning message at the end of configure.
If the compiler is not g++ (or compatible) carry on, but emit a warning to
the effect that it's up to the user to ensure the compiler they use can handle
c++17.
|
|
|
|
|
| |
Also tweak order of operations in autogen.sh so config.guess and
install-sh are in place before we call autoreconf
|
|
|
|
|
|
|
|
|
|
|
| |
This is a commit of the pdfi branch to master, eliminating
the traditional merge step.
The full history of the pdfi branch can be seen in the repo,
and that branch is effectively frozen from this point onwards.
This commit actually differs from pdfi in a small number of
whitespace changes (trailing spaces etc).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As part of the Ghostscript/GhostPDL configure script, we also
run the libtiff configure. If libdeflate was present, and
running Ubuntu 21.04 (or later?) and using our shipped
libtiff sources, it would attempt to build with libdeflate
support, but not include the library to link to, and
cause a build error.
We don't need libdeflate support, so disable it explicitly
when we call the libtiff configure
Also, add an environment variable (GS_TIFF_CONFIGURE_OPTS) to
the libtiff configure command line, as an easy "end user"
workaround for similar future problems. So doing:
./configure GS_TIFF_CONFIGURE_OPTS="--disable-libdeflate"
Would work around the libdeflate issue.
|
| |
|
|
|
|
|
|
|
| |
Specifically: HAVE_STRLCAT, HAVE_STRLCPY, HAVE_SNPRINTF, HAVE_VSNPRINTF
In the hope it might resolve the strange and unpredictable compilation failures
on the 32 bit cluster auto tests.
|
|
|
|
|
| |
Improve the configure test for valid C++ compiler options by having the
test include a header.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On MacOS (at least), clang++ requires the addition of the -std=c++17 to enable
support of the features that tesseract uses.
Also, on Linux (at least) clang++ requires -stdlib=libstdc++ in order to
pickup a usable stdc++ library.
So, tweak configure to test whether the compiler accepts the options to do both
the above, and if so, add them to the CXXFLAGS used to build tesseract.
In addition, in configure, pickup CXXFLAGS so custom options can be set on the
configure command line.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Tesseract requires threading, even though Ghostscript doesn't actually call any
of the parts of tesseract that use threading, there is no sensible way to
leave it out.
So, throw an error if --disable-threads is used when tesseract/leptonica is
present. The error includes a note to use "--without-tesseract" to avoid the
error.
Also, fix a typo from a03ce3d6a130c843cb4dd91b7e767706973b4e22
|
|
|
|
| |
Rather than rely on the GNU make predefine.
|
| |
|
|
|
|
|
|
| |
i.e. ghostpdl/extract
as well as still allowing --with-extract-dir for custom locations.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This adds a new docxwrite device which generates docx files.
Unlike the txtwrite device, we don't output xml for later use by
extract-exe or store information about spans in arrays. Instead we call
extract functions such as extract_add_char() directly.
Code changes:
Have moved txtwrite and docxwrite common code into new devices/vector/doc_common.{c,h}.
Shared types and functions are currently:
txt_glyph_width_t
txt_glyph_widths_t
txt_glyph_widths()
txt_get_unicode()
txt_char_widths_to_uts()
txt_calculate_text_size()
Building:
By default we do not build with Extract and there will be no docxwrite
device in the final executables.
To build with Extract, specify the location of the extract checkout to
build and link with.
Unix:
./autogen.sh --with-extract-dir=<extract-dir>
Windows:
Set environmental variable EXTRACT_DIR=<extract-dir> when building,
e.g.:
EXTRACT_DIR=<extract-dir> devenv.com windows/GhostPDL.sln /Build Debug /Project ghostscript
On both Unix and Windows we exit with an error message if the specified
location does not exist.
|
|
|
|
|
|
|
|
| |
This reverts commit 66c2469c7d4543f32d6dc93edf1d649e809b8419.
A user got in touch to say that he maintains a printer driver "back end" that
uses the opvp device. So reinstating it - at least we know it's getting
tested.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
First, we look in TESSDATA_PREFIX (if defined).
If not found there, we look in ROMFS (in tessdata).
If not found there, we look at the configured "tessdata" path
(which defaults to ${datadir}/tessdata). (${datadir} defaults to
${prefix}/share on unix, and ${gsrootdir} on windows.)
If not found there, we look in the current directory.
Update doc/Devices.html (and fix some indexing).
|
|
|
|
| |
to match the other platforms.
|
|
|
|
|
| |
We already get the libs, missing the CFLAGS (mainly the -I) was just an
omission.
|
|
|
|
|
|
|
|
|
| |
Our "sanitize" target just uses address sanitizer.
With this commit, we'll still default to address, but the caller can do:
--with-santizer=memory
to opt for the "memory" sanitizer instead.
|
|
|
|
|
|
|
|
|
|
| |
We cannot combine shared and not shared libjpeg and libtiff - they either both
need to be "local" or both shared, and configure checks that and fails when
the two are incompatible.
However, that check would fail when either libjpeg or libtiff were not being
included at all. Since it is libtiff that is the "problem" for this
compatibility, now check if TIFF is included, and if not, skip the check.
|