diff mbox series

[LEDE-DEV,v2,1/5] tools/zlib: move zlib build to tools

Message ID 20180419221206.5124-1-hauke@hauke-m.de
State Accepted
Delegated to: Hauke Mehrtens
Headers show
Series [LEDE-DEV,v2,1/5] tools/zlib: move zlib build to tools | expand

Commit Message

Hauke Mehrtens April 19, 2018, 10:12 p.m. UTC
This allows us to link the other tools against our libz and we do not
need the system zlib any more.

Only the static linked library is copied to the staging directory so we
have a statically linked library on all systems and not only on Linux.
This also adds the new dependencies of the packages which are depending
on zlib.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
---

changes since v1:
* add HOST_CFLAGS +=-fPIC

 include/prereq-build.mk                         |  5 ---
 package/libs/zlib/Makefile                      |  2 --
 tools/Makefile                                  | 14 ++++++---
 tools/lzma-old/Makefile                         |  2 ++
 tools/lzma-old/patches/120-add-cflags.patch     | 11 +++++++
 tools/make-ext4fs/Makefile                      |  8 +----
 tools/make-ext4fs/patches/100-add-ldflags.patch | 11 +++++++
 tools/squashfs4/Makefile                        |  2 +-
 tools/zlib/Makefile                             | 41 +++++++++++++++++++++++++
 9 files changed, 76 insertions(+), 20 deletions(-)
 create mode 100644 tools/lzma-old/patches/120-add-cflags.patch
 create mode 100644 tools/make-ext4fs/patches/100-add-ldflags.patch
 create mode 100644 tools/zlib/Makefile

Comments

Koen Vandeputte April 21, 2018, 8:16 p.m. UTC | #1
Tested-by: Koen Vandeputte <koen.vandeputte@ncentric.com>


