mirror of
https://git.code.sf.net/p/libpng/code.git
synced 2025-07-10 18:04:09 +02:00
A funny thing happened while refactoring the function argument parsing
in the `PNGGenConfig` module: the processing of dependencies inside
the CMake function `generate_copy` got fixed, thanks to an inadvertent
typo correction!
Going down the rabbit hole, we uncovered two issues:
1. A typo in `scripts/cmake/PNGGenConfig.cmake` caused a dependency
declaration to disappear, disrupting the graph. Fortunately, this
disruption was being mitigated by an additional set of (redundant)
symbolic target declarations that kept the CMake build going.
2. The exact string matching inside `scripts/cmake/gensrc.cmake.in`
imposed an artificial limitation, disallowing the use of absolute
file paths.
The typo correction in (1), and the use of regex matching instead of
exact string matching in (2), allowed us to use absolute file paths
in the main CMake file, consistently, thus allowing CMake to recognize
them as uniquely-identifiable nodes in the dependency graph. There
should be no further need to have extra symbolic targets for proper
node identification.
In the end, we shaved off the redundant symbolic target declarations,
retaining only `png_genfiles` and `png_genprebuilt`.
Scripts and makefiles for libpng
--------------------------------
pnglibconf.h.prebuilt => Configuration settings
makefile.aix => AIX/gcc makefile
makefile.amiga => Amiga makefile
makefile.atari => Atari makefile
makefile.bc32 => Borland C makefile, for Win32
makefile.beos => BeOS makefile
makefile.c89 => Generic UNIX makefile for C89 (cc -std=c89)
makefile.clang => Generic clang makefile
makefile.darwin => Darwin makefile, for macOS (formerly Mac OS X)
makefile.dec => DEC Alpha UNIX makefile
makefile.dj2 => DJGPP 2 makefile
makefile.emcc => Emscripten makefile
makefile.freebsd => FreeBSD makefile
makefile.gcc => Generic gcc makefile
makefile.hpgcc => HPUX makefile using gcc
makefile.hpux => HPUX (10.20 and 11.00) makefile
makefile.hp64 => HPUX (10.20 and 11.00) makefile, 64-bit
makefile.ibmc => IBM C/C++ version 3.x for Win32 and OS/2 (static lib)
makefile.intel => Intel C/C++ version 4.0 and later
makefile.linux => Linux/ELF makefile
(gcc, creates shared libpng16.so.16.1.6.*)
makefile.mips => MIPS makefile
makefile.msys => MSYS (MinGW) makefile
makefile.netbsd => NetBSD/cc makefile, makes shared libpng.so
makefile.openbsd => OpenBSD makefile
makefile.riscos => Acorn RISCOS makefile
makefile.sco => SCO OSr5 ELF and Unixware 7 with Native cc
makefile.sgi => Silicon Graphics IRIX makefile (cc, static lib)
makefile.sggcc => Silicon Graphics makefile
(gcc, creates shared libpng16.so.16.1.6.*)
makefile.solaris => Solaris 2.X makefile
(gcc, creates shared libpng16.so.16.1.6.*)
makefile.so9 => Solaris 9 makefile
(gcc, creates shared libpng16.so.16.1.6.*)
makefile.std => Generic UNIX makefile (cc, static lib)
makefile.sunos => Sun makefile
makefile.32sunu => Sun Ultra 32-bit makefile
makefile.64sunu => Sun Ultra 64-bit makefile
makefile.vcwin32 => makefile for Microsoft Visual C++ 4.0 and later
makevms.com => VMS build script
smakefile.ppc => AMIGA smakefile for SAS C V6.58/7.00 PPC compiler
(Requires SCOPTIONS, copied from SCOPTIONS.ppc)
Other supporting scripts
------------------------
README.txt => This file
descrip.mms => VMS makefile for MMS or MMK
libpng-config-body.in => used by several makefiles to create libpng-config
libpng-config-head.in => used by several makefiles to create libpng-config
libpng.pc.in => Used by several makefiles to create libpng.pc
macro.lst => Used by GNU Autotools
pngwin.rc => Used by the visualc71 project
pngwin.def => Used by makefile.os2
pngwin.dfn => Used to maintain pngwin.def
SCOPTIONS.ppc => Used with smakefile.ppc
checksym.awk => Used for maintaining pnglibconf.h
dfn.awk => Used for maintaining pnglibconf.h
options.awk => Used for maintaining pnglibconf.h
pnglibconf.dfa => Used for maintaining pnglibconf.h
pnglibconf.mak => Used for maintaining pnglibconf.h
intprefix.c => Used for symbol versioning
prefix.c => Used for symbol versioning
sym.c => Used for symbol versioning
symbols.c => Used for symbol versioning
vers.c => Used for symbol versioning
Further information can be found in comments in the individual scripts and
makefiles.