1# Copyright (C) 2001-2012 Artifex Software, Inc.
2# All Rights Reserved.
3#
4# This software is provided AS-IS with no warranty, either express or
5# implied.
6#
7# This software is distributed under license and may not be copied,
8# modified or distributed except as expressly authorized under the terms
9# of the license contained in the file LICENSE in this distribution.
10#
11# Refer to licensing information at http://www.artifex.com or contact
12# Artifex Software, Inc.,  7 Mt. Lassen Drive - Suite A-134, San Rafael,
13# CA  94903, U.S.A., +1(415)492-9861, for further information.
14#
15# Partial makefile for Unix shared library target
16
17# Useful make commands:
18#  make so		make ghostscript as a shared object
19#  make sodebug		make debug ghostscript as a shared object
20#  make soinstall	install shared object ghostscript
21#  make soclean		remove build files
22#
23# If you want to test the executable without installing:
24#  export LD_LIBRARY_PATH=/insert-path-here/sobin
25#  export GS_LIB=/insert-path-here/lib
26
27# Location for building shared object
28SODIRPREFIX=so
29SODEBUGDIRPREFIX=sodebug
30
31# ------------------- Ghostscript shared object --------------------------- #
32
33# Shared object names
34
35# simple loader (no support for display device)
36GSSOC_XENAME=$(GS)c$(XE)
37GSSOC_XE=$(BINDIR)/$(GSSOC_XENAME)
38GSSOC=$(BINDIR)/$(GSSOC_XENAME)
39
40# loader suporting display device using Gtk+
41GSSOX_XENAME=$(GS)x$(XE)
42GSSOX_XE=$(BINDIR)/$(GSSOX_XENAME)
43GSSOX=$(BINDIR)/$(GSSOX_XENAME)
44
45# shared library
46GS_SONAME_BASE=lib$(GS)
47
48# GNU/Linux
49GS_SOEXT=$(DYNANIC_LIB_EXT)
50GS_SONAME=$(GS_SONAME_BASE).$(GS_SOEXT)
51GS_SONAME_MAJOR=$(GS_SONAME).$(GS_VERSION_MAJOR)
52GS_SONAME_MAJOR_MINOR=$(GS_SONAME).$(GS_VERSION_MAJOR).$(GS_VERSION_MINOR)
53#LDFLAGS_SO=-shared -Wl,-soname=$(GS_SONAME_MAJOR)
54
55# NOTE: the value of LD_SET_DT_SONAME for, for example, Solaris ld, must contain the
56# trailing space to separation it from the value of the option. For GNU ld and
57# similar linkers it must containt the trailing "="
58LDFLAGS_SO=-shared -Wl,$(LD_SET_DT_SONAME)$(LDFLAGS_SO_PREFIX)$(GS_SONAME_MAJOR)
59
60
61# MacOS X
62#GS_SOEXT=dylib
63#GS_SONAME=$(GS_SONAME_BASE).$(GS_SOEXT)
64#GS_SONAME_MAJOR=$(GS_SONAME_BASE).$(GS_VERSION_MAJOR).$(GS_SOEXT)
65#GS_SONAME_MAJOR_MINOR=$(GS_SONAME_BASE).$(GS_VERSION_MAJOR).$(GS_VERSION_MINOR).$(GS_SOEXT)
66#LDFLAGS_SO=-dynamiclib -flat_namespace
67LDFLAGS_SO_MAC=-dynamiclib -install_name $(GS_SONAME_MAJOR_MINOR)
68#LDFLAGS_SO=-dynamiclib -install_name $(FRAMEWORK_NAME)
69
70GS_SO=$(BINDIR)/$(GS_SONAME)
71GS_SO_MAJOR=$(BINDIR)/$(GS_SONAME_MAJOR)
72GS_SO_MAJOR_MINOR=$(BINDIR)/$(GS_SONAME_MAJOR_MINOR)
73
74# Shared object is built by redefining GS_XE in a recursive make.
75
76# Create symbolic links to the Ghostscript interpreter library
77
78$(GS_SO): $(GS_SO_MAJOR)
79	$(RM_) $(GS_SO)
80	ln -s $(GS_SONAME_MAJOR_MINOR) $(GS_SO)
81
82$(GS_SO_MAJOR): $(GS_SO_MAJOR_MINOR)
83	$(RM_) $(GS_SO_MAJOR)
84	ln -s $(GS_SONAME_MAJOR_MINOR) $(GS_SO_MAJOR)
85
86# Build the small Ghostscript loaders, with Gtk+ and without
87$(GSSOC_XE): $(GS_SO) $(PSSRC)$(SOC_LOADER)
88	$(GLCC) -g -o $(GSSOC_XE) $(PSSRC)dxmainc.c \
89	-L$(BINDIR) -l$(GS)
90
91$(GSSOX_XE): $(GS_SO) $(PSSRC)$(SOC_LOADER)
92	$(GLCC) -g $(SOC_CFLAGS) -o $(GSSOX_XE) $(PSSRC)$(SOC_LOADER) \
93	-L$(BINDIR) -l$(GS) $(SOC_LIBS)
94
95# ------------------------- Recursive make targets ------------------------- #
96
97SODEFS=\
98 GS_XE=$(BINDIR)/$(GS_SONAME_MAJOR_MINOR)\
99 DISPLAY_DEV=$(DD)display.dev\
100 STDIO_IMPLEMENTATION=c\
101 BUILDDIRPREFIX=$(BUILDDIRPREFIX)
102
103# This is a bit nasty; because of the directory name rewriting that happens
104# on a recursive build, we have to recurse twice before we are sure that
105# all the targets are correct.
106
107# Normal shared object
108so:
109	@if test -z "$(MAKE)" -o -z "`$(MAKE) --version 2>&1 | grep GNU`";\
110	  then echo "Warning: this target requires gmake";\
111	fi
112	$(MAKE) so-subtarget$(FOR_MAC) BUILDDIRPREFIX=$(SODIRPREFIX)
113
114# Debug shared object
115sodebug:
116	@if test -z "$(MAKE)" -o -z "`$(MAKE) --version 2>&1 | grep GNU`";\
117	  then echo "Warning: this target requires gmake";\
118	fi
119	$(MAKE) so-subtarget$(FOR_MAC) GENOPT='-DDEBUG' BUILDDIRPREFIX=$(SODEBUGDIRPREFIX)
120
121so-subtarget:
122	$(MAKE) $(SODEFS) GENOPT='$(GENOPT)' LDFLAGS='$(LDFLAGS)'\
123	 CFLAGS='$(CFLAGS_STANDARD) $(GCFLAGS) $(AC_CFLAGS) $(XCFLAGS)' prefix=$(prefix)\
124	 directories
125	$(MAKE) $(SODEFS) GENOPT='$(GENOPT)' LDFLAGS='$(LDFLAGS)'\
126	 CFLAGS='$(CFLAGS_STANDARD) $(GCFLAGS) $(AC_CFLAGS) $(XCFLAGS)' prefix=$(prefix)\
127	 $(AUXDIR)/echogs$(XEAUX) $(AUXDIR)/genarch$(XEAUX)
128	$(MAKE) $(SODEFS) GENOPT='$(GENOPT)' LDFLAGS='$(LDFLAGS) $(LDFLAGS_SO)'\
129	 CFLAGS='$(CFLAGS_STANDARD) $(CFLAGS_SO) $(GCFLAGS) $(AC_CFLAGS) $(XCFLAGS)'\
130	 prefix=$(prefix)
131	$(MAKE) $(SODEFS) GENOPT='$(GENOPT)' LDFLAGS='$(LDFLAGS)'\
132	 CFLAGS='$(CFLAGS_STANDARD) $(GCFLAGS) $(AC_CFLAGS) $(XCFLAGS)' prefix=$(prefix)\
133	 $(GSSOC_XE) $(GSSOX_XE)
134
135# special so-subtarget for MAC OS X
136so-subtarget_1:
137	$(MAKE) $(SODEFS) GENOPT='$(GENOPT)' LDFLAGS='$(LDFLAGS)'\
138	 CFLAGS='$(CFLAGS_STANDARD) $(GCFLAGS) $(AC_CFLAGS) $(XCFLAGS)' prefix=$(prefix)\
139	 directories
140	$(MAKE) $(SODEFS) GENOPT='$(GENOPT)' LDFLAGS='$(LDFLAGS)'\
141	 CFLAGS='$(CFLAGS_STANDARD) $(GCFLAGS) $(AC_CFLAGS) $(XCFLAGS)' prefix=$(prefix)\
142	 $(AUXDIR)/echogs$(XEAUX) $(AUXDIR)/genarch$(XEAUX)
143	$(MAKE) $(SODEFS) GENOPT='$(GENOPT)' LDFLAGS='$(LDFLAGS) $(LDFLAGS_SO_MAC)'\
144	 CFLAGS='$(CFLAGS_STANDARD) $(CFLAGS_SO) $(GCFLAGS) $(AC_CFLAGS) $(XCFLAGS)'\
145	 prefix=$(prefix)
146	$(MAKE) $(SODEFS) GENOPT='$(GENOPT)' LDFLAGS='$(LDFLAGS)'\
147	 CFLAGS='$(CFLAGS_STANDARD) $(GCFLAGS) $(AC_CFLAGS) $(XCFLAGS)' prefix=$(prefix)\
148	 $(GSSOC_XE) $(GSSOX_XE)
149
150
151install-so:
152	$(MAKE) install-so-subtarget BUILDDIRPREFIX=$(SODIRPREFIX)
153
154install-sodebug:
155	$(MAKE) install-so-subtarget GENOPT='-DDEBUG' BUILDDIRPREFIX=$(SODEBUGDIRPREFIX)
156
157install-so-subtarget: so-subtarget$(FOR_MAC)
158	-mkdir -p $(DESTDIR)$(prefix)
159	-mkdir -p $(DESTDIR)$(datadir)
160	-mkdir -p $(DESTDIR)$(gsdir)
161	-mkdir -p $(DESTDIR)$(gsdatadir)
162	-mkdir -p $(DESTDIR)$(bindir)
163	-mkdir -p $(DESTDIR)$(libdir)
164	-mkdir -p $(DESTDIR)$(gsincludedir)
165	$(INSTALL_PROGRAM) -s $(GSSOC) $(DESTDIR)$(bindir)/$(GSSOC_XENAME)
166	$(INSTALL_PROGRAM) -s $(GSSOX) $(DESTDIR)$(bindir)/$(GSSOX_XENAME)
167	$(INSTALL_PROGRAM) $(BINDIR)/$(GS_SONAME_MAJOR_MINOR) $(DESTDIR)$(libdir)/$(GS_SONAME_MAJOR_MINOR)
168	$(RM_) $(DESTDIR)$(libdir)/$(GS_SONAME)
169	ln -s $(GS_SONAME_MAJOR_MINOR) $(DESTDIR)$(libdir)/$(GS_SONAME)
170	$(RM_) $(DESTDIR)$(libdir)/$(GS_SONAME_MAJOR)
171	ln -s $(GS_SONAME_MAJOR_MINOR) $(DESTDIR)$(libdir)/$(GS_SONAME_MAJOR)
172	$(INSTALL_DATA) $(PSSRC)iapi.h $(DESTDIR)$(gsincludedir)iapi.h
173	$(INSTALL_DATA) $(PSSRC)ierrors.h $(DESTDIR)$(gsincludedir)ierrors.h
174	$(INSTALL_DATA) $(GLSRC)gdevdsp.h $(DESTDIR)$(gsincludedir)gdevdsp.h
175
176soinstall:
177	$(MAKE) soinstall-subtarget BUILDDIRPREFIX=$(SODIRPREFIX)
178
179sodebuginstall:
180	$(MAKE) soinstall-subtarget GENOPT='-DDEBUG' BUILDDIRPREFIX=$(SODEBUGDIRPREFIX)
181
182soinstall-subtarget: install-so install-scripts install-data $(INSTALL_SHARED) $(INSTALL_CONTRIB)
183
184# Clean targets
185soclean:
186	$(MAKE) BUILDDIRPREFIX=$(SODIRPREFIX) clean-so-subtarget
187
188clean-so-subtarget:
189	$(MAKE) $(SODEFS) clean-so-subsubtarget
190
191clean-so-subsubtarget: clean
192	$(RM_) $(BINDIR)/$(GS_SONAME)
193	$(RM_) $(BINDIR)/$(GS_SONAME_MAJOR)
194	$(RM_) $(GSSOC)
195	$(RM_) $(GSSOX)
196	$(RMN_) -r $(BINDIR) $(GLGENDIR) $(GLOBJDIR) $(PSGENDIR) $(PSOBJDIR)
197
198sodebugclean:
199	$(MAKE)  BUILDDIRPREFIX=$(SODEBUGDIRPREFIX) clean-sodebug-subtarget
200
201clean-sodebug-subtarget:
202	$(MAKE) $(SODEFS) clean-so-subsubtarget
203
204# End of unix-dll.mak
205