From 3c67eeca51edced380292766fd44e48e2f3c47a4 Mon Sep 17 00:00:00 2001 From: Cosmin Truta Date: Wed, 14 Sep 2022 21:50:02 +0300 Subject: scripts: Add makefile.emcc for building libpng with Emscripten Adapt makefile.clang to invoke the Emscripten toolchain utilities. Co-authored-by: Kirk Roerig Co-authored-by: Cosmin Truta --- scripts/makefile.emcc | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 scripts/makefile.emcc diff --git a/scripts/makefile.emcc b/scripts/makefile.emcc new file mode 100644 index 000000000..5d27621c0 --- /dev/null +++ b/scripts/makefile.emcc @@ -0,0 +1,83 @@ +# makefile for libpng using emscripten +# Copyright (C) 2000, 2014, 2019-2022 Cosmin Truta +# Copyright (C) 2021 Kirk Roerig +# Copyright (C) 2008, 2014 Glenn Randers-Pehrson +# 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 = emcc +LD = $(CC) +AR_RC = emar rcs +RANLIB = emranlib +CP = cp +RM_F = rm -f + +CPPFLAGS = -I$(ZLIBINC) # -DPNG_DEBUG=5 +CFLAGS = -O2 -Wall -Wextra -Wundef +LDFLAGS = -L$(ZLIBLIB) +PNGTEST_LDFLAGS = --preload-file=pngtest.png +LIBS = -lz -lm + +# Pre-built configuration +# See scripts/pnglibconf.mak for more options +PNGLIBCONF_H_PREBUILT = scripts/pnglibconf.h.prebuilt + +# File lists +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 + +shared: + @echo This makefile cannot create shared libraries. + @false + +libpng.a: $(OBJS) + $(AR_RC) $@ $(OBJS) + $(RANLIB) $@ + +test: pngtest + node ./pngtest + +pngtest: pngtest.o libpng.a + $(LD) $(LDFLAGS) $(PNGTEST_LDFLAGS) -o $@ pngtest.o libpng.a $(LIBS) + +clean: + $(RM_F) *.o libpng.a pngtest pngout.png pnglibconf.h + $(RM_F) pngtest.data pngtest.wasm + +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 -- cgit v1.2.1