packages/lcd4linux: split into 2 -custom & -full, various fixes:
[packages.git] / utils / lcd4linux / Makefile
index d3d7ff3..9d8295b 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2010 OpenWrt.org
+# Copyright (C) 2007-2011 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=lcd4linux
 PKG_REV:=1159
 PKG_VERSION:=r$(PKG_REV)
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=https://ssl.bulix.org/svn/lcd4linux/trunk/
@@ -18,69 +18,6 @@ PKG_SOURCE_SUBDIR:=lcd4linux-$(PKG_VERSION)
 PKG_SOURCE_VERSION:=$(PKG_REV)
 PKG_SOURCE_PROTO:=svn
 
-PKG_FIXUP:=libtool
-PKG_INSTALL:=1
-
-PKG_BUILD_DEPENDS:= \
-       libdbus \
-       libgd \
-       libmysqlclient \
-       libncurses \
-       libnmeap \
-       libsqlite3 \
-       libvncserver \
-       ppp \
-       serdisplib \
-       st2205tool \
-#      libftdi \
-#      libmpdclient \
-#      libX11 \
-#      python \
-
-include $(INCLUDE_DIR)/package.mk
-include $(INCLUDE_DIR)/nls.mk
-
-define Package/lcd4linux
-  SECTION:=utils
-  CATEGORY:=Utilities
-  DEPENDS:= \
-       +LCD4LINUX_NEEDS_libdbus:libdbus \
-       +LCD4LINUX_NEEDS_libgd:libgd \
-       $(if $(ICONV_FULL),+LCD4LINUX_NEEDS_libiconv:libiconv-full) \
-       +LCD4LINUX_NEEDS_libmysqlclient:libmysqlclient \
-       +LCD4LINUX_NEEDS_libncurses:libncurses \
-       +LCD4LINUX_NEEDS_libnmeap:libnmeap \
-       +LCD4LINUX_NEEDS_libsqlite3:libsqlite3 \
-       +LCD4LINUX_NEEDS_libusb:libusb \
-       +LCD4LINUX_NEEDS_libvncserver:libvncserver \
-       +LCD4LINUX_NEEDS_serdisplib:serdisplib \
-       +LCD4LINUX_NEEDS_st2205tool:st2205tool \
-#      +LCD4LINUX_NEEDS_libftdi:libftdi \
-#      +LCD4LINUX_NEEDS_libmpdclient:libmpdclient \
-#      +LCD4LINUX_NEEDS_libX11:libX11 \
-#      +LCD4LINUX_NEEDS_python:python
-  TITLE:=LCD display utility
-  URL:=http://lcd4linux.bulix.org/
-  MENU:=1
-  MAINTAINER:=Jonathan McCrohan <jmccrohan@gmail.com>
-endef
-
-define Package/lcd4linux/config
-       menu "Configuration"
-               depends on PACKAGE_lcd4linux
-               source "$(SOURCE)/Config.in"
-       endmenu
-endef
-
-define Package/lcd4linux/description
- LCD4Linux is a small program that grabs information from the kernel and 
- some subsystems and displays it on an external liquid crystal display.
-endef
-
-define Package/lcd4linux/conffiles
-/etc/lcd4linux.conf
-endef
-
 LCD4LINUX_DRIVERS:= \
        BeckmannEgle \
        BWCT \
@@ -92,14 +29,14 @@ LCD4LINUX_DRIVERS:= \
        G15 \
        GLCD2USB \
        IRLCD \
-       HD44780 \
-       HD44780-I2C \
+       $(if $(CONFIG_BROKEN),HD44780) \
+       $(if $(CONFIG_BROKEN),HD44780-I2C) \
        LCD2USB \
-       LCDLinux \
+       $(if $(CONFIG_BROKEN),LCDLinux) \
        LCDTerm \
        LEDMatrix \
        LPH7508 \
-       LUIse \
+       $(if $(CONFIG_BROKEN),LUIse) \
        LW_ABP \
        M50530 \
        MatrixOrbital \
