fix multi-packages builds, cleanup
authorNicolas Thill <nico@openwrt.org>
Fri, 7 Sep 2007 19:37:59 +0000 (19:37 +0000)
committerNicolas Thill <nico@openwrt.org>
Fri, 7 Sep 2007 19:37:59 +0000 (19:37 +0000)
SVN-Revision: 8677

net/mini_httpd/Makefile

index a93425e3898b38ace9cac6b8a99d6e23bb3b8aba..6bb44e500df7a14c906a021783aa3c39de98559a 100644 (file)
@@ -12,161 +12,178 @@ PKG_NAME:=mini-httpd
 PKG_VERSION:=1.19
 PKG_RELEASE:=1
 
-PKG_BUILD_DIR:=$(BUILD_DIR)/mini_httpd-$(PKG_VERSION)
 PKG_SOURCE:=mini_httpd-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.acme.com/software/mini_httpd/
 PKG_MD5SUM:=792a529dfe974355aad8ba6c80e54e7a
-PKG_CAT:=zcat
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/mini_httpd-$(PKG_VERSION)
 
 include $(INCLUDE_DIR)/package.mk
 
-define Package/mini-httpd
+define Package/mini-httpd/Default
   SECTION:=net
   CATEGORY:=Network
   TITLE:=A small web server
-  DESCRIPTION:=mini_httpd is a small HTTP server. Its performance is not great, but for \\\
-    low or medium traffic sites it's quite adequate. It implements all the \\\
-    basic features of an HTTP server, including: \\\
-    \\\
-      * GET, HEAD, and POST methods.\\\
-      * CGI.\\\
-      * Basic authentication.\\\
-      * Security against ".." filename snooping.\\\
-      * The common MIME types.\\\
-      * Trailing-slash redirection.\\\
-      * index.html, index.htm, index.cgi\\\
-      * Directory listings.\\\
-      * Multihoming / virtual hosting.\\\
-      * Standard logging.\\\
-      * Custom error pages.\\\
-    \\\
-    It can also be configured to do IPv6.
   URL:=http://www.acme.com/software/mini_httpd/
 endef
 
-define Package/mini-httpd/conffiles
+define Package/mini-httpd/Default/conffiles
 /etc/mini_httpd.conf
 /etc/default/mini_httpd
 endef
 
-define Package/mini-httpd-htpasswd
-  $(call Package/mini-httpd)
-  TITLE:=Utility to generate HTTP access files
-  DESCRIPTION+=This package generates .htaccess/.htpasswd files to use HTTP access authentication
+define Package/mini-httpd/Default/description
+ mini_httpd is a small HTTP server. Its performance is not great, but for 
+ low or medium traffic sites it's quite adequate. It implements all the 
+ basic features of an HTTP server, including: 
+ - GET, HEAD, and POST methods
+ - CGI
+ - Basic authentication
+ - Security against ".." filename snooping
+ - The common MIME types
+ - Trailing-slash redirection
+ - index.html, index.htm, index.cgi
+ - Directory listings
+ - Multihoming / virtual hosting
+ - Standard logging
+ - Custom error pages
+ It can also be configured to do IPv6.
+endef
+
+define Package/mini-httpd
+$(call Package/mini-httpd/Default)
+endef
+
+define Package/mini-httpd/conffiles
+$(call Package/mini-httpd/Default/conffiles)
+endef
+
+define Package/mini-httpd/description
+$(call Package/mini-httpd/Default/description)
 endef
 
 define Package/mini-httpd-matrixssl
-  $(call Package/mini-httpd)
-  DEPENDS:=+libmatrixssl
-  TITLE:=A small web server, built with SSL support using MatrixSSL
-  DESCRIPTION+=This package adds SSL/HTTPS. (MatrixSSL)
+$(call Package/mini-httpd/Default)
+  DEPENDS:= +libmatrixssl
+  TITLE+= (built with MatrixSSL)
 endef
 
 define Package/mini-httpd-matrixssl/conffiles
-/etc/mini_httpd.conf
+$(call Package/mini-httpd/Default/conffiles)
 /etc/mini_httpd.pem
-/etc/default/mini_httpd
+endef
+
+define Package/mini-httpd-matrixssl/description
+$(call Package/mini-httpd/Default/description)
+ This package is built with SSL/HTTPS using MatrixSSL.
 endef
 
 define Package/mini-httpd-openssl
-  $(call Package/mini-httpd)
-  DEPENDS:=+libopenssl
-  TITLE:=A small web server, built with SSL support using OpenSSL
-  DESCRIPTION+=This package adds SSL/HTTPS. (OpenSSL)
+$(call Package/mini-httpd/Default)
+  DEPENDS:= +libopenssl
+  TITLE+= (built with OpenSSL)
 endef
 
 define Package/mini-httpd-openssl/conffiles
