| # Copyright 2015 The Emscripten Authors. All rights reserved. |
| # Emscripten is available under two separate licenses, the MIT license and the |
| # University of Illinois/NCSA Open Source License. Both these licenses can be |
| # found in the LICENSE file. |
| |
| import os |
| import logging |
| |
| TAG = '1.6.37' |
| HASH = '2ce2b855af307ca92a6e053f521f5d262c36eb836b4810cb53c809aa3ea2dcc08f834aee0ffd66137768a54397e28e92804534a74abb6fc9f6f3127f14c9c338' |
| |
| deps = ['zlib'] |
| variants = {'libpng-mt': {'USE_PTHREADS': 1}} |
| |
| |
| def needed(settings): |
| return settings.USE_LIBPNG |
| |
| |
| def get_lib_name(settings): |
| return 'libpng' + ('-mt' if settings.USE_PTHREADS else '') + '.a' |
| |
| |
| def get(ports, settings, shared): |
| # This is an emscripten-hosted mirror of the libpng repo from Sourceforge. |
| ports.fetch_project('libpng', f'https://storage.googleapis.com/webassembly/emscripten-ports/libpng-{TAG}.tar.gz', sha512hash=HASH) |
| |
| def create(final): |
| logging.info('building port: libpng') |
| |
| source_path = os.path.join(ports.get_dir(), 'libpng', 'libpng-' + TAG) |
| ports.write_file(os.path.join(source_path, 'pnglibconf.h'), pnglibconf_h) |
| ports.install_headers(source_path) |
| |
| flags = ['-sUSE_ZLIB'] |
| if settings.USE_PTHREADS: |
| flags += ['-sUSE_PTHREADS'] |
| |
| ports.build_port(source_path, final, 'libpng', flags=flags, exclude_files=['pngtest'], exclude_dirs=['scripts', 'contrib']) |
| |
| return [shared.cache.get_lib(get_lib_name(settings), create, what='port')] |
| |
| |
| def clear(ports, settings, shared): |
| shared.cache.erase_lib(get_lib_name(settings)) |
| |
| |
| def process_dependencies(settings): |
| settings.USE_ZLIB = 1 |
| |
| |
| def process_args(ports): |
| return [] |
| |
| |
| def show(): |
| return 'libpng (-sUSE_LIBPNG; zlib license)' |
| |
| |
| pnglibconf_h = r'''/* pnglibconf.h - library build configuration */ |
| |
| /* libpng version 1.6.37 */ |
| |
| /* Copyright (c) 2018-2019 Cosmin Truta */ |
| /* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson */ |
| |
| /* This code is released under the libpng license. */ |
| /* For conditions of distribution and use, see the disclaimer */ |
| /* and license in png.h */ |
| |
| /* EMSCRIPTEN: png.h is provided in the downloaded archive that this script */ |
| /* fetches. The license portion of that is: */ |
| |
| /* |
| * Copyright (c) 2018-2019 Cosmin Truta |
| * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson |
| * Copyright (c) 1996-1997 Andreas Dilger |
| * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. |
| * |
| * This code is released under the libpng license. (See LICENSE, below.) |
| */ |
| |
| /* EMSCRIPTEN: The contents of LICENSE are: */ |
| |
| /* |
| COPYRIGHT NOTICE, DISCLAIMER, and LICENSE |
| ========================================= |
| |
| PNG Reference Library License version 2 |
| --------------------------------------- |
| |
| * Copyright (c) 1995-2019 The PNG Reference Library Authors. |
| * Copyright (c) 2018-2019 Cosmin Truta. |
| * Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson. |
| * Copyright (c) 1996-1997 Andreas Dilger. |
| * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. |
| |
| The software is supplied "as is", without warranty of any kind, |
| express or implied, including, without limitation, the warranties |
| of merchantability, fitness for a particular purpose, title, and |
| non-infringement. In no event shall the Copyright owners, or |
| anyone distributing the software, be liable for any damages or |
| other liability, whether in contract, tort or otherwise, arising |
| from, out of, or in connection with the software, or the use or |
| other dealings in the software, even if advised of the possibility |
| of such damage. |
| |
| Permission is hereby granted to use, copy, modify, and distribute |
| this software, or portions hereof, for any purpose, without fee, |
| subject to the following restrictions: |
| |
| 1. The origin of this software must not be misrepresented; you |
| must not claim that you wrote the original software. If you |
| use this software in a product, an acknowledgment in the product |
| documentation would be appreciated, but is not required. |
| |
| 2. Altered source versions must be plainly marked as such, and must |
| not be misrepresented as being the original software. |
| |
| 3. This Copyright notice may not be removed or altered from any |
| source or altered source distribution. |
| |
| |
| PNG Reference Library License version 1 (for libpng 0.5 through 1.6.35) |
| ----------------------------------------------------------------------- |
| |
| libpng versions 1.0.7, July 1, 2000, through 1.6.35, July 15, 2018 are |
| Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson, are |
| derived from libpng-1.0.6, and are distributed according to the same |
| disclaimer and license as libpng-1.0.6 with the following individuals |
| added to the list of Contributing Authors: |
| |
| Simon-Pierre Cadieux |
| Eric S. Raymond |
| Mans Rullgard |
| Cosmin Truta |
| Gilles Vollant |
| James Yu |
| Mandar Sahastrabuddhe |
| Google Inc. |
| Vadim Barkov |
| |
| and with the following additions to the disclaimer: |
| |
| There is no warranty against interference with your enjoyment of |
| the library or against infringement. There is no warranty that our |
| efforts or the library will fulfill any of your particular purposes |
| or needs. This library is provided with all faults, and the entire |
| risk of satisfactory quality, performance, accuracy, and effort is |
| with the user. |
| |
| Some files in the "contrib" directory and some configure-generated |
| files that are distributed with libpng have other copyright owners, and |
| are released under other open source licenses. |
| |
| libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are |
| Copyright (c) 1998-2000 Glenn Randers-Pehrson, are derived from |
| libpng-0.96, and are distributed according to the same disclaimer and |
| license as libpng-0.96, with the following individuals added to the |
| list of Contributing Authors: |
| |
| Tom Lane |
| Glenn Randers-Pehrson |
| Willem van Schaik |
| |
| libpng versions 0.89, June 1996, through 0.96, May 1997, are |
| Copyright (c) 1996-1997 Andreas Dilger, are derived from libpng-0.88, |
| and are distributed according to the same disclaimer and license as |
| libpng-0.88, with the following individuals added to the list of |
| Contributing Authors: |
| |
| John Bowler |
| Kevin Bracey |
| Sam Bushell |
| Magnus Holmgren |
| Greg Roelofs |
| Tom Tanner |
| |
| Some files in the "scripts" directory have other copyright owners, |
| but are released under this license. |
| |
| libpng versions 0.5, May 1995, through 0.88, January 1996, are |
| Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. |
| |
| For the purposes of this copyright and license, "Contributing Authors" |
| is defined as the following set of individuals: |
| |
| Andreas Dilger |
| Dave Martindale |
| Guy Eric Schalnat |
| Paul Schmidt |
| Tim Wegner |
| |
| The PNG Reference Library is supplied "AS IS". The Contributing |
| Authors and Group 42, Inc. disclaim all warranties, expressed or |
| implied, including, without limitation, the warranties of |
| merchantability and of fitness for any purpose. The Contributing |
| Authors and Group 42, Inc. assume no liability for direct, indirect, |
| incidental, special, exemplary, or consequential damages, which may |
| result from the use of the PNG Reference Library, even if advised of |
| the possibility of such damage. |
| |
| Permission is hereby granted to use, copy, modify, and distribute this |
| source code, or portions hereof, for any purpose, without fee, subject |
| to the following restrictions: |
| |
| 1. The origin of this source code must not be misrepresented. |
| |
| 2. Altered versions must be plainly marked as such and must not |
| be misrepresented as being the original source. |
| |
| 3. This Copyright notice may not be removed or altered from any |
| source or altered source distribution. |
| |
| The Contributing Authors and Group 42, Inc. specifically permit, |
| without fee, and encourage the use of this source code as a component |
| to supporting the PNG file format in commercial products. If you use |
| this source code in a product, acknowledgment is not required but would |
| be appreciated. |
| */ |
| |
| /* pnglibconf.h */ |
| /* Machine generated file: DO NOT EDIT */ |
| /* Derived from: scripts/pnglibconf.dfa */ |
| #ifndef PNGLCONF_H |
| #define PNGLCONF_H |
| /* options */ |
| #define PNG_16BIT_SUPPORTED |
| #define PNG_ALIGNED_MEMORY_SUPPORTED |
| /*#undef PNG_ARM_NEON_API_SUPPORTED*/ |
| /*#undef PNG_ARM_NEON_CHECK_SUPPORTED*/ |
| #define PNG_BENIGN_ERRORS_SUPPORTED |
| #define PNG_BENIGN_READ_ERRORS_SUPPORTED |
| /*#undef PNG_BENIGN_WRITE_ERRORS_SUPPORTED*/ |
| #define PNG_BUILD_GRAYSCALE_PALETTE_SUPPORTED |
| #define PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED |
| #define PNG_COLORSPACE_SUPPORTED |
| #define PNG_CONSOLE_IO_SUPPORTED |
| #define PNG_CONVERT_tIME_SUPPORTED |
| #define PNG_EASY_ACCESS_SUPPORTED |
| /*#undef PNG_ERROR_NUMBERS_SUPPORTED*/ |
| #define PNG_ERROR_TEXT_SUPPORTED |
| #define PNG_FIXED_POINT_SUPPORTED |
| #define PNG_FLOATING_ARITHMETIC_SUPPORTED |
| #define PNG_FLOATING_POINT_SUPPORTED |
| #define PNG_FORMAT_AFIRST_SUPPORTED |
| #define PNG_FORMAT_BGR_SUPPORTED |
| #define PNG_GAMMA_SUPPORTED |
| #define PNG_GET_PALETTE_MAX_SUPPORTED |
| #define PNG_HANDLE_AS_UNKNOWN_SUPPORTED |
| #define PNG_INCH_CONVERSIONS_SUPPORTED |
| #define PNG_INFO_IMAGE_SUPPORTED |
| #define PNG_IO_STATE_SUPPORTED |
| #define PNG_MNG_FEATURES_SUPPORTED |
| #define PNG_POINTER_INDEXING_SUPPORTED |
| /*#undef PNG_POWERPC_VSX_API_SUPPORTED*/ |
| /*#undef PNG_POWERPC_VSX_CHECK_SUPPORTED*/ |
| #define PNG_PROGRESSIVE_READ_SUPPORTED |
| #define PNG_READ_16BIT_SUPPORTED |
| #define PNG_READ_ALPHA_MODE_SUPPORTED |
| #define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED |
| #define PNG_READ_BACKGROUND_SUPPORTED |
| #define PNG_READ_BGR_SUPPORTED |
| #define PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED |
| #define PNG_READ_COMPOSITE_NODIV_SUPPORTED |
| #define PNG_READ_COMPRESSED_TEXT_SUPPORTED |
| #define PNG_READ_EXPAND_16_SUPPORTED |
| #define PNG_READ_EXPAND_SUPPORTED |
| #define PNG_READ_FILLER_SUPPORTED |
| #define PNG_READ_GAMMA_SUPPORTED |
| #define PNG_READ_GET_PALETTE_MAX_SUPPORTED |
| #define PNG_READ_GRAY_TO_RGB_SUPPORTED |
| #define PNG_READ_INTERLACING_SUPPORTED |
| #define PNG_READ_INT_FUNCTIONS_SUPPORTED |
| #define PNG_READ_INVERT_ALPHA_SUPPORTED |
| #define PNG_READ_INVERT_SUPPORTED |
| #define PNG_READ_OPT_PLTE_SUPPORTED |
| #define PNG_READ_PACKSWAP_SUPPORTED |
| #define PNG_READ_PACK_SUPPORTED |
| #define PNG_READ_QUANTIZE_SUPPORTED |
| #define PNG_READ_RGB_TO_GRAY_SUPPORTED |
| #define PNG_READ_SCALE_16_TO_8_SUPPORTED |
| #define PNG_READ_SHIFT_SUPPORTED |
| #define PNG_READ_STRIP_16_TO_8_SUPPORTED |
| #define PNG_READ_STRIP_ALPHA_SUPPORTED |
| #define PNG_READ_SUPPORTED |
| #define PNG_READ_SWAP_ALPHA_SUPPORTED |
| #define PNG_READ_SWAP_SUPPORTED |
| #define PNG_READ_TEXT_SUPPORTED |
| #define PNG_READ_TRANSFORMS_SUPPORTED |
| #define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED |
| #define PNG_READ_USER_CHUNKS_SUPPORTED |
| #define PNG_READ_USER_TRANSFORM_SUPPORTED |
| #define PNG_READ_bKGD_SUPPORTED |
| #define PNG_READ_cHRM_SUPPORTED |
| #define PNG_READ_eXIf_SUPPORTED |
| #define PNG_READ_gAMA_SUPPORTED |
| #define PNG_READ_hIST_SUPPORTED |
| #define PNG_READ_iCCP_SUPPORTED |
| #define PNG_READ_iTXt_SUPPORTED |
| #define PNG_READ_oFFs_SUPPORTED |
| #define PNG_READ_pCAL_SUPPORTED |
| #define PNG_READ_pHYs_SUPPORTED |
| #define PNG_READ_sBIT_SUPPORTED |
| #define PNG_READ_sCAL_SUPPORTED |
| #define PNG_READ_sPLT_SUPPORTED |
| #define PNG_READ_sRGB_SUPPORTED |
| #define PNG_READ_tEXt_SUPPORTED |
| #define PNG_READ_tIME_SUPPORTED |
| #define PNG_READ_tRNS_SUPPORTED |
| #define PNG_READ_zTXt_SUPPORTED |
| #define PNG_SAVE_INT_32_SUPPORTED |
| #define PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED |
| #define PNG_SEQUENTIAL_READ_SUPPORTED |
| #define PNG_SETJMP_SUPPORTED |
| #define PNG_SET_OPTION_SUPPORTED |
| #define PNG_SET_UNKNOWN_CHUNKS_SUPPORTED |
| #define PNG_SET_USER_LIMITS_SUPPORTED |
| #define PNG_SIMPLIFIED_READ_AFIRST_SUPPORTED |
| #define PNG_SIMPLIFIED_READ_BGR_SUPPORTED |
| #define PNG_SIMPLIFIED_READ_SUPPORTED |
| #define PNG_SIMPLIFIED_WRITE_AFIRST_SUPPORTED |
| #define PNG_SIMPLIFIED_WRITE_BGR_SUPPORTED |
| #define PNG_SIMPLIFIED_WRITE_STDIO_SUPPORTED |
| #define PNG_SIMPLIFIED_WRITE_SUPPORTED |
| #define PNG_STDIO_SUPPORTED |
| #define PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED |
| #define PNG_TEXT_SUPPORTED |
| #define PNG_TIME_RFC1123_SUPPORTED |
| #define PNG_UNKNOWN_CHUNKS_SUPPORTED |
| #define PNG_USER_CHUNKS_SUPPORTED |
| #define PNG_USER_LIMITS_SUPPORTED |
| #define PNG_USER_MEM_SUPPORTED |
| #define PNG_USER_TRANSFORM_INFO_SUPPORTED |
| #define PNG_USER_TRANSFORM_PTR_SUPPORTED |
| /*#undef PNG_WARNINGS_SUPPORTED*/ |
| #define PNG_WRITE_16BIT_SUPPORTED |
| #define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED |
| #define PNG_WRITE_BGR_SUPPORTED |
| #define PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED |
| #define PNG_WRITE_COMPRESSED_TEXT_SUPPORTED |
| #define PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED |
| #define PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED |
| #define PNG_WRITE_FILLER_SUPPORTED |
| #define PNG_WRITE_FILTER_SUPPORTED |
| #define PNG_WRITE_FLUSH_SUPPORTED |
| #define PNG_WRITE_GET_PALETTE_MAX_SUPPORTED |
| #define PNG_WRITE_INTERLACING_SUPPORTED |
| #define PNG_WRITE_INT_FUNCTIONS_SUPPORTED |
| #define PNG_WRITE_INVERT_ALPHA_SUPPORTED |
| #define PNG_WRITE_INVERT_SUPPORTED |
| #define PNG_WRITE_OPTIMIZE_CMF_SUPPORTED |
| #define PNG_WRITE_PACKSWAP_SUPPORTED |
| #define PNG_WRITE_PACK_SUPPORTED |
| #define PNG_WRITE_SHIFT_SUPPORTED |
| #define PNG_WRITE_SUPPORTED |
| #define PNG_WRITE_SWAP_ALPHA_SUPPORTED |
| #define PNG_WRITE_SWAP_SUPPORTED |
| #define PNG_WRITE_TEXT_SUPPORTED |
| #define PNG_WRITE_TRANSFORMS_SUPPORTED |
| #define PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED |
| #define PNG_WRITE_USER_TRANSFORM_SUPPORTED |
| #define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED |
| #define PNG_WRITE_bKGD_SUPPORTED |
| #define PNG_WRITE_cHRM_SUPPORTED |
| #define PNG_WRITE_eXIf_SUPPORTED |
| #define PNG_WRITE_gAMA_SUPPORTED |
| #define PNG_WRITE_hIST_SUPPORTED |
| #define PNG_WRITE_iCCP_SUPPORTED |
| #define PNG_WRITE_iTXt_SUPPORTED |
| #define PNG_WRITE_oFFs_SUPPORTED |
| #define PNG_WRITE_pCAL_SUPPORTED |
| #define PNG_WRITE_pHYs_SUPPORTED |
| #define PNG_WRITE_sBIT_SUPPORTED |
| #define PNG_WRITE_sCAL_SUPPORTED |
| #define PNG_WRITE_sPLT_SUPPORTED |
| #define PNG_WRITE_sRGB_SUPPORTED |
| #define PNG_WRITE_tEXt_SUPPORTED |
| #define PNG_WRITE_tIME_SUPPORTED |
| #define PNG_WRITE_tRNS_SUPPORTED |
| #define PNG_WRITE_zTXt_SUPPORTED |
| #define PNG_bKGD_SUPPORTED |
| #define PNG_cHRM_SUPPORTED |
| #define PNG_eXIf_SUPPORTED |
| #define PNG_gAMA_SUPPORTED |
| #define PNG_hIST_SUPPORTED |
| #define PNG_iCCP_SUPPORTED |
| #define PNG_iTXt_SUPPORTED |
| #define PNG_oFFs_SUPPORTED |
| #define PNG_pCAL_SUPPORTED |
| #define PNG_pHYs_SUPPORTED |
| #define PNG_sBIT_SUPPORTED |
| #define PNG_sCAL_SUPPORTED |
| #define PNG_sPLT_SUPPORTED |
| #define PNG_sRGB_SUPPORTED |
| #define PNG_tEXt_SUPPORTED |
| #define PNG_tIME_SUPPORTED |
| #define PNG_tRNS_SUPPORTED |
| #define PNG_zTXt_SUPPORTED |
| /* end of options */ |
| /* settings */ |
| #define PNG_API_RULE 0 |
| #define PNG_DEFAULT_READ_MACROS 1 |
| #define PNG_GAMMA_THRESHOLD_FIXED 5000 |
| #define PNG_IDAT_READ_SIZE PNG_ZBUF_SIZE |
| #define PNG_INFLATE_BUF_SIZE 1024 |
| #define PNG_LINKAGE_API extern |
| #define PNG_LINKAGE_CALLBACK extern |
| #define PNG_LINKAGE_DATA extern |
| #define PNG_LINKAGE_FUNCTION extern |
| #define PNG_MAX_GAMMA_8 11 |
| #define PNG_QUANTIZE_BLUE_BITS 5 |
| #define PNG_QUANTIZE_GREEN_BITS 5 |
| #define PNG_QUANTIZE_RED_BITS 5 |
| #define PNG_TEXT_Z_DEFAULT_COMPRESSION (-1) |
| #define PNG_TEXT_Z_DEFAULT_STRATEGY 0 |
| #define PNG_USER_CHUNK_CACHE_MAX 1000 |
| #define PNG_USER_CHUNK_MALLOC_MAX 8000000 |
| #define PNG_USER_HEIGHT_MAX 1000000 |
| #define PNG_USER_WIDTH_MAX 1000000 |
| #define PNG_ZBUF_SIZE 8192 |
| #define PNG_ZLIB_VERNUM 0 /* unknown */ |
| #define PNG_Z_DEFAULT_COMPRESSION (-1) |
| #define PNG_Z_DEFAULT_NOFILTER_STRATEGY 0 |
| #define PNG_Z_DEFAULT_STRATEGY 1 |
| #define PNG_sCAL_PRECISION 5 |
| #define PNG_sRGB_PROFILE_CHECKS 2 |
| /* end of settings */ |
| #endif /* PNGLCONF_H */ |
| ''' |