@@ -115,19 +52,19 @@ LCD4LINUX_DRIVERS:= \
        picoLCDGraphic \
        PNG \
        PPM \
-       RouterBoard \
+       $(if $(CONFIG_TARGET_rb532),RouterBoard) \
        serdisplib \
        ShuttleVFD \
        SimpleLCD \
        st2205 \
        T6963 \
        Trefon \
-       ULA200 \
        USBHUB \
        USBLCD \
        VNC \
        WincorNixdorf \
-       X11 \
+#      ULA200 \
+#      X11 \
 
 LCD4LINUX_PLUGINS:= \
        apm \
@@ -160,73 +97,214 @@ LCD4LINUX_PLUGINS:= \
        pop3 \
        ppp \
        proc_stat \
-       python \
        qnaplog \
        seti \
        statfs \
        uname \
        uptime \
        w1retap \
-       wireless \
+       $(if $(CONFIG_BROKEN),wireless) \
        xmms \
+#      python \
 
-LCD4LINUX_CONFIGURE_DRIVERS:= \
-       $(foreach c, $(LCD4LINUX_DRIVERS), \
-           $(if $(CONFIG_LCD4LINUX_DRV_$(c)),$(c),) \
-       )
+PKG_FIXUP:=libtool
+PKG_INSTALL:=1
 
-LCD4LINUX_CONFIGURE_PLUGINS:= \
-       $(foreach c, $(LCD4LINUX_PLUGINS), \
-           $(if $(CONFIG_LCD4LINUX_PLUGIN_$(c)),$(c),) \
-       )
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
 
-ifeq ($(CONFIG_LCD4LINUX_HAS_AT_LEAST_ONE_DRIVER),)
-  LCD4LINUX_CONFIGURE_DRIVERS:=Sample
-endif
+PKG_BUILD_DEPENDS:= \
+       libdbus \
+       libgd \
+       libmpdclient \
+       libmysqlclient \
+       libncurses \
+       libnmeap \
+       libsqlite3 \
+       libvncserver \
+       ppp \
+       serdisplib \
+       st2205tool \
+#      libftdi \
+#      libX11 \
+#      python \
+
+PKG_CONFIG_DEPENDS:= \
+       $(patsubst %,CONFIG_LCD4LINUX_CUSTOM_DRIVER_%,$(LCD4LINUX_DRIVERS)) \
+       $(patsubst %,CONFIG_LCD4LINUX_CUSTOM_PLUGIN_%,$(LCD4LINUX_PLUGINS)) \
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/nls.mk
+
+define Package/lcd4linux/Default
+  SECTION:=utils
+  CATEGORY:=Utilities
+  MAINTAINER:=Jonathan McCrohan <jmccrohan@gmail.com>
+  TITLE:=LCD display utility
+  URL:=http://lcd4linux.bulix.org/
+endef
+
+define Package/lcd4linux/Default/description
+ LCD4Linux is a small program that grabs information from the kernel and 
+ some subsystems and displays it on an external liquid crystal display.
+endef
+
+
+define Package/lcd4linux-custom
+$(call Package/lcd4linux/Default)
+  DEPENDS:= \
+       +LCD4LINUX_CUSTOM_NEEDS_libdbus:libdbus \
+       +LCD4LINUX_CUSTOM_NEEDS_libgd:libgd \
+       $(if $(ICONV_FULL),+LCD4LINUX_CUSTOM_NEEDS_libiconv:libiconv-full) \
+       +LCD4LINUX_CUSTOM_NEEDS_libmpdclient:libmpdclient \
+       +LCD4LINUX_CUSTOM_NEEDS_libmysqlclient:libmysqlclient \
+       +LCD4LINUX_CUSTOM_NEEDS_libncurses:libncurses \
+       +LCD4LINUX_CUSTOM_NEEDS_libsqlite3:libsqlite3 \
+       +LCD4LINUX_CUSTOM_NEEDS_libusb:libusb \
+       +LCD4LINUX_CUSTOM_NEEDS_libvncserver:libvncserver \
+       +LCD4LINUX_CUSTOM_NEEDS_serdisplib:serdisplib \
+       +LCD4LINUX_CUSTOM_NEEDS_st2205tool:st2205tool \
+#      +LCD4LINUX_CUSTOM_NEEDS_libftdi:libftdi \
+#      +LCD4LINUX_CUSTOM_NEEDS_libX11:libX11 \
+#      +LCD4LINUX_CUSTOM_NEEDS_python:python
+  MENU:=1
+  PROVIDES:=lcd4linux
+  VARIANT=custom
+endef
+
+define Package/lcd4linux-custom/config
+       source "$(SOURCE)/Config.in"
+endef
+
+define Package/lcd4linux-custom/description
+$(call Package/lcd4linux/Default/description)
+ .
+ This package contains a customized version of LCD4Linux.
+endef
+
+
+define Package/lcd4linux-full
+$(call Package/lcd4linux/Default)
+  DEPENDS:= @DEVEL \
+       +libdbus \
+       +libgd \
+       $(if $(ICONV_FULL),+libiconv-full) \
+       +libmpdclient \
+       +libmysqlclient \
+       +libncurses \
+       +libsqlite3 \
+       +libusb \
+       +libvncserver \
+       +serdisplib \
+       +st2205tool \
+#      +libftdi \
+#      +libX11 \
+#      +python
+  PROVIDES:=lcd4linux
+  VARIANT=full
+endef
+
+define Package/lcd4linux-full/description
+$(call Package/lcd4linux/Default/description)
+ .
+ This package contains a version of LCD4Linux built with all supported
+ drivers and plugins.
+endef
 
