Chris Craik | ca2bf81 | 2013-07-29 15:28:30 -0700 | [diff] [blame] | 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 | $#
|
Leon Scroggins III | 3cc83ac | 2017-10-06 11:02:56 -0400 | [diff] [blame] | 129 | $# https://www.cs.princeton.edu/~bwk/btl.mirror/
|
Chris Craik | ca2bf81 | 2013-07-29 15:28:30 -0700 | [diff] [blame] | 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
|