blob: 796114cc66de9cd9b19ac161f2d79a8d4329fb9b [file] [log] [blame] [edit]
# Copyright 2014 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 shutil
import logging
from pathlib import Path
VERSION = '9c'
HASH = 'b2affe9a1688bd49fc033f4682c4a242d4ee612f1affaef532f5adcb4602efc4433c4a52a4b3d69e7440ff1f6413b1b041b419bc90efd6d697999961a9a6afb7'
def needed(settings):
return settings.USE_LIBJPEG
def get(ports, settings, shared):
# Archive mirrored from http://www.ijg.org/files/jpegsrc.v9c.tar.gz.
# We have issues where python urllib was not able to load from the www.ijg.org webserver
# and was resulting in 403: Forbidden.
ports.fetch_project('libjpeg', 'https://storage.googleapis.com/webassembly/emscripten-ports/jpegsrc.v9c.tar.gz', 'jpeg-9c', sha512hash=HASH)
def create(final):
logging.info('building port: libjpeg')
source_path = os.path.join(ports.get_dir(), 'libjpeg', 'jpeg-9c')
dest_path = os.path.join(ports.get_build_dir(), 'libjpeg')
shutil.rmtree(dest_path, ignore_errors=True)
shutil.copytree(source_path, dest_path)
Path(dest_path, 'jconfig.h').write_text(jconfig_h)
ports.install_headers(dest_path)
ports.build_port(
dest_path, final,
exclude_files=[
'ansi2knr.c', 'cjpeg.c', 'ckconfig.c', 'djpeg.c', 'example.c',
'jmemansi.c', 'jmemdos.c', 'jmemmac.c', 'jmemname.c',
'jpegtran.c', 'rdjpgcom.c', 'wrjpgcom.c',
]
)
return [shared.Cache.get_lib('libjpeg.a', create, what='port')]
def clear(ports, settings, shared):
shared.Cache.erase_lib('libjpeg.a')
def process_args(ports):
return []
def show():
return 'libjpeg (USE_LIBJPEG=1; BSD license)'
jconfig_h = '''/* jconfig.h. Generated from jconfig.cfg by configure. */
/* jconfig.cfg --- source file edited by configure script */
/* see jconfig.txt for explanations */
#define HAVE_PROTOTYPES 1
#define HAVE_UNSIGNED_CHAR 1
#define HAVE_UNSIGNED_SHORT 1
/* #undef void */
/* #undef const */
/* #undef CHAR_IS_UNSIGNED */
#define HAVE_STDDEF_H 1
#define HAVE_STDLIB_H 1
#define HAVE_LOCALE_H 1
/* #undef NEED_BSD_STRINGS */
/* #undef NEED_SYS_TYPES_H */
/* #undef NEED_FAR_POINTERS */
/* #undef NEED_SHORT_EXTERNAL_NAMES */
/* Define this if you get warnings about undefined structures. */
/* #undef INCOMPLETE_TYPES_BROKEN */
/* Define "boolean" as unsigned char, not enum, on Windows systems. */
#ifdef _WIN32
#ifndef __RPCNDR_H__ /* don't conflict if rpcndr.h already read */
typedef unsigned char boolean;
#endif
#ifndef FALSE /* in case these macros already exist */
#define FALSE 0 /* values of boolean */
#endif
#ifndef TRUE
#define TRUE 1
#endif
#define HAVE_BOOLEAN /* prevent jmorecfg.h from redefining it */
#endif
#ifdef JPEG_INTERNALS
/* #undef RIGHT_SHIFT_IS_UNSIGNED */
#define INLINE __inline__
/* These are for configuring the JPEG memory manager. */
/* #undef DEFAULT_MAX_MEM */
/* #undef NO_MKTEMP */
#endif /* JPEG_INTERNALS */
#ifdef JPEG_CJPEG_DJPEG
#define BMP_SUPPORTED /* BMP image file format */
#define GIF_SUPPORTED /* GIF image file format */
#define PPM_SUPPORTED /* PBMPLUS PPM/PGM image file format */
/* #undef RLE_SUPPORTED */
#define TARGA_SUPPORTED /* Targa image file format */
/* #undef TWO_FILE_COMMANDLINE */
/* #undef NEED_SIGNAL_CATCHER */
/* #undef DONT_USE_B_MODE */
/* Define this if you want percent-done progress reports from cjpeg/djpeg. */
/* #undef PROGRESS_REPORT */
#endif /* JPEG_CJPEG_DJPEG */
'''