Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed
# Copyright (C) 2001, Aladdin Enterprises. All rights reserved.
#
# This software is provided AS-IS with no warranty, either express or
# implied.
#
# This software is distributed under license and may not be copied,
# modified or distributed except as expressly authorized under the terms
# of the license contained in the file LICENSE in this distribution.
#
# For more information about licensing, please refer to
# http://www.ghostscript.com/licensing/. For information on
# commercial licensing, go to http://www.artifex.com/licensing/ or
# contact Artifex Software, Inc., 101 Lucas Valley Road #110,
# San Rafael, CA 94903, U.S.A., +1(415)492-9861.
# $Id: unix-dll.mak,v 1.10 2003/09/24 13:41:20 giles Exp $
# Partial makefile for Unix shared object target
# Useful make commands:
# make so make ghostscript as a shared object
# make sodebug make debug ghostscript as a shared object
# make soinstall install shared object ghostscript
# make soclean remove build files
#
# If you want to test the executable without installing:
# export LD_LIBRARY_PATH=/insert-path-here/sobin
# export GS_LIB=/insert-path-here/lib
# Location for building shared object
SOOBJRELDIR=../soobj
SOBINRELDIR=../sobin
# ------------------- Ghostscript shared object --------------------------- #
# Shared object names
# simple loader (no support for display device)
GSSOC_XENAME=$(GS)c$(XE)
GSSOC_XE=$(BINDIR)/$(GSSOC_XENAME)
GSSOC=$(BINDIR)/$(SOBINRELDIR)/$(GSSOC_XENAME)
# loader suporting display device using Gtk+
GSSOX_XENAME=$(GS)x$(XE)
GSSOX_XE=$(BINDIR)/$(GSSOX_XENAME)
GSSOX=$(BINDIR)/$(SOBINRELDIR)/$(GSSOX_XENAME)
# shared library
GS_SONAME=lib$(GS).so
GS_SONAME_MAJOR=$(GS_SONAME).$(GS_VERSION_MAJOR)
GS_SONAME_MAJOR_MINOR= $(GS_SONAME).$(GS_VERSION_MAJOR).$(GS_VERSION_MINOR)
GS_SO=$(BINDIR)/$(GS_SONAME)
GS_SO_MAJOR=$(GS_SO).$(GS_VERSION_MAJOR)
GS_SO_MAJOR_MINOR=$(GS_SO_MAJOR).$(GS_VERSION_MINOR)
# Shared object is built by redefining GS_XE in a recursive make.
# Create symbolic links to the Ghostscript interpreter library
$(GS_SO): $(GS_SO_MAJOR)
$(RM_) $(GS_SO)
ln -s $(GS_SONAME_MAJOR_MINOR) $(GS_SO)
$(GS_SO_MAJOR): $(GS_SO_MAJOR_MINOR)
$(RM_) $(GS_SO_MAJOR)
ln -s $(GS_SONAME_MAJOR_MINOR) $(GS_SO_MAJOR)
# Build the small Ghostscript loaders, with Gtk+ and without
$(GSSOX_XE): $(GS_SO) $(GLSRC)dxmain.c
$(GLCC) -g `gtk-config --cflags` -o $(GSSOX_XE) $(GLSRC)dxmain.c -L$(BINDIR) -l$(GS) `gtk-config --libs`
$(GSSOC_XE): $(GS_SO) $(GLSRC)dxmainc.c
$(GLCC) -g -o $(GSSOC_XE) $(GLSRC)dxmainc.c -L$(BINDIR) -l$(GS)
# ------------------------- Recursive make targets ------------------------- #
SODEFS=LDFLAGS='$(LDFLAGS) $(CFLAGS_SO) -shared -Wl,-soname=$(GS_SONAME_MAJOR)'\
GS_XE=$(BINDIR)/$(SOBINRELDIR)/$(GS_SONAME_MAJOR_MINOR)\
STDIO_IMPLEMENTATION=c\
DISPLAY_DEV=$(DD)$(SOOBJRELDIR)/display.dev\
BINDIR=$(BINDIR)/$(SOBINRELDIR)\
GLGENDIR=$(GLGENDIR)/$(SOOBJRELDIR)\
GLOBJDIR=$(GLOBJDIR)/$(SOOBJRELDIR)\
PSGENDIR=$(PSGENDIR)/$(SOOBJRELDIR)\
PSOBJDIR=$(PSOBJDIR)/$(SOOBJRELDIR)
# Normal shared object
so: SODIRS
$(MAKE) $(SODEFS) CFLAGS='$(CFLAGS_STANDARD) $(CFLAGS_SO) $(GCFLAGS) $(XCFLAGS)' prefix=$(prefix) $(GSSOC) $(GSSOX)
# Debug shared object
# Note that this is in the same directory as the normal shared
# object, so you will need to use 'make soclean', 'make sodebug'
sodebug: SODIRS
$(MAKE) $(SODEFS) GENOPT='-DDEBUG' CFLAGS='$(CFLAGS_DEBUG) $(CFLAGS_SO) $(GCFLAGS) $(XCFLAGS)' $(GSSOC) $(GSSOX)
install-so: so
-mkdir -p $(prefix)
-mkdir -p $(datadir)
-mkdir -p $(gsdir)
-mkdir -p $(gsdatadir)
-mkdir -p $(bindir)
-mkdir -p $(libdir)
$(INSTALL_PROGRAM) $(GSSOC) $(bindir)/$(GSSOC_XENAME)
$(INSTALL_PROGRAM) $(GSSOX) $(bindir)/$(GSSOX_XENAME)
$(INSTALL_PROGRAM) $(BINDIR)/$(SOBINRELDIR)/$(GS_SONAME_MAJOR_MINOR) $(libdir)/$(GS_SONAME_MAJOR_MINOR)
$(RM_) $(libdir)/$(GS_SONAME)
ln -s $(GS_SONAME_MAJOR_MINOR) $(libdir)/$(GS_SONAME)
$(RM_) $(libdir)/$(GS_SONAME_MAJOR)
ln -s $(GS_SONAME_MAJOR_MINOR) $(libdir)/$(GS_SONAME_MAJOR)
soinstall: install-so install-scripts install-data
# Make the build directories
SODIRS: STDDIRS
@if test ! -d $(BINDIR)/$(SOBINRELDIR); then mkdir -p $(BINDIR)/$(SOBINRELDIR); fi
@if test ! -d $(GLGENDIR)/$(SOOBJRELDIR); then mkdir -p $(GLGENDIR)/$(SOOBJRELDIR); fi
@if test ! -d $(GLOBJDIR)/$(SOOBJRELDIR); then mkdir -p $(GLOBJDIR)/$(SOOBJRELDIR); fi
@if test ! -d $(PSGENDIR)/$(SOOBJRELDIR); then mkdir -p $(PSGENDIR)/$(SOOBJRELDIR); fi
@if test ! -d $(PSOBJDIR)/$(SOOBJRELDIR); then mkdir -p $(PSOBJDIR)/$(SOOBJRELDIR); fi
soclean: SODIRS
$(MAKE) $(SODEFS) clean
$(RM_) $(BINDIR)/$(SOBINRELDIR)/$(GS_SONAME)
$(RM_) $(BINDIR)/$(SOBINRELDIR)/$(GS_SONAME_MAJOR)
$(RM_) $(GSSOC)
$(RM_) $(GSSOX)
# End of unix-dll.mak