-ifeq ($(CONFIG_LCD4LINUX_HAS_AT_LEAST_ONE_PLUGIN),)
-  LCD4LINUX_CONFIGURE_PLUGINS:=sample
-endif
 
 CONFIGURE_ARGS+= \
        --disable-rpath \
-       --with-drivers="$(strip $(LCD4LINUX_CONFIGURE_DRIVERS))" \
-       --with-plugins="$(strip $(LCD4LINUX_CONFIGURE_PLUGINS))" \
 
 EXTRA_LDFLAGS+= -Wl,-rpath-link,$(STAGING_DIR)/usr/lib
 
-ifneq ($(CONFIG_LCD4LINUX_NEEDS_libiconv),)
-  CONFIGURE_ARGS+= \
-       --with-libiconv-prefix="$(ICONV_PREFIX)"
-else
+ifeq ($(BUILD_VARIANT),custom)
+
+  LCD4LINUX_CUSTOM_DRIVERS:= $(strip $(foreach c, $(LCD4LINUX_DRIVERS), \
+    $(if $(CONFIG_LCD4LINUX_CUSTOM_DRIVER_$(c)),$(c),) \
+ ))
+  ifeq ($(LCD4LINUX_CUSTOM_DRIVER),)
+    LCD4LINUX_CUSTOM_DRIVERS:=Sample
+  endif
+
+  LCD4LINUX_CUSTOM_PLUGINS:= $(strip $(foreach c, $(LCD4LINUX_PLUGINS), \
+    $(if $(CONFIG_LCD4LINUX_CUSTOM_PLUGIN_$(c)),$(c)) \
+  ))
+  ifeq ($(LCD4LINUX_CUSTOM_PLUGINS),)
+    LCD4LINUX_CUSTOM_PLUGINS:=sample
+  endif
+
   CONFIGURE_ARGS+= \
