]>
Commit | Line | Data |
---|---|---|
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. | |
4 | # | |
5 | # For more information build libpng.wpj under the IDE and then read the | |
6 | # generated files: | |
7 | # | |
8 | # config.inf: Basic configuration information for a standard build. | |
9 | # pngconfig.dfa: Advanced configuration for non-standard libpng builds. | |
10 | # | |
11 | DELETE=rm -f | |
12 | ECHO=echo | |
13 | COPY=copy | |
14 | # | |
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 | |
17 | # line: | |
18 | CFLAGS= | |
19 | CC=wcl386 | |
20 | CPP=$(CC) -pw0 | |
21 | # | |
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.) | |
25 | !ifdef %awk | |
26 | AWK=$(%awk) | |
27 | !endif | |
28 | # | |
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 | |
31 | # this makefile.) | |
32 | ..\..\pnglibconf.h: pnglibconf.h | |
33 | $(COPY) pnglibconf.h $@ | |
34 | ||
35 | !ifdef AWK | |
36 | # CPPFLAGS should contain the options to control the result, | |
37 | # but DEFS and CFLAGS are also supported here, override | |
38 | # as appropriate | |
39 | DFNFLAGS = $(DEFS) $(CPPFLAGS) $(CFLAGS) | |
40 | ||
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.*$$/, "") | |
49 | gsub(/ *@@@ */, "") | |
50 | ||
51 | } | |
52 | << | |
53 | $(COPY) dfn2.out $@ | |
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 | |
57 | << | |
58 | $(DELETE) dfn.c dfn1.out dfn2.out | |
59 | ||
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 | |
64 | $(COPY) dfn2.out $@ | |
65 | $(DELETE) dfn1.out dfn2.out | |
66 | ||
67 | !else | |
68 | # The following lines are used to copy scripts\pnglibconf.h.prebuilt and make | |
69 | # the required change to the calling convention. | |
70 | # | |
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.) | |
76 | # | |
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.) | |
80 | # | |
81 | pnglibconf.h: ..\..\scripts\pnglibconf.h.prebuilt .existsonly | |
82 | @$(ECHO) . | |
83 | @$(ECHO) . | |
84 | @$(ECHO) $$(AWK) NOT AVAILABLE: COPYING scripts\pnglibconf.h.prebuilt | |
85 | @$(ECHO) . | |
86 | @$(ECHO) . | |
87 | vi -q -k ":1,$$s/PNG_API_RULE 0$$/PNG_API_RULE 2/\n:w! $@\n:q!\n" ..\..\scripts\pnglibconf.h.prebuilt | |
88 | @$(ECHO) . | |
89 | @$(ECHO) . | |
90 | @$(ECHO) YOU HAVE A DEFAULT CONFIGURATION BECAUSE YOU DO NOT HAVE AWK! | |
91 | @$(ECHO) . | |
92 | @$(ECHO) . | |
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. | |
97 | << | |
98 | ||
99 | !endif | |
100 | ||
101 | # Make the default files | |
102 | defaults: .symbolic | |
103 | @$(COPY) << config.inf | |
104 | $# The libpng project is incompletely configured. To complete configuration | |
105 | $# please complete the following steps: | |
106 | $# | |
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, | |
109 | $# zlib.lib. | |
110 | $# | |
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 | |
114 | $# pngconfig.dfa. | |
115 | $# | |
116 | $# 3) Delete this file (config.inf). | |
117 | << | |
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. | |
123 | $# | |
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) | |
127 | $# here: | |
128 | $# | |
129 | $# http://www.cs.princeton.edu/~bwk/btl.mirror/ | |
130 | $# | |
131 | $# The executable works just fine. | |
132 | $# | |
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.) | |
139 | $# | |
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. | |
144 | $# | |
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.) | |
149 | $# | |
150 | << | |
151 | ||
152 | clean:: .symbolic | |
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 | |
158 | ||
159 | distclean:: clean .symbolic | |
160 | $(DELETE) zlib.inf awk.inf config.inf pngconfig.dfa |