1*b30d1939SAndy Fiddaman/*
2*b30d1939SAndy Fiddaman * normalize local -l* library conventions
3*b30d1939SAndy Fiddaman *
4*b30d1939SAndy Fiddaman * L [ [ G11 ... G1n ] ... [ Gg1 ... Ggn ] ] :MAPLIB: T1.c ... Tn.c
5*b30d1939SAndy Fiddaman *
6*b30d1939SAndy Fiddaman * if Giji not specified then G11 == L
7*b30d1939SAndy Fiddaman * the first Ti.c that compiles/links with group -lGi1 ... -lGin
8*b30d1939SAndy Fiddaman * but does not compile/link with no libraries maps
9*b30d1939SAndy Fiddaman * -lL to to require -lGi1 ... -lGin
10*b30d1939SAndy Fiddaman * otherwise -lL is not required and maps to "no library required"
11*b30d1939SAndy Fiddaman */
12*b30d1939SAndy Fiddaman
13*b30d1939SAndy Fiddaman":MAPLIB:" : .MAKE .OPERATOR
14*b30d1939SAndy Fiddaman	local L P
15*b30d1939SAndy Fiddaman	L := $(<:B:O=1)
16*b30d1939SAndy Fiddaman	if ! ( P = "$(<:B:O>1)" )
17*b30d1939SAndy Fiddaman		P := $(L)
18*b30d1939SAndy Fiddaman	end
19*b30d1939SAndy Fiddaman	$(LIBDIR)/lib/$(L) :INSTALL: $(L).req
20*b30d1939SAndy Fiddaman	eval
21*b30d1939SAndy Fiddaman	$(L).req : (CC) $$(>)
22*b30d1939SAndy Fiddaman		set -
23*b30d1939SAndy Fiddaman		r='-'
24*b30d1939SAndy Fiddaman		for i in $$(*)
25*b30d1939SAndy Fiddaman		do	if	$$(CC) -c $i > /dev/null
26*b30d1939SAndy Fiddaman			then	g=
27*b30d1939SAndy Fiddaman				for p in $(P) -
28*b30d1939SAndy Fiddaman				do	case $p in
29*b30d1939SAndy Fiddaman					-)	if	$$(CC) -o $$(<:B:S=.exe) $i $g > /dev/null 2>&1
30*b30d1939SAndy Fiddaman						then	$$(CC) -o $$(<:B:S=.exe) $i > /dev/null 2>&1 || {
31*b30d1939SAndy Fiddaman								r="$g"
32*b30d1939SAndy Fiddaman								break 2
33*b30d1939SAndy Fiddaman							}
34*b30d1939SAndy Fiddaman						fi
35*b30d1939SAndy Fiddaman						g=
36*b30d1939SAndy Fiddaman						;;
37*b30d1939SAndy Fiddaman					*)	g="$g -l$p"
38*b30d1939SAndy Fiddaman						;;
39*b30d1939SAndy Fiddaman					esac
40*b30d1939SAndy Fiddaman				done
41*b30d1939SAndy Fiddaman			fi
42*b30d1939SAndy Fiddaman		done 2>/dev/null
43*b30d1939SAndy Fiddaman		echo " $r" > $$(<)
44*b30d1939SAndy Fiddaman		rm -f $$(<:B:S=.exe) $$(*:B:S=$$(CC.SUFFIX.OBJECT))
45*b30d1939SAndy Fiddaman	end
46