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