From 709c4d66e0b107ca606941b988bad717c0b45d9b Mon Sep 17 00:00:00 2001 From: Denys Dmytriyenko Date: Tue, 17 Mar 2009 14:32:59 -0400 Subject: rename packages/ to recipes/ per earlier agreement See links below for more details: http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326 http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816 Signed-off-by: Denys Dmytriyenko Acked-by: Mike Westerhof Acked-by: Philip Balister Acked-by: Khem Raj Acked-by: Marcin Juszkiewicz Acked-by: Koen Kooi Acked-by: Frans Meulenbroeks --- recipes/netpbm/files/oeendiangen | 30 +++ recipes/netpbm/netpbm-10.28/Makefile.config | 380 ++++++++++++++++++++++++++++ recipes/netpbm/netpbm-10.28/ppmtojpeg.patch | 17 ++ recipes/netpbm/netpbm_10.28.bb | 90 +++++++ 4 files changed, 517 insertions(+) create mode 100644 recipes/netpbm/files/oeendiangen create mode 100644 recipes/netpbm/netpbm-10.28/Makefile.config create mode 100644 recipes/netpbm/netpbm-10.28/ppmtojpeg.patch create mode 100644 recipes/netpbm/netpbm_10.28.bb (limited to 'recipes/netpbm') diff --git a/recipes/netpbm/files/oeendiangen b/recipes/netpbm/files/oeendiangen new file mode 100644 index 0000000000..b01e5e855b --- /dev/null +++ b/recipes/netpbm/files/oeendiangen @@ -0,0 +1,30 @@ +#!/bin/sh +# +# This replaces 'endiangen' for OpenEmbedded. OE builds can rely on +# the GNU endian.h, however this generates __ names, (unless __USE_BSD +# is set) so we need to deal with this. Match the output of endiangen. +cat < +#include + +#ifndef LITTLE_ENDIAN +# define LITTLE_ENDIAN __LITTLE_ENDIAN +#endif +#ifndef BIG_ENDIAN +# define BIG_ENDIAN __BIG_ENDIAN +#endif +#ifndef PDP_ENDIAN +# define PDP_ENDIAN __PDP_ENDIAN +#endif +#ifndef BYTE_ORDER +# define BYTE_ORDER __BYTE_ORDER +#endif + +#ifndef BITS_PER_WORD +# include +# define BITS_PER_WORD __WORDSIZE +#endif +#endif +EOF diff --git a/recipes/netpbm/netpbm-10.28/Makefile.config b/recipes/netpbm/netpbm-10.28/Makefile.config new file mode 100644 index 0000000000..3407fcfd18 --- /dev/null +++ b/recipes/netpbm/netpbm-10.28/Makefile.config @@ -0,0 +1,380 @@ +# This is the configuration file for OpenEmbedded +# It is a generic file for *all* architectures supported by +# OpenEmbedded. +# +# This is a make file inclusion, to be included in all the Netpbm make +# files. + +# This file is meant to contain variable settings that customize the +# build for a particular target system configuration. + +# The distribution contains the file Makefile.config.in. You edit +# Makefile.config.in in ways relevant to your particular environment +# to create Makefile.config. The "configure" program will do this +# for you in simple cases. + +# Some of the variables that the including make file must set for this +# file to work: +# +# SRCDIR: The directory at the top of the Netpbm source tree. Note that +# this is typically a relative directory, and it must be relative to the +# make file that includes this file. + +DEFAULT_TARGET = merge + +# Fiasco has some special requirements that make it fail to compile on +# some systems, and since it isn't very important, just set this to "N" +# and skip it on those systems unless you want to debug it and fix it. +# OpenBSD: +#BUILD_FIASCO = N +BUILD_FIASCO = Y + +# The following are commands for the build process to use. These values +# do not get built into anything. + +# The C compiler (including macro preprocessor) +#CC = gcc + +# The linker. +LD = $(CC) + +#If the linker identified above is a compiler that invokes a linker +#(as in 'cc foo.o -o foo'), set LINKERISCOMPILER. The main difference is +#that we expect a compiler to take linker options in the '-Wl,-opt1,val1' +#syntax whereas the actual linker would take '-opt1 val1'. +LINKERISCOMPILER=Y + +#LINKER_CAN_DO_EXPLICIT_LIBRARY means the linker specified above can +#take a library as just another link object argument, as in 'ld +#pnmtojpeg.o /usr/local/lib/libjpeg.so ...' as opposed to requiring a +#-l option as in 'ld pnmtojpeg.o -L/usr/local/lib -l jpeg'. +#This variable controls how 'libopt' gets built. Note that with some +#linkers, you can specify a shared library explicitly, but then it has +#to live in that exact place at run time. That's not good enough for us. +LINKER_CAN_DO_EXPLICIT_LIBRARY=Y + +# This is the name of the header file that declares the types +# uint32_t, etc. This name is used as #include $(INTTYPES_H) . +# Set to null if the types come automatically without including anything. +INTTYPES_H = + +# HAVE_INT64 tells whether, assuming you include the header indicated by +# INTTYPES_H, you have the int64_t type and related stuff. (If you don't +# the build will omit certain code that does 64 bit computations). +HAVE_INT64 = Y + +# CC and LD are for building the Netpbm programs, which are not necessarily +# intended to run on the same system on which Make is running. But when we +# build a build tool such as Libopt, it is meant to run only on the same +# system on which the Make is running. The variables below define programs +# to use to compile and link build tools. +CC_FOR_BUILD = $(BUILD_CC) +LD_FOR_BUILD = $(BUILD_CC) + +# MAKE is set automatically by Make to what was used to invoke Make. + +INSTALL = install + +# STRIPFLAG is the option you pass to the above install program to make it +# strip unnecessary information out of binaries. +STRIPFLAG = -s + +SYMLINK = ln -s + +#MANPAGE_FORMAT is "nroff" or "cat". It determines in what format the +#pointer man pages are installed (ready to nroff, or ready to cat). +#A pointer man pages is just a single-paragraph pages that tells you there is +#no man page for the program, to look at the HTML documentation instead. +MANPAGE_FORMAT = nroff + +LEX = flex + +# EXE is a suffix that the linker puts on any executable it generates. +# In cygwin, this is .exe and most programs deal with its existence without +# us having to know about it. Some don't though, so set this: +EXE = + +# linker options. + +# Linker options for created Netpbm shared libraries. + +# Here, $(SONAME) resolves to the soname for the shared library being created. +# The following are gcc options. This works on GNU libc systems. +LDSHLIB = -shared -fpic -Wl,-soname,$(SONAME) + +# LDRELOC is the command to combine two .o files (relocateable object files) +# into a single .o file that can later be linked into something else. NONE +# means no such command is available. +LDRELOC = $(TARGET_LD) --reloc + +# On older systems, you have to make shared libraries out of position +# independent code, so you need -fpic or fPIC here. (The rule is: if +# -fpic works, use it. If it bombs, go to fPIC). On newer systems, +# it isn't necessary, but can save real memory at the expense of +# execution speed. Without position independent code, the library +# loader may have to patch addresses into the executable text. On an +# older system, this would cause a program crash because the loader +# would be writing into read-only shared memory. But on newer +# systems, the system silently creates a private mapping of the page +# or segment being modified (the "copy on write" phenomenon). So it +# needs its own private real page frame. In one experiment, A second +# copy of Pbmtext used 16K less real memory when built with -fpic than +# when built without. 2001.06.02. + +# We have seen -fPIC required on IA64 and AMD64 machines (GNU +# compiler/linker). Build-time linking fails without it. I don't +# know why -- history seems to be repeating itself. 2005.02.23. + +CFLAGS_SHLIB = -fpic + +# SHLIB_CLIB is the link option to include the C library in a shared library, +# normally "-lc". On typical systems, this serves no purpose. On some, +# though, it causes information about which C library to use to be recorded +# in the shared library and thus choose the correct library among several or +# avoid using an incompatible one. But on some systems, the link fails. +# On 2002.09.30, "John H. DuBois III" reports that on +# SCO OpenServer, he gets the following error message with -lc: +# +# -lc; relocations referenced ; from file(s) /usr/ccs/lib/libc.so(random.o); +# fatal error: relocations remain against allocatable but non-writable +# section: ; .text + +SHLIB_CLIB = + +# On some systems you have to build into an executable the list of +# directories where its dynamically linked libraries can be found at +# run time. This is typically done with a -R or -rpath linker +# option. Even on systems that don't require it, you might prefer to do +# that rather than set up environment variables or configuration files +# to tell the system where the libraries are. A "Y" here means to put +# the directory information in the executable at link time. +NEED_RUNTIME_PATH = Y + +# RPATHOPTNAME is the option you use on the link command to specify +# a runtime search path for a shared library. It is meaningless unless +# NEED_RUNTIME_PATH is Y. +RPATHOPTNAME = -rpath + +# The following variables tell where your various libraries on which +# Netpbm depends live. The LIBxxx variable is a full file +# specification of the link library (not necessarily the library used +# at run time). e.g. "/usr/local/lib/graphics/libpng.so". It usually +# doesn't matter if the library prefix and suffix are right -- you can +# use "lib" and ".so" or ".a" regardless of what your system actually +# uses because these just turn into "-L" and "-l" linker options +# anyway. ".a" implies a static library for some purposes, though. +# If you don't have the library in question, use a value of NONE for +# LIBxxx and the build will simply skip the programs that require that +# library. If the library is in your linker's (or the Netpbm build's) +# default search path, leave off the directory part, e.g. "libpng.so". + +# The xxxHDR_DIR variable is the directory in which the interface +# headers for the library live (e.g. /usr/include). If they are in your +# compiler's default search path, set this variable to null. + +# This is where the Netpbm shared libraries will reside when Netpbm is +# fully installed. In some configurations, the Netpbm builder builds +# this information into the Netpbm executables. This does NOT affect +# where the Netpbm installer installs the libraries. A null value +# means the libraries are in a default search path used by the runtime +# library loader. +NETPBMLIB_RUNTIME_PATH = $(libdir) +#NETPBMLIB_RUNTIME_PATH = /usr/lib/netpbm + +# The TIFF library. See above. If you want to build the tiff +# converters, you must have the tiff library already installed. + +TIFFLIB = libtiff.so +TIFFHDR_DIR = + +# Some TIFF libraries do Jpeg and/or Z (flate) compression and thus any +# program linked with the TIFF library needs a Jpeg and/or Z library. +# Some TIFF libraries have such library statically linked in, but others +# need it to be dynamically linked at program load time. +# Make this 'N' if youf TIFF library doesn't need such dynamic linking. +# As of 2005.01, the most usual build of the TIFF library appears to require +# both. +TIFFLIB_NEEDS_JPEG = Y +TIFFLIB_NEEDS_Z = Y + +# The JPEG library. See above. If you want to build the jpeg +# converters you must have the jpeg library already installed. + +# Tiff files can use JPEG compression, so the Tiff library can reference +# the JPEG library. If your Tiff library references a dynamic JPEG +# library, you must specify at least JPEGLIB here, or the Tiff +# converters will not build. Note that your Tiff library may have the +# JPEG stuff statically linked in, in which case you won't need +# JPEGLIB in order to build the Tiff converters. + +JPEGLIB = libjpeg.so +JPEGHDR_DIR = + +# The PNG library. See above. If you want to build the PNG +# converters you must have the PNG library already installed. + +# The PNG library, by convention starting around April 2002, gets installed +# with names that include a version number, such as libpng10.a and header +# files in /usr/include/libpng10. +# option. +PNGLIB = libpng.so +PNGHDR_DIR = +PNGVER = + +# The zlib compression library. See above. You need it to build +# anything that needs the PNG library (see above). If you selected +# NONE for the PNG library, it doesn't matter what you specify here -- +# it won't get used. +ZLIB = libz.so +ZHDR_DIR = + +# The JBIG lossless image compression library (aka JBIG-KIT): +JBIGLIB = $(BUILDDIR)/converter/other/jbig/libjbig.a +JBIGHDR_DIR = $(SRCDIR)/converter/other/jbig + +# The Jasper JPEG-2000 image compression library (aka JasPer): +JASPERLIB = $(INTERNAL_JASPERLIB) +JASPERHDR_DIR = $(INTERNAL_JASPERHDR_DIR) +# JASPERDEPLIBS is the libraries (-l options or file names) on which +# The Jasper library depends -- i.e. what you have to link into any +# executable that links in the Jasper library. +JASPERDEPLIBS = +#JASPERDEPLIBS = -ljpeg + +# And the Utah Raster Toolkit (aka URT aka RLE) library: +URTLIB = $(BUILDDIR)/urt/librle.a +URTHDR_DIR = $(SRCDIR)/urt + +# The Linux SVGA library (Svgalib) is a facility for displaying graphics +# on the Linux console. It is required by Ppmsvgalib. +LINUXSVGALIB = NONE +LINUXSVGAHDR_DIR = + +# If you don't want any network functions, set OMIT_NETWORK to "y". +# The only thing that requires network functions is the option in +# ppmtompeg to run it on multiple computers simultaneously. On some +# systems network functions don't work or we haven't figured out how to +# make them work, or they just aren't worth the effort. +OMIT_NETWORK = + +# These are -l options to link in the network libraries. Often, these are +# built into the standard C library, so this can be null. This is irrelevant +# if OMIT_NETWORK is "y". +NETWORKLD = + +VMS = +#VMS: +#VMS = yes + +# The following variables are used only by 'make install' (and the +# variants of it). Paths here don't, for example, get built into any +# programs. + +# This is where everything goes when you do 'make package', unless you +# override it by setting 'pkgdir' on the Make command line. +PKGDIR_DEFAULT = /tmp/netpbm + +# File permissions for installed files. +# Note that on some systems (e.g. Solaris), 'install' can't use the +# mnemonic permissions - you have to use octal. + +# binaries (pbmmake, etc) +INSTALL_PERM_BIN = 755 # u=rwx,go=rx +# shared libraries (libpbm.so, etc) +INSTALL_PERM_LIBD = 755 # u=rwx,go=rx +# static libraries (libpbm.a, etc) +INSTALL_PERM_LIBS = 644 # u=rw,go=r +# header files (pbm.h, etc) +INSTALL_PERM_HDR = 644 # u=rw,go=r +# man pages (pbmmake.1, etc) +INSTALL_PERM_MAN = 644 # u=rw,go=r +# data files (pnmtopalm color maps, etc) +INSTALL_PERM_DATA = 644 # u=rw,go=r + +# Specify the suffix that want the man pages to have. + +SUFFIXMANUALS1 = 1 +SUFFIXMANUALS3 = 3 +SUFFIXMANUALS5 = 5 + +#NETPBMLIBTYPE tells the kind of libraries that will get built to hold the +#Netpbm library functions. The value is used only in make file tests. +# "unixshared" means a unix-style shared library, typically named like +# libxyz.so.2.3 +NETPBMLIBTYPE = unixshared +# "unixstatic" means a unix-style static library, (like libxyz.a) +#NETPBMLIBTYPE = unixstatic +# "dll" means a Windows DLL shared library +#NETPBMLIBTYPE = dll +# "dylib" means a Darwin/Mac OS shared library +#NETPBMLIBTYPE = dylib + +#NETPBMLIBSUFFIX is the suffix used on whatever kind of library is +#selected above. All this is used for is to construct library names. +#The make files never examine the actual value. +NETPBMLIBSUFFIX = so + +# "a" is the suffix for unix-style static libraries. It is also +# traditionally used for shared libraries on AIX. The Visual Age C +# manual says sometimes .so works on AIX, and GNU software for AIX +# 5.1.0 does indeed use it. In our experiments, it works fine if you +# name the library file explicitly on the link, but isn't in the -l +# search order. If you name the library explicitly on the link, the +# library must live in exactly the same position at run time, so we +# can't use that. Therefore, you cannot build both static and shared +# libraries with AIX. You have to choose. +#NETPBMLIBSUFFIX = a +# For HP-UX shared libraries: +#NETPBMLIBSUFFIX = sl +# Darwin/Mac OS shared library: +#NETPBMLIBSUFFIX = dylib +# Windows shared library: +#NETPBMLIBSUFFIX = dll + +#STATICLIB_TOO is "y" to signify that you want a static library built +#and installed in addition to whatever library type you specified by +#NETPBMLIBTYPE. If NETPBMLIBTYPE specified a static library, +#STATICLIB_TOO simply has no effect. +STATICLIB_TOO = y +#STATICLIB_TOO = n + +#STATICLIBSUFFIX is the suffix that static libraries have. It's +#meaningless if you aren't building static libraries. +STATICLIBSUFFIX = a + +#SHLIBPREFIXLIST is a blank-delimited list of prefixes that a filename +#of a shared library may have on this system. Traditionally, it's +#just "lib", as in libc or libnetpbm. On Windows, though, varying +#prefixes are used when multiple alternative forms of a library are +#available. The first prefix in this list is what we use to name the +#Netpbm shared libraries. +# +# This variable controls how 'libopt' gets built. +# +SHLIBPREFIXLIST = lib + +NETPBMSHLIBPREFIX = $(firstword $(SHLIBPREFIXLIST)) + +#DLLVER is used to version the DLLs built on cygwin or other +#windowsish platforms. We can't add this to LIBROOT, or we'd +#version the static libs (which is bad). We can't add this +#at the end of the name (like unix does with so numbers) because +#windows will only load dlls whose name ends in "dll". So, +#we have this variable, which becomes the end of the library "root" name +#for DLLs only. +# +# This variable controls how 'libopt' gets built. +# +DLLVER = +#Cygwin +#DLLVER = $(NETPBM_MAJOR_RELEASE) + +#NETPBM_DOCURL is the URL of the main documentation page for Netpbm. +#This is a directory which contains a file for each Netpbm program, +#library, and file type. E.g. The documentation for jpegtopnm might be in +#http://netpbm.sourceforge.net/doc/jpegtopnm.html . This value gets +#installed in the man pages (which say no more than to read the webpage) +#and in the Webman netpbm.url file. +NETPBM_DOCURL = http://netpbm.sourceforge.net/doc/ +#For a system with no web access, but a local copy of the doc: +#NETPBM_DOCURL = file:/usr/doc/netpbm/ diff --git a/recipes/netpbm/netpbm-10.28/ppmtojpeg.patch b/recipes/netpbm/netpbm-10.28/ppmtojpeg.patch new file mode 100644 index 0000000000..39df5edbea --- /dev/null +++ b/recipes/netpbm/netpbm-10.28/ppmtojpeg.patch @@ -0,0 +1,17 @@ +# This patch makes the /usr/bin/ppmtojpeg work on OE. + +--- netpbm-10.28/netpbm.c.orig 2005-08-04 13:20:15.665273549 -0700 ++++ netpbm-10.28/netpbm.c 2005-08-04 13:21:09.288647855 -0700 +@@ -62,8 +62,11 @@ + which would know whether pnmtojpeg was built into the merged binary + or not. But that's too much work. + +- TRY("ppmtojpeg", main_pnmtojpeg); ++ * Patched for OE because OE builds the jpeg library (always) and the ++ * subdirectory creates the link anyway, so otherwise we have a bogus ++ * link. + */ ++ TRY("ppmtojpeg", main_pnmtojpeg); + TRY("bmptoppm", main_bmptopnm); + TRY("pgmnorm", main_pnmnorm); + TRY("ppmnorm", main_pnmnorm); diff --git a/recipes/netpbm/netpbm_10.28.bb b/recipes/netpbm/netpbm_10.28.bb new file mode 100644 index 0000000000..ff90310e1b --- /dev/null +++ b/recipes/netpbm/netpbm_10.28.bb @@ -0,0 +1,90 @@ +DESCRIPTION = "Netpbm is a toolkit for manipulation of graphic images, including\ +conversion of images between a variety of different formats. There\ +are over 220 separate tools in the package including converters for\ +about 100 graphics formats." +HOMEPAGE = "http://netpbm.sourceforge.net" +SECTION = "console/utils" +LICENSE = "GPL MIT Artistic" +# NOTE: individual command line utilities are covered by different +# licenses. The compiled and linked command line utilties are +# subject to the licenses of the libraries they use too - including +# libpng libz, IJG, and libtiff licenses +DEPENDS = "jpeg zlib libpng tiff install-native flex-native" +RDEPENDS = "perl\ + perl-module-cwd\ + perl-module-english\ + perl-module-fcntl\ + perl-module-file-basename\ + perl-module-file-spec\ + perl-module-getopt-long\ + perl-module-strict\ + " + +# these should not be required, they are here because the perl +# module dependencies are currently incorrect: +RDEPENDS += "perl-module-exporter-heavy" +RDEPENDS += "perl-module-file-spec-unix" + +PR = "r5" + +SRC_URI = "${SOURCEFORGE_MIRROR}/netpbm/netpbm-${PV}.tgz \ + file://ppmtojpeg.patch;patch=42 \ + file://Makefile.config \ + file://oeendiangen" + +PARALLEL_MAKE = "" + +EXTRA_OEMAKE = "ENDIANGEN=${S}/buildtools/oeendiangen TARGET_LD=${LD}" + +do_configure() { + install -c -m 644 ../Makefile.config . + # The following stops the host endiangen program being run and uses + # the target endian.h header instead. + install -c -m 755 ../oeendiangen buildtools +} + +do_compile() { + # need all to get the static library too + oe_runmake all default +} + +do_install() { + # netpbm makes its own installation package, which must then be + # installed to form the dummy installation for ipkg + rm -rf ${WORKDIR}/netpbm-package + oe_runmake package pkgdir=${WORKDIR}/netpbm-package + # now install the stuff from the package into ${D} + for d in ${WORKDIR}/netpbm-package/* + do + # following will cause an error if used + case "$d" in + */README) ;; + */VERSION) ;; + */pkginfo) ;; + */bin) install -d ${D}${bindir} + cp -pPR "$d"/* ${D}${bindir} + rm ${D}${bindir}/doc.url;; + */include) install -d ${D}${includedir} + cp -pPR "$d"/* ${D}${includedir};; + */link|*/lib) install -d ${D}${libdir} + cp -pPR "$d"/* ${D}${libdir};; + */man) install -d ${D}${mandir} + cp -pPR "$d"/* ${D}${mandir};; + */misc) install -d ${D}${datadir}/netpbm + cp -pPR "$d"/* ${D}${datadir}/netpbm;; + */config_template) + install -d ${D}${bindir} + sed "/^@/d + s!@VERSION@!$(<'${WORKDIR}/netpbm-package/VERSION')! + s!@DATADIR@!${datadir}/netpbm! + s!@LIBDIR@!${libdir}! + s!@LINKDIR@!${libdir}! + s!@INCLUDEDIR@!${includedir}! + s!@BINDIR@!${bindir}! + " "$d" >${D}${bindir}/netpbm-config + chmod 755 ${D}${bindir}/netpbm-config;; + *) echo "netpbm-package/$d: unknown item" >&2 + exit 1;; + esac + done +} -- cgit 1.2.3-korg