xref: /plan9/sys/src/cmd/gs/src/unix-dll.mak (revision 593dc095aefb2a85c828727bbfa9da139a49bdf4)
1#    Copyright (C) 2001, Aladdin Enterprises.  All rights reserved.
2#
3# This software is provided AS-IS with no warranty, either express or
4# implied.
5#
6# This software is distributed under license and may not be copied,
7# modified or distributed except as expressly authorized under the terms
8# of the license contained in the file LICENSE in this distribution.
9#
10# For more information about licensing, please refer to
11# http://www.ghostscript.com/licensing/. For information on
12# commercial licensing, go to http://www.artifex.com/licensing/ or
13# contact Artifex Software, Inc., 101 Lucas Valley Road #110,
14# San Rafael, CA  94903, U.S.A., +1(415)492-9861.
15
16# $Id: unix-dll.mak,v 1.10 2003/09/24 13:41:20 giles Exp $
17# Partial makefile for Unix shared object target
18
19# Useful make commands:
20#  make so		make ghostscript as a shared object
21#  make sodebug		make debug ghostscript as a shared object
22#  make soinstall	install shared object ghostscript
23#  make soclean		remove build files
24#
25# If you want to test the executable without installing:
26#  export LD_LIBRARY_PATH=/insert-path-here/sobin
27#  export GS_LIB=/insert-path-here/lib
28
29# Location for building shared object
30SOOBJRELDIR=../soobj
31SOBINRELDIR=../sobin
32
33# ------------------- Ghostscript shared object --------------------------- #
34
35# Shared object names
36
37# simple loader (no support for display device)
38GSSOC_XENAME=$(GS)c$(XE)
39GSSOC_XE=$(BINDIR)/$(GSSOC_XENAME)
40GSSOC=$(BINDIR)/$(SOBINRELDIR)/$(GSSOC_XENAME)
41
42# loader suporting display device using Gtk+
43GSSOX_XENAME=$(GS)x$(XE)
44GSSOX_XE=$(BINDIR)/$(GSSOX_XENAME)
45GSSOX=$(BINDIR)/$(SOBINRELDIR)/$(GSSOX_XENAME)
46
47# shared library
48GS_SONAME=lib$(GS).so
49GS_SONAME_MAJOR=$(GS_SONAME).$(GS_VERSION_MAJOR)
50GS_SONAME_MAJOR_MINOR= $(GS_SONAME).$(GS_VERSION_MAJOR).$(GS_VERSION_MINOR)
51GS_SO=$(BINDIR)/$(GS_SONAME)
52GS_SO_MAJOR=$(GS_SO).$(GS_VERSION_MAJOR)
53GS_SO_MAJOR_MINOR=$(GS_SO_MAJOR).$(GS_VERSION_MINOR)
54
55# Shared object is built by redefining GS_XE in a recursive make.
56
57# Create symbolic links to the Ghostscript interpreter library
58
59$(GS_SO): $(GS_SO_MAJOR)
60	$(RM_) $(GS_SO)
61	ln -s $(GS_SONAME_MAJOR_MINOR) $(GS_SO)
62
63$(GS_SO_MAJOR): $(GS_SO_MAJOR_MINOR)
64	$(RM_) $(GS_SO_MAJOR)
65	ln -s $(GS_SONAME_MAJOR_MINOR) $(GS_SO_MAJOR)
66
67# Build the small Ghostscript loaders, with Gtk+ and without
68
69$(GSSOX_XE): $(GS_SO) $(GLSRC)dxmain.c
70	$(GLCC) -g `gtk-config --cflags` -o $(GSSOX_XE) $(GLSRC)dxmain.c -L$(BINDIR) -l$(GS) `gtk-config --libs`
71
72$(GSSOC_XE): $(GS_SO) $(GLSRC)dxmainc.c
73	$(GLCC) -g -o $(GSSOC_XE) $(GLSRC)dxmainc.c -L$(BINDIR) -l$(GS)
74
75# ------------------------- Recursive make targets ------------------------- #
76
77SODEFS=LDFLAGS='$(LDFLAGS) $(CFLAGS_SO) -shared -Wl,-soname=$(GS_SONAME_MAJOR)'\
78 GS_XE=$(BINDIR)/$(SOBINRELDIR)/$(GS_SONAME_MAJOR_MINOR)\
79 STDIO_IMPLEMENTATION=c\
80 DISPLAY_DEV=$(DD)$(SOOBJRELDIR)/display.dev\
81 BINDIR=$(BINDIR)/$(SOBINRELDIR)\
82 GLGENDIR=$(GLGENDIR)/$(SOOBJRELDIR)\
83 GLOBJDIR=$(GLOBJDIR)/$(SOOBJRELDIR)\
84 PSGENDIR=$(PSGENDIR)/$(SOOBJRELDIR)\
85 PSOBJDIR=$(PSOBJDIR)/$(SOOBJRELDIR)
86
87
88# Normal shared object
89so: SODIRS
90	$(MAKE) $(SODEFS) CFLAGS='$(CFLAGS_STANDARD) $(CFLAGS_SO) $(GCFLAGS) $(XCFLAGS)' prefix=$(prefix) $(GSSOC) $(GSSOX)
91
92# Debug shared object
93# Note that this is in the same directory as the normal shared
94# object, so you will need to use 'make soclean', 'make sodebug'
95sodebug: SODIRS
96	$(MAKE) $(SODEFS) GENOPT='-DDEBUG' CFLAGS='$(CFLAGS_DEBUG) $(CFLAGS_SO) $(GCFLAGS) $(XCFLAGS)' $(GSSOC) $(GSSOX)
97
98install-so: so
99	-mkdir -p $(prefix)
100	-mkdir -p $(datadir)
101	-mkdir -p $(gsdir)
102	-mkdir -p $(gsdatadir)
103	-mkdir -p $(bindir)
104	-mkdir -p $(libdir)
105	$(INSTALL_PROGRAM) $(GSSOC) $(bindir)/$(GSSOC_XENAME)
106	$(INSTALL_PROGRAM) $(GSSOX) $(bindir)/$(GSSOX_XENAME)
107	$(INSTALL_PROGRAM) $(BINDIR)/$(SOBINRELDIR)/$(GS_SONAME_MAJOR_MINOR) $(libdir)/$(GS_SONAME_MAJOR_MINOR)
108	$(RM_) $(libdir)/$(GS_SONAME)
109	ln -s $(GS_SONAME_MAJOR_MINOR) $(libdir)/$(GS_SONAME)
110	$(RM_) $(libdir)/$(GS_SONAME_MAJOR)
111	ln -s $(GS_SONAME_MAJOR_MINOR) $(libdir)/$(GS_SONAME_MAJOR)
112
113soinstall: install-so install-scripts install-data
114
115# Make the build directories
116SODIRS: STDDIRS
117	@if test ! -d $(BINDIR)/$(SOBINRELDIR); then mkdir -p $(BINDIR)/$(SOBINRELDIR); fi
118	@if test ! -d $(GLGENDIR)/$(SOOBJRELDIR); then mkdir -p $(GLGENDIR)/$(SOOBJRELDIR); fi
119	@if test ! -d $(GLOBJDIR)/$(SOOBJRELDIR); then mkdir -p $(GLOBJDIR)/$(SOOBJRELDIR); fi
120	@if test ! -d $(PSGENDIR)/$(SOOBJRELDIR); then mkdir -p $(PSGENDIR)/$(SOOBJRELDIR); fi
121	@if test ! -d $(PSOBJDIR)/$(SOOBJRELDIR); then mkdir -p $(PSOBJDIR)/$(SOOBJRELDIR); fi
122
123
124soclean: SODIRS
125	$(MAKE) $(SODEFS) clean
126	$(RM_) $(BINDIR)/$(SOBINRELDIR)/$(GS_SONAME)
127	$(RM_) $(BINDIR)/$(SOBINRELDIR)/$(GS_SONAME_MAJOR)
128	$(RM_) $(GSSOC)
129	$(RM_) $(GSSOX)
130
131# End of unix-dll.mak
132