summaryrefslogtreecommitdiffhomepage
path: root/contrib/libpng/scripts/pnglibconf.mak
blob: bced8d336f5f2c94d5602e8d648f808d532a1639 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/usr/bin/make -f
# pnglibconf.mak - standard make lines for pnglibconf.h
# 
# These lines are copied from Makefile.am, they illustrate
# how to automate the build of pnglibconf.h from scripts/pnglibconf.dfa
# given 'awk' and 'sed'

# Override as appropriate, these definitions can be overridden on
# the make command line (AWK='nawk' for example).
AWK = gawk
AWK = mawk
AWK = nawk
AWK = one-true-awk
AWK = awk  # Crashes on SunOS 5.10 - use 'nawk'
SED = sed
CPP = $(CC) -E
COPY = cp
DELETE = rm -f
ECHO = echo
DFA_XTRA = # Appended to scripts/options.awk

# CPPFLAGS should contain the options to control the result,
# but DEFS and CFLAGS are also supported here, override
# as appropriate
DFNFLAGS = $(DEFS) $(CPPFLAGS) $(CFLAGS)

# srcdir is a defacto standard for the location of the source
srcdir = .

# The standard pnglibconf.h exists as scripts/pnglibconf.h.prebuilt,
# copy this if the following doesn't work.
pnglibconf.h: pnglibconf.dfn
	$(DELETE) $@ dfn.c dfn1.out dfn2.out dfn3.out
	$(ECHO) '#include "pnglibconf.dfn"' >dfn.c
	$(CPP) $(DFNFLAGS) dfn.c >dfn1.out
	$(SED) -n -e 's|^.*PNG_DEFN_MAGIC-\(.*\)-PNG_DEFN_END.*$$|\1|p'\
	    dfn1.out >dfn2.out
	$(SED) -e 's| *@@@ *||g' -e 's| *$$||' dfn2.out >dfn3.out
	$(COPY) dfn3.out $@
	$(DELETE) dfn.c dfn1.out dfn2.out dfn3.out

pnglibconf.dfn: $(srcdir)/scripts/pnglibconf.dfa $(srcdir)/scripts/options.awk
	$(DELETE) $@ dfn1.out dfn2.out
	$(ECHO) "Calling $(AWK) from scripts/pnglibconf.mak" >&2
	$(ECHO) "If 'awk' crashes try a better awk (e.g. AWK='nawk')" >&2
	$(AWK) -f $(srcdir)/scripts/options.awk out=dfn1.out\
	    $(srcdir)/scripts/pnglibconf.dfa $(DFA_XTRA) 1>&2
	$(AWK) -f $(srcdir)/scripts/options.awk out=dfn2.out dfn1.out 1>&2
	$(COPY) dfn2.out $@
	$(DELETE) dfn1.out dfn2.out

clean-pnglibconf:
	$(DELETE) pnglibconf.h pnglibconf.dfn dfn.c dfn1.out dfn2.out dfn3.out

clean: clean-pnglibconf