xref: /plan9/sys/src/cmd/gs/src/macos-fw.mak (revision 593dc095aefb2a85c828727bbfa9da139a49bdf4)
13ff48bf5SDavid du Colombier#    Copyright (C) 2001 Artifex Software, Inc.  All rights reserved.
23ff48bf5SDavid du Colombier#
3*593dc095SDavid du Colombier# This software is provided AS-IS with no warranty, either express or
4*593dc095SDavid du Colombier# implied.
53ff48bf5SDavid du Colombier#
6*593dc095SDavid du Colombier# This software is distributed under license and may not be copied,
7*593dc095SDavid du Colombier# modified or distributed except as expressly authorized under the terms
8*593dc095SDavid du Colombier# of the license contained in the file LICENSE in this distribution.
93ff48bf5SDavid du Colombier#
10*593dc095SDavid du Colombier# For more information about licensing, please refer to
11*593dc095SDavid du Colombier# http://www.ghostscript.com/licensing/. For information on
12*593dc095SDavid du Colombier# commercial licensing, go to http://www.artifex.com/licensing/ or
13*593dc095SDavid du Colombier# contact Artifex Software, Inc., 101 Lucas Valley Road #110,
14*593dc095SDavid du Colombier# San Rafael, CA  94903, U.S.A., +1(415)492-9861.
153ff48bf5SDavid du Colombier
16*593dc095SDavid du Colombier# $Id: macos-fw.mak,v 1.7 2003/09/03 03:22:59 giles Exp $
173ff48bf5SDavid du Colombier# Partial makefile for MacOS X/Darwin shared object target
183ff48bf5SDavid du Colombier
193ff48bf5SDavid du Colombier# Useful make commands:
203ff48bf5SDavid du Colombier#  make framework	make ghostscript as a MacOS X framework
21*593dc095SDavid du Colombier#  make framework_install install the framework
223ff48bf5SDavid du Colombier#  make so		make ghostscript as a shared object
233ff48bf5SDavid du Colombier#  make sodebug		make debug ghostscript as a shared object
243ff48bf5SDavid du Colombier#  make soinstall	install shared object ghostscript
253ff48bf5SDavid du Colombier#  make soclean		remove build files
263ff48bf5SDavid du Colombier#
273ff48bf5SDavid du Colombier# If you want to test the executable without installing:
283ff48bf5SDavid du Colombier#  export LD_LIBRARY_PATH=/insert-path-here/sobin
293ff48bf5SDavid du Colombier#  export GS_LIB=/insert-path-here/lib
303ff48bf5SDavid du Colombier
313ff48bf5SDavid du Colombier# Location for building shared object
323ff48bf5SDavid du ColombierSOOBJRELDIR=../soobj
333ff48bf5SDavid du ColombierSOBINRELDIR=../sobin
343ff48bf5SDavid du Colombier
353ff48bf5SDavid du Colombier# ------------------- Ghostscript shared object --------------------------- #
363ff48bf5SDavid du Colombier
373ff48bf5SDavid du Colombier# Shared object names
383ff48bf5SDavid du Colombier
393ff48bf5SDavid du Colombier# simple loader (no support for display device)
403ff48bf5SDavid du ColombierGSSOC_XENAME=$(GS)c$(XE)
413ff48bf5SDavid du ColombierGSSOC_XE=$(BINDIR)/$(GSSOC_XENAME)
423ff48bf5SDavid du ColombierGSSOC=$(BINDIR)/$(SOBINRELDIR)/$(GSSOC_XENAME)
433ff48bf5SDavid du Colombier
443ff48bf5SDavid du Colombier# shared library
453ff48bf5SDavid du Colombier#SOPREF=.so
463ff48bf5SDavid du Colombier#SOSUF=
473ff48bf5SDavid du ColombierSOPREF=
483ff48bf5SDavid du ColombierSOSUF=.dylib
493ff48bf5SDavid du Colombier
503ff48bf5SDavid du ColombierGS_SONAME_BASE=lib$(GS)$(SOPREF)
513ff48bf5SDavid du ColombierGS_SONAME=$(GS_SONAME_BASE)$(SOSUF)
523ff48bf5SDavid du ColombierGS_SONAME_MAJOR=$(GS_SONAME_BASE).$(GS_VERSION_MAJOR)$(SOSUF)
533ff48bf5SDavid du ColombierGS_SONAME_MAJOR_MINOR= $(GS_SONAME_BASE).$(GS_VERSION_MAJOR).$(GS_VERSION_MINOR)$(SOSUF)
543ff48bf5SDavid du ColombierGS_SO=$(BINDIR)/$(GS_SONAME)
553ff48bf5SDavid du ColombierGS_SO_MAJOR=$(BINDIR)/$(GS_SONAME_MAJOR)
563ff48bf5SDavid du ColombierGS_SO_MAJOR_MINOR=$(BINDIR)/$(GS_SONAME_MAJOR_MINOR)
573ff48bf5SDavid du Colombier
583ff48bf5SDavid du Colombier# Shared object is built by redefining GS_XE in a recursive make.
593ff48bf5SDavid du Colombier
603ff48bf5SDavid du Colombier# Create symbolic links to the Ghostscript interpreter library
613ff48bf5SDavid du Colombier
623ff48bf5SDavid du Colombier$(GS_SO): $(GS_SO_MAJOR)
633ff48bf5SDavid du Colombier	$(RM_) $(GS_SO)
643ff48bf5SDavid du Colombier	ln -s $(GS_SONAME_MAJOR_MINOR) $(GS_SO)
653ff48bf5SDavid du Colombier
663ff48bf5SDavid du Colombier$(GS_SO_MAJOR): $(GS_SO_MAJOR_MINOR)
673ff48bf5SDavid du Colombier	$(RM_) $(GS_SO_MAJOR)
683ff48bf5SDavid du Colombier	ln -s $(GS_SONAME_MAJOR_MINOR) $(GS_SO_MAJOR)
693ff48bf5SDavid du Colombier
70*593dc095SDavid du Colombier# Build the small Ghostscript loaders
71*593dc095SDavid du Colombier# it would be nice if we could link to the framework instead
723ff48bf5SDavid du Colombier
733ff48bf5SDavid du Colombier$(GSSOC_XE): $(GS_SO) $(GLSRC)dxmainc.c
743ff48bf5SDavid du Colombier	$(GLCC) -g -o $(GSSOC_XE) $(GLSRC)dxmainc.c -L$(BINDIR) -l$(GS)
753ff48bf5SDavid du Colombier
763ff48bf5SDavid du Colombier# ------------------------- Recursive make targets ------------------------- #
773ff48bf5SDavid du Colombier
783ff48bf5SDavid du Colombier# we pass the framework path under -install_name here rather than /usr/local/lib
793ff48bf5SDavid du Colombier# or whatever. This will effectively break the .dylib build in favor of the
803ff48bf5SDavid du Colombier# Framework. Generally on MacOS X this is what we want, but there should be
813ff48bf5SDavid du Colombier# a separate .dylib target if we're going to build them at all
823ff48bf5SDavid du Colombier# we should also be passing compatibility versions
833ff48bf5SDavid du Colombier
843ff48bf5SDavid du ColombierSODEFS=LDFLAGS='$(LDFLAGS) $(CFLAGS_SO) -dynamiclib -install_name $(prefix)/$(FRAMEWORK_NAME)'\
853ff48bf5SDavid du Colombier GS_XE=$(BINDIR)/$(SOBINRELDIR)/$(GS_SONAME_MAJOR_MINOR)\
863ff48bf5SDavid du Colombier STDIO_IMPLEMENTATION=c\
873ff48bf5SDavid du Colombier DISPLAY_DEV=$(DD)$(SOOBJRELDIR)/display.dev\
883ff48bf5SDavid du Colombier BINDIR=$(BINDIR)/$(SOBINRELDIR)\
893ff48bf5SDavid du Colombier GLGENDIR=$(GLGENDIR)/$(SOOBJRELDIR)\
903ff48bf5SDavid du Colombier GLOBJDIR=$(GLOBJDIR)/$(SOOBJRELDIR)\
913ff48bf5SDavid du Colombier PSGENDIR=$(PSGENDIR)/$(SOOBJRELDIR)\
923ff48bf5SDavid du Colombier PSOBJDIR=$(PSOBJDIR)/$(SOOBJRELDIR)
933ff48bf5SDavid du Colombier
943ff48bf5SDavid du Colombier
953ff48bf5SDavid du Colombier# Normal shared object
963ff48bf5SDavid du Colombierso: SODIRS
973ff48bf5SDavid du Colombier	$(MAKE) $(SODEFS) CFLAGS='$(CFLAGS_STANDARD) $(CFLAGS_SO) $(GCFLAGS) $(XCFLAGS)' prefix=$(prefix) $(GSSOC) $(GSSOX)
983ff48bf5SDavid du Colombier
993ff48bf5SDavid du Colombier# Debug shared object
1003ff48bf5SDavid du Colombier# Note that this is in the same directory as the normal shared
1013ff48bf5SDavid du Colombier# object, so you will need to use 'make soclean', 'make sodebug'
1023ff48bf5SDavid du Colombiersodebug: SODIRS
1033ff48bf5SDavid du Colombier	$(MAKE) $(SODEFS) GENOPT='-DDEBUG' CFLAGS='$(CFLAGS_DEBUG) $(CFLAGS_SO) $(GCFLAGS) $(XCFLAGS)' $(GSSOC) $(GSSOX)
1043ff48bf5SDavid du Colombier
1053ff48bf5SDavid du Colombierinstall-so: so
1063ff48bf5SDavid du Colombier	-mkdir $(prefix)
1073ff48bf5SDavid du Colombier	-mkdir $(datadir)
1083ff48bf5SDavid du Colombier	-mkdir $(gsdir)
1093ff48bf5SDavid du Colombier	-mkdir $(gsdatadir)
1103ff48bf5SDavid du Colombier	-mkdir $(bindir)
1113ff48bf5SDavid du Colombier	-mkdir $(libdir)
1123ff48bf5SDavid du Colombier	$(INSTALL_PROGRAM) $(GSSOC) $(bindir)/$(GSSOC_XENAME)
1133ff48bf5SDavid du Colombier	$(INSTALL_PROGRAM) $(GSSOX) $(bindir)/$(GSSOX_XENAME)
1143ff48bf5SDavid du Colombier	$(INSTALL_PROGRAM) $(BINDIR)/$(SOBINRELDIR)/$(GS_SONAME_MAJOR_MINOR) $(libdir)/$(GS_SONAME_MAJOR_MINOR)
1153ff48bf5SDavid du Colombier	$(RM_) $(libdir)/$(GS_SONAME)
1163ff48bf5SDavid du Colombier	ln -s $(GS_SONAME_MAJOR_MINOR) $(libdir)/$(GS_SONAME)
1173ff48bf5SDavid du Colombier	$(RM_) $(libdir)/$(GS_SONAME_MAJOR)
1183ff48bf5SDavid du Colombier	ln -s $(GS_SONAME_MAJOR_MINOR) $(libdir)/$(GS_SONAME_MAJOR)
1193ff48bf5SDavid du Colombier
1203ff48bf5SDavid du Colombiersoinstall: install-so install-scripts install-data
1213ff48bf5SDavid du Colombier
1223ff48bf5SDavid du ColombierGS_FRAMEWORK=$(BINDIR)/$(SOBINRELDIR)/$(FRAMEWORK_NAME)$(FRAMEWORK_EXT)
1233ff48bf5SDavid du Colombier
1243ff48bf5SDavid du Colombierframework: so lib/Info-macos.plist
1253ff48bf5SDavid du Colombier	rm -rf $(GS_FRAMEWORK)
1263ff48bf5SDavid du Colombier	-mkdir $(GS_FRAMEWORK)
1273ff48bf5SDavid du Colombier	-mkdir $(GS_FRAMEWORK)/Versions
1283ff48bf5SDavid du Colombier	-mkdir $(GS_FRAMEWORK)/Versions/$(GS_DOT_VERSION)
1293ff48bf5SDavid du Colombier	-mkdir $(GS_FRAMEWORK)/Versions/$(GS_DOT_VERSION)/Headers
1303ff48bf5SDavid du Colombier	-mkdir $(GS_FRAMEWORK)/Versions/$(GS_DOT_VERSION)/Resources
1313ff48bf5SDavid du Colombier	(cd $(GS_FRAMEWORK)/Versions; ln -s $(GS_DOT_VERSION) Current)
1323ff48bf5SDavid du Colombier	(cd $(GS_FRAMEWORK); \
1333ff48bf5SDavid du Colombier	ln -s Versions/Current/Headers . ;\
1343ff48bf5SDavid du Colombier	ln -s Versions/Current/Resources ;\
1353ff48bf5SDavid du Colombier	ln -s Versions/Current/man . ;\
1363ff48bf5SDavid du Colombier	ln -s Versions/Current/doc . ;\
1373ff48bf5SDavid du Colombier	ln -s Versions/Current/$(FRAMEWORK_NAME) . )
1383ff48bf5SDavid du Colombier	pwd
139*593dc095SDavid du Colombier	cp src/iapi.h src/ierrors.h src/gdevdsp.h $(GS_FRAMEWORK)/Headers/
1403ff48bf5SDavid du Colombier	cp lib/Info-macos.plist $(GS_FRAMEWORK)/Resources/
1413ff48bf5SDavid du Colombier	cp -r lib $(GS_FRAMEWORK)/Resources/
1423ff48bf5SDavid du Colombier	cp $(BINDIR)/$(SOBINRELDIR)/$(GS_SONAME_MAJOR_MINOR) $(GS_FRAMEWORK)/Versions/Current/$(FRAMEWORK_NAME)
1433ff48bf5SDavid du Colombier	cp -r man $(GS_FRAMEWORK)/Versions/Current
1443ff48bf5SDavid du Colombier	cp -r doc $(GS_FRAMEWORK)/Versions/Current
1453ff48bf5SDavid du Colombier
146*593dc095SDavid du Colombierframework_install : framework
147*593dc095SDavid du Colombier	rm -rf $(prefix)
148*593dc095SDavid du Colombier	cp -r $(GS_FRAMEWORK) $(prefix)
149*593dc095SDavid du Colombier
1503ff48bf5SDavid du Colombier# Make the build directories
1513ff48bf5SDavid du ColombierSODIRS: STDDIRS
1523ff48bf5SDavid du Colombier	@if test ! -d $(BINDIR)/$(SOBINRELDIR); then mkdir $(BINDIR)/$(SOBINRELDIR); fi
1533ff48bf5SDavid du Colombier	@if test ! -d $(GLGENDIR)/$(SOOBJRELDIR); then mkdir $(GLGENDIR)/$(SOOBJRELDIR); fi
1543ff48bf5SDavid du Colombier	@if test ! -d $(GLOBJDIR)/$(SOOBJRELDIR); then mkdir $(GLOBJDIR)/$(SOOBJRELDIR); fi
1553ff48bf5SDavid du Colombier	@if test ! -d $(PSGENDIR)/$(SOOBJRELDIR); then mkdir $(PSGENDIR)/$(SOOBJRELDIR); fi
1563ff48bf5SDavid du Colombier	@if test ! -d $(PSOBJDIR)/$(SOOBJRELDIR); then mkdir $(PSOBJDIR)/$(SOOBJRELDIR); fi
1573ff48bf5SDavid du Colombier
1583ff48bf5SDavid du Colombier
1593ff48bf5SDavid du Colombiersoclean: SODIRS
1603ff48bf5SDavid du Colombier	$(MAKE) $(SODEFS) clean
1613ff48bf5SDavid du Colombier	$(RM_) $(BINDIR)/$(SOBINRELDIR)/$(GS_SONAME)
1623ff48bf5SDavid du Colombier	$(RM_) $(BINDIR)/$(SOBINRELDIR)/$(GS_SONAME_MAJOR)
1633ff48bf5SDavid du Colombier	$(RM_) $(GSSOC)
1643ff48bf5SDavid du Colombier	$(RM_) $(GSSOX)
1653ff48bf5SDavid du Colombier
1663ff48bf5SDavid du Colombier# End of unix-dll.mak
167