summaryrefslogtreecommitdiff
path: root/base
diff options
context:
space:
mode:
authorRobin Watts <Robin.Watts@artifex.com>2021-08-12 12:00:25 +0100
committerRobin Watts <Robin.Watts@artifex.com>2021-08-12 12:25:53 +0100
commit316c3a08269212f1005709da64efcb383f8f5ce0 (patch)
treef159677a5685a79e9a735f6cbf375f85dbab4adc /base
parent0a0c521d85d0275c0d207a35bd27f0a31d54012b (diff)
downloadghostpdl-316c3a08269212f1005709da64efcb383f8f5ce0.tar.gz
Commit pdfi to master.
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).
Diffstat (limited to 'base')
-rw-r--r--base/gdevp14.c14
-rw-r--r--base/gdevppla.c2
-rw-r--r--base/gs.mak20
-rw-r--r--base/gscdevn.c25
-rw-r--r--base/gscdevn.h10
-rw-r--r--base/gserrors.h5
-rw-r--r--base/gsicc_cache.c5
-rw-r--r--base/gxfapi.c2
-rw-r--r--base/gxfapi.h2
-rw-r--r--base/gximono.c2
-rw-r--r--base/gxsamplp.h1
-rw-r--r--base/lib.mak39
-rw-r--r--base/scfe.c3
-rw-r--r--base/stream.c12
-rw-r--r--base/stream.h1
-rw-r--r--base/unix-dll.mak48
-rw-r--r--base/unix-end.mak33
-rw-r--r--base/unix-gcc.mak12
-rw-r--r--base/unixlink.mak21
19 files changed, 236 insertions, 21 deletions
diff --git a/base/gdevp14.c b/base/gdevp14.c
index 40abfa6fb..0af2dc4f6 100644
--- a/base/gdevp14.c
+++ b/base/gdevp14.c
@@ -1267,7 +1267,7 @@ pdf14_ctx_free(pdf14_ctx *ctx)
* if backdrop is fully transparent.
**/
static pdf14_buf *
-pdf14_find_backdrop_buf(pdf14_ctx *ctx, bool *is_backdrop)
+pdf14_find_backdrop_buf(gx_device* dev, pdf14_ctx *ctx, bool *is_backdrop)
{
/* Our new buffer is buf */
pdf14_buf *buf = ctx->stack;
@@ -1503,7 +1503,7 @@ pdf14_push_transparency_group(pdf14_ctx *ctx, gs_int_rect *rect, bool isolated,
return 0;
if (idle)
return 0;
- pdf14_backdrop = pdf14_find_backdrop_buf(ctx, &is_backdrop);
+ pdf14_backdrop = pdf14_find_backdrop_buf(dev, ctx, &is_backdrop);
/* Initializes buf->data with the backdrop or as opaque */
if (pdf14_backdrop == NULL || (is_backdrop && pdf14_backdrop->backdrop == NULL)) {
@@ -12200,8 +12200,8 @@ dump_mask_stack(pdf14_mask_t *mask_stack)
while (curr_mask != NULL) {
if_debug1m('v', curr_mask->memory, "[v]mask_level, %d\n", level);
- if_debug1m('v', curr_mask->memory, "[v]mask_buf, %x\n", curr_mask->rc_mask->mask_buf);
- if_debug1m('v', curr_mask->memory, "[v]rc_count, %d\n", curr_mask->rc_mask->rc);
+ if_debug1m('v', curr_mask->memory, "[v]mask_buf, %p\n", curr_mask->rc_mask->mask_buf);
+ if_debug1m('v', curr_mask->memory, "[v]rc_count, %ld\n", curr_mask->rc_mask->rc.ref_count);
level++;
curr_mask = curr_mask->previous;
}
@@ -12211,13 +12211,13 @@ dump_mask_stack(pdf14_mask_t *mask_stack)
static void
pdf14_debug_mask_stack_state(pdf14_ctx *ctx)
{
- if_debug1m('v', ctx->memory, "[v]ctx_maskstack, %x\n", ctx->mask_stack);
+ if_debug1m('v', ctx->memory, "[v]ctx_maskstack, %p\n", ctx->mask_stack);
if (ctx->mask_stack != NULL) {
dump_mask_stack(ctx->mask_stack);
}
- if_debug1m('v', ctx->memory, "[v]ctx_stack, %x\n", ctx->stack);
+ if_debug1m('v', ctx->memory, "[v]ctx_stack, %p\n", ctx->stack);
if (ctx->stack != NULL) {
- if_debug1m('v', ctx->memory, "[v]ctx_stack_maskstack, %x\n", ctx->stack->mask_stack);
+ if_debug1m('v', ctx->memory, "[v]ctx_stack_maskstack, %p\n", ctx->stack->mask_stack);
if (ctx->stack->mask_stack != NULL) {
dump_mask_stack(ctx->stack->mask_stack);
}
diff --git a/base/gdevppla.c b/base/gdevppla.c
index 93c6d5646..c3b6e16ad 100644
--- a/base/gdevppla.c
+++ b/base/gdevppla.c
@@ -125,6 +125,8 @@ gdev_prn_size_buf_planar(gx_device_buf_space_t *space, gx_device *target,
gx_device_memory mdev;
int code;
+ memset(&mdev, 0, sizeof(mdev));
+
if (render_plane && render_plane->index >= 0)
return gx_default_size_buf_device(space, target, render_plane,
height, for_band);
diff --git a/base/gs.mak b/base/gs.mak
index f67a24467..0b84be49d 100644
--- a/base/gs.mak
+++ b/base/gs.mak
@@ -248,6 +248,7 @@ GS_MAK=$(GLSRCDIR)$(D)gs.mak $(TOP_MAKEFILES)
GS_XE=$(BINDIR)$(D)$(GS)$(XE)
GPCL_XE=$(BINDIR)$(D)$(PCL)$(XE)
GXPS_XE=$(BINDIR)$(D)$(XPS)$(XE)
+GPDF_XE=$(BINDIR)$(D)$(PDF)$(XE)
GPDL_XE=$(BINDIR)$(D)$(GPDL)$(XE)
AUX=$(AUXDIR)$(D)
@@ -411,6 +412,11 @@ XPS_DEVS_ALL=$(GSPLAT_DEVS_ALL) \
$(FEATURE_DEVS_EXTRA) \
$(DEVICE_DEVS_ALL)
+PDF_DEVS_ALL=$(GSPLAT_DEVS_ALL) \
+ $(FEATURE_DEVS) \
+ $(FEATURE_DEVS_EXTRA) \
+ $(DEVICE_DEVS_ALL)
+
DEVS_ALL=$(GLGENDIR)$(D)$(GSPLATFORM).dev\
$(FEATURE_DEVS_EXTRA) \
$(DEVICE_DEVS) $(DEVICE_DEVS1) \
@@ -513,6 +519,16 @@ $(xps_tr): $(GS_MAK) $(GLSRCDIR)$(D)version.mak $(GENCONF_XE) $(ECHOGS_XE) $(ld_
$(EXP)$(ECHOGS_XE) -a $(xps_tr) -R $(ixps_tr)
$(EXP)$(GENCONF_XE) $(xps_tr) -h $(GLGENDIR)$(D)unused.h $(CONFILES) $(CONFLDTR) $(xpsld_tr)
+pdf_tr=$(GLGENDIR)$(D)pdf.tr
+ipdf_tr=$(GLGENDIR)$(D)ipdf.tr
+pdfld_tr=$(GLGENDIR)$(D)pdfld.tr
+$(pdf_tr): $(GS_MAK) $(GLSRCDIR)$(D)version.mak $(GENCONF_XE) $(ECHOGS_XE) $(ld_tr) $(devs_tr) $(PDF_DEVS_ALL) \
+ $(devs_tr) $(PDF_FEATURE_DEVS) $(GLGENDIR)$(D)libcore.dev $(MAKEDIRS)
+ $(EXP)$(ECHOGS_XE) -w $(ipdf_tr) - -include $(PDF_FEATURE_DEVS)
+ $(EXP)$(ECHOGS_XE) -w $(pdf_tr) -R $(devs_tr)
+ $(EXP)$(ECHOGS_XE) -a $(pdf_tr) -R $(ipdf_tr)
+ $(EXP)$(GENCONF_XE) $(pdf_tr) -h $(GLGENDIR)$(D)unused.h $(CONFILES) $(CONFLDTR) $(pdfld_tr)
+
gpdl_tr=$(GLGENDIR)$(D)gpdl.tr
igpdl_tr=$(GLGENDIR)$(D)igpdl.tr
gpdlld_tr=$(GLGENDIR)$(D)gpdlld.tr
@@ -560,6 +576,10 @@ xpsobj_tr=$(GLGENDIR)$(D)xpsobj.tr
$(xpsobj_tr) : $(xps_tr)
$(EXP)$(GENCONF_XE) $(xps_tr) -h $(GLGENDIR)$(D)unused.h $(CONFILES) -o $(xpsobj_tr)
+pdfobj_tr=$(GLGENDIR)$(D)pdfobj.tr
+$(pdfobj_tr) : $(pdf_tr)
+ $(EXP)$(GENCONF_XE) $(pdf_tr) -h $(GLGENDIR)$(D)unused.h $(CONFILES) -o $(pdfobj_tr)
+
pdlobj_tr=$(GLGENDIR)$(D)pdlobj.tr
$(pdlobj_tr) : $(gpdl_tr)
diff --git a/base/gscdevn.c b/base/gscdevn.c
index bdf3dd5a6..41febb7f9 100644
--- a/base/gscdevn.c
+++ b/base/gscdevn.c
@@ -205,6 +205,31 @@ gs_attachcolorant(char *sep_name, gs_gstate * pgs)
return 0;
}
+int
+gs_attach_colorant_to_space(char *sep_name, gs_color_space *pcs, gs_color_space *colorant_space, gs_memory_t *mem)
+{
+ gs_device_n_colorant * patt;
+
+ if (pcs->type != &gs_color_space_type_DeviceN)
+ return_error(gs_error_rangecheck);
+
+ /* Allocate an attribute list element for our linked list of colorants */
+ rc_alloc_struct_1(patt, gs_device_n_colorant, &st_device_n_colorant,
+ mem, return_error(gs_error_VMerror),
+ "gs_attachattributrescolorspace");
+
+ /* Point our attribute list entry to the attribute color space */
+ patt->colorant_name = sep_name;
+ patt->cspace = colorant_space;
+ rc_increment_cs(patt->cspace);
+
+ /* Link our new attribute color space to the DeviceN color space */
+ patt->next = pcs->params.device_n.colorants;
+ pcs->params.device_n.colorants = patt;
+
+ return 0;
+}
+
#if 0 /* Unused; Unsupported by gx_serialize_device_n_map. */
/*
* Set the DeviceN tint transformation procedure.
diff --git a/base/gscdevn.h b/base/gscdevn.h
index f35e9b0e3..b2b6c5de8 100644
--- a/base/gscdevn.h
+++ b/base/gscdevn.h
@@ -78,4 +78,14 @@ int gx_serialize_device_n_map(const gs_color_space * pcs, gs_device_n_map * m, s
*/
int gs_attachcolorant(char *sep_name, gs_gstate * pgs);
+/*
+ * This is the same routine as above, but more general. Instead of assuming that
+ * the current coloru space is hte colorant space, and the saved graphics state
+ * contains the DeviceN space, we pass both those in, along with the memory
+ * allocater we want the routine to use.
+ * This is for the pdfi PDF interpreter (and potentially any other non-PostScript
+ * interpreter)
+ */
+int gs_attach_colorant_to_space(char *sep_name, gs_color_space *pcs, gs_color_space *colorant_space, gs_memory_t *mem);
+
#endif /* gscdevn_INCLUDED */
diff --git a/base/gserrors.h b/base/gserrors.h
index 1bdbb8a02..91b05cdf7 100644
--- a/base/gserrors.h
+++ b/base/gserrors.h
@@ -119,7 +119,10 @@ enum gs_error_type {
* subclasses should not perform any further action. Currently this is limited
* to compositor creation.
*/
- gs_error_handled = -111
+ gs_error_handled = -111,
+
+/* Internal error for the C-based PDF interpreter, to indicate a circular PDF reference */
+ gs_error_circular_reference = -112,
};
/* We do provide a typedef type for external API use */
diff --git a/base/gsicc_cache.c b/base/gsicc_cache.c
index 1c4850c5b..ba3320604 100644
--- a/base/gsicc_cache.c
+++ b/base/gsicc_cache.c
@@ -870,6 +870,7 @@ gsicc_alloc_link_entry(gsicc_link_cache_t *icc_link_cache,
{
gs_memory_t *cache_mem = icc_link_cache->memory;
gsicc_link_t *link;
+ int retries = 0;
*ret_link = NULL;
/* First see if we can add a link */
@@ -908,6 +909,10 @@ gsicc_alloc_link_entry(gsicc_link_cache_t *icc_link_cache,
return true;
gx_monitor_enter(icc_link_cache->lock); /* restore the lock */
+ /* we will re-test the num_links above while locked to insure */
+ /* that some other thread didn't grab the slot and max us out */
+ if (retries++ > 10)
+ return false;
} else {
/* Remove the zero ref_count link profile we found. */
/* Even if we remove this link, we may still be maxed out so*/
diff --git a/base/gxfapi.c b/base/gxfapi.c
index 562b7699b..9612382c4 100644
--- a/base/gxfapi.c
+++ b/base/gxfapi.c
@@ -1484,7 +1484,7 @@ gs_fapi_do_char(gs_font *pfont, gs_gstate *pgs, gs_text_enum_t *penum, char *fon
}
if (cr.metrics_type == gs_fapi_metrics_notdef && !bVertical) {
code =
- I->ff.fapi_get_metrics(&I->ff, &enc_char_name_string, index, sbw,
+ I->ff.fapi_get_metrics(&I->ff, &enc_char_name_string, (int)index, sbw,
bVertical);
if (code < 0)
return code;
diff --git a/base/gxfapi.h b/base/gxfapi.h
index 728630e6b..7f5dd03f0 100644
--- a/base/gxfapi.h
+++ b/base/gxfapi.h
@@ -209,7 +209,7 @@ struct gs_fapi_font_s
int (*get_glyphname_or_cid) (gs_text_enum_t *penum, gs_font_base *pbfont,
gs_string *charstring, gs_string *name,
gs_glyph ccode, gs_string *enc_char_name,
- char *font_file_path, gs_fapi_char_ref *cr,
+ char *font_file_path, gs_fapi_char_ref *cr,
bool bCID);
int (*fapi_get_metrics) (gs_fapi_font *ff, gs_string *char_name, gs_glyph cid, double *m, bool vertical);
diff --git a/base/gximono.c b/base/gximono.c
index 7b40f3de7..58dc29be3 100644
--- a/base/gximono.c
+++ b/base/gximono.c
@@ -318,7 +318,7 @@ not_fast_halftoning:
return 0;
}
-#define USE_SET_GRAY_FUNCTION 0
+#define USE_SET_GRAY_FUNCTION 1
#if USE_SET_GRAY_FUNCTION
/* Temporary function to make it easier to debug the uber-macro below */
static inline int
diff --git a/base/gxsamplp.h b/base/gxsamplp.h
index 143b240cd..8d5e39f9c 100644
--- a/base/gxsamplp.h
+++ b/base/gxsamplp.h
@@ -325,4 +325,3 @@ TEMPLATE_sample_unpack_8(byte * bptr, int *pdata_x, const byte * data, int data_
#else
int dummy;
#endif
-
diff --git a/base/lib.mak b/base/lib.mak
index 60d92509e..8393c2431 100644
--- a/base/lib.mak
+++ b/base/lib.mak
@@ -1968,8 +1968,9 @@ $(GLOBJ)sfilter1.$(OBJ) : $(GLSRC)sfilter1.c $(AK) $(stdio__h) $(memory__h)\
$(GLCC) $(GLO_)sfilter1.$(OBJ) $(C_) $(GLSRC)sfilter1.c
$(GLD)psfilters.dev : $(ECHOGS_XE) $(LIB_MAK) $(GLOBJ)sfilter2.$(OBJ)\
- $(GLOBJ)sfilter1.$(OBJ) $(LIB_MAK) $(MAKEDIRS)
- $(SETMOD) $(GLD)psfilters $(GLOBJ)sfilter1.$(OBJ) $(GLOBJ)sfilter2.$(OBJ)
+ $(GLOBJ)sfilter1.$(OBJ) $(GLOBJ)sa85d.$(OBJ) $(LIB_MAK) $(MAKEDIRS)
+ $(SETMOD) $(GLD)psfilters $(GLOBJ)sfilter1.$(OBJ) $(GLOBJ)sfilter2.$(OBJ) $(GLOBJ)sa85d.$(OBJ)
+ $(ADDMOD) $(GLD)psfilters $(GLOBJ)sa85d.$(OBJ)
$(GLOBJ)sstring.$(OBJ) : $(GLSRC)sstring.c $(AK)\
$(stdio__h) $(memory__h) $(string__h)\
@@ -3397,6 +3398,33 @@ $(GLGEN)xpsromfs0_1.c : $(MKROMFS_XE) $(LIB_MAK) $(MAKEDIRS)
$(GLGEN)xpsromfs0.c : $(GLGEN)xpsromfs0_$(UFST_BRIDGE).c $(LIB_MAK) $(MAKEDIRS)
$(CP_) $(GLGEN)xpsromfs0_$(UFST_BRIDGE).c $(GLGEN)xpsromfs0.c
+# pdf
+$(GLGEN)pdfromfs1_.c : $(MKROMFS_XE) $(LIB_MAK) $(MAKEDIRS)
+ $(EXP)$(MKROMFS_XE) -o $(GLGEN)pdfromfs1_.c \
+ -X .svn -X CVS -P $(GLSRCDIR)$(D)..$(D) iccprofiles$(D)* \
+ $(PDF_ROMFS_ARGS) $(PDF_FONT_ROMFS_ARGS) $(GL_ROMFS_ARGS)
+
+$(GLGEN)pdfromfs1_1.c : $(MKROMFS_XE) $(LIB_MAK) $(MAKEDIRS)
+ $(EXP)$(MKROMFS_XE) -o $(GLGEN)pdfromfs1_1.c \
+ -X .svn -X CVS -P $(GLSRCDIR)$(D)..$(D) iccprofiles$(D)* \
+ $(PDF_ROMFS_ARGS) $(GL_ROMFS_ARGS)
+
+$(GLGEN)pdfromfs1.c : $(GLGEN)pdfromfs1_$(UFST_BRIDGE).c $(LIB_MAK) $(MAKEDIRS)
+ $(CP_) $(GLGEN)pdfromfs1_$(UFST_BRIDGE).c $(GLGEN)pdfromfs1.c
+
+$(GLGEN)pdfromfs0_.c : $(MKROMFS_XE) $(LIB_MAK) $(MAKEDIRS)
+ $(EXP)$(MKROMFS_XE) -o $(GLGEN)pdfromfs0_.c \
+ -X .svn -X CVS -P $(GLSRCDIR)$(D)..$(D) iccprofiles$(D)* \
+ $(GL_ROMFS_ARGS)
+
+$(GLGEN)pdfromfs0_1.c : $(MKROMFS_XE) $(LIB_MAK) $(MAKEDIRS)
+ $(EXP)$(MKROMFS_XE) -o $(GLGEN)pdfromfs0_1.c \
+ -X .svn -X CVS -P $(GLSRCDIR)$(D)..$(D) iccprofiles$(D)* \
+ $(GL_ROMFS_ARGS)
+
+$(GLGEN)pdfromfs0.c : $(GLGEN)pdfromfs0_$(UFST_BRIDGE).c $(LIB_MAK) $(MAKEDIRS)
+ $(CP_) $(GLGEN)pdfromfs0_$(UFST_BRIDGE).c $(GLGEN)pdfromfs0.c
+
# pdl
# We generate the pdl romfs in index + 4 lumps because of size
@@ -3545,6 +3573,13 @@ $(GLOBJ)xpsromfs0.$(OBJ) : $(GLGEN)xpsromfs0.c $(stdint__h) $(LIB_MAK) $(MAKEDIR
$(GLOBJ)xpsromfs1.$(OBJ) : $(GLOBJ)xpsromfs1.c $(time__h) $(LIB_MAK) $(MAKEDIRS)
$(GLCC) $(GLO_)xpsromfs1.$(OBJ) $(C_) $(GLOBJ)xpsromfs1.c
+# A pdfromfs module with only ICC profiles for COMPILE_INITS=0
+$(GLOBJ)pdfromfs0.$(OBJ) : $(GLGEN)pdfromfs0.c $(stdint__h) $(LIB_MAK) $(MAKEDIRS)
+ $(GLCC) $(GLO_)pdfromfs0.$(OBJ) $(C_) $(GLGEN)pdfromfs0.c
+
+$(GLOBJ)pdfromfs1.$(OBJ) : $(GLOBJ)pdfromfs1.c $(time__h) $(LIB_MAK) $(MAKEDIRS)
+ $(GLCC) $(GLO_)pdfromfs1.$(OBJ) $(C_) $(GLOBJ)pdfromfs1.c
+
# A pdlromfs module with only ICC profiles for COMPILE_INITS=0
$(GLOBJ)pdlromfs0.$(OBJ) : $(GLGEN)pdlromfs0.c $(stdint__h) $(LIB_MAK) $(MAKEDIRS)
$(GLCC) $(GLO_)pdlromfs0.$(OBJ) $(C_) $(GLGEN)pdlromfs0.c
diff --git a/base/scfe.c b/base/scfe.c
index ae92300c3..15e1a4902 100644
--- a/base/scfe.c
+++ b/base/scfe.c
@@ -391,7 +391,8 @@ s_CFE_process(stream_state * st, stream_cursor_read * pr,
/* Encode a 1-D scan line. */
/* Attempt to stop coverity thinking skip_white_pixels() taints lbuf:*/
-/* coverity[ -tainted_data_argument : arg-1 ] */
+/* coverity[ -tainted_data_return ] */
+/* coverity[ -tainted_data_argument arg-2 ] */
static void
cf_encode_1d(stream_CFE_state * ss, const byte * lbuf, stream_cursor_write * pw)
{
diff --git a/base/stream.c b/base/stream.c
index 8b48f5f02..6f68d7c24 100644
--- a/base/stream.c
+++ b/base/stream.c
@@ -126,6 +126,18 @@ s_alloc(gs_memory_t * mem, client_name_t cname)
s_init(s, mem);
return s;
}
+stream *
+s_alloc_immovable(gs_memory_t * mem, client_name_t cname)
+{
+ stream *s = gs_alloc_struct_immovable(mem, stream, &st_stream, cname);
+
+ if_debug2m('s', mem, "[s]alloc(%s) = "PRI_INTPTR"\n",
+ client_name_string(cname), (intptr_t) s);
+ if (s == 0)
+ return 0;
+ s_init(s, mem);
+ return s;
+}
/* Allocate a stream state and initialize it minimally. */
void
diff --git a/base/stream.h b/base/stream.h
index e4b27910d..90b423f4c 100644
--- a/base/stream.h
+++ b/base/stream.h
@@ -327,6 +327,7 @@ int spseek(stream *, gs_offset_t);
/* Allocate a stream or a stream state. */
stream *s_alloc(gs_memory_t *, client_name_t);
stream_state *s_alloc_state(gs_memory_t *, gs_memory_type_ptr_t, client_name_t);
+stream *s_alloc_immovable(gs_memory_t *, client_name_t);
/*
* Initialize a separately allocated stream or stream state, as if allocated
* by s_alloc[_state].
diff --git a/base/unix-dll.mak b/base/unix-dll.mak
index cae247ff5..e83390c2c 100644
--- a/base/unix-dll.mak
+++ b/base/unix-dll.mak
@@ -47,6 +47,10 @@ XPSSOC_XENAME=$(XPS_SO_BASE)c$(XE)
XPSSOC_XE=$(BINDIR)/$(XPSSOC_XENAME)
XPSSOC=$(BINDIR)/$(XPSSOC_XENAME)
+PDFSOC_XENAME=$(PDF_SO_BASE)c$(XE)
+PDFSOC_XE=$(BINDIR)/$(PDFSOC_XENAME)
+PDFSOC=$(BINDIR)/$(PDFSOC_XENAME)
+
GPDLSOC_XENAME=$(GPDL_SO_BASE)c$(XE)
GPDLSOC_XE=$(BINDIR)/$(GPDLSOC_XENAME)
GPDLSOC=$(BINDIR)/$(GPDLSOC_XENAME)
@@ -60,6 +64,7 @@ GSSOX=$(BINDIR)/$(GSSOX_XENAME)
GS_SONAME_BASE=lib$(GS_SO_BASE)
PCL_SONAME_BASE=lib$(PCL_SO_BASE)
XPS_SONAME_BASE=lib$(XPS_SO_BASE)
+PDF_SONAME_BASE=lib$(PDF_SO_BASE)
GPDL_SONAME_BASE=lib$(GPDL_SO_BASE)
# GNU/Linux
@@ -78,6 +83,10 @@ GS_DLLEXT=$(DLL_EXT)
#XPS_SONAME_MAJOR=$(XPS_SONAME_BASE)$(GS_SOEXT)$(SO_LIB_VERSION_SEPARATOR)$(GS_VERSION_MAJOR)$(GS_DLLEXT)
#XPS_SONAME_MAJOR_MINOR=$(XPS_SONAME_BASE)$(GS_SOEXT)$(SO_LIB_VERSION_SEPARATOR)$(GS_VERSION_MAJOR)$(SO_LIB_VERSION_SEPARATOR)$(GS_VERSION_MINOR)$(GS_DLLEXT)
+#PDF_SONAME=$(PDF_SONAME_BASE)$(GS_SOEXT)$(GS_DLLEXT)
+#PDF_SONAME_MAJOR=$(PDF_SONAME_BASE)$(GS_SOEXT)$(SO_LIB_VERSION_SEPARATOR)$(GS_VERSION_MAJOR)$(GS_DLLEXT)
+#PDF_SONAME_MAJOR_MINOR=$(PDF_SONAME_BASE)$(GS_SOEXT)$(SO_LIB_VERSION_SEPARATOR)$(GS_VERSION_MAJOR)$(SO_LIB_VERSION_SEPARATOR)$(GS_VERSION_MINOR)$(GS_DLLEXT)
+
#GPDL_SONAME=$(GPDL_SONAME_BASE)$(GS_SOEXT)$(GS_DLLEXT)
#GPDL_SONAME_MAJOR=$(GPDL_SONAME_BASE)$(GS_SOEXT)$(SO_LIB_VERSION_SEPARATOR)$(GS_VERSION_MAJOR)$(GS_DLLEXT)
#GPDL_SONAME_MAJOR_MINOR=$(GPDL_SONAME_BASE)$(GS_SOEXT)$(SO_LIB_VERSION_SEPARATOR)$(GS_VERSION_MAJOR)$(SO_LIB_VERSION_SEPARATOR)$(GS_VERSION_MINOR)$(GS_DLLEXT)
@@ -111,6 +120,10 @@ XPS_SO=$(BINDIR)/$(XPS_SONAME)
XPS_SO_MAJOR=$(BINDIR)/$(XPS_SONAME_MAJOR)
XPS_SO_MAJOR_MINOR=$(BINDIR)/$(XPS_SONAME_MAJOR_MINOR)
+PDF_SO=$(BINDIR)/$(PDF_SONAME)
+PDF_SO_MAJOR=$(BINDIR)/$(PDF_SONAME_MAJOR)
+PDF_SO_MAJOR_MINOR=$(BINDIR)/$(PDF_SONAME_MAJOR_MINOR)
+
GPDL_SO=$(BINDIR)/$(GPDL_SONAME)
GPDL_SO_MAJOR=$(BINDIR)/$(GPDL_SONAME_MAJOR)
GPDL_SO_MAJOR_MINOR=$(BINDIR)/$(GPDL_SONAME_MAJOR_MINOR)
@@ -143,6 +156,14 @@ $(XPS_SO_MAJOR): $(XPS_SO_MAJOR_MINOR) $(UNIX_DLL_MAK) $(MAKEDIRS)
$(RM_) $(XPS_SO_MAJOR)
ln -s $(XPS_SONAME_MAJOR_MINOR) $(XPS_SO_MAJOR)
+$(PDF_SO): $(PDF_SO_MAJOR) $(UNIX_DLL_MAK) $(MAKEDIRS)
+ $(RM_) $(PDF_SO)
+ ln -s $(PDF_SONAME_MAJOR_MINOR) $(PDF_SO)
+
+$(PDF_SO_MAJOR): $(PDF_SO_MAJOR_MINOR) $(UNIX_DLL_MAK) $(MAKEDIRS)
+ $(RM_) $(PDF_SO_MAJOR)
+ ln -s $(PDF_SONAME_MAJOR_MINOR) $(PDF_SO_MAJOR)
+
$(GPDL_SO): $(GPDL_SO_MAJOR) $(UNIX_DLL_MAK) $(MAKEDIRS)
$(RM_) $(GPDL_SO)
ln -s $(GPDL_SONAME_MAJOR_MINOR) $(GPDL_SO)
@@ -161,6 +182,9 @@ gpcl6-so-links-subtarget: $(PCL_SO) $(UNIX_DLL_MAK) $(MAKEDIRS)
gxps-so-links-subtarget: $(XPS_SO) $(UNIX_DLL_MAK) $(MAKEDIRS)
$(NO_OP)
+gpdf-so-links-subtarget: $(PDF_SO) $(UNIX_DLL_MAK) $(MAKEDIRS)
+ $(NO_OP)
+
gpdl-so-links-subtarget: $(GPDL_SO) $(UNIX_DLL_MAK) $(MAKEDIRS)
$(NO_OP)
@@ -183,8 +207,11 @@ $(PCLSOC_XE): gpcl6-so-links-subtarget $(UNIX_DLL_MAK) $(PLOBJ)$(REALMAIN_SRC).$
$(XPSSOC_XE): gxps-so-links-subtarget $(UNIX_DLL_MAK) $(PLOBJ)$(REALMAIN_SRC).$(OBJ) $(MAKEDIRS)
$(GLCC) -L$(BINDIR) $(LDFLAGS) $(O_) $(XPSSOC_XE) $(PLOBJ)$(REALMAIN_SRC).$(OBJ) -l$(XPS_SO_BASE)
-$(GPDLSOC_XE): gpdl-so-links-subtarget $(UNIX_DLL_MAK) $(PLOBJ)$(REALMAIN_SRC).$(OBJ) $(MAKEDIRS)
- $(GLCC) -L$(BINDIR) $(LDFLAGS) $(O_) $(GPDLSOC_XE) $(PLOBJ)$(REALMAIN_SRC).$(OBJ) -l$(GPDL_SO_BASE)
+$(PDFSOC_XE): gpdf-so-links-subtarget $(PLSRC)$(REALMAIN_SRC).c $(UNIX_DLL_MAK) $(MAKEDIRS)
+ $(GLCC) -g -o $(PDFSOC_XE) $(PLSRC)$(REALMAIN_SRC).c -L$(BINDIR) -l$(PDF_SO_BASE)
+
+$(GPDLSOC_XE): gpdl-so-links-subtarget $(PLSRC)$(REALMAIN_SRC).c $(UNIX_DLL_MAK) $(MAKEDIRS)
+ $(GLCC) -g -o $(GPDLSOC_XE) $(PLSRC)$(REALMAIN_SRC).c -L$(BINDIR) -l$(GPDL_SO_BASE)
gpcl6-so-loader: $(PCLSOC_XE)
$(NO_OP)
@@ -192,6 +219,9 @@ gpcl6-so-loader: $(PCLSOC_XE)
gxps-so-loader: $(XPSSOC_XE)
$(NO_OP)
+gpdf-so-loader: $(PDFSOC_XE)
+ $(NO_OP)
+
gpdl-so-loader: $(GPDLSOC_XE)
$(NO_OP)
@@ -209,6 +239,9 @@ gpcl6-so-strip:
gxps-so-strip:
$(STRIP_XE) $(STRIP_XE_OPTS) $(GXPS_XE)
+gpdf-so-strip:
+ $(STRIP_XE) $(STRIP_XE_OPTS) $(GPDF_XE)
+
gpdl-so-strip:
$(STRIP_XE)$(STRIP_XE_OPTS) $(GPDL_XE)
@@ -225,6 +258,7 @@ SODEFS=\
GS_XE=$(BINDIR)/$(GS_SONAME_MAJOR_MINOR) \
GPCL_XE=$(BINDIR)/$(PCL_SONAME_MAJOR_MINOR) \
GXPS_XE=$(BINDIR)/$(XPS_SONAME_MAJOR_MINOR) \
+ GPDF_XE=$(BINDIR)/$(PDF_SONAME_MAJOR_MINOR) \
GPDL_XE=$(BINDIR)/$(GPDL_SONAME_MAJOR_MINOR) \
DISPLAY_DEV=$(DD)display.dev \
BUILDDIRPREFIX=$(BUILDDIRPREFIX)
@@ -252,6 +286,7 @@ so-only:
$(MAKE) $(SUB_MAKE_OPTION) gs-so-links-subtarget \
$(PCL_TARGET)-so-links-subtarget \
$(XPS_TARGET)-so-links-subtarget \
+ $(PDF_TARGET)-so-links-subtarget \
$(GPDL_TARGET)-so-links-subtarget BUILDDIRPREFIX=$(SODIRPREFIX)
@@ -260,6 +295,7 @@ so-only-stripped:
$(MAKE) $(SUB_MAKE_OPTION) gs-so-links-subtarget \
$(PCL_TARGET)-so-links-subtarget \
$(XPS_TARGET)-so-links-subtarget \
+ $(PDF_TARGET)-so-links-subtarget \
$(GPDL_TARGET)-so-links-subtarget BUILDDIRPREFIX=$(SODIRPREFIX)
# Debug shared object
@@ -284,16 +320,16 @@ so-only-subtarget:
$(AUXDIR)/echogs$(XEAUX) $(AUXDIR)/genarch$(XEAUX)
$(MAKE) $(SUB_MAKE_OPTION) $(SODEFS) GENOPT='$(GENOPT)' GS_LDFLAGS='$(LDFLAGS) $(GS_LDFLAGS_SO)'\
PCL_LDFLAGS='$(LDFLAGS) $(PCL_LDFLAGS_SO)' XPS_LDFLAGS='$(LDFLAGS) $(XPS_LDFLAGS_SO)' \
- PDL_LDFLAGS='$(LDFLAGS) $(PDL_LDFLAGS_SO)' CFLAGS='$(CFLAGS_STANDARD) $(CFLAGS_SO) \
- $(GCFLAGS) $(AC_CFLAGS) $(XCFLAGS)' prefix=$(prefix)
+ PDL_LDFLAGS='$(LDFLAGS) $(PDL_LDFLAGS_SO)' PDF_LDFLAGS='$(LDFLAGS) $(PDF_LDFLAGS_SO)' \
+ CFLAGS='$(CFLAGS_STANDARD) $(CFLAGS_SO) $(GCFLAGS) $(AC_CFLAGS) $(XCFLAGS)' prefix=$(prefix)
so-only-stripped-subtarget: so-only-subtarget
- $(MAKE) $(SUB_MAKE_OPTION) $(SODEFS) gs-so-strip $(PCL_TARGET)-so-strip $(XPS_TARGET)-so-strip $(GPDL_TARGET)-so-strip
+ $(MAKE) $(SUB_MAKE_OPTION) $(SODEFS) gs-so-strip $(PCL_TARGET)-so-strip $(XPS_TARGET)-so-strip $(GPDL_TARGET)-so-strip$ (PDF_TARGET)-so-strip
so-subtarget: so-only-subtarget
$(MAKE) $(SUB_MAKE_OPTION) $(SODEFS_FINAL) GENOPT='$(GENOPT)' LDFLAGS='$(LDFLAGS)'\
CFLAGS='$(CFLAGS_STANDARD) $(GCFLAGS) $(AC_CFLAGS) $(XCFLAGS)' prefix=$(prefix)\
- $(GSSOC_XE) $(GSSOX_XE) $(PCL_TARGET)-so-loader $(XPS_TARGET)-so-loader $(GPDL_TARGET)-so-loader
+ $(GSSOC_XE) $(GSSOX_XE) $(PCL_TARGET)-so-loader $(XPS_TARGET)-so-loader $(GPDL_TARGET)-so-loader $(PDF_TARGET)-so-loader
install-so-gs:
$(MAKE) $(SUB_MAKE_OPTION) install-so-subtarget BUILDDIRPREFIX=$(SODIRPREFIX)
diff --git a/base/unix-end.mak b/base/unix-end.mak
index d837d9eae..9302ce963 100644
--- a/base/unix-end.mak
+++ b/base/unix-end.mak
@@ -43,6 +43,12 @@ gxps: .xpssubtarget $(UNIX_END_MAK)
gxpsclean: cleansub
$(NO_OP)
+gpdf: .pdfsubtarget $(UNIX_END_MAK)
+ $(NO_OP)
+
+gpdfclean: cleansub
+ $(NO_OP)
+
gpdl: .gpdlsubtarget $(UNIX_END_MAK)
$(NO_OP)
@@ -102,6 +108,12 @@ gxpspg:
gxpspgclean:
$(MAKE) $(PROFILEMAKEOPTS) cleansub
+gpdfpg:
+ $(MAKE) $(PROFILEMAKEOPTS) .pdfsubtarget
+
+gpdfpgclean:
+ $(MAKE) $(PROFILEMAKEOPTS) cleansub
+
gpdlpg:
$(MAKE) $(PROFILEMAKEOPTS) .gpdlsubtarget
@@ -145,6 +157,12 @@ gxpsdebug:
gxpsdebugclean:
$(MAKE) $(DEBUGMAKEOPTS) cleansub
+gpdfdebug:
+ $(MAKE) $(DEBUGMAKEOPTS) .pdfsubtarget
+
+gpdfdebugclean:
+ $(MAKE) $(DEBUGMAKEOPTS) cleansub
+
gpdldebug:
$(MAKE) $(DEBUGMAKEOPTS) .gpdlsubtarget
@@ -188,6 +206,9 @@ gpcl6memento:
gxpsmemento:
$(MAKE) $(MEMENTOMAKEOPTS) .xpssubtarget
+gpdfmemento:
+ $(MAKE) $(MEMENTOMAKEOPTS) .pdfsubtarget
+
gpdlmemento:
$(MAKE) $(MEMENTOMAKEOPTS) .gpdlsubtarget
@@ -218,6 +239,9 @@ gxpsmementovg:
gpdlmementovg:
$(MAKE) $(MEMENTOVGMAKEOPTS) .gpdlsubtarget
+gpdfmementovg:
+ $(MAKE) $(MEMENTOVGMAKEOPTS) .pdfsubtarget
+
mementovgclean:
$(MAKE) $(MEMENTOVGMAKEOPTS) cleansub
@@ -244,6 +268,9 @@ gpcl6sanitize:
gxpssanitize:
$(MAKE) $(SANITIZEMAKEOPTS) .xpssubtarget
+gpdfsanitize:
+ $(MAKE) $(SANITIZEMAKEOPTS) .pdfsubtarget
+
gpdlsanitize:
$(MAKE) $(SANITIZEMAKEOPTS) .gpdlsubtarget
@@ -273,6 +300,9 @@ gxpsvg:
gpdlvg:
$(MAKE) $(VGMAKEOPTS) .gpdlsubtarget
+gpdfvg:
+ $(MAKE) $(VGMAKEOPTS) .pdfsubtarget
+
vgclean:
$(MAKE) $(VGMAKEOPTS) cleansub
@@ -300,6 +330,9 @@ gxpsdebugvg:
gpdldebugvg:
$(MAKE) $(DEBUGVGMAKEOPTS) .gpdlsubtarget
+gpdfdebugvg:
+ $(MAKE) $(DEBUGVGMAKEOPTS) .pdfsubtarget
+
debugvgclean:
$(MAKE) $(DEBUGVGMAKEOPTS) cleansub
diff --git a/base/unix-gcc.mak b/base/unix-gcc.mak
index c8bc0659b..0712aa272 100644
--- a/base/unix-gcc.mak
+++ b/base/unix-gcc.mak
@@ -53,6 +53,10 @@ XPSSRCDIR=./xps
XPSGENDIR=./$(BUILDDIRPREFIX)obj
XPSOBJDIR=./$(BUILDDIRPREFIX)obj
+PDFSRCDIR=./pdf
+PDFGENDIR=./$(BUILDDIRPREFIX)obj
+PDFOBJDIR=./$(BUILDDIRPREFIX)obj
+
GPDLSRCDIR=./gpdl
GPDLGENDIR=./$(BUILDDIRPREFIX)obj
GPDLOBJDIR=./$(BUILDDIRPREFIX)obj
@@ -173,6 +177,7 @@ GS_SO_BASE=gs
PCL=gpcl6
XPS=gxps
+PDF=gpdf
GPDL=gpdl
XE=
@@ -406,10 +411,12 @@ LDFLAGS= $(AC_LDFLAGS) $(XLDFLAGS)
GS_LDFLAGS=$(LDFLAGS)
PCL_LDFLAGS=$(LDFLAGS)
XPS_LDFLAGS=$(LDFLAGS)
+PDF_LDFLAGS=$(LDFLAGS)
GS_LDFLAGS_SO=-shared -Wl,$(LD_SET_DT_SONAME)$(LDFLAGS_SO_PREFIX)$(GS_SONAME_MAJOR)
PCL_LDFLAGS_SO=-shared -Wl,$(LD_SET_DT_SONAME)$(LDFLAGS_SO_PREFIX)$(PCL_SONAME_MAJOR)
XPS_LDFLAGS_SO=-shared -Wl,$(LD_SET_DT_SONAME)$(LDFLAGS_SO_PREFIX)$(XPS_SONAME_MAJOR)
+PDF_LDFLAGS_SO=-shared -Wl,$(LD_SET_DT_SONAME)$(LDFLAGS_SO_PREFIX)$(PDF_SONAME_MAJOR)
# Define any extra libraries to link into the executable.
# ISC Unix 2.2 wants -linet.
@@ -498,6 +505,8 @@ PCL_FEATURE_DEVS=$(PLOBJDIR)/pl.dev $(PLOBJDIR)/pjl.dev $(PXLOBJDIR)/pxl.dev $(P
XPS_FEATURE_DEVS=$(XPSOBJDIR)/pl.dev $(XPSOBJDIR)/xps.dev
+PDF_FEATURE_DEVS=$(PDFOBJDIR)/pl.dev $(PDFOBJDIR)/gpdf.dev
+
FEATURE_DEVS=$(GLD)pipe.dev $(GLD)gsnogc.dev $(GLD)htxlib.dev $(GLD)psl3lib.dev $(GLD)psl2lib.dev \
$(GLD)dps2lib.dev $(GLD)path1lib.dev $(GLD)patlib.dev $(GLD)psl2cs.dev $(GLD)rld.dev $(GLD)gxfapiu$(UFST_BRIDGE).dev\
$(GLD)ttflib.dev $(GLD)cielib.dev $(GLD)pipe.dev $(GLD)htxlib.dev $(GLD)sdct.dev $(GLD)libpng.dev\
@@ -622,6 +631,7 @@ include $(GLSRCDIR)/gs.mak
# are available
# include $(PLSRCDIR)$(D)plromfs.mak # plromfs.mak
# include $(XPSSRCDIR)$(D)xpsromfs.mak # xpsromfs.mak
+# include $(PDFSRCDIR)$(D)pdfromfs.mak # pdfromfs.mak
include $(PSSRCDIR)/psromfs.mak
include $(GLSRCDIR)/lib.mak
@@ -636,6 +646,8 @@ include $(PSSRCDIR)/int.mak
# include $(XPSSRCDIR)$(D)xps.mak # xps.mak
+# include $(PDFSRCDIR)$(D)pdf.mak # pdf.mak
+
# include $(GPDLSRCDIR)$(D)gpdl.mak # gpdl.mak
include $(GLSRCDIR)/freetype.mak
diff --git a/base/unixlink.mak b/base/unixlink.mak
index 4c65229ee..ee91babda 100644
--- a/base/unixlink.mak
+++ b/base/unixlink.mak
@@ -227,6 +227,27 @@ $(GXPS_XE): $(ld_tr) $(xps_tr) $(REALMAIN_OBJ) $(MAIN_OBJ) $(XPS_TOP_OBJS) \
.xpssubtarget: $(GXPS_XE)
$(NO_OP)
+pdfldt_tr=$(PSOBJ)pdfldt.tr
+$(GPDF_XE): $(ld_tr) $(pdf_tr) $(REALMAIN_OBJ) $(MAIN_OBJ) $(PDF_TOP_OBJS) \
+ $(XOBJS) $(GLOBJDIR)/pdfromfs$(COMPILE_INITS).$(OBJ) \
+ $(INT_ARCHIVE_SOME) $(UNIXLINK_MAK)
+ $(ECHOGS_XE) -w $(pdfldt_tr) -n - $(CCLD) $(PDF_LDFLAGS) $(XLIBDIRS) -o $(GPDF_XE)
+ $(ECHOGS_XE) -a $(pdfldt_tr) -n -s $(PDF_TOP_OBJS) $(INT_ARCHIVE_SOME) $(XOBJS) -s
+ cat $(pdfld_tr) >> $(pdfldt_tr)
+ $(ECHOGS_XE) -a $(pdfldt_tr) -s - $(GLOBJDIR)/pdfromfs$(COMPILE_INITS).$(OBJ) $(REALMAIN_OBJ) $(MAIN_OBJ) $(EXTRALIBS) $(STDLIBS)
+ if [ x$(XLIBDIR) != x ]; then LD_RUN_PATH=$(XLIBDIR); export LD_RUN_PATH; fi; \
+ XCFLAGS= XINCLUDE= XLDFLAGS= XLIBDIRS= XLIBS= \
+ PCL_FEATURE_DEVS= DEVICE_DEVS= DEVICE_DEVS1= DEVICE_DEVS2= DEVICE_DEVS3= \
+ DEVICE_DEVS4= DEVICE_DEVS5= DEVICE_DEVS6= DEVICE_DEVS7= DEVICE_DEVS8= \
+ DEVICE_DEVS9= DEVICE_DEVS10= DEVICE_DEVS11= DEVICE_DEVS12= \
+ DEVICE_DEVS13= DEVICE_DEVS14= DEVICE_DEVS15= DEVICE_DEVS16= \
+ DEVICE_DEVS17= DEVICE_DEVS18= DEVICE_DEVS19= DEVICE_DEVS20= \
+ DEVICE_DEVS_EXTRA= \
+ sh <$(pdfldt_tr)
+
+.pdfsubtarget: $(GPDF_XE)
+ $(NO_OP)
+
gpdlldt_tr=$(PSOBJ)gpdlldt.tr
$(GPDL_XE): $(ld_tr) $(gpdl_tr) $(INT_ARCHIVE_ALL) $(REALMAIN_OBJ) $(MAIN_OBJ) \
$(GPDL_PSI_TOP_OBJS) $(PCL_PXL_TOP_OBJS) $(PSI_TOP_OBJ) $(XPS_TOP_OBJ) \