| OLD | NEW |
| (Empty) | |
| 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 print |
| 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 |
| OLD | NEW |