1 # This is an OpenWatcom make file which builds pnglibconf.h - the libpng
2 # configuration header. You can ignore this file if you don't need to
3 # configure libpng; a default configuration will be built.
5 # For more information build libpng.wpj under the IDE and then read the
8 # config.inf: Basic configuration information for a standard build.
9 # pngconfig.dfa: Advanced configuration for non-standard libpng builds.
15 # If your configuration needs to test compiler flags when building
16 # pnglibconf.h you may need to override the following on the wmake command
22 # Read awk from the environment if set, else it can be set on the command
23 # line (the default approach is to set the %awk% environment variable in the
24 # IDE libpng.wpj 'before' rule - this setting is local.)
29 # pnglibconf.h must exist in the source directory, this is the final rule
30 # which copies the local built version (and this is the default target for
32 ..\..\pnglibconf.h
: pnglibconf.h
33 $(COPY
) pnglibconf.h
$@
36 # CPPFLAGS should contain the options to control the result,
37 # but DEFS and CFLAGS are also supported here, override
39 DFNFLAGS
= $(DEFS
) $(CPPFLAGS
) $(CFLAGS
)
41 pnglibconf.h
: pnglibconf.dfn
42 $(DELETE
) $@ dfn.c dfn1.out dfn2.out
43 $(ECHO
) $#include "pnglibconf.dfn" >dfn.c
44 $(CPP
) $(DFNFLAGS
) dfn.c
>dfn1.out
45 $(AWK
) -f
<< dfn1.out
>dfn2.out
46 /^.
*PNG_DEFN_MAGIC-.
*-PNG_DEFN_END.
*$$/{
47 sub
(/^.
*PNG_DEFN_MAGIC-
/, "")
48 sub
(/ *-PNG_DEFN_END.
*$$/, "")
54 @type
<< >pngconfig.inf
55 This is a locally configurable build of libpng.lib
; for configuration
56 instructions consult and edit projects
/openwatcom
/pngconfig.dfa
58 $(DELETE
) dfn.c dfn1.out dfn2.out
60 pnglibconf.dfn
: ..\..\scripts\pnglibconf.dfa ..\..\scripts\options.awk pngconfig.dfa ..\..\pngconf.h
61 $(DELETE
) $@ dfn1.out dfn2.out
62 $(AWK
) -f ..\..\scripts\options.awk out
=dfn1.out version
=search ..\..\pngconf.h ..\..\scripts\pnglibconf.dfa pngconfig.dfa
$(DFA_XTRA
) 1>&2
63 $(AWK
) -f ..\..\scripts\options.awk out
=dfn2.out dfn1.out
1>&2
65 $(DELETE
) dfn1.out dfn2.out
68 # The following lines are used to copy scripts\pnglibconf.h.prebuilt and make
69 # the required change to the calling convention.
71 # By default libpng is built to use the __cdecl calling convention on
72 # Windows. This gives compatibility with MSVC and GCC. Unfortunately it
73 # does not work with OpenWatcom because OpenWatcom implements longjmp using
74 # the __watcall convention (compared with both MSVC and GCC which use __cdecl
75 # for library functions.)
77 # Thus the default must be changed to build on OpenWatcom and, once changed,
78 # the result will not be compatible with applications built using other
79 # compilers (in fact attempts to build will fail at compile time.)
81 pnglibconf.h
: ..\..\scripts\pnglibconf.h.prebuilt .existsonly
84 @
$(ECHO
) $$(AWK
) NOT AVAILABLE
: COPYING scripts\pnglibconf.h.prebuilt
87 vi
-q
-k
":1,$$s/PNG_API_RULE 0$$/PNG_API_RULE 2/\n:w! $@\n:q!\n" ..\..\scripts\pnglibconf.h.prebuilt
90 @
$(ECHO
) YOU HAVE A DEFAULT CONFIGURATION BECAUSE YOU DO NOT HAVE AWK
!
93 @type
<< >pngconfig.inf
94 This is the default configuration of libpng.lib
, if you wish to
95 change the configuration please consult the instructions in
96 projects
/owatcom
/pngconfig.dfa.
101 # Make the default files
103 @
$(COPY
) << config.inf
104 $# The libpng project is incompletely configured. To complete configuration
105 $# please complete the following steps:
107 $# 1) Edit the 'before' rule of libpng.wpj (from the IDE) to define the
108 $# locations of the zlib include file zlib.h and the built zlib library,
111 $# 2) If you want to change libpng to a non-standard configuration also
112 $# change the definition of 'awk' in the before rule to the name of your
113 $# awk command. For more instructions on configuration read
116 $# 3) Delete this file (config.inf).
118 @
$(COPY
) << pngconfig.dfa
119 $# pngconfig.dfa: this file contains configuration options for libpng.
120 $# If emtpy the standard configuration will be built. For this file to be
121 $# used a working version of the program 'awk' is required and the program
122 $# must be identified in the 'before' rule of the project.
124 $# If you don't already have 'awk', or the version of awk you have seems not
125 $# to work, download Brian Kernighan's awk (Brian Kernighan is the author of
126 $# awk.) You can find source code and a built executable (called awk95.exe)
129 $# http://www.cs.princeton.edu/~bwk/btl.mirror/
131 $# The executable works just fine.
133 $# If build issues errors after a change to pngconfig.dfa you have entered
134 $# inconsistent feature requests, or even malformed requests, in
135 $# pngconfig.dfa. The error messages from awk should be comprehensible, but
136 $# if not simply go back to the start (nothing but comments in this file) and
137 $# enter configuration lines one by one until one produces an error. (Or, of
138 $# course, do the standard binary chop.)
140 $# You need to rebuild everything after a change to pnglibconf.dfa - i.e. you
141 $# must do Actions/Mark All Targets for Remake. This is because the compiler
142 $# generated dependency information (as of OpenWatcom 1.9) does not record the
143 $# dependency on pnglibconf.h correctly.
145 $# If awk isn't set then this file is bypassed. If you just want the standard
146 $# configuration it is automatically produced from the distributed version
147 $# (scripts\pnglibconf.h.prebuilt) by editting PNG_API_RULE to 2 (to force use
148 $# of the OpenWatcom library calling convention.)
153 $(DELETE
) ..\..\pnglibconf.h pnglibconf.
* dfn.c
*.out pngconfig.inf
154 $(DELETE
) *.obj
*.mbr
*.sym
*.err
*.pch libpng.mk
155 $(DELETE
) libpng.lib libpng.lbr libpng.lb1 libpng.cbr libpng.mk1
156 $(DELETE
) pngtest.exe pngtest.map pngtest.lk1 pngtest.mk1
157 $(DELETE
) pngvalid.exe pngvalid.map pngvalid.lk1 pngvalid.mk1
159 distclean:: clean .symbolic
160 $(DELETE
) zlib.inf awk.inf config.inf pngconfig.dfa