#############################################################
#
# linenoise
#
#############################################################
LINENOISE_VERSION = g8c9b481
LINENOISE_SITE = http://github.com/antirez/linenoise/tarball/master
LINENOISE_LICENSE = BSD-2c
LINENOISE_INSTALL_STAGING = YES

define LINENOISE_BUILD_CMDS
	cd $(@D); $(TARGET_CC) $(TARGET_CFLAGS) -c linenoise.c
	cd $(@D); $(TARGET_AR) rcu liblinenoise.a linenoise.o
	cd $(@D); $(TARGET_CC) $(TARGET_LDFLAGS) -o linenoise_example example.c -L. -llinenoise
endef

define LINENOISE_INSTALL_STAGING_CMDS
	$(INSTALL) -m 644 -D $(@D)/linenoise.h          $(STAGING_DIR)/usr/include/linenoise.h
	$(INSTALL) -m 644 -D $(@D)/liblinenoise.a       $(STAGING_DIR)/usr/lib/liblinenoise.a
	$(INSTALL) -m 755 -D $(@D)/linenoise_example    $(STAGING_DIR)/usr/bin/linenoise_example
endef

define LINENOISE_UNINSTALL_STAGING_CMDS
	rm -f   $(STAGING_DIR)/usr/include/linenoise.h
	rm -f   $(STAGING_DIR)/usr/lib/liblinenoise.a
	rm -f   $(STAGING_DIR)/usr/bin/linenoise_example
endef

define LINENOISE_INSTALL_TARGET_CMDS
	$(INSTALL) -m 644 -D $(@D)/linenoise.h          $(TARGET_DIR)/usr/include/linenoise.h
	$(INSTALL) -m 644 -D $(@D)/liblinenoise.a       $(TARGET_DIR)/usr/lib/liblinenoise.a
	$(INSTALL) -m 755 -D $(@D)/linenoise_example    $(TARGET_DIR)/usr/bin/linenoise_example
endef

define LINENOISE_UNINSTALL_TARGET_CMDS
	rm -f   $(TARGET_DIR)/usr/include/linenoise.h
	rm -f   $(TARGET_DIR)/usr/lib/liblinenoise.a
	rm -f   $(TARGET_DIR)/usr/bin/linenoise_example
endef

define LINENOISE_CLEAN_CMDS
	rm -f $(@D)/*.o $(@D)/*.a $(@D)/linenoise_example
endef

$(eval $(generic-package))
