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