-/etc/mini_httpd.conf
+$(call Package/mini-httpd/Default/conffiles)
 /etc/mini_httpd.pem
-/etc/default/mini_httpd
 endef
 
-ifneq ($(SDK),)
-  CONFIG_PACKAGE_mini-httpd:=m
-  CONFIG_PACKAGE_mini-httpd-matrixssl:=m
-  CONFIG_PACKAGE_mini-httpd-openssl:=m
-endif
+define Package/mini-httpd-openssl/description
+$(call Package/mini-httpd/Default/description)
+ This package is built with SSL/HTTPS using OpenSSL.
+endef
 
-define Build/Configure
-       $(CP) ./files/matrixssl_helper.{c,h} $(PKG_BUILD_DIR)/
+define Package/mini-httpd-htpasswd
+  $(call Package/mini-httpd/Default)
+  TITLE:=Utility to generate HTTP access files
 endef
 
-define Build/Compile   
-       # with MatrixSSL
-  ifneq ($(CONFIG_PACKAGE_mini-httpd-matrixssl),)
-       $(MAKE) -C $(PKG_BUILD_DIR) \
-               $(TARGET_CONFIGURE_OPTS) \
-               OFLAGS="$(TARGET_CFLAGS)" \
-               SSL_DEFS="-DUSE_SSL -DHAVE_MATRIXSSL" \
-               SSL_INC="-I$(STAGING_DIR)/usr/include" \
-               SSL_LIBS="-L$(STAGING_DIR)/usr/lib -lmatrixssl" \
-               SSL_OBJS="matrixssl_helper.o" \
-               all
-       (cd $(PKG_BUILD_DIR); mv mini_httpd mini_httpd-matrixssl; )
-       $(MAKE) -C $(PKG_BUILD_DIR) clean
-  endif
-       # with OpenSSL
-  ifneq ($(CONFIG_PACKAGE_mini-httpd-openssl),)
-       $(MAKE) -C $(PKG_BUILD_DIR) \
-               $(TARGET_CONFIGURE_OPTS) \
-               OFLAGS="$(TARGET_CFLAGS)" \
-               SSL_DEFS="-DUSE_SSL -DHAVE_OPENSSL" \
-               SSL_INC="-I$(STAGING_DIR)/usr/include" \
-               SSL_LIBS="-L$(STAGING_DIR)/usr/lib -lssl -lcrypto" \
-               all
-       (cd $(PKG_BUILD_DIR); mv mini_httpd mini_httpd-openssl; )
-       $(MAKE) -C $(PKG_BUILD_DIR) clean
-  endif
-       # without SSL
-  ifneq ($(CONFIG_PACKAGE_mini-httpd),)
+define Package/mini-httpd-htpasswd/description
+$(call Package/mini-httpd/Default/description)
+ This package generates .htaccess/.htpasswd files to use HTTP access authentication.
+endef
+
+
+define Build/Template
+
+$(STAMP_BUILT)-$(2): $(STAMP_PREPARED)
+       -$(MAKE) -C $(PKG_BUILD_DIR) clean
        $(MAKE) -C $(PKG_BUILD_DIR) \
                $(TARGET_CONFIGURE_OPTS) \
                OFLAGS="$(TARGET_CFLAGS)" \
+               $(3) \
                all
-  endif
+       ( cd $(PKG_BUILD_DIR); mv -f mini_httpd mini_httpd-$(2) )
+       touch $$@
+
+$(STAMP_BUILT): $(STAMP_BUILT)-$(2)
+
+define Package/$(1)/install
+       $(INSTALL_DIR) $$(1)/etc
+ifeq ($(2),without-ssl)
+       $(INSTALL_DATA) ./files/mini_httpd.conf $$(1)/etc/mini_httpd.conf
+else
+       $(INSTALL_DATA) ./files/mini_httpd-ssl.conf $$(1)/etc/mini_httpd.conf
+       $(INSTALL_CONF) ./files/mini_httpd.pem $$(1)/etc/mini_httpd.pem
+endif
+       $(INSTALL_DIR) $$(1)/etc/default
+       $(INSTALL_DATA) ./files/mini_httpd.default $$(1)/etc/default/mini_httpd
+       $(INSTALL_DIR) $$(1)/etc/init.d
+       $(INSTALL_BIN) ./files/mini_httpd.init $$(1)/etc/init.d/mini_httpd
+       $(INSTALL_DIR) $$(1)/usr/sbin
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/mini_httpd-$(2) $$(1)/usr/sbin/mini_httpd
 endef
 
