#############################################################
#
# bzip2
#
#############################################################
BZIP2_VERSION:=1.0.5
BZIP2_SONAME=1.0.4
BZIP2_SOURCE:=bzip2-$(BZIP2_VERSION).tar.gz
BZIP2_SITE:=http://www.bzip.org/$(BZIP2_VERSION)
BZIP2_INSTALL_STAGING=YES

define BZIP2_FIX_MAKEFILE
	$(SED) "s,ln \$$(,ln -snf \$$(,g" $(@D)/Makefile
	$(SED) "s,ln -s (lib.*),ln -snf \$$1; ln -snf libbz2.so.$(BZIP2_SONAME) \
	    libbz2.so,g" $(@D)/Makefile-libbz2_so
	$(SED) "s:-O2:$(TARGET_CFLAGS):" $(@D)/Makefile
	$(SED) "s:-O2:$(TARGET_CFLAGS):" $(@D)/Makefile-libbz2_so
endef

BZIP2_POST_PATCH_HOOKS += BZIP2_FIX_MAKEFILE

define BZIP2_NOLARGEFILE_FIX_MAKEFILE
	$(SED) "s,^BIGFILES,#BIGFILES,g" $(@D)/Makefile
	$(SED) "s,^BIGFILES,#BIGFILES,g" $(@D)/Makefile-libbz2_so
endef

ifneq ($(BR2_LARGEFILE),y)
BZIP2_POST_PATCH_HOOKS += BZIP2_NOLARGEFILE_FIX_MAKEFILE
endif

define BZIP2_BUILD_CMDS
	$(TARGET_MAKE_ENV) \
	$(MAKE) -C $(@D) -f Makefile-libbz2_so \
	CC="$(TARGET_CC)" RANLIB="$(TARGET_RANLIB)" AR="$(TARGET_AR)"
	$(TARGET_MAKE_ENV) \
	$(MAKE) -C $(@D) \
	CC="$(TARGET_CC)" RANLIB="$(TARGET_RANLIB)" AR="$(TARGET_AR)" \
	libbz2.a bzip2 bzip2recover
endef

define BZIP2_INSTALL_STAGING_CMDS
	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \
	$(MAKE) PREFIX=$(STAGING_DIR)/usr -C $(@D) install
	$(INSTALL) -m 0755 -d $(STAGING_DIR)/usr/lib
	cp $(@D)/libbz2.so.$(BZIP2_SONAME) $(STAGING_DIR)/usr/lib/
	cp $(@D)/libbz2.a $(STAGING_DIR)/usr/lib/
	(cd $(STAGING_DIR)/usr/lib/; \
		ln -snf libbz2.so.$(BZIP2_SONAME) libbz2.so; \
		ln -snf libbz2.so.$(BZIP2_SONAME) libbz2.so.1.0; \
		ln -snf libbz2.so.$(BZIP2_SONAME) libbz2.so.1; \
	)
endef

# make sure busybox doesn't get overwritten by make install
define BZIP2_INSTALL_TARGET_CMDS
	rm -f $(addprefix $(TARGET_DIR)/usr/bin/,bzip2 bunzip2 bzcat)
	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \
	$(MAKE) PREFIX=$(TARGET_DIR)/usr -C $(@D) install
	cp $(@D)/libbz2.so.$(BZIP2_SONAME) $(TARGET_DIR)/usr/lib/
	(cd $(TARGET_DIR)/usr/lib; \
		ln -snf libbz2.so.$(BZIP2_SONAME) libbz2.so.1.0; \
		ln -snf libbz2.so.$(BZIP2_SONAME) libbz2.so.1; \
		ln -snf libbz2.so.$(BZIP2_SONAME) libbz2.so; \
	)
	(cd $(TARGET_DIR)/usr/bin; \
		ln -snf bzip2 bunzip2; \
		ln -snf bzip2 bzcat; \
		ln -snf bzdiff bzcmp; \
		ln -snf bzmore bzless; \
		ln -snf bzgrep bzegrep; \
		ln -snf bzgrep bzfgrep; \
	)
endef

define BZIP2_CLEAN_CMDS
	rm -f $(addprefix $(TARGET_DIR),/lib/libbz2.* \
					/usr/lib/libbz2.* \
					/usr/include/bzlib.h)
	rm -f $(addprefix $(STAGING_DIR),/lib/libbz2.* \
					/usr/lib/libbz2.* \
					/usr/include/bzlib.h)
	-$(MAKE) -C $(@D) clean
endef

define HOST_BZIP2_FIX_MAKEFILE
	$(SED) "s,ln \$$(,ln -snf \$$(,g" $(@D)/Makefile
	$(SED) "s,ln -s (lib.*),ln -snf \$$1; ln -snf libbz2.so.$(BZIP2_SONAME) \
	    libbz2.so,g" $(@D)/Makefile-libbz2_so
	$(SED) "s:-O2:$(HOST_CFLAGS):" $(@D)/Makefile
	$(SED) "s:-O2:$(HOST_CFLAGS):" $(@D)/Makefile-libbz2_so
endef

HOST_BZIP2_POST_PATCH_HOOKS += HOST_BZIP2_FIX_MAKEFILE

define HOST_BZIP2_BUILD_CMDS
	$(HOST_MAKE_ENV) $(MAKE) -C $(@D) -f Makefile-libbz2_so
	$(HOST_MAKE_ENV) $(MAKE) -C $(@D) libbz2.a bzip2 bzip2recover
endef

define HOST_BZIP2_INSTALL_CMDS
	$(HOST_MAKE_ENV) \
	$(MAKE) PREFIX=$(HOST_DIR)/usr -C $(@D) install
endef

$(eval $(call GENTARGETS))
$(eval $(call GENTARGETS,host))
