From bf37dc9c2e14e1c7e5c14de4d745abd191119854 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Thu, 8 Sep 2005 00:19:37 +0000 Subject: [PATCH] grab some fixes from Gentoo to enable shared library support, add a jpeg-dirclean target, and cleanup the build in general --- package/jpeg/jpeg-build.patch | 99 +++++++++++++++++++++++++++++++++ package/jpeg/jpeg-libtool.patch | 66 ++++++++++++++++++++++ package/jpeg/jpeg.mk | 22 ++++---- 3 files changed, 175 insertions(+), 12 deletions(-) create mode 100644 package/jpeg/jpeg-build.patch create mode 100644 package/jpeg/jpeg-libtool.patch diff --git a/package/jpeg/jpeg-build.patch b/package/jpeg/jpeg-build.patch new file mode 100644 index 0000000000..9f3c5c2df8 --- /dev/null +++ b/package/jpeg/jpeg-build.patch @@ -0,0 +1,99 @@ +- Respect options from configure (bindir/libdir/etc...) +- Grab AR from the env instead of hardcoding to 'ar' +- Fix install to respect $(DESTDIR) +- Also install jpegint.h #64254 + +--- jpeg/makefile.cfg ++++ jpeg/makefile.cfg +@@ -11,13 +11,13 @@ + # Where to install the programs and man pages. + prefix = @prefix@ + exec_prefix = @exec_prefix@ +-bindir = $(exec_prefix)/bin +-libdir = $(exec_prefix)/lib +-includedir = $(prefix)/include ++bindir = @bindir@ ++libdir = @libdir@ ++includedir = @includedir@ + binprefix = + manprefix = + manext = 1 +-mandir = $(prefix)/man/man$(manext) ++mandir = @mandir@/man$(manext) + + # The name of your C compiler: + CC= @CC@ +@@ -60,7 +60,8 @@ + # directory creation command + MKDIR= mkdir + # library (.a) file creation command +-AR= ar rc ++AR = @AR@ ++ARFLAGS = rc + # second step in .a creation (use "touch" if not needed) + AR2= @RANLIB@ + # installation program +@@ -163,7 +164,7 @@ + # without libtool: + libjpeg.a: @A2K_DEPS@ $(LIBOBJECTS) + $(RM) libjpeg.a +- $(AR) libjpeg.a $(LIBOBJECTS) ++ $(AR) $(ARFLAGS) libjpeg.a $(LIBOBJECTS) + $(AR2) libjpeg.a + + # with libtool: +@@ -191,25 +191,29 @@ + # Installation rules: + + install: cjpeg djpeg jpegtran rdjpgcom wrjpgcom @FORCE_INSTALL_LIB@ +- $(INSTALL_PROGRAM) cjpeg $(bindir)/$(binprefix)cjpeg +- $(INSTALL_PROGRAM) djpeg $(bindir)/$(binprefix)djpeg +- $(INSTALL_PROGRAM) jpegtran $(bindir)/$(binprefix)jpegtran +- $(INSTALL_PROGRAM) rdjpgcom $(bindir)/$(binprefix)rdjpgcom +- $(INSTALL_PROGRAM) wrjpgcom $(bindir)/$(binprefix)wrjpgcom +- $(INSTALL_DATA) $(srcdir)/cjpeg.1 $(mandir)/$(manprefix)cjpeg.$(manext) +- $(INSTALL_DATA) $(srcdir)/djpeg.1 $(mandir)/$(manprefix)djpeg.$(manext) +- $(INSTALL_DATA) $(srcdir)/jpegtran.1 $(mandir)/$(manprefix)jpegtran.$(manext) +- $(INSTALL_DATA) $(srcdir)/rdjpgcom.1 $(mandir)/$(manprefix)rdjpgcom.$(manext) +- $(INSTALL_DATA) $(srcdir)/wrjpgcom.1 $(mandir)/$(manprefix)wrjpgcom.$(manext) ++ mkdir -p $(DESTDIR)$(bindir) $(DESTDIR)$(mandir) ++ $(INSTALL_PROGRAM) cjpeg $(DESTDIR)$(bindir)/$(binprefix)cjpeg ++ $(INSTALL_PROGRAM) djpeg $(DESTDIR)$(bindir)/$(binprefix)djpeg ++ $(INSTALL_PROGRAM) jpegtran $(DESTDIR)$(bindir)/$(binprefix)jpegtran ++ $(INSTALL_PROGRAM) rdjpgcom $(DESTDIR)$(bindir)/$(binprefix)rdjpgcom ++ $(INSTALL_PROGRAM) wrjpgcom $(DESTDIR)$(bindir)/$(binprefix)wrjpgcom ++ $(INSTALL_DATA) $(srcdir)/cjpeg.1 $(DESTDIR)$(mandir)/$(manprefix)cjpeg.$(manext) ++ $(INSTALL_DATA) $(srcdir)/djpeg.1 $(DESTDIR)$(mandir)/$(manprefix)djpeg.$(manext) ++ $(INSTALL_DATA) $(srcdir)/jpegtran.1 $(DESTDIR)$(mandir)/$(manprefix)jpegtran.$(manext) ++ $(INSTALL_DATA) $(srcdir)/rdjpgcom.1 $(DESTDIR)$(mandir)/$(manprefix)rdjpgcom.$(manext) ++ $(INSTALL_DATA) $(srcdir)/wrjpgcom.1 $(DESTDIR)$(mandir)/$(manprefix)wrjpgcom.$(manext) + + install-lib: libjpeg.$(A) install-headers +- $(INSTALL_LIB) libjpeg.$(A) $(libdir)/$(binprefix)libjpeg.$(A) ++ mkdir -p $(DESTDIR)$(libdir) ++ $(INSTALL_LIB) libjpeg.$(A) $(DESTDIR)$(libdir)/$(binprefix)libjpeg.$(A) + + install-headers: jconfig.h +- $(INSTALL_DATA) jconfig.h $(includedir)/jconfig.h +- $(INSTALL_DATA) $(srcdir)/jpeglib.h $(includedir)/jpeglib.h +- $(INSTALL_DATA) $(srcdir)/jmorecfg.h $(includedir)/jmorecfg.h +- $(INSTALL_DATA) $(srcdir)/jerror.h $(includedir)/jerror.h ++ mkdir -p $(DESTDIR)$(includedir) ++ $(INSTALL_DATA) jconfig.h $(DESTDIR)$(includedir)/jconfig.h ++ $(INSTALL_DATA) $(srcdir)/jpegint.h $(DESTDIR)$(includedir)/jpegint.h ++ $(INSTALL_DATA) $(srcdir)/jpeglib.h $(DESTDIR)$(includedir)/jpeglib.h ++ $(INSTALL_DATA) $(srcdir)/jmorecfg.h $(DESTDIR)$(includedir)/jmorecfg.h ++ $(INSTALL_DATA) $(srcdir)/jerror.h $(DESTDIR)$(includedir)/jerror.h + + clean: + $(RM) *.o *.lo libjpeg.a libjpeg.la +--- jpeg/configure ++++ jpeg/configure +@@ -1777,6 +1777,7 @@ + s%@CPP@%$CPP%g + s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g + s%@INSTALL_DATA@%$INSTALL_DATA%g ++s%@AR@%${AR-ar}%g + s%@RANLIB@%$RANLIB%g + s%@LIBTOOL@%$LIBTOOL%g + s%@O@%$O%g diff --git a/package/jpeg/jpeg-libtool.patch b/package/jpeg/jpeg-libtool.patch new file mode 100644 index 0000000000..3c4b573e39 --- /dev/null +++ b/package/jpeg/jpeg-libtool.patch @@ -0,0 +1,66 @@ +--- jpeg/configure ++++ jpeg/configure +@@ -1559,7 +1559,7 @@ + if test "x$LTSTATIC" = xno; then + disable_static="--disable-static" + fi +- $srcdir/ltconfig $disable_shared $disable_static $srcdir/ltmain.sh ++ $srcdir/ltconfig $disable_shared $disable_static $srcdir/ltmain.sh $CHOST + fi + + # Select memory manager depending on user input. +--- jpeg/ltconfig ++++ jpeg/ltconfig +@@ -299,6 +299,7 @@ + # Transform linux* to *-*-linux-gnu*, to support old configure scripts. + case "$host_os" in + linux-gnu*) ;; ++linux-uclibc*) ;; + linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` + esac + +@@ -553,7 +553,9 @@ + # On HP-UX, both CC and GCC only warn that PIC is supported... then they + # create non-PIC objects. So, if there were any warnings, we assume that + # PIC is not supported. ++ # Make sure we only test warnings on HP-UX (pic_flag == +Z) or we can ++ # easily break Linux builds http://bugs.gentoo.org/70947 +- if test -s conftest.err; then ++ if test -s conftest.err -a "$pic_flag" = "+Z"; then + echo "$ac_t"no 1>&6 + can_build_shared=no + pic_flag= +@@ -1210,7 +1210,6 @@ + else + # Only the GNU ld.so supports shared libraries on MkLinux. + case "$host_cpu" in +- powerpc*) dynamic_linker=no ;; + *) dynamic_linker='Linux ld.so' ;; + esac + fi +@@ -1259,6 +1260,25 @@ + fi + ;; + ++linux-uclibc*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major $libname.so' ++ soname_spec='${libname}${release}.so.$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ deplibs_check_method=pass_all ++ # This implies no fast_install, which is unacceptable. ++ # Some rework will be needed to allow for fast_install ++ # before this can be enabled. ++ # Note: copied from linux-gnu, and may not be appropriate. ++ hardcode_into_libs=yes ++ # Assume using the uClibc dynamic linker. ++ dynamic_linker="uClibc ld.so" ++ ;; ++ + netbsd* | openbsd*) + version_type=sunos + library_names_spec='${libname}${release}.so.$versuffix' diff --git a/package/jpeg/jpeg.mk b/package/jpeg/jpeg.mk index b8d8524890..ce40a77190 100644 --- a/package/jpeg/jpeg.mk +++ b/package/jpeg/jpeg.mk @@ -32,6 +32,7 @@ jpeg-source: $(DL_DIR)/$(JPEG_SOURCE) $(JPEG_DIR)/.unpacked: $(DL_DIR)/$(JPEG_SOURCE) $(JPEG_CAT) $(DL_DIR)/$(JPEG_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - + toolchain/patch-kernel.sh $(JPEG_DIR) package/jpeg/ jpeg\*.patch $(CONFIG_UPDATE) $(JPEG_DIR) touch $(JPEG_DIR)/.unpacked @@ -42,26 +43,19 @@ $(JPEG_DIR)/.configured: $(JPEG_DIR)/.unpacked --target=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \ --build=$(GNU_HOST_NAME) \ - --prefix=/usr \ - --exec-prefix=/usr \ - --bindir=/usr/bin \ - --sbindir=/usr/sbin \ - --libexecdir=/usr/lib \ - --sysconfdir=/etc \ - --datadir=/usr/share \ - --localstatedir=/var \ - --mandir=/usr/man \ - --infodir=/usr/info \ + --prefix=$(STAGING_DIR) \ --enable-shared \ + --enable-static \ ); - touch $(JPEG_DIR)/.configured + touch $(JPEG_DIR)/.configured $(JPEG_DIR)/.libs/libjpeg.a: $(JPEG_DIR)/.configured $(MAKE) -C $(JPEG_DIR) all touch -c $(JPEG_DIR)/.libs/libjpeg.a $(STAGING_DIR)/lib/libjpeg.a: $(JPEG_DIR)/.libs/libjpeg.a - $(MAKE) -C $(JPEG_DIR) prefix=$(STAGING_DIR) exec_prefix=$(STAGING_DIR) install-headers install-lib + $(MAKE) -C $(JPEG_DIR) install-headers install-lib + rm $(STAGING_DIR)/lib/libjpeg.la touch -c $(STAGING_DIR)/lib/libjpeg.a $(TARGET_DIR)/usr/lib/libjpeg.a: $(STAGING_DIR)/lib/libjpeg.a @@ -73,6 +67,10 @@ jpeg: uclibc $(TARGET_DIR)/usr/lib/libjpeg.a jpeg-clean: -$(MAKE) -C $(JPEG_DIR) clean + +jpeg-dirclean: + rm -rf $(JPEG_DIR) + ############################################################# # # Toplevel Makefile options -- 2.30.2