-       --without-libiconv-prefix
+       --with-drivers="$(LCD4LINUX_CUSTOM_DRIVERS)" \
+       --with-plugins="$(LCD4LINUX_CUSTOM_PLUGINS)" \
+
+  ifneq ($(CONFIG_LCD4LINUX_CUSTOM_NEEDS_libiconv),)
+    CONFIGURE_ARGS+= --with-libiconv-prefix="$(ICONV_PREFIX)"
+  else
+    CONFIGURE_ARGS+= --without-libiconv-prefix
+  endif
+
+  ifneq ($(CONFIG_LCD4LINUX_CUSTOM_NEEDS_libmysqlclient),)
+    EXTRA_LDFLAGS+= -L$(STAGING_DIR)/usr/lib/mysql
+  endif
+
+#  ifneq ($(CONFIG_LCD4LINUX_CUSTOM_NEEDS_python),)
+#    CONFIGURE_ARGS+= --with-python
+#  else
+    CONFIGURE_ARGS+= --without-python
+#  endif
+
+#  ifneq ($(CONFIG_LCD4LINUX_CUSTOM_NEEDS_libX11),)
+#    CONFIGURE_ARGS+= --with-x
+#  else
+    CONFIGURE_ARGS+= --without-x
+#  endif
+
 endif
 
-ifneq ($(CONFIG_LCD4LINUX_NEEDS_libmysqlclient),)
+ifeq ($(BUILD_VARIANT),full)
+
+  LCD4LINUX_FULL_DRIVERS:= $(strip $(foreach c, $(LCD4LINUX_DRIVERS), \
+    $(c) \
+  ))
+
+  LCD4LINUX_FULL_PLUGINS:= $(strip $(foreach c, $(LCD4LINUX_PLUGINS), \
+    $(c) \
+  ))
+
+  CONFIGURE_ARGS+= \
+       --with-drivers="$(LCD4LINUX_FULL_DRIVERS)" \
+       --with-plugins="$(LCD4LINUX_FULL_PLUGINS)" \
+       --with-libiconv-prefix="$(ICONV_PREFIX)" \
+       --without-python \
+       --without-x \
+
   EXTRA_LDFLAGS+= -L$(STAGING_DIR)/usr/lib/mysql
-endif
 
-ifneq ($(CONFIG_LCD4LINUX_NEEDS_python),)
-  CONFIGURE_ARGS+= --with-python
-else
-  CONFIGURE_ARGS+= --without-python
 endif
 
-ifneq ($(CONFIG_LCD4LINUX_NEEDS_libX11),)
-  CONFIGURE_ARGS+= --with-x
-else
-  CONFIGURE_ARGS+= --without-x
-endif
 
+define Package/lcd4linux/conffiles
+/etc/lcd4linux.conf
+endef
 
 define Package/lcd4linux/install
        $(INSTALL_DIR) $(1)/usr/bin
        $(CP) $(PKG_INSTALL_DIR)/usr/bin/lcd4linux $(1)/usr/bin/
        $(INSTALL_DIR) $(1)/etc
-       $(INSTALL_CONF) ./files/lcd4linux.conf $(1)/etc/
+       $(INSTALL_CONF) $(PKG_BUILD_DIR)/lcd4linux.conf.sample $(1)/etc/lcd4linux.conf
        $(INSTALL_DIR) $(1)/etc/init.d
        $(INSTALL_BIN) ./files/lcd4linux.init $(1)/etc/init.d/lcd4linux
+       $(SED) "s|^\(Display 'GLCD2USB'\)|#\1|g" \
+           -e "s|^\(Layout 'TestLayer'\)|#\1|g" \
+           -e "s|^#\(Display 'Image'\)|\1|g" \
+           -e "s|^#\(Layout 'Default'\)|\1|g" \
+            $(1)/etc/lcd4linux.conf
 endef
 
-$(eval $(call BuildPackage,lcd4linux))
+Package/lcd4linux-custom/conffiles = $(Package/lcd4linux/conffiles)
+Package/lcd4linux-custom/install = $(Package/lcd4linux/install)
+
+Package/lcd4linux-full/conffiles = $(Package/lcd4linux/conffiles)
+Package/lcd4linux-full/install = $(Package/lcd4linux/install)
+
+$(eval $(call BuildPackage,lcd4linux-custom))
+$(eval $(call BuildPackage,lcd4linux-full))