# Prerequisites
*.d

# Precompiled headers
*.gch
*.pch

# Object files
*.slo
*.lo
*.o
*.obj

# Linker output files
*.exp
*.ilk
*.map

# Compiled dynamic libraries
*.dll
*.dylib
*.so
*.so.*

# Compiled static libraries
*.a
*.la
*.lai
*.lib

# Compiled executables
*.app/
*.exe
a.out

# Debug files
*.dSYM/
*.dmp
*.idb
*.pdb
*.su
*.sym
*.tds
core
core.[0-9]*
!core/

# Tag files
TAGS
.TAGS
!TAGS/
tags
.tags
!tags/
gtags.files
GTAGS
GRTAGS
GPATH
GSYMS
cscope.files
cscope.out
cscope.*.out

# Text editing and text processing artifacts
\#*\#
.\#*
[._]*.sw[a-p]
[._]sw[a-p]
*.bak
*.orig
*.rej
*.tmp
*~

# IDE files and directories
## Eclipse
.cproject/
.project/
.settings/
## Embarcadero RAD Studio
*.cbproj.*
__recovery/
## JetBrains
.idea/
## NetBeans
nbbuild/
nbdist/
nbproject/
## Visual Studio 2015 and newer
.vs/
## Visual Studio Code
.vscode/*
!.vscode/extensions.json
!.vscode/launch.json
!.vscode/settings.json
!.vscode/tasks.json
## Xcode 9 and newer
xcuserdata/
## (Various)
*.*cache
*.cache*
[._]*_history
.history/
[Bb]ackup*/
CMakeLists.txt.user*
CMakeUserPresets.json

# Local files created or used by coding agents
*.local
*.local.*

# Build, test and CI output directories
[._]build*/
/[Bb]uild/
/[Oo]ut/
*[Dd]ebug/
[Dd]ebug*/
*[Rr]elease/
[Rr]elease*/

# Libpng configuration and auxiliary build artifacts
*.out
*out.png
[._]deps/
[._]libs/
.dirstamp
/Makefile
/Makefile.in
/aclocal.m4
/autom4te.cache/
/compile
/config*~
/config.guess
/config.h
/config.h.in
/config.log
/config.status
/config.sub
/configure
/depcomp
/install*~
/install-sh
/libpng*-config
/libpng*.pc
/libpng.vers
/libtool
/ltmain.sh
/missing
/scripts/autoconf/libtool.m4
/scripts/autoconf/lt*.m4
/stamp-h1
/test-driver
pnglibconf.[ch]
pnglibconf.dfn
pnglibconf.pre
pngprefix.h

# Libpng test programs, scripts and artifacts
/test-suite.log
/tests/*.log
/tests/*.trs
/png-fix-itxt
/pngcp
/pngfix
/pnggetset
/pngimage
/pngstest
/pngtest
/pngunknown
/pngvalid
/timepng