Tested on imx6, also using the imagebuilder afterwards.
Hauke Mehrtens April 22, 2018, 2:34 p.m. UTC | #2
On 04/20/2018 12:12 AM, Hauke Mehrtens wrote:
> This allows us to link the other tools against our libz and we do not
> need the system zlib any more.
> 
> Only the static linked library is copied to the staging directory so we
> have a statically linked library on all systems and not only on Linux.
> This also adds the new dependencies of the packages which are depending
> on zlib.
> 
> Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
> ---
> 
> changes since v1:
> * add HOST_CFLAGS +=-fPIC
> 
>  include/prereq-build.mk                         |  5 ---
>  package/libs/zlib/Makefile                      |  2 --
>  tools/Makefile                                  | 14 ++++++---
>  tools/lzma-old/Makefile                         |  2 ++
>  tools/lzma-old/patches/120-add-cflags.patch     | 11 +++++++
>  tools/make-ext4fs/Makefile                      |  8 +----
>  tools/make-ext4fs/patches/100-add-ldflags.patch | 11 +++++++
>  tools/squashfs4/Makefile                        |  2 +-
>  tools/zlib/Makefile                             | 41 +++++++++++++++++++++++++
>  9 files changed, 76 insertions(+), 20 deletions(-)
>  create mode 100644 tools/lzma-old/patches/120-add-cflags.patch
>  create mode 100644 tools/make-ext4fs/patches/100-add-ldflags.patch
>  create mode 100644 tools/zlib/Makefile
> 
> diff --git a/include/prereq-build.mk b/include/prereq-build.mk
> index 6917716342..5b9a7e049d 100644
> --- a/include/prereq-build.mk
> +++ b/include/prereq-build.mk
> @@ -76,11 +76,6 @@ else
>    zlib_link_flags := -lz
>  endif
>  
> -$(eval $(call TestHostCommand,zlib, \
> -	Please install a static zlib. (Missing libz.a or zlib.h), \
> -	echo 'int main(int argc, char **argv) { gzdopen(0, "rb"); return 0; }' | \
> -		gcc -include zlib.h -x c -o $(TMP_DIR)/a.out - $(zlib_link_flags)))
> -
>  $(eval $(call TestHostCommand,perl-thread-queue, \
>  	Please install the Perl Thread::Queue module, \
>  	perl -MThread::Queue -e 1))
> diff --git a/package/libs/zlib/Makefile b/package/libs/zlib/Makefile
> index a7c61f7dd0..4a2a0e53b0 100644
> --- a/package/libs/zlib/Makefile
> +++ b/package/libs/zlib/Makefile
> @@ -21,7 +21,6 @@ PKG_CPE_ID:=cpe:/a:gnu:zlib
>  
>  PKG_CONFIG_DEPENDS:= CONFIG_ZLIB_OPTIMIZE_SPEED
>  
> -include $(INCLUDE_DIR)/host-build.mk
>  include $(INCLUDE_DIR)/package.mk
>  include $(INCLUDE_DIR)/cmake.mk
>  
> @@ -95,6 +94,5 @@ define Package/zlib-dev/install
>  	  $(1)/usr/lib/pkgconfig/
>  endef
>  
> -$(eval $(call HostBuild))
>  $(eval $(call BuildPackage,zlib))
>  $(eval $(call BuildPackage,zlib-dev))
> diff --git a/tools/Makefile b/tools/Makefile
> index 50bd552d75..8dfab9892b 100644
> --- a/tools/Makefile
> +++ b/tools/Makefile
> @@ -22,7 +22,7 @@ ifneq ($(CONFIG_SDK)$(CONFIG_PACKAGE_kmod-b43)$(CONFIG_PACKAGE_b43legacy-firmwar
>  endif
>  
>  tools-$(BUILD_TOOLCHAIN) += gmp mpfr mpc libelf expat
> -tools-y += m4 libtool autoconf automake flex bison pkg-config mklibs
> +tools-y += m4 libtool autoconf automake flex bison pkg-config mklibs zlib
>  tools-y += sstrip make-ext4fs e2fsprogs mtd-utils mkimage
>  tools-y += firmware-utils patch-image quilt padjffs2
>  tools-y += mm-macros missing-macros cmake scons bc findutils gengetopt patchelf
> @@ -43,16 +43,16 @@ $(curdir)/bison/compile := $(curdir)/flex/compile
>  $(curdir)/flex/compile := $(curdir)/libtool/compile
>  $(curdir)/libtool/compile := $(curdir)/m4/compile $(curdir)/autoconf/compile $(curdir)/automake/compile $(curdir)/missing-macros/compile
>  $(curdir)/squashfs/compile := $(curdir)/lzma-old/compile
> -$(curdir)/squashfs4/compile := $(curdir)/xz/compile
> +$(curdir)/squashfs4/compile := $(curdir)/xz/compile $(curdir)/zlib/compile
>  $(curdir)/quilt/compile := $(curdir)/autoconf/compile $(curdir)/findutils/compile
>  $(curdir)/autoconf/compile := $(curdir)/m4/compile
>  $(curdir)/automake/compile := $(curdir)/m4/compile $(curdir)/autoconf/compile $(curdir)/pkg-config/compile $(curdir)/xz/compile
>  $(curdir)/gmp/compile := $(curdir)/libtool/compile
>  $(curdir)/mpc/compile := $(curdir)/mpfr/compile $(curdir)/gmp/compile
>  $(curdir)/mpfr/compile := $(curdir)/gmp/compile
> -$(curdir)/mtd-utils/compile := $(curdir)/e2fsprogs/compile
> +$(curdir)/mtd-utils/compile := $(curdir)/e2fsprogs/compile $(curdir)/zlib/compile
>  $(curdir)/mklibs/compile := $(curdir)/libtool/compile
> -$(curdir)/qemu/compile := $(curdir)/e2fsprogs/compile
> +$(curdir)/qemu/compile := $(curdir)/e2fsprogs/compile $(curdir)/zlib/compile
>  $(curdir)/upslug2/compile := $(curdir)/libtool/compile
>  $(curdir)/mm-macros/compile := $(curdir)/libtool/compile
>  $(curdir)/missing-macros/compile := $(curdir)/autoconf/compile
> @@ -69,8 +69,12 @@ $(curdir)/patchelf/compile := $(curdir)/libtool/compile
>  $(curdir)/dosfstools/compile := $(curdir)/autoconf/compile $(curdir)/automake/compile
>  $(curdir)/libressl/compile := $(curdir)/pkg-config/compile
>  $(curdir)/mkimage/compile += $(curdir)/libressl/compile
> -$(curdir)/firmware-utils/compile += $(curdir)/libressl/compile
> +$(curdir)/firmware-utils/compile += $(curdir)/libressl/compile $(curdir)/zlib/compile
>  $(curdir)/cmake/compile += $(curdir)/libressl/compile
> +$(curdir)/zlib/compile := $(curdir)/cmake/compile
> +$(curdir)/wrt350nv2-builder/compile := $(curdir)/zlib/compile
> +$(curdir)/lzma-old/compile := $(curdir)/zlib/compile
> +$(curdir)/make-ext4fs/compile := $(curdir)/zlib/compile
>  
>  ifneq ($(HOST_OS),Linux)
>    tools-y += coreutils
> diff --git a/tools/lzma-old/Makefile b/tools/lzma-old/Makefile
> index 5982eab5db..5204127a80 100644
> --- a/tools/lzma-old/Makefile
> +++ b/tools/lzma-old/Makefile
> @@ -21,7 +21,9 @@ LIB_DIR=$(HOST_BUILD_DIR)/C/7zip/Compress/LZMA_Lib
>  ALONE_DIR=$(HOST_BUILD_DIR)/C/7zip/Compress/LZMA_Alone
>  
>  define Host/Compile
> +	+$(HOST_MAKE_VARS) \
>  	$(MAKE) -C $(LIB_DIR)
> +	+$(HOST_MAKE_VARS) \
>  	$(MAKE) -f makefile.gcc -C $(ALONE_DIR)
>  endef
>  
> diff --git a/tools/lzma-old/patches/120-add-cflags.patch b/tools/lzma-old/patches/120-add-cflags.patch
> new file mode 100644
> index 0000000000..9022e7cd27
> --- /dev/null
> +++ b/tools/lzma-old/patches/120-add-cflags.patch
> @@ -0,0 +1,11 @@
> +--- a/C/7zip/Compress/LZMA_Lib/makefile
> ++++ b/C/7zip/Compress/LZMA_Lib/makefile
> +@@ -2,7 +2,7 @@ PROG = liblzma.a
> + CXX = g++ -O3 -Wall
> + AR = ar
> + RM = rm -f
> +-CFLAGS = -c  -I ../../../
> ++CFLAGS += -c  -I ../../../
> + 
> + OBJS = \
> +   ZLib.o \
> diff --git a/tools/make-ext4fs/Makefile b/tools/make-ext4fs/Makefile
> index f140101c8e..97f9e6369c 100644
> --- a/tools/make-ext4fs/Makefile
> +++ b/tools/make-ext4fs/Makefile
> @@ -17,13 +17,7 @@ PKG_MIRROR_HASH:=d7ccd5e426b1d15331ff000a37dc15161f6eef594453e970fd584fcde5a2507
>  
>  include $(INCLUDE_DIR)/host-build.mk
>  
> -ifeq ($(HOST_OS),Linux)
> - MAKE_STATIC := STATIC=1
> -endif
> -
> -define Host/Compile
> -	$(MAKE) -C $(HOST_BUILD_DIR) make_ext4fs $(MAKE_STATIC)
> -endef
> +HOST_MAKE_FLAGS += STATIC=1
>  
>  define Host/Install
>  	$(INSTALL_BIN) $(HOST_BUILD_DIR)/make_ext4fs $(STAGING_DIR_HOST)/bin/
> diff --git a/tools/make-ext4fs/patches/100-add-ldflags.patch b/tools/make-ext4fs/patches/100-add-ldflags.patch
> new file mode 100644
> index 0000000000..d9ce47bb80
> --- /dev/null
> +++ b/tools/make-ext4fs/patches/100-add-ldflags.patch
> @@ -0,0 +1,11 @@
> +--- a/Makefile
> ++++ b/Makefile
> +@@ -27,7 +27,7 @@ OBJ := \
> + 	$(CC) $(CFLAGS) -c -o $@ $^
> + 
> + make_ext4fs: $(OBJ) libsparse/libsparse.a
> +-	$(CC) -o $@ $^ $(ZLIB)
> ++	$(CC) $(LDFLAGS)-o $@ $^ $(ZLIB)
> + 
> + libsparse/libsparse.a:
> + 	$(MAKE) -C libsparse/ libsparse.a
> diff --git a/tools/squashfs4/Makefile b/tools/squashfs4/Makefile
> index e9e2b7ca9a..409b1b5a23 100644
> --- a/tools/squashfs4/Makefile
> +++ b/tools/squashfs4/Makefile
> @@ -20,8 +20,8 @@ HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/squashfs$(PKG_VERSION)
>  include $(INCLUDE_DIR)/host-build.mk
>  
>  define Host/Compile
> +	+$(HOST_MAKE_VARS) \
>  	$(MAKE) -C $(HOST_BUILD_DIR)/squashfs-tools \
> -		CC="$(HOSTCC)" \
>  		XZ_SUPPORT=1 \
>  		LZMA_XZ_SUPPORT=1 \
>  		XATTR_SUPPORT= \
> diff --git a/tools/zlib/Makefile b/tools/zlib/Makefile
> new file mode 100644
> index 0000000000..279851f758
> --- /dev/null
> +++ b/tools/zlib/Makefile
> @@ -0,0 +1,41 @@
> +#
> +# Copyright (C) 2006-2013 OpenWrt.org
> +#
> +# This is free software, licensed under the GNU General Public License v2.
> +# See /LICENSE for more information.
> +#
> +
> +include $(TOPDIR)/rules.mk
> +
> +PKG_NAME:=zlib
> +PKG_VERSION:=1.2.11
> +PKG_RELEASE:=1
> +
> +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
> +PKG_SOURCE_URL:=@SF/libpng http://www.zlib.net
> +PKG_HASH:=4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e19bf066
> +
> +PKG_LICENSE:=Zlib
> +PKG_LICENSE_FILES:=README
> +PKG_CPE_ID:=cpe:/a:gnu:zlib
> +
> +include $(INCLUDE_DIR)/host-build.mk
> +include $(INCLUDE_DIR)/cmake.mk
> +
> +HOST_CFLAGS +=-fPIC
> +
> +define Host/Install
> +	$(CP) $(HOST_BUILD_DIR)/libz.a $(STAGING_DIR_HOST)/lib/
> +	$(CP) $(HOST_BUILD_DIR)/zconf.h $(STAGING_DIR_HOST)/include/
> +	$(CP) $(HOST_BUILD_DIR)/zlib.h $(STAGING_DIR_HOST)/include/
> +	$(CP) $(HOST_BUILD_DIR)/zlib.pc $(STAGING_DIR_HOST)/lib/pkgconfig/
> +endef
> +
> +define Host/Clean
> +	rm -f $(STAGING_DIR_HOST)/lib/libz.a
> +	rm -f $(STAGING_DIR_HOST)/include/zconf.h
> +	rm -f $(STAGING_DIR_HOST)/include/zlib.h
> +	rm -f $(STAGING_DIR_HOST)/lib/pkgconfig//zlib.pc
> +endef
> +
> +$(eval $(call HostBuild))
> 

Hi,

Could someone please build test these patches under macOSX.

Hauke
diff mbox series

Patch

diff --git a/include/prereq-build.mk b/include/prereq-build.mk
index 6917716342..5b9a7e049d 100644
--- a/include/prereq-build.mk
+++ b/include/prereq-build.mk
@@ -76,11 +76,6 @@  else
   zlib_link_flags := -lz
 endif
 
-$(eval $(call TestHostCommand,zlib, \
-	Please install a static zlib. (Missing libz.a or zlib.h), \
-	echo 'int main(int argc, char **argv) { gzdopen(0, "rb"); return 0; }' | \
-		gcc -include zlib.h -x c -o $(TMP_DIR)/a.out - $(zlib_link_flags)))
-
 $(eval $(call TestHostCommand,perl-thread-queue, \
 	Please install the Perl Thread::Queue module, \
 	perl -MThread::Queue -e 1))
diff --git a/package/libs/zlib/Makefile b/package/libs/zlib/Makefile
index a7c61f7dd0..4a2a0e53b0 100644
--- a/package/libs/zlib/Makefile
+++ b/package/libs/zlib/Makefile
@@ -21,7 +21,6 @@  PKG_CPE_ID:=cpe:/a:gnu:zlib
 
 PKG_CONFIG_DEPENDS:= CONFIG_ZLIB_OPTIMIZE_SPEED
 
-include $(INCLUDE_DIR)/host-build.mk
 include $(INCLUDE_DIR)/package.mk
 include $(INCLUDE_DIR)/cmake.mk
 
@@ -95,6 +94,5 @@  define Package/zlib-dev/install
 	  $(1)/usr/lib/pkgconfig/
 endef
 
-$(eval $(call HostBuild))
 $(eval $(call BuildPackage,zlib))
 $(eval $(call BuildPackage,zlib-dev))
diff --git a/tools/Makefile b/tools/Makefile
index 50bd552d75..8dfab9892b 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -22,7 +22,7 @@  ifneq ($(CONFIG_SDK)$(CONFIG_PACKAGE_kmod-b43)$(CONFIG_PACKAGE_b43legacy-firmwar
 endif
 
 tools-$(BUILD_TOOLCHAIN) += gmp mpfr mpc libelf expat
-tools-y += m4 libtool autoconf automake flex bison pkg-config mklibs
+tools-y += m4 libtool autoconf automake flex bison pkg-config mklibs zlib
 tools-y += sstrip make-ext4fs e2fsprogs mtd-utils mkimage
 tools-y += firmware-utils patch-image quilt padjffs2
 tools-y += mm-macros missing-macros cmake scons bc findutils gengetopt patchelf
@@ -43,16 +43,16 @@  $(curdir)/bison/compile := $(curdir)/flex/compile
 $(curdir)/flex/compile := $(curdir)/libtool/compile
 $(curdir)/libtool/compile := $(curdir)/m4/compile $(curdir)/autoconf/compile $(curdir)/automake/compile $(curdir)/missing-macros/compile
 $(curdir)/squashfs/compile := $(curdir)/lzma-old/compile
-$(curdir)/squashfs4/compile := $(curdir)/xz/compile
+$(curdir)/squashfs4/compile := $(curdir)/xz/compile $(curdir)/zlib/compile
 $(curdir)/quilt/compile := $(curdir)/autoconf/compile $(curdir)/findutils/compile
 $(curdir)/autoconf/compile := $(curdir)/m4/compile
 $(curdir)/automake/compile := $(curdir)/m4/compile $(curdir)/autoconf/compile $(curdir)/pkg-config/compile $(curdir)/xz/compile
 $(curdir)/gmp/compile := $(curdir)/libtool/compile
 $(curdir)/mpc/compile := $(curdir)/mpfr/compile $(curdir)/gmp/compile
 $(curdir)/mpfr/compile := $(curdir)/gmp/compile
-$(curdir)/mtd-utils/compile := $(curdir)/e2fsprogs/compile
+$(curdir)/mtd-utils/compile := $(curdir)/e2fsprogs/compile $(curdir)/zlib/compile
 $(curdir)/mklibs/compile := $(curdir)/libtool/compile
-$(curdir)/qemu/compile := $(curdir)/e2fsprogs/compile
+$(curdir)/qemu/compile := $(curdir)/e2fsprogs/compile $(curdir)/zlib/compile
 $(curdir)/upslug2/compile := $(curdir)/libtool/compile
 $(curdir)/mm-macros/compile := $(curdir)/libtool/compile
 $(curdir)/missing-macros/compile := $(curdir)/autoconf/compile
@@ -69,8 +69,12 @@  $(curdir)/patchelf/compile := $(curdir)/libtool/compile
 $(curdir)/dosfstools/compile := $(curdir)/autoconf/compile $(curdir)/automake/compile
 $(curdir)/libressl/compile := $(curdir)/pkg-config/compile
 $(curdir)/mkimage/compile += $(curdir)/libressl/compile
-$(curdir)/firmware-utils/compile += $(curdir)/libressl/compile
+$(curdir)/firmware-utils/compile += $(curdir)/libressl/compile $(curdir)/zlib/compile
 $(curdir)/cmake/compile += $(curdir)/libressl/compile
+$(curdir)/zlib/compile := $(curdir)/cmake/compile
+$(curdir)/wrt350nv2-builder/compile := $(curdir)/zlib/compile
+$(curdir)/lzma-old/compile := $(curdir)/zlib/compile
+$(curdir)/make-ext4fs/compile := $(curdir)/zlib/compile
 
 ifneq ($(HOST_OS),Linux)
   tools-y += coreutils
diff --git a/tools/lzma-old/Makefile b/tools/lzma-old/Makefile
index 5982eab5db..5204127a80 100644
--- a/tools/lzma-old/Makefile
+++ b/tools/lzma-old/Makefile
@@ -21,7 +21,9 @@  LIB_DIR=$(HOST_BUILD_DIR)/C/7zip/Compress/LZMA_Lib
 ALONE_DIR=$(HOST_BUILD_DIR)/C/7zip/Compress/LZMA_Alone
 
 define Host/Compile
+	+$(HOST_MAKE_VARS) \
 	$(MAKE) -C $(LIB_DIR)
+	+$(HOST_MAKE_VARS) \
 	$(MAKE) -f makefile.gcc -C $(ALONE_DIR)
 endef
 
diff --git a/tools/lzma-old/patches/120-add-cflags.patch b/tools/lzma-old/patches/120-add-cflags.patch
new file mode 100644
index 0000000000..9022e7cd27
--- /dev/null
+++ b/tools/lzma-old/patches/120-add-cflags.patch
@@ -0,0 +1,11 @@ 
+--- a/C/7zip/Compress/LZMA_Lib/makefile
++++ b/C/7zip/Compress/LZMA_Lib/makefile
+@@ -2,7 +2,7 @@ PROG = liblzma.a
+ CXX = g++ -O3 -Wall
+ AR = ar
+ RM = rm -f
+-CFLAGS = -c  -I ../../../
++CFLAGS += -c  -I ../../../
+ 
+ OBJS = \
+   ZLib.o \
diff --git a/tools/make-ext4fs/Makefile b/tools/make-ext4fs/Makefile
index f140101c8e..97f9e6369c 100644
--- a/tools/make-ext4fs/Makefile
+++ b/tools/make-ext4fs/Makefile
@@ -17,13 +17,7 @@  PKG_MIRROR_HASH:=d7ccd5e426b1d15331ff000a37dc15161f6eef594453e970fd584fcde5a2507
 
 include $(INCLUDE_DIR)/host-build.mk
 
-ifeq ($(HOST_OS),Linux)
- MAKE_STATIC := STATIC=1
-endif
-
-define Host/Compile
-	$(MAKE) -C $(HOST_BUILD_DIR) make_ext4fs $(MAKE_STATIC)
-endef
+HOST_MAKE_FLAGS += STATIC=1
 
 define Host/Install
 	$(INSTALL_BIN) $(HOST_BUILD_DIR)/make_ext4fs $(STAGING_DIR_HOST)/bin/
diff --git a/tools/make-ext4fs/patches/100-add-ldflags.patch b/tools/make-ext4fs/patches/100-add-ldflags.patch
new file mode 100644
index 0000000000..d9ce47bb80
--- /dev/null
+++ b/tools/make-ext4fs/patches/100-add-ldflags.patch
@@ -0,0 +1,11 @@ 
+--- a/Makefile
++++ b/Makefile
+@@ -27,7 +27,7 @@ OBJ := \
+ 	$(CC) $(CFLAGS) -c -o $@ $^
+ 
+ make_ext4fs: $(OBJ) libsparse/libsparse.a
+-	$(CC) -o $@ $^ $(ZLIB)
++	$(CC) $(LDFLAGS)-o $@ $^ $(ZLIB)
+ 
+ libsparse/libsparse.a:
+ 	$(MAKE) -C libsparse/ libsparse.a
diff --git a/tools/squashfs4/Makefile b/tools/squashfs4/Makefile
index e9e2b7ca9a..409b1b5a23 100644
--- a/tools/squashfs4/Makefile
+++ b/tools/squashfs4/Makefile
@@ -20,8 +20,8 @@  HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/squashfs$(PKG_VERSION)
 include $(INCLUDE_DIR)/host-build.mk
 
 define Host/Compile
+	+$(HOST_MAKE_VARS) \
 	$(MAKE) -C $(HOST_BUILD_DIR)/squashfs-tools \
-		CC="$(HOSTCC)" \
 		XZ_SUPPORT=1 \
 		LZMA_XZ_SUPPORT=1 \
 		XATTR_SUPPORT= \
diff --git a/tools/zlib/Makefile b/tools/zlib/Makefile
new file mode 100644
index 0000000000..279851f758
--- /dev/null
+++ b/tools/zlib/Makefile
@@ -0,0 +1,41 @@ 
+#
+# Copyright (C) 2006-2013 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=zlib
+PKG_VERSION:=1.2.11
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=@SF/libpng http://www.zlib.net
+PKG_HASH:=4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e19bf066
+
+PKG_LICENSE:=Zlib
+PKG_LICENSE_FILES:=README
+PKG_CPE_ID:=cpe:/a:gnu:zlib
+
+include $(INCLUDE_DIR)/host-build.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+HOST_CFLAGS +=-fPIC
+
+define Host/Install
+	$(CP) $(HOST_BUILD_DIR)/libz.a $(STAGING_DIR_HOST)/lib/
+	$(CP) $(HOST_BUILD_DIR)/zconf.h $(STAGING_DIR_HOST)/include/
+	$(CP) $(HOST_BUILD_DIR)/zlib.h $(STAGING_DIR_HOST)/include/
+	$(CP) $(HOST_BUILD_DIR)/zlib.pc $(STAGING_DIR_HOST)/lib/pkgconfig/
+endef
+
+define Host/Clean
+	rm -f $(STAGING_DIR_HOST)/lib/libz.a
+	rm -f $(STAGING_DIR_HOST)/include/zconf.h
+	rm -f $(STAGING_DIR_HOST)/include/zlib.h
+	rm -f $(STAGING_DIR_HOST)/lib/pkgconfig//zlib.pc
+endef
+
+$(eval $(call HostBuild))