-define Package/mini-httpd/install
-       $(INSTALL_DIR) $(1)/etc
-       $(INSTALL_DATA) ./files/mini_httpd.conf $(1)/etc/mini_httpd.conf
-       $(INSTALL_DIR) $(1)/etc/default
-       $(INSTALL_DATA) ./files/mini_httpd.default $(1)/etc/default/mini_httpd
-       $(INSTALL_DIR) $(1)/etc/init.d
-       $(INSTALL_BIN) ./files/mini_httpd.init $(1)/etc/init.d/mini_httpd
-       $(INSTALL_DIR) $(1)/usr/sbin
-       $(INSTALL_BIN) $(PKG_BUILD_DIR)/mini_httpd $(1)/usr/sbin/mini_httpd
 endef
 
-define Package/mini-httpd-htpasswd/install
-       $(INSTALL_DIR) $(1)/usr/sbin
-       $(INSTALL_BIN) $(PKG_BUILD_DIR)/htpasswd $(1)/usr/sbin/
+
+define Build/Prepare
+$(call Build/Prepare/Default)
+       $(CP) ./files/matrixssl_helper.{c,h} $(PKG_BUILD_DIR)/
 endef
 
-define Package/mini-httpd-matrixssl/install
-       $(INSTALL_DIR) $(1)/etc
-       $(INSTALL_DATA) ./files/mini_httpd-ssl.conf $(1)/etc/mini_httpd.conf
-       $(INSTALL_CONF) ./files/mini_httpd.pem $(1)/etc/mini_httpd.pem
-       $(INSTALL_DIR) $(1)/etc/default
-       $(INSTALL_DATA) ./files/mini_httpd.default $(1)/etc/default/mini_httpd
-       $(INSTALL_DIR) $(1)/etc/init.d
-       $(INSTALL_BIN) ./files/mini_httpd.init $(1)/etc/init.d/mini_httpd
-       $(INSTALL_DIR) $(1)/usr/sbin
-       $(INSTALL_BIN) $(PKG_BUILD_DIR)/mini_httpd-matrixssl $(1)/usr/sbin/mini_httpd
+define Build/Configure
+endef
+
+define Build/Compile
+endef
+
+# always build without SSL because we might need htpassd
+define Build/without-ssl
+  $(call Build/Template,minit-httpd,without-ssl,)
 endef
+$(eval $(Build/without-ssl))
+
+ifneq ($(SDK)$(CONFIG_PACKAGE_mini-httpd-matrixssl),)
+  define Build/with-matrixssl
+    $(call Build/Template,mini-httpd-matrixssl,with-matrixssl, \
+               SSL_DEFS="-DUSE_SSL -DHAVE_MATRIXSSL" \
+               SSL_INC="$(TARGET_CPPFLAGS)" \
+               SSL_LIBS="$(TARGET_LDFLAGS) -lmatrixssl" \
+               SSL_OBJS="matrixssl_helper.o" \
+    )
+  endef
+endif
+$(eval $(Build/with-matrixssl))
+
+ifneq ($(SDK)$(CONFIG_PACKAGE_mini-httpd-openssl),)
+  define Build/with-openssl
+    $(call Build/Template,minit-httpd-openssl,with-openssl, \
+               SSL_DEFS="-DUSE_SSL -DHAVE_OPENSSL" \
+               SSL_INC="$(TARGET_CPPFLAGS)" \
+               SSL_LIBS="$(TARGET_LDFLAGS) -lcrypto -lssl" \
+    )
+  endef
+endif
+$(eval $(Build/with-openssl))
 
-define Package/mini-httpd-openssl/install
-       $(INSTALL_DIR) $(1)/etc
-       $(INSTALL_DATA) ./files/mini_httpd-ssl.conf $(1)/etc/mini_httpd.conf
-       $(INSTALL_CONF) ./files/mini_httpd.pem $(1)/etc/mini_httpd.pem
-       $(INSTALL_DIR) $(1)/etc/default
-       $(INSTALL_DATA) ./files/mini_httpd.default $(1)/etc/default/mini_httpd
-       $(INSTALL_DIR) $(1)/etc/init.d
-       $(INSTALL_BIN) ./files/mini_httpd.init $(1)/etc/init.d/mini_httpd
+define Package/mini-httpd-htpasswd/install
        $(INSTALL_DIR) $(1)/usr/sbin
-       $(INSTALL_BIN) $(PKG_BUILD_DIR)/mini_httpd-openssl $(1)/usr/sbin/mini_httpd
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/htpasswd $(1)/usr/sbin/
 endef
 
 $(eval $(call BuildPackage,mini-httpd))
-$(eval $(call BuildPackage,mini-httpd-htpasswd))
 $(eval $(call BuildPackage,mini-httpd-matrixssl))
 $(eval $(call BuildPackage,mini-httpd-openssl))
+$(eval $(call BuildPackage,mini-httpd-htpasswd))