1# Copyright (C) 2001, artofcode LLC. All rights reserved. 2# 3# This program is free software; you can redistribute it and/or modify it 4# under the terms of the GNU General Public License as published by the 5# Free Software Foundation; either version 2 of the License, or (at your 6# option) any later version. 7# 8# This program is distributed in the hope that it will be useful, but 9# WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General 11# Public License for more details. 12# 13# You should have received a copy of the GNU General Public License along 14# with this program; if not, write to the Free Software Foundation, Inc., 15# 59 Temple Place, Suite 330, Boston, MA, 02111-1307. 16 17 18# $Id: unix-dll.mak,v 1.6.2.2.2.1 2003/01/17 00:49:05 giles Exp $ 19# Partial makefile for Unix shared object target 20 21# Useful make commands: 22# make so make ghostscript as a shared object 23# make sodebug make debug ghostscript as a shared object 24# make soinstall install shared object ghostscript 25# make soclean remove build files 26# 27# If you want to test the executable without installing: 28# export LD_LIBRARY_PATH=/insert-path-here/sobin 29# export GS_LIB=/insert-path-here/lib 30 31# Location for building shared object 32SOOBJRELDIR=../soobj 33SOBINRELDIR=../sobin 34 35# ------------------- Ghostscript shared object --------------------------- # 36 37# Shared object names 38 39# simple loader (no support for display device) 40GSSOC_XENAME=$(GS)c$(XE) 41GSSOC_XE=$(BINDIR)/$(GSSOC_XENAME) 42GSSOC=$(BINDIR)/$(SOBINRELDIR)/$(GSSOC_XENAME) 43 44# loader suporting display device using Gtk+ 45GSSOX_XENAME=$(GS)x$(XE) 46GSSOX_XE=$(BINDIR)/$(GSSOX_XENAME) 47GSSOX=$(BINDIR)/$(SOBINRELDIR)/$(GSSOX_XENAME) 48 49# shared library 50GS_SONAME_BASE=lib$(GS) 51 52GS_SOEXT=so 53GS_SONAME=$(GS_SONAME_BASE).$(GS_SOEXT) 54GS_SONAME_MAJOR=$(GS_SONAME).$(GS_VERSION_MAJOR) 55GS_SONAME_MAJOR_MINOR=$(GS_SONAME).$(GS_VERSION_MAJOR).$(GS_VERSION_MINOR) 56LDFLAGS_SO=-shared -Wl,-soname=$(GS_SONAME_MAJOR) 57 58GS_SO=$(BINDIR)/$(GS_SONAME) 59GS_SO_MAJOR=$(BINDIR)/$(GS_SONAME_MAJOR) 60GS_SO_MAJOR_MINOR=$(BINDIR)/$(GS_SONAME_MAJOR_MINOR) 61 62# Shared object is built by redefining GS_XE in a recursive make. 63 64# Create symbolic links to the Ghostscript interpreter library 65 66$(GS_SO): $(GS_SO_MAJOR) 67 $(RM_) $(GS_SO) 68 ln -s $(GS_SONAME_MAJOR_MINOR) $(GS_SO) 69 70$(GS_SO_MAJOR): $(GS_SO_MAJOR_MINOR) 71 $(RM_) $(GS_SO_MAJOR) 72 ln -s $(GS_SONAME_MAJOR_MINOR) $(GS_SO_MAJOR) 73 74# Build the small Ghostscript loaders, with Gtk+ and without 75 76$(GSSOX_XE): $(GS_SO) $(GLSRC)$(SOC_LOADER) 77 $(GLCC) -g -o $(GSSOX_XE) $(GLSRC)dxmainc.c -L$(BINDIR) -l$(GS) 78 79$(GSSOC_XE): $(GS_SO) $(GLSRC)$(SOC_LOADER) 80 $(GLCC) -g $(SOC_CFLAGS) -o $(GSSOC_XE) $(GLSRC)$(SOC_LOADER) \ 81 -L$(BINDIR) -l$(GS) $(SOC_LIBS) 82 83# ------------------------- Recursive make targets ------------------------- # 84 85SODEFS=LDFLAGS='$(LDFLAGS) $(LDFLAGS_SO)'\ 86 GS_XE=$(BINDIR)/$(SOBINRELDIR)/$(GS_SONAME_MAJOR_MINOR)\ 87 STDIO_IMPLEMENTATION=c\ 88 DISPLAY_DEV=$(DD)$(SOOBJRELDIR)/display.dev\ 89 BINDIR=$(BINDIR)/$(SOBINRELDIR)\ 90 GLGENDIR=$(GLGENDIR)/$(SOOBJRELDIR)\ 91 GLOBJDIR=$(GLOBJDIR)/$(SOOBJRELDIR)\ 92 PSGENDIR=$(PSGENDIR)/$(SOOBJRELDIR)\ 93 PSOBJDIR=$(PSOBJDIR)/$(SOOBJRELDIR) 94 95 96# Normal shared object 97so: SODIRS 98 $(MAKE) $(SODEFS) CFLAGS='$(CFLAGS_STANDARD) $(CFLAGS_SO) $(GCFLAGS) $(XCFLAGS)' prefix=$(prefix) $(GSSOC) $(GSSOX) 99 100# Debug shared object 101# Note that this is in the same directory as the normal shared 102# object, so you will need to use 'make soclean', 'make sodebug' 103sodebug: SODIRS 104 $(MAKE) $(SODEFS) GENOPT='-DDEBUG' CFLAGS='$(CFLAGS_DEBUG) $(CFLAGS_SO) $(GCFLAGS) $(XCFLAGS)' $(GSSOC) $(GSSOX) 105 106install-so: so 107 -mkdir -p $(DESTDIR)$(prefix) 108 -mkdir -p $(DESTDIR)$(datadir) 109 -mkdir -p $(DESTDIR)$(gsdir) 110 -mkdir -p $(DESTDIR)$(gsdatadir) 111 -mkdir -p $(DESTDIR)$(bindir) 112 -mkdir -p $(DESTDIR)$(libdir) 113 -mkdir -p $(DESTDIR)$(gsincludedir) 114 $(INSTALL_PROGRAM) $(GSSOC) $(DESTDIR)$(bindir)/$(GSSOC_XENAME) 115 $(INSTALL_PROGRAM) $(GSSOX) $(DESTDIR)$(bindir)/$(GSSOX_XENAME) 116 $(INSTALL_PROGRAM) $(BINDIR)/$(SOBINRELDIR)/$(GS_SONAME_MAJOR_MINOR) $(DESTDIR)$(libdir)/$(GS_SONAME_MAJOR_MINOR) 117 $(RM_) $(DESTDIR)$(libdir)/$(GS_SONAME) 118 ln -s $(GS_SONAME_MAJOR_MINOR) $(DESTDIR)$(libdir)/$(GS_SONAME) 119 $(RM_) $(DESTDIR)$(libdir)/$(GS_SONAME_MAJOR) 120 ln -s $(GS_SONAME_MAJOR_MINOR) $(DESTDIR)$(libdir)/$(GS_SONAME_MAJOR) 121 $(INSTALL_DATA) $(GLSRC)iapi.h $(DESTDIR)$(gsincludedir)iapi.h 122 $(INSTALL_DATA) $(GLSRC)errors.h $(DESTDIR)$(gsincludedir)ierrors.h 123 $(INSTALL_DATA) $(GLSRC)gdevdsp.h $(DESTDIR)$(gsincludedir)gdevdsp.h 124 125 126soinstall: install-so install-scripts install-data $(INSTALL_SHARED) $(INSTALL_CONTRIB) 127 128# Make the build directories 129SODIRS: STDDIRS 130 @if test ! -d $(BINDIR)/$(SOBINRELDIR); then mkdir -p $(BINDIR)/$(SOBINRELDIR); fi 131 @if test ! -d $(GLGENDIR)/$(SOOBJRELDIR); then mkdir -p $(GLGENDIR)/$(SOOBJRELDIR); fi 132 @if test ! -d $(GLOBJDIR)/$(SOOBJRELDIR); then mkdir -p $(GLOBJDIR)/$(SOOBJRELDIR); fi 133 @if test ! -d $(PSGENDIR)/$(SOOBJRELDIR); then mkdir -p $(PSGENDIR)/$(SOOBJRELDIR); fi 134 @if test ! -d $(PSOBJDIR)/$(SOOBJRELDIR); then mkdir -p $(PSOBJDIR)/$(SOOBJRELDIR); fi 135 136 137soclean: SODIRS 138 $(MAKE) $(SODEFS) clean 139 $(RM_) $(BINDIR)/$(SOBINRELDIR)/$(GS_SONAME) 140 $(RM_) $(BINDIR)/$(SOBINRELDIR)/$(GS_SONAME_MAJOR) 141 $(RM_) $(GSSOC) 142 $(RM_) $(GSSOX) 143 144# End of unix-dll.mak 145