From 0a882b57876776ab7c46f13cf170b8d376036a6a Mon Sep 17 00:00:00 2001 From: Cosmin Truta Date: Sun, 20 Jan 2019 22:21:48 -0500 Subject: [PATCH] scripts: Add makefile.clang, makefile.clang-asan and makefile.gcc-asan Also apply minor updates to makefile.gcc and makefile.msys --- scripts/makefile.clang | 87 +++++++++++++++++++++++++++++++++++++ scripts/makefile.clang-asan | 87 +++++++++++++++++++++++++++++++++++++ scripts/makefile.gcc | 6 +-- scripts/makefile.gcc-asan | 87 +++++++++++++++++++++++++++++++++++++ scripts/makefile.msys | 7 +-- 5 files changed, 268 insertions(+), 6 deletions(-) create mode 100644 scripts/makefile.clang create mode 100644 scripts/makefile.clang-asan create mode 100644 scripts/makefile.gcc-asan diff --git a/scripts/makefile.clang b/scripts/makefile.clang new file mode 100644 index 000000000..fcaefae9b --- /dev/null +++ b/scripts/makefile.clang @@ -0,0 +1,87 @@ +# makefile for libpng using clang (generic, static library) +# Copyright (C) 2008, 2014 Glenn Randers-Pehrson +# Copyright (C) 2000, 2014, 2019 Cosmin Truta +# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc. +# +# This code is released under the libpng license. +# For conditions of distribution and use, see the disclaimer +# and license in png.h + +# Location of the zlib library and include files +ZLIBINC = ../zlib +ZLIBLIB = ../zlib + +# Compiler, linker, lib and other tools +CC = clang +LD = $(CC) +AR_RC = ar rcs +RANLIB = ranlib +CP = cp +RM_F = rm -f + +WARNMORE = -Wwrite-strings -Wpointer-arith -Wshadow \ + -Wmissing-declarations -Wtraditional -Wcast-align \ + -Wstrict-prototypes -Wmissing-prototypes # -Wconversion +CPPFLAGS = -I$(ZLIBINC) # -DPNG_DEBUG=5 +CFLAGS = -W -Wall -O2 # $(WARNMORE) -g +LDFLAGS = -L$(ZLIBLIB) +LIBS = -lz -lm + +# File extensions +EXEEXT = + +# Pre-built configuration +# See scripts/pnglibconf.mak for more options +PNGLIBCONF_H_PREBUILT = scripts/pnglibconf.h.prebuilt + +# Variables +OBJS = png.o pngerror.o pngget.o pngmem.o pngpread.o \ + pngread.o pngrio.o pngrtran.o pngrutil.o pngset.o \ + pngtrans.o pngwio.o pngwrite.o pngwtran.o pngwutil.o + +# Targets +all: static + +pnglibconf.h: $(PNGLIBCONF_H_PREBUILT) + $(CP) $(PNGLIBCONF_H_PREBUILT) $@ + +.c.o: + $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $< + +static: libpng.a pngtest$(EXEEXT) + +shared: + @echo This is a generic makefile that cannot create shared libraries. + @echo Please use a configuration that is specific to your platform. + @false + +libpng.a: $(OBJS) + $(AR_RC) $@ $(OBJS) + $(RANLIB) $@ + +test: pngtest$(EXEEXT) + ./pngtest$(EXEEXT) + +pngtest$(EXEEXT): pngtest.o libpng.a + $(LD) $(LDFLAGS) -o $@ pngtest.o libpng.a $(LIBS) + +clean: + $(RM_F) *.o libpng.a pngtest$(EXEEXT) pngout.png pnglibconf.h + +png.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngerror.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngget.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngmem.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngpread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngrio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngrtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngrutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngset.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngtrans.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngwio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngwrite.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngwtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngwutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h + +pngtest.o: png.h pngconf.h pnglibconf.h diff --git a/scripts/makefile.clang-asan b/scripts/makefile.clang-asan new file mode 100644 index 000000000..0cab52fd0 --- /dev/null +++ b/scripts/makefile.clang-asan @@ -0,0 +1,87 @@ +# makefile for libpng using clang + address sanitizer (generic, static library) +# Copyright (C) 2008, 2014 Glenn Randers-Pehrson +# Copyright (C) 2000, 2014, 2019 Cosmin Truta +# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc. +# +# This code is released under the libpng license. +# For conditions of distribution and use, see the disclaimer +# and license in png.h + +# Location of the zlib library and include files +ZLIBINC = ../zlib +ZLIBLIB = ../zlib + +# Compiler, linker, lib and other tools +CC = clang +LD = $(CC) +AR_RC = ar rcs +RANLIB = ranlib +CP = cp +RM_F = rm -f + +WARNMORE = -Wwrite-strings -Wpointer-arith -Wshadow \ + -Wmissing-declarations -Wtraditional -Wcast-align \ + -Wstrict-prototypes -Wmissing-prototypes # -Wconversion +CPPFLAGS = -I$(ZLIBINC) # -DPNG_DEBUG=5 +CFLAGS = -W -Wall -O0 -g -fsanitize=address +LDFLAGS = -L$(ZLIBLIB) -g -fsanitize=address +LIBS = -lz -lm + +# File extensions +EXEEXT = + +# Pre-built configuration +# See scripts/pnglibconf.mak for more options +PNGLIBCONF_H_PREBUILT = scripts/pnglibconf.h.prebuilt + +# Variables +OBJS = png.o pngerror.o pngget.o pngmem.o pngpread.o \ + pngread.o pngrio.o pngrtran.o pngrutil.o pngset.o \ + pngtrans.o pngwio.o pngwrite.o pngwtran.o pngwutil.o + +# Targets +all: static + +pnglibconf.h: $(PNGLIBCONF_H_PREBUILT) + $(CP) $(PNGLIBCONF_H_PREBUILT) $@ + +.c.o: + $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $< + +static: libpng.a pngtest$(EXEEXT) + +shared: + @echo This is a generic makefile that cannot create shared libraries. + @echo Please use a configuration that is specific to your platform. + @false + +libpng.a: $(OBJS) + $(AR_RC) $@ $(OBJS) + $(RANLIB) $@ + +test: pngtest$(EXEEXT) + ./pngtest$(EXEEXT) + +pngtest$(EXEEXT): pngtest.o libpng.a + $(LD) $(LDFLAGS) -o $@ pngtest.o libpng.a $(LIBS) + +clean: + $(RM_F) *.o libpng.a pngtest$(EXEEXT) pngout.png pnglibconf.h + +png.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngerror.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngget.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngmem.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngpread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngrio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngrtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngrutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngset.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngtrans.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngwio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngwrite.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngwtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngwutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h + +pngtest.o: png.h pngconf.h pnglibconf.h diff --git a/scripts/makefile.gcc b/scripts/makefile.gcc index ba92d1509..a97731367 100644 --- a/scripts/makefile.gcc +++ b/scripts/makefile.gcc @@ -1,6 +1,6 @@ # makefile for libpng using gcc (generic, static library) # Copyright (C) 2008, 2014 Glenn Randers-Pehrson -# Copyright (C) 2000 Cosmin Truta +# Copyright (C) 2000, 2014, 2019 Cosmin Truta # Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc. # # This code is released under the libpng license. @@ -24,7 +24,7 @@ WARNMORE = -Wwrite-strings -Wpointer-arith -Wshadow \ -Wstrict-prototypes -Wmissing-prototypes # -Wconversion CPPFLAGS = -I$(ZLIBINC) # -DPNG_DEBUG=5 CFLAGS = -W -Wall -O2 # $(WARNMORE) -g -LDFLAGS = +LDFLAGS = -L$(ZLIBLIB) LIBS = -lz -lm # File extensions @@ -63,7 +63,7 @@ test: pngtest$(EXEEXT) ./pngtest$(EXEEXT) pngtest$(EXEEXT): pngtest.o libpng.a - $(LD) $(LDFLAGS) -L$(ZLIBLIB) -o $@ pngtest.o libpng.a $(LIBS) + $(LD) $(LDFLAGS) -o $@ pngtest.o libpng.a $(LIBS) clean: $(RM_F) *.o libpng.a pngtest$(EXEEXT) pngout.png pnglibconf.h diff --git a/scripts/makefile.gcc-asan b/scripts/makefile.gcc-asan new file mode 100644 index 000000000..aae55d638 --- /dev/null +++ b/scripts/makefile.gcc-asan @@ -0,0 +1,87 @@ +# makefile for libpng using gcc + address sanitizer (generic, static library) +# Copyright (C) 2008, 2014 Glenn Randers-Pehrson +# Copyright (C) 2000, 2014, 2019 Cosmin Truta +# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc. +# +# This code is released under the libpng license. +# For conditions of distribution and use, see the disclaimer +# and license in png.h + +# Location of the zlib library and include files +ZLIBINC = ../zlib +ZLIBLIB = ../zlib + +# Compiler, linker, lib and other tools +CC = gcc +LD = $(CC) +AR_RC = ar rcs +RANLIB = ranlib +CP = cp +RM_F = rm -f + +WARNMORE = -Wwrite-strings -Wpointer-arith -Wshadow \ + -Wmissing-declarations -Wtraditional -Wcast-align \ + -Wstrict-prototypes -Wmissing-prototypes # -Wconversion +CPPFLAGS = -I$(ZLIBINC) # -DPNG_DEBUG=5 +CFLAGS = -W -Wall -O0 -g -fsanitize=address +LDFLAGS = -L$(ZLIBLIB) -g -fsanitize=address +LIBS = -lz -lm + +# File extensions +EXEEXT = + +# Pre-built configuration +# See scripts/pnglibconf.mak for more options +PNGLIBCONF_H_PREBUILT = scripts/pnglibconf.h.prebuilt + +# Variables +OBJS = png.o pngerror.o pngget.o pngmem.o pngpread.o \ + pngread.o pngrio.o pngrtran.o pngrutil.o pngset.o \ + pngtrans.o pngwio.o pngwrite.o pngwtran.o pngwutil.o + +# Targets +all: static + +pnglibconf.h: $(PNGLIBCONF_H_PREBUILT) + $(CP) $(PNGLIBCONF_H_PREBUILT) $@ + +.c.o: + $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $< + +static: libpng.a pngtest$(EXEEXT) + +shared: + @echo This is a generic makefile that cannot create shared libraries. + @echo Please use a configuration that is specific to your platform. + @false + +libpng.a: $(OBJS) + $(AR_RC) $@ $(OBJS) + $(RANLIB) $@ + +test: pngtest$(EXEEXT) + ./pngtest$(EXEEXT) + +pngtest$(EXEEXT): pngtest.o libpng.a + $(LD) $(LDFLAGS) -o $@ pngtest.o libpng.a $(LIBS) + +clean: + $(RM_F) *.o libpng.a pngtest$(EXEEXT) pngout.png pnglibconf.h + +png.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngerror.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngget.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngmem.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngpread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngrio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngrtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngrutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngset.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngtrans.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngwio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngwrite.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngwtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h +pngwutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h + +pngtest.o: png.h pngconf.h pnglibconf.h diff --git a/scripts/makefile.msys b/scripts/makefile.msys index ade59b9d5..6b9daf836 100644 --- a/scripts/makefile.msys +++ b/scripts/makefile.msys @@ -1,10 +1,11 @@ # makefile for libpng using MSYS/gcc (shared, static library) +# Copyright (C) 2019 Cosmin Truta # Copyright (C) 2012 Glenn Randers-Pehrson and Christopher M. Wheeler # -# Portions taken from makefile.linux: +# Portions taken from makefile.linux and makefile.gcc: +# Copyright (C) 2000 Cosmin Truta # Copyright (C) 1998, 1999, 2002, 2006, 2008, 2010-2014 Greg Roelofs and # Glenn Randers-Pehrson -# Copyright (C) 2000 Cosmin Truta # Copyright (C) 1996, 1997 Andreas Dilger # Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc. # @@ -176,7 +177,7 @@ test: pngtest$(EXEEXT) ./pngtest$(EXEEXT) pngtest$(EXEEXT): pngtest.o libpng.a - $(LD) $(LDFLAGS) -L$(ZLIBLIB) -o $@ pngtest.o libpng.a $(LIBS) + $(LD) $(LDFLAGS) -o $@ pngtest.o libpng.a $(LIBS) clean: $(RM_F) *.o libpng.a pngtest$(EXEEXT) pngout.png pnglibconf.h $(LIBSO) \