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:
+17
-30
@@ -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)" ;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
|
||||
@@ -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_
|
||||
|
||||
|
||||
@@ -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
|
||||
;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
@@ -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) ] ;
|
||||
|
||||
Reference in New Issue
Block a user