Makefile revision 1.1
11.1Smycroft#	MOTOROLA MICROPROCESSOR & MEMORY TECHNOLOGY GROUP
21.1Smycroft#	M68000 Hi-Performance Microprocessor Division
31.1Smycroft#	M68040 Software Package 
41.1Smycroft#
51.1Smycroft#	M68040 Software Package Copyright (c) 1993, 1994 Motorola Inc.
61.1Smycroft#	All rights reserved.
71.1Smycroft#
81.1Smycroft#	THE SOFTWARE is provided on an "AS IS" basis and without warranty.
91.1Smycroft#	To the maximum extent permitted by applicable law,
101.1Smycroft#	MOTOROLA DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED,
111.1Smycroft#	INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
121.1Smycroft#	PARTICULAR PURPOSE and any warranty against infringement with
131.1Smycroft#	regard to the SOFTWARE (INCLUDING ANY MODIFIED VERSIONS THEREOF)
141.1Smycroft#	and any accompanying written materials. 
151.1Smycroft#
161.1Smycroft#	To the maximum extent permitted by applicable law,
171.1Smycroft#	IN NO EVENT SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER
181.1Smycroft#	(INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS
191.1Smycroft#	PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR
201.1Smycroft#	OTHER PECUNIARY LOSS) ARISING OF THE USE OR INABILITY TO USE THE
211.1Smycroft#	SOFTWARE.  Motorola assumes no responsibility for the maintenance
221.1Smycroft#	and support of the SOFTWARE.  
231.1Smycroft#
241.1Smycroft#	You are hereby granted a copyright license to use, modify, and
251.1Smycroft#	distribute the SOFTWARE so long as this entire notice is retained
261.1Smycroft#	without alteration in any modified and/or redistributed versions,
271.1Smycroft#	and that such modified versions are clearly identified as such.
281.1Smycroft#	No licenses are granted by implication, estoppel or otherwise
291.1Smycroft#	under any patents or trademarks of Motorola, Inc.
301.1Smycroft
311.1Smycroft#
321.1Smycroft#	Makefile 3.3 3/27/91
331.1Smycroft#
341.1Smycroft#	Makefile for 68040 Floating Point Software Package
351.1Smycroft#
361.1Smycroft
371.1SmycroftTARGET = FPSP
381.1Smycroft
391.1SmycroftASM		= ./pasm
401.1SmycroftASMOPTS		= +p=68020/68881 +l +C +M
411.1SmycroftPLINK		= ./plink
421.1SmycroftPLINKOPTS	= dummy +q$(TARGET) +w32 +x +i +m$(TARGET).linkmap
431.1Smycroft
441.1Smycroft#
451.1Smycroft# For the Library Version:
461.1Smycroft#
471.1SmycroftAR		= ar
481.1SmycroftLIB_FILTER 	= sed 's/fpsp.h/l_fpsp.h/'
491.1SmycroftLIB_TARGET	= libFPSP.a
501.1Smycroft#
511.1Smycroft# SYS selects the template set to use
521.1Smycroft#	templates are supplied for R3V6, CI5 and GEN(generic)
531.1Smycroft# PREFIX is a string that begins a temporary label in the assembler
541.1Smycroft#	R3V6 uses 'L%', CI5 likes '.L'
551.1Smycroft#
561.1Smycroft#SYS		= R3V6
571.1Smycroft#PREFIX		= L%%
581.1Smycroft#
591.1Smycroft#SYS		= CI5
601.1Smycroft#PREFIX		= .L
611.1Smycroft#
621.1SmycroftSYS		= GEN
631.1SmycroftPREFIX		= L_
641.1Smycroft
651.1Smycroft.SUFFIXES:	.s .s~ .sa .sa~ .ro .h .h~
661.1Smycroft
671.1Smycroft.sa.ro:
681.1Smycroft	$(ASM) $(ASMOPTS) $*.sa
691.1Smycroft	
701.1Smycroft.sa~.ro:
711.1Smycroft	sccs get SCCS/s.$*.sa
721.1Smycroft	$(ASM) $(ASMOPTS) $*.sa
731.1Smycroft	rm -f $*.sa
741.1Smycroft
751.1Smycroft.sa.s:
761.1Smycroft	asm2as $*.sa >$*.s
771.1Smycroft
781.1Smycroft.sa~.sa:
791.1Smycroft	sccs get SCCS/s.$*.sa
801.1Smycroft
811.1Smycroft.s~.s:
821.1Smycroft	sccs get SCCS/s.$*.s
831.1Smycroft
841.1Smycroft.h~.h:
851.1Smycroft	sccs get SCCS/s.$*.h
861.1Smycroft
871.1SmycroftRO_FILES = \
881.1Smycroft	skeleton.ro \
891.1Smycroft	bindec.ro \
901.1Smycroft	binstr.ro \
911.1Smycroft	decbin.ro \
921.1Smycroft	do_func.ro \
931.1Smycroft	gen_except.ro \
941.1Smycroft	get_op.ro \
951.1Smycroft	kernel_ex.ro \
961.1Smycroft	res_func.ro \
971.1Smycroft	round.ro \
981.1Smycroft	sacos.ro \
991.1Smycroft	sasin.ro \
1001.1Smycroft	satan.ro \
1011.1Smycroft	satanh.ro \
1021.1Smycroft	scosh.ro \
1031.1Smycroft	setox.ro \
1041.1Smycroft	sgetem.ro \
1051.1Smycroft	sint.ro \
1061.1Smycroft	slogn.ro \
1071.1Smycroft	slog2.ro \
1081.1Smycroft	smovecr.ro \
1091.1Smycroft	srem_mod.ro \
1101.1Smycroft	scale.ro \
1111.1Smycroft	ssin.ro \
1121.1Smycroft	ssinh.ro \
1131.1Smycroft	stan.ro \
1141.1Smycroft	stanh.ro \
1151.1Smycroft	sto_res.ro \
1161.1Smycroft	stwotox.ro \
1171.1Smycroft	tbldo.ro \
1181.1Smycroft	util.ro \
1191.1Smycroft	x_bsun.ro \
1201.1Smycroft	x_fline.ro \
1211.1Smycroft	x_operr.ro \
1221.1Smycroft	x_ovfl.ro \
1231.1Smycroft	x_snan.ro \
1241.1Smycroft	x_store.ro \
1251.1Smycroft	x_unfl.ro \
1261.1Smycroft	x_unimp.ro \
1271.1Smycroft	x_unsupp.ro \
1281.1Smycroft	bugfix.ro \
1291.1Smycroft	FPSP.ro
1301.1Smycroft
1311.1SmycroftLIB_RO_FILES	= \
1321.1Smycroft	l_entry.ro \
1331.1Smycroft	l_do_func.ro \
1341.1Smycroft	l_round.ro \
1351.1Smycroft	l_sacos.ro \
1361.1Smycroft	l_sasin.ro \
1371.1Smycroft	l_satan.ro \
1381.1Smycroft	l_satanh.ro \
1391.1Smycroft	l_scale.ro \
1401.1Smycroft	l_scosh.ro \
1411.1Smycroft	l_setox.ro \
1421.1Smycroft	l_sgetem.ro \
1431.1Smycroft	l_sint.ro \
1441.1Smycroft	l_slog2.ro \
1451.1Smycroft	l_slogn.ro \
1461.1Smycroft	l_srem_mod.ro \
1471.1Smycroft	l_ssin.ro \
1481.1Smycroft	l_ssinh.ro \
1491.1Smycroft	l_stan.ro \
1501.1Smycroft	l_stanh.ro \
1511.1Smycroft	l_stwotox.ro \
1521.1Smycroft	l_support.ro
1531.1Smycroft
1541.1SmycroftSA_FILES = \
1551.1Smycroft	skeleton.sa \
1561.1Smycroft	bindec.sa \
1571.1Smycroft	binstr.sa \
1581.1Smycroft	decbin.sa \
1591.1Smycroft	do_func.sa \
1601.1Smycroft	get_op.sa \
1611.1Smycroft	gen_except.sa \
1621.1Smycroft	kernel_ex.sa \
1631.1Smycroft	res_func.sa \
1641.1Smycroft	round.sa \
1651.1Smycroft	sacos.sa \
1661.1Smycroft	sasin.sa \
1671.1Smycroft	satan.sa \
1681.1Smycroft	satanh.sa \
1691.1Smycroft	scosh.sa \
1701.1Smycroft	setox.sa \
1711.1Smycroft	sgetem.sa \
1721.1Smycroft	sint.sa \
1731.1Smycroft	slogn.sa \
1741.1Smycroft	slog2.sa \
1751.1Smycroft	smovecr.sa \
1761.1Smycroft	srem_mod.sa \
1771.1Smycroft	scale.sa \
1781.1Smycroft	ssin.sa \
1791.1Smycroft	ssinh.sa \
1801.1Smycroft	stan.sa \
1811.1Smycroft	stanh.sa \
1821.1Smycroft	sto_res.sa \
1831.1Smycroft	stwotox.sa \
1841.1Smycroft	tbldo.sa \
1851.1Smycroft	util.sa \
1861.1Smycroft	x_bsun.sa \
1871.1Smycroft	x_fline.sa \
1881.1Smycroft	x_operr.sa \
1891.1Smycroft	x_ovfl.sa \
1901.1Smycroft	x_snan.sa \
1911.1Smycroft	x_store.sa \
1921.1Smycroft	x_unfl.sa \
1931.1Smycroft	x_unimp.sa \
1941.1Smycroft	x_unsupp.sa \
1951.1Smycroft	bugfix.sa \
1961.1Smycroft	FPSP.sa
1971.1Smycroft
1981.1SmycroftLIB_SA_FILES	= \
1991.1Smycroft	l_entry.sa \
2001.1Smycroft	l_do_func.sa \
2011.1Smycroft	l_round.sa \
2021.1Smycroft	l_sacos.sa \
2031.1Smycroft	l_sasin.sa \
2041.1Smycroft	l_satan.sa \
2051.1Smycroft	l_satanh.sa \
2061.1Smycroft	l_scale.sa \
2071.1Smycroft	l_scosh.sa \
2081.1Smycroft	l_setox.sa \
2091.1Smycroft	l_sgetem.sa \
2101.1Smycroft	l_sint.sa \
2111.1Smycroft	l_slog2.sa \
2121.1Smycroft	l_slogn.sa \
2131.1Smycroft	l_srem_mod.sa \
2141.1Smycroft	l_ssin.sa \
2151.1Smycroft	l_ssinh.sa \
2161.1Smycroft	l_stan.sa \
2171.1Smycroft	l_stanh.sa \
2181.1Smycroft	l_stwotox.sa
2191.1Smycroft
2201.1SmycroftH_FILES = \
2211.1Smycroft	fpsp.h \
2221.1Smycroft	l_fpsp.h
2231.1Smycroft
2241.1SmycroftU_FILES = \
2251.1Smycroft	unix.s \
2261.1Smycroft	bindec.s \
2271.1Smycroft	binstr.s \
2281.1Smycroft	decbin.s \
2291.1Smycroft	do_func.s \
2301.1Smycroft	get_op.s \
2311.1Smycroft	gen_except.s \
2321.1Smycroft	kernel_ex.s \
2331.1Smycroft	res_func.s \
2341.1Smycroft	round.s \
2351.1Smycroft	sacos.s \
2361.1Smycroft	sasin.s \
2371.1Smycroft	satan.s \
2381.1Smycroft	satanh.s \
2391.1Smycroft	scosh.s \
2401.1Smycroft	setox.s \
2411.1Smycroft	sgetem.s \
2421.1Smycroft	sint.s \
2431.1Smycroft	slogn.s \
2441.1Smycroft	slog2.s \
2451.1Smycroft	smovecr.s \
2461.1Smycroft	srem_mod.s \
2471.1Smycroft	scale.s \
2481.1Smycroft	ssin.s \
2491.1Smycroft	ssinh.s \
2501.1Smycroft	stan.s \
2511.1Smycroft	stanh.s \
2521.1Smycroft	sto_res.s \
2531.1Smycroft	stwotox.s \
2541.1Smycroft	tbldo.s \
2551.1Smycroft	util.s \
2561.1Smycroft	x_bsun.s \
2571.1Smycroft	x_fline.s \
2581.1Smycroft	x_operr.s \
2591.1Smycroft	x_ovfl.s \
2601.1Smycroft	x_snan.s \
2611.1Smycroft	x_store.s \
2621.1Smycroft	x_unfl.s \
2631.1Smycroft	x_unimp.s \
2641.1Smycroft	x_unsupp.s \
2651.1Smycroft	bugfix.s \
2661.1Smycroft	fpsp.mk \
2671.1Smycroft	fpsp.defs \
2681.1Smycroft	l_entry.s \
2691.1Smycroft	l_do_func.s \
2701.1Smycroft	l_round.s \
2711.1Smycroft	l_sacos.s \
2721.1Smycroft	l_sasin.s \
2731.1Smycroft	l_satan.s \
2741.1Smycroft	l_satanh.s \
2751.1Smycroft	l_scale.s \
2761.1Smycroft	l_scosh.s \
2771.1Smycroft	l_setox.s \
2781.1Smycroft	l_sgetem.s \
2791.1Smycroft	l_sint.s \
2801.1Smycroft	l_slog2.s \
2811.1Smycroft	l_slogn.s \
2821.1Smycroft	l_srem_mod.s \
2831.1Smycroft	l_ssin.s \
2841.1Smycroft	l_ssinh.s \
2851.1Smycroft	l_stan.s \
2861.1Smycroft	l_stanh.s \
2871.1Smycroft	l_stwotox.s \
2881.1Smycroft	l_support.s \
2891.1Smycroft	l_fpsp.defs
2901.1Smycroft
2911.1Smycroft#
2921.1Smycroft#	Build the target object.  The linkfile is created on the fly.
2931.1Smycroft#	Change the SEG directives to suit your system.
2941.1Smycroft#
2951.1Smycroft$(TARGET).mx:	$(RO_FILES)
2961.1Smycroft	rm -f linkfile
2971.1Smycroft	echo 'IDENT FPSP,2,1,68040 Floating Point Software Package'>linkfile
2981.1Smycroft	echo 'SEG SEG0(G):7  $$00004000' >>linkfile
2991.1Smycroft	echo 'SEG SEG1(G):8  $$000D0000' >>linkfile
3001.1Smycroft	echo 'SEG SEG2(G):15 $$000E0000' >>linkfile
3011.1Smycroft	echo $(RO_FILES) | tr ' ' '\012' | sed 's/^/INPUT /' >>linkfile
3021.1Smycroft	echo 'END' >>linkfile
3031.1Smycroft	$(PLINK) $(PLINKOPTS) <linkfile
3041.1Smycroft
3051.1Smycroft#
3061.1Smycroft#	Just about every file needs fpsp.h so:
3071.1Smycroft#
3081.1Smycroft$(RO_FILES):	fpsp.h
3091.1Smycroft
3101.1Smycroftfpsp.defs:	fpsp.h
3111.1Smycroft	asm2as fpsp.h >fpsp.defs
3121.1Smycroft
3131.1Smycroftunix.s:
3141.1Smycroft	sccs get unix.s
3151.1Smycroft
3161.1Smycroftfpsp.mk:
3171.1Smycroft	sccs get fpsp.mk
3181.1Smycroft
3191.1Smycroft#
3201.1Smycroft#-----------------------------------------------------------------------
3211.1Smycroft#
3221.1Smycroft#	For making a library version of the FPSP:
3231.1Smycroft#
3241.1Smycroftlibrary:	$(LIB_TARGET)
3251.1Smycroft
3261.1Smycroft$(LIB_TARGET):	$(LIB_RO_FILES)
3271.1Smycroft	rm -f $(LIB_TARGET)
3281.1Smycroft	$(AR) crv $(LIB_TARGET) $(LIB_RO_FILES)
3291.1Smycroft
3301.1Smycroft$(LIB_RO_FILES): l_fpsp.h
3311.1Smycroft
3321.1Smycroftl_fpsp.defs:	l_fpsp.h
3331.1Smycroft	asm2as l_fpsp.h >l_fpsp.defs
3341.1Smycroft
3351.1Smycroft#
3361.1Smycroft# The entry points to the library version are created here
3371.1Smycroft# by using two template files an awk script and a list of
3381.1Smycroft# the entry routines for each function.
3391.1Smycroft#
3401.1Smycroftl_entry.sa: L_ENTRY.AWK L_LIST MONADIC.$(SYS) DYADIC.$(SYS) l_fpsp.h
3411.1Smycroft	awk -f L_ENTRY.AWK SYS=$(SYS) PREFIX=$(PREFIX) - <L_LIST|sh>l_entry.sa
3421.1Smycroft
3431.1Smycroft#
3441.1Smycroft# Do_func.sa and round.sa need special editing to remove references that
3451.1Smycroft# aren't needed in the library version.  Beware that changes in
3461.1Smycroft# the source code may cause this editing to break....
3471.1Smycroft#
3481.1Smycroftl_do_func.sa: do_func.sa 
3491.1Smycroft	$(LIB_FILTER) do_func.sa >l_do_func.sa
3501.1Smycroft	echo '/xdef.*do_func/,/^	rts/d' >.SCRIPT
3511.1Smycroft	echo 'g/smovcr/d' >>.SCRIPT
3521.1Smycroft	echo 'g/tblpre/d' >>.SCRIPT
3531.1Smycroft	echo 'w' >>.SCRIPT
3541.1Smycroft	echo 'q' >>.SCRIPT
3551.1Smycroft	ed - l_do_func.sa <.SCRIPT
3561.1Smycroft	rm .SCRIPT
3571.1Smycroft
3581.1Smycroftl_round.sa: round.sa 
3591.1Smycroft	$(LIB_FILTER) round.sa >l_round.sa
3601.1Smycroft	echo '/^not_E3:/-6,/^not_E3:/d' >.SCRIPT
3611.1Smycroft	echo 'w' >>.SCRIPT
3621.1Smycroft	echo 'q' >>.SCRIPT
3631.1Smycroft	ed - l_round.sa <.SCRIPT
3641.1Smycroft	rm .SCRIPT
3651.1Smycroft
3661.1Smycroftl_sacos.sa: sacos.sa 
3671.1Smycroft	$(LIB_FILTER) sacos.sa >l_sacos.sa
3681.1Smycroft
3691.1Smycroftl_sasin.sa: sasin.sa 
3701.1Smycroft	$(LIB_FILTER) sasin.sa >l_sasin.sa
3711.1Smycroft
3721.1Smycroftl_satan.sa: satan.sa 
3731.1Smycroft	$(LIB_FILTER) satan.sa >l_satan.sa
3741.1Smycroft
3751.1Smycroftl_satanh.sa: satanh.sa 
3761.1Smycroft	$(LIB_FILTER) satanh.sa >l_satanh.sa
3771.1Smycroft
3781.1Smycroftl_scale.sa: scale.sa 
3791.1Smycroft	$(LIB_FILTER) scale.sa >l_scale.sa
3801.1Smycroft
3811.1Smycroftl_scosh.sa: scosh.sa 
3821.1Smycroft	$(LIB_FILTER) scosh.sa >l_scosh.sa
3831.1Smycroft
3841.1Smycroftl_setox.sa: setox.sa 
3851.1Smycroft	$(LIB_FILTER) setox.sa >l_setox.sa
3861.1Smycroft
3871.1Smycroftl_sgetem.sa: sgetem.sa 
3881.1Smycroft	$(LIB_FILTER) sgetem.sa >l_sgetem.sa
3891.1Smycroft
3901.1Smycroftl_sint.sa: sint.sa 
3911.1Smycroft	$(LIB_FILTER) sint.sa >l_sint.sa
3921.1Smycroft
3931.1Smycroftl_slog2.sa: slog2.sa 
3941.1Smycroft	$(LIB_FILTER) slog2.sa >l_slog2.sa
3951.1Smycroft
3961.1Smycroftl_slogn.sa: slogn.sa 
3971.1Smycroft	$(LIB_FILTER) slogn.sa >l_slogn.sa
3981.1Smycroft
3991.1Smycroftl_srem_mod.sa: srem_mod.sa 
4001.1Smycroft	$(LIB_FILTER) srem_mod.sa >l_srem_mod.sa
4011.1Smycroft
4021.1Smycroftl_ssin.sa: ssin.sa 
4031.1Smycroft	$(LIB_FILTER) ssin.sa >l_ssin.sa
4041.1Smycroft
4051.1Smycroftl_ssinh.sa: ssinh.sa 
4061.1Smycroft	$(LIB_FILTER) ssinh.sa >l_ssinh.sa
4071.1Smycroft
4081.1Smycroftl_stan.sa: stan.sa 
4091.1Smycroft	$(LIB_FILTER) stan.sa >l_stan.sa
4101.1Smycroft
4111.1Smycroftl_stanh.sa: stanh.sa 
4121.1Smycroft	$(LIB_FILTER) stanh.sa >l_stanh.sa
4131.1Smycroft
4141.1Smycroftl_stwotox.sa: stwotox.sa 
4151.1Smycroft	$(LIB_FILTER) stwotox.sa >l_stwotox.sa
4161.1Smycroft
4171.1Smycroft#
4181.1Smycroft#	Extract all files from SCCS directory
4191.1Smycroft#
4201.1Smycroftgetall:	$(SA_FILES) $(H_FILES)
4211.1Smycroft
4221.1Smycroftconvert:	$(U_FILES)
4231.1Smycroft
4241.1Smycroftclean:
4251.1Smycroft	rm -f $(RO_FILES)
4261.1Smycroft	rm -f $(U_FILES)
4271.1Smycroft	rm -f *.ls linkfile $(TARGET).linkmap
4281.1Smycroft	rm -f FPSP.mx
4291.1Smycroft	rm -f $(LIB_TARGET) .SCRIPT
4301.1Smycroft	rm -f $(LIB_RO_FILES)
4311.1Smycroft	rm -f $(LIB_SA_FILES)
4321.1Smycroft
4331.1Smycroftclobber:	clean
4341.1Smycroft
435