Update jpeg package

* Also make use of new build feature rules.
* Since the hacky long_jump_buffer field has been removed from the
  jpeg_error_mgr struct in the new package, the structure is now
  wrapped in the JPEGTranslator code to achieve the same behavior.
This commit is contained in:
Ingo Weinhold
2013-06-14 00:48:11 +02:00
parent e9f440fdfd
commit e4bd005daf
12 changed files with 99 additions and 76 deletions
+17 -30
View File
@@ -550,44 +550,31 @@ if $(TARGET_ARCH) in arm ppc x86 x86_64 {
local jpegBaseURL = $(baseURL)/lib ;
if $(TARGET_ARCH) in arm ppc x86 x86_64 {
if $(TARGET_ARCH) = arm {
HAIKU_JPEG_FILE = jpeg-8d-arm-2012-11-21.zip ;
HAIKU_JPEG_PACKAGE = jpeg-8d-arm-2012-11-21.zip ;
} else if $(TARGET_ARCH) = ppc {
HAIKU_JPEG_FILE = jpeg-8d-ppc-gcc4-2012-08-27.zip ;
HAIKU_JPEG_PACKAGE = jpeg-8d-ppc-gcc4-2012-08-27.zip ;
} else if $(TARGET_ARCH) = x86_64 {
HAIKU_JPEG_FILE = jpeg-8d-x86_64-2012-11-18.zip ;
HAIKU_JPEG_PACKAGE = jpeg-8d-x86_64-2012-11-18.zip ;
} else if $(HAIKU_GCC_VERSION[1]) >= 4 {
HAIKU_JPEG_FILE = jpeg-8d-x86-gcc4-2012-08-23.zip ;
HAIKU_JPEG_PACKAGE = jpeg-8d-x86-gcc4-2012-08-23.zip ;
} else {
HAIKU_JPEG_FILE = jpeg-8d-x86-gcc2-2012-08-23.zip ;
HAIKU_JPEG_PACKAGE = jpeg-9-2-x86_gcc2.hpkg ;
HAIKU_JPEG_DEVEL_PACKAGE = jpeg_devel-9-2-x86_gcc2.hpkg ;
}
local jpegZipFile = [ DownloadFile $(HAIKU_JPEG_FILE)
: $(jpegBaseURL)/$(HAIKU_JPEG_FILE) ] ;
HAIKU_JPEG_URL = $(hpkgBaseURL)/$(HAIKU_JPEG_PACKAGE) ;
HAIKU_JPEG_DEVEL_URL = $(hpkgBaseURL)/$(HAIKU_JPEG_DEVEL_PACKAGE) ;
HAIKU_JPEG_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR)
$(HAIKU_JPEG_FILE:B) ] ;
ExtractBuildFeatureArchives jpeg :
file: base $(HAIKU_JPEG_URL)
runtime: lib
file: devel $(HAIKU_JPEG_DEVEL_URL)
depends: base
library: develop/lib/libjpeg.so
headers: develop/headers
;
HAIKU_JPEG_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_JPEG_DIR)
: common/include : $(jpegZipFile)
: extracted-jpeg ] ;
HAIKU_JPEG_LIB = [ ExtractArchive $(HAIKU_JPEG_DIR)
:
common/lib/libjpeg.so
: $(jpegZipFile)
: extracted-jpeg ] ;
HAIKU_JPEG_CURRENT_LIB = [ ExtractArchive $(HAIKU_JPEG_DIR)
:
common/lib/libjpeg.so.8.4.0
: $(jpegZipFile)
: extracted-jpeg ] ;
Depends $(HAIKU_JPEG_LIB) $(HAIKU_JPEG_CURRENT_LIB) : $(HAIKU_JPEG_HEADERS_DEPENDENCY) ;
HAIKU_JPEG_CURRENT_LINK = libjpeg.so.8 ;
HAIKU_JPEG_HEADERS = [ FDirName $(HAIKU_JPEG_DIR) common include ] ;
EnableBuildFeatures libjpeg ;
EnableBuildFeatures jpeg ;
} else {
Echo "jpeg support not available on $(TARGET_ARCH)" ;
}
-1
View File
@@ -76,7 +76,6 @@ SYSTEM_LIBS = [ FFilterByBuildFeatures
$(HAIKU_SHARED_LIBSTDC++) $(HAIKU_SHARED_LIBSUPC++)
] ;
PRIVATE_SYSTEM_LIBS = [ FFilterByBuildFeatures
$(HAIKU_JPEG_CURRENT_LIB)
libalm.so
libfluidsynth.so
libilmimf.so
+5 -3
View File
@@ -12,7 +12,7 @@ OptionalPackageDependencies CDRecord : GetTextLibintl LibIconv ;
OptionalPackageDependencies Curl : OpenSSL ;
OptionalPackageDependencies DevelopmentBase : CDRecord DevelopmentMin Yasm ;
OptionalPackageDependencies Development :
DevelopmentBase FFMpeg-devel FreeType-devel GLU-devel Libpng-devel Perl
DevelopmentBase FFMpeg-devel FreeType-devel GLU-devel Jpeg Libpng-devel Perl
Zlib-devel
;
OptionalPackageDependencies DevelopmentPowerPC : DevelopmentMin ;
@@ -47,5 +47,7 @@ OptionalPackageDependencies wpa_supplicant : OpenSSL ;
OptionalPackageDependencies XZ-Utils : Tar ;
OptionalPackageDependencies Zlib-devel : Zlib ;
OptionalPackageDependencies MandatoryPackages
: Bzip Ctags FFMpeg FreeType GLU Grep ICU Libpng LibSolv Mesa Sed Tar Zlib ;
OptionalPackageDependencies MandatoryPackages :
Bzip Ctags FFMpeg FreeType GLU Grep ICU Jpeg Libpng LibSolv Mesa Sed Tar
Zlib
;
+22
View File
@@ -60,6 +60,8 @@
# Groff - text formatter used for man pages
# HGrep - header grep tool
# ICU-devel - the headers and lib-links for ICU (for development)
# Jpeg - JPEG image compression library and tools
# Jpeg-devel - the Jpeg development files
# KeymapSwitcher - Easy to use keymap switcher
# LGrep - Library Grep tool
# LibEdit - A BSD licensed replacement for GNU readline
@@ -1131,6 +1133,26 @@ if [ IsOptionalHaikuImagePackageAdded ICU-devel ] {
}
# Jpeg
if [ IsOptionalHaikuImagePackageAdded Jpeg ] {
if $(TARGET_ARCH) in arm ppc x86 x86_64 {
InstallOptionalHaikuImagePackage $(HAIKU_JPEG_URL) : system ;
} else {
Echo "No optional package Jpeg available for $(TARGET_ARCH)" ;
}
}
# Jpeg-devel
if [ IsOptionalHaikuImagePackageAdded Jpeg-devel ] {
if $(TARGET_ARCH) in arm ppc x86 x86_64 {
InstallOptionalHaikuImagePackage $(HAIKU_JPEG_DEVEL_URL) : system ;
} else {
Echo "No optional package Jpeg-devel available for $(TARGET_ARCH)" ;
}
}
# KeymapSwitcher
if [ IsOptionalHaikuImagePackageAdded KeymapSwitcher ] {
if $(TARGET_ARCH) = x86 {
-13
View File
@@ -102,19 +102,6 @@ SYSTEM_LIBS_ALIASES =
libnetapi.so
;
OPTIONAL_LIBS_ALIASES =
libjpeg.so
libz.so
;
# TODO: Remove the following symlinks when the libraries have been packaged
# properly!
# libjpeg.so links to the current libjpeg
AddSymlinkToPackage lib : $(HAIKU_JPEG_CURRENT_LIB:BS)
: $(HAIKU_JPEG_CURRENT_LINK) : : true ;
AddSymlinkToPackage lib : $(HAIKU_JPEG_CURRENT_LINK)
: libjpeg.so : : true ;
# TODO: Remove when the packages have been rebuilt!
AddSymlinkToPackage lib : libbe.so : liblocale.so ;
-2
View File
@@ -71,8 +71,6 @@ AddHeaderDirectoryToPackage compatibility gnu : gnu ;
AddHeaderDirectoryToPackage libs termcap : 3rdparty ;
AddHeaderDirectoryToPackage libs tiff : 3rdparty ;
CopyDirectoryToPackage develop headers : $(HAIKU_JPEG_HEADERS_DEPENDENCY)
: 3rdparty : : isTarget ;
# cpp headers
if $(HAIKU_GCC_VERSION[1]) = 2 {
# GCC 2 only -- for GCC 4 they come with the DevelopmentBase package
@@ -31,8 +31,6 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "JPEGTranslator.h"
#include "TranslatorWindow.h"
#include "exif_parser.h"
#include <syslog.h>
@@ -42,6 +40,11 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <TabView.h>
#include <TextView.h>
#include "be_jerror.h"
#include "exif_parser.h"
#include "TranslatorWindow.h"
#undef B_TRANSLATION_CONTEXT
#define B_TRANSLATION_CONTEXT "JPEGTranslator"
@@ -953,7 +956,7 @@ JPEGTranslator::Compress(BPositionIO* in, BPositionIO* out,
// Set basic things needed for jpeg writing
struct jpeg_compress_struct cinfo;
struct jpeg_error_mgr jerr;
struct be_jpeg_error_mgr jerr;
cinfo.err = be_jpeg_std_error(&jerr, fSettings, longJumpBuffer);
jpeg_create_compress(&cinfo);
be_jpeg_stdio_dest(&cinfo, out);
@@ -1057,7 +1060,7 @@ JPEGTranslator::Decompress(BPositionIO* in, BPositionIO* out,
// Set basic things needed for jpeg reading
struct jpeg_decompress_struct cinfo;
struct jpeg_error_mgr jerr;
struct be_jpeg_error_mgr jerr;
cinfo.err = be_jpeg_std_error(&jerr, fSettings, longJumpBuffer);
jpeg_create_decompress(&cinfo);
be_jpeg_stdio_src(&cinfo, in);
@@ -191,15 +191,5 @@ class TranslatorView : public BTabView {
EXTERN(void) be_jpeg_stdio_src(j_decompress_ptr cinfo, BPositionIO *infile); // from "be_jdatasrc.cpp"
EXTERN(void) be_jpeg_stdio_dest(j_compress_ptr cinfo, BPositionIO *outfile); // from "be_jdatadst.cpp"
//---------------------------------------------------
// Error output functions
// based on the one from jerror.c
// modified to use settings
// (so user can decide to show dialog-boxes or not)
//---------------------------------------------------
EXTERN(struct jpeg_error_mgr *) be_jpeg_std_error (struct jpeg_error_mgr * err,
TranslatorSettings * settings, const jmp_buf* longJumpBuffer);
// implemented in "be_jerror.cpp"
#endif // _JPEGTRANSLATOR_H_
+6 -5
View File
@@ -8,13 +8,13 @@ SubDirSysHdrs [ FDirName $(SUBDIR) $(DOTDOT) raw ] ;
SubDirHdrs [ FDirName $(SUBDIR) $(DOTDOT) shared ] ;
#for BaseTranslator.h and friends
UseHeaders $(HAIKU_JPEG_HEADERS) : true ;
UseBuildFeatureHeaders jpeg ;
AddResources JPEGTranslator : JPEGTranslator.rdef ;
Includes [ FGristFiles be_jdatadst.cpp be_jdatasrc.cpp
be_jerror.cpp JPEGTranslator.cpp ]
: $(HAIKU_JPEG_HEADERS_DEPENDENCY) ;
Includes [ FGristFiles be_jdatadst.cpp be_jdatasrc.cpp be_jerror.cpp
JPEGTranslator.cpp ]
: [ BuildFeatureAttribute jpeg : headers ] ;
Translator JPEGTranslator :
be_jdatadst.cpp
@@ -22,7 +22,8 @@ Translator JPEGTranslator :
be_jerror.cpp
exif_parser.cpp
JPEGTranslator.cpp
: be translation libtranslatorsutils.a $(HAIKU_JPEG_LIB)
: be translation libtranslatorsutils.a
[ BuildFeatureAttribute jpeg : library ]
$(TARGET_LIBSTDC++) $(HAIKU_LOCALE_LIBS)
: true
;
+8 -5
View File
@@ -37,13 +37,14 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "be_jerror.h"
// Be headers
#include <Alert.h>
#include <Catalog.h>
#include <stdio.h>
// JPEG headers
#include <jpeglib.h>
#include <jconfig.h>
#include <jerror.h>
@@ -73,8 +74,10 @@ be_error_exit (j_common_ptr cinfo)
fprintf(stderr, B_TRANSLATE("JPEG Library Error: %s\n"), buffer);
be_jpeg_error_mgr* errorManager
= static_cast<be_jpeg_error_mgr*>(cinfo->err);
jmp_buf longJumpBuffer;
memcpy(&longJumpBuffer, &(cinfo->err->long_jump_buffer), sizeof(jmp_buf));
memcpy(&longJumpBuffer, errorManager->long_jump_buffer, sizeof(jmp_buf));
/* Let the memory manager delete any temp files before we die */
jpeg_destroy(cinfo);
@@ -108,12 +111,12 @@ be_output_message (j_common_ptr cinfo)
/*
* Fill in the standard error-handling methods in a jpeg_error_mgr object.
* Since Translator doesn't use it's own error table, we can use error_mgr's
* variables to store some usefull data.
* variables to store some useful data.
* last_addon_message (as ShowReadWarnings) is used for storing SETTINGS->ShowReadWarningBox value
*/
GLOBAL(struct jpeg_error_mgr *)
be_jpeg_std_error (struct jpeg_error_mgr * err, TranslatorSettings* settings,
be_jpeg_std_error(be_jpeg_error_mgr* err, TranslatorSettings* settings,
const jmp_buf* longJumpBuffer)
{
settings->Acquire();
@@ -123,7 +126,7 @@ be_jpeg_std_error (struct jpeg_error_mgr * err, TranslatorSettings* settings,
err->output_message = be_output_message;
err->ShowReadWarnings = settings->SetGetBool(JPEG_SET_SHOWREADWARNING, NULL);
memcpy(&(err->long_jump_buffer), longJumpBuffer, sizeof(jmp_buf));
err->long_jump_buffer = longJumpBuffer;
settings->Release();
return err;
+28
View File
@@ -0,0 +1,28 @@
/*
* Copyright 2013, Haiku, Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef B_JERROR_H
#define B_JERROR_H
#include <stdio.h>
// for jpeglib.h -- it doesn't seem to be self-contained
#include <setjmp.h>
#include <jpeglib.h>
class TranslatorSettings;
struct be_jpeg_error_mgr : jpeg_error_mgr {
const jmp_buf* long_jump_buffer;
};
struct jpeg_error_mgr* be_jpeg_std_error(be_jpeg_error_mgr* err,
TranslatorSettings* settings, const jmp_buf* longJumpBuffer);
#endif // B_JERROR_H
+6 -3
View File
@@ -1,7 +1,7 @@
SubDir HAIKU_TOP src libs tiff ;
UseLibraryHeaders tiff ;
UseHeaders $(HAIKU_JPEG_HEADERS) : true ;
UseBuildFeatureHeaders jpeg ;
UseBuildFeatureHeaders zlib ;
SubDirHdrs [ FDirName $(SUBDIR) $(DOTDOT) shared ] ;
@@ -47,13 +47,16 @@ local shared_files =
;
Includes [ FGristFiles tif_jpeg.c tif_ojpeg.c ]
: $(HAIKU_JPEG_HEADERS_DEPENDENCY) ;
: [ BuildFeatureAttribute jpeg : headers ] ;
Includes [ FGristFiles tif_pixarlog.c tif_zip.c ]
: [ BuildFeatureAttribute zlib : headers ] ;
Objects $(shared_files) ;
SharedLibrary libtiff.so : [ FGristFiles $(shared_files:S=.o) ]
: $(HAIKU_JPEG_LIB) [ BuildFeatureAttribute zlib : library ] : 3.8 ;
:
[ BuildFeatureAttribute jpeg : library ]
[ BuildFeatureAttribute zlib : library ]
: 3.8 ;
StaticLibrary libtiff.a : [ FGristFiles $(shared_files:S=.o) ] ;