1
# Copyright (C) 2001-2007 Artifex Software, Inc.
4
# This software is provided AS-IS with no warranty, either express or
7
# This software is distributed under license and may not be copied, modified
8
# or distributed except as expressly authorized under the terms of that
9
# license. Refer to licensing information at http://www.artifex.com/
10
# or contact Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134,
11
# San Rafael, CA 94903, U.S.A., +1(415)492-9861, for further information.
13
# $Id: unix-dll.mak 8410 2007-11-27 22:58:40Z giles $
14
# Partial makefile for Unix shared library target
16
# Useful make commands:
17
# make so make ghostscript as a shared object
18
# make sodebug make debug ghostscript as a shared object
19
# make soinstall install shared object ghostscript
20
# make soclean remove build files
22
# If you want to test the executable without installing:
23
# export LD_LIBRARY_PATH=/insert-path-here/sobin
24
# export GS_LIB=/insert-path-here/lib
26
# Location for building shared object
30
# ------------------- Ghostscript shared object --------------------------- #
34
# simple loader (no support for display device)
35
GSSOC_XENAME=$(GS)c$(XE)
36
GSSOC_XE=$(BINDIR)/$(GSSOC_XENAME)
37
GSSOC=$(BINDIR)/$(SOBINRELDIR)/$(GSSOC_XENAME)
39
# loader suporting display device using Gtk+
40
GSSOX_XENAME=$(GS)x$(XE)
41
GSSOX_XE=$(BINDIR)/$(GSSOX_XENAME)
42
GSSOX=$(BINDIR)/$(SOBINRELDIR)/$(GSSOX_XENAME)
45
GS_SONAME_BASE=lib$(GS)
49
GS_SONAME=$(GS_SONAME_BASE).$(GS_SOEXT)
50
GS_SONAME_MAJOR=$(GS_SONAME).$(GS_VERSION_MAJOR)
51
GS_SONAME_MAJOR_MINOR=$(GS_SONAME).$(GS_VERSION_MAJOR).$(GS_VERSION_MINOR)
52
LDFLAGS_SO=-shared -Wl,-soname=$(GS_SONAME_MAJOR)
56
#GS_SONAME=$(GS_SONAME_BASE).$(GS_SOEXT)
57
#GS_SONAME_MAJOR=$(GS_SONAME_BASE).$(GS_VERSION_MAJOR).$(GS_SOEXT)
58
#GS_SONAME_MAJOR_MINOR=$(GS_SONAME_BASE).$(GS_VERSION_MAJOR).$(GS_VERSION_MINOR).$(GS_SOEXT)
59
#LDFLAGS_SO=-dynamiclib -flat-namespace
60
#LDFLAGS_SO=-dynamiclib -install-name $(GS_SONAME_MAJOR_MINOR)
61
#LDFLAGS_SO=-dynamiclib
63
GS_SO=$(BINDIR)/$(GS_SONAME)
64
GS_SO_MAJOR=$(BINDIR)/$(GS_SONAME_MAJOR)
65
GS_SO_MAJOR_MINOR=$(BINDIR)/$(GS_SONAME_MAJOR_MINOR)
67
# Shared object is built by redefining GS_XE in a recursive make.
69
# Create symbolic links to the Ghostscript interpreter library
71
$(GS_SO): $(GS_SO_MAJOR)
73
ln -s $(GS_SONAME_MAJOR_MINOR) $(GS_SO)
75
$(GS_SO_MAJOR): $(GS_SO_MAJOR_MINOR)
77
ln -s $(GS_SONAME_MAJOR_MINOR) $(GS_SO_MAJOR)
79
# Build the small Ghostscript loaders, with Gtk+ and without
81
$(GSSOC_XE): $(GS_SO) $(GLSRC)$(SOC_LOADER)
82
$(GLCC) -g -o $(GSSOC_XE) $(GLSRC)dxmainc.c -L$(BINDIR) -l$(GS)
84
$(GSSOX_XE): $(GS_SO) $(GLSRC)$(SOC_LOADER)
85
$(GLCC) -g $(SOC_CFLAGS) -o $(GSSOX_XE) $(GLSRC)$(SOC_LOADER) \
86
-L$(BINDIR) -l$(GS) $(SOC_LIBS)
88
# ------------------------- Recursive make targets ------------------------- #
90
SODEFS=LDFLAGS='$(LDFLAGS) $(LDFLAGS_SO)'\
91
GS_XE=$(BINDIR)/$(SOBINRELDIR)/$(GS_SONAME_MAJOR_MINOR)\
92
STDIO_IMPLEMENTATION=c\
93
DISPLAY_DEV=$(DD)$(SOOBJRELDIR)/display.dev\
94
BINDIR=$(BINDIR)/$(SOBINRELDIR)\
95
GLGENDIR=$(GLGENDIR)/$(SOOBJRELDIR)\
96
GLOBJDIR=$(GLOBJDIR)/$(SOOBJRELDIR)\
97
PSGENDIR=$(PSGENDIR)/$(SOOBJRELDIR)\
98
PSOBJDIR=$(PSOBJDIR)/$(SOOBJRELDIR)
101
# Normal shared object
103
$(MAKE) $(SODEFS) CFLAGS='$(CFLAGS_STANDARD) $(CFLAGS_SO) $(GCFLAGS) $(XCFLAGS)' prefix=$(prefix) $(GSSOC) $(GSSOX)
105
# Debug shared object
106
# Note that this is in the same directory as the normal shared
107
# object, so you will need to use 'make soclean', 'make sodebug'
109
$(MAKE) $(SODEFS) GENOPT='-DDEBUG' CFLAGS='$(CFLAGS_DEBUG) $(CFLAGS_SO) $(GCFLAGS) $(XCFLAGS)' $(GSSOC) $(GSSOX)
112
-mkdir -p $(DESTDIR)$(prefix)
113
-mkdir -p $(DESTDIR)$(datadir)
114
-mkdir -p $(DESTDIR)$(gsdir)
115
-mkdir -p $(DESTDIR)$(gsdatadir)
116
-mkdir -p $(DESTDIR)$(bindir)
117
-mkdir -p $(DESTDIR)$(libdir)
118
-mkdir -p $(DESTDIR)$(gsincludedir)
119
$(INSTALL_PROGRAM) $(GSSOC) $(DESTDIR)$(bindir)/$(GSSOC_XENAME)
120
$(INSTALL_PROGRAM) $(GSSOX) $(DESTDIR)$(bindir)/$(GSSOX_XENAME)
121
$(INSTALL_PROGRAM) $(BINDIR)/$(SOBINRELDIR)/$(GS_SONAME_MAJOR_MINOR) $(DESTDIR)$(libdir)/$(GS_SONAME_MAJOR_MINOR)
122
$(RM_) $(DESTDIR)$(libdir)/$(GS_SONAME)
123
ln -s $(GS_SONAME_MAJOR_MINOR) $(DESTDIR)$(libdir)/$(GS_SONAME)
124
$(RM_) $(DESTDIR)$(libdir)/$(GS_SONAME_MAJOR)
125
ln -s $(GS_SONAME_MAJOR_MINOR) $(DESTDIR)$(libdir)/$(GS_SONAME_MAJOR)
126
$(INSTALL_DATA) $(PSSRC)iapi.h $(DESTDIR)$(gsincludedir)/iapi.h
127
$(INSTALL_DATA) $(PSSRC)ierrors.h $(DESTDIR)$(gsincludedir)/ierrors.h
128
$(INSTALL_DATA) $(PSSRC)gdevdsp.h $(DESTDIR)$(gsincludedir)/gdevdsp.h
130
soinstall: install-so install-scripts install-data $(INSTALL_SHARED) $(INSTALL_CONTRIB)
132
# Make the build directories
134
@if test ! -d $(BINDIR)/$(SOBINRELDIR); then mkdir -p $(BINDIR)/$(SOBINRELDIR); fi
135
@if test ! -d $(GLGENDIR)/$(SOOBJRELDIR); then mkdir -p $(GLGENDIR)/$(SOOBJRELDIR); fi
136
@if test ! -d $(GLOBJDIR)/$(SOOBJRELDIR); then mkdir -p $(GLOBJDIR)/$(SOOBJRELDIR); fi
137
@if test ! -d $(PSGENDIR)/$(SOOBJRELDIR); then mkdir -p $(PSGENDIR)/$(SOOBJRELDIR); fi
138
@if test ! -d $(PSOBJDIR)/$(SOOBJRELDIR); then mkdir -p $(PSOBJDIR)/$(SOOBJRELDIR); fi
142
$(MAKE) $(SODEFS) clean
143
$(RM_) $(BINDIR)/$(SOBINRELDIR)/$(GS_SONAME)
144
$(RM_) $(BINDIR)/$(SOBINRELDIR)/$(GS_SONAME_MAJOR)
148
# End of unix-dll.mak