目录

Openwrt SDK是一个可再定位的,预编译好的OpenWrt工具链,适用于在不从头开始编译整个系统的前提下,针对一个特定平台交叉编译单个用户空间包。

使用SDK的原因:

为了保证二进制和特性兼容性,针对特定的发行版编译自定义软件

编译更新版本的指定包文件

使用自定义的补丁或者不同特性来重新编译已经存在的包

-----官方文档如下

This is the OpenWrt SDK. It contains a stripped-down version of the buildroot. You can use it to test/develop packages without having to compile your own toolchain or any of the libraries included with OpenWrt.

To use it, just put your buildroot-compatible package directory in the subdir 'package/' and run 'make' from this directory.

------ OPENWRT集成非官方包之Makefile规则

include $(TOPDIR)/rules.mk

PKG_NAME:=[软件包名字 和文件夹名称一样]

PKG_VERSION:=[软件包版本 自己写个]

PKG_RELEASE:=1

PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)

include $(INCLUDE_DIR)/package.mk

define Package/$(PKG_NAME)

    SECTION:=utils

    CATEGORY:=[软件包在menuconfig里的位置 比如Base system]

    DEPENDS:=[依赖包 两个之间通过空格分隔 前面加+为默认显示 选中该软件包自动选中依赖包 不加+为默认不显示 选中依赖包才显示]

    TITLE:=[标题]

    PKGARCH:=[平台 比如ar71xx 全部写all]

    MAINTAINER:=[作者]

endef

define Package/$(PKG_NAME)/description

    [软件包简介]

endef

非本目录下的源码文件, 拷贝到此相应目录下.

如../../xucommon/xucommon.c, 则将 xucommon.c 拷贝到此目录下的源码的 ../../

define Build/Prepare

mkdir -p $(PKG_BUILD_DIR)

$(CP) ./src/* $(PKG_BUILD_DIR)/

endef

define Build/Configure

endef

define Build/Compile

endef

define Package/$(PKG_NAME)/conffiles

[升级时保留文件/备份时备份文件 一个文件一行]

endef

define Package/$(PKG_NAME)/install

    $(CP) ./files/* $(1)/

endef

define Package/$(PKG_NAME)/preinst

[安装前执行的脚本 记得加上#!/bin/sh 没有就空着]

#!/bin/sh

uci -q batch <<-EOF >/dev/null


delete ucitrack.@aria2[-1]

add ucitrack aria2

set ucitrack.@aria2[-1].init=aria2

commit ucitrack

EOF

exit 0

endef

define Package/$(PKG_NAME)/postinst

[安装后执行的脚本 记得加上#!/bin/sh 没有就空着]

#!/bin/sh


rm -f /tmp/luci-indexcache

exit 0

endef

Package/$(PKG_NAME)/prerm

[删除前执行的脚本 记得加上#!/bin/sh 没有就空着]

endef

Package/$(PKG_NAME)/postrm

[删除后执行的脚本 记得加上#!/bin/sh 没有就空着]

endef

$(eval $(call BuildPackage,$(PKG_NAME)))


include $(TOPDIR)/rules.mk



PKG_NAME:=httpclient

PKG_RELEASE:=1

PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)



include $(INCLUDE_DIR)/package.mk



define Package/httpclient

  SECTION:=utils

  CATEGORY:=Utilities

  TITLE:=HTTP Client Demo

endef



define Package/httpclient/description

 HTTP Client Demo

endef



define Build/Prepare

 mkdir -p $(PKG_BUILD_DIR)

 $(CP) ./src/* $(PKG_BUILD_DIR)/

endef



define Package/httpclient/install

 $(INSTALL_DIR) $(1)/usr/sbin

 $(INSTALL_BIN) $(PKG_BUILD_DIR)/httptest $(1)/usr/sbin/ 

 $(INSTALL_DIR) $(1)/etc/config

 $(INSTALL_CONF) ./files/test.lua $(1)/etc/config/test.lua

endef



$(eval $(call BuildPackage,$(PKG_NAME)))







include $(TOPDIR)/rules.mk

PKG_NAME:=uhttpd

PKG_RELEASE:=31



PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)

PKG_CONFIG_DEPENDS := 

 CONFIG_PACKAGE_uhttpd-mod-lua 

 CONFIG_PACKAGE_uhttpd-mod-tls 

 CONFIG_PACKAGE_uhttpd-mod-tls_cyassl 

 CONFIG_PACKAGE_uhttpd-mod-tls_openssl



include $(INCLUDE_DIR)/package.mk



define Package/uhttpd/default

  SECTION:=net

  CATEGORY:=Network

  SUBMENU:=Web Servers/Proxies

  TITLE:=uHTTPd - tiny, single threaded HTTP server

  MAINTAINER:=Jo-Philipp Wich

endef



define Package/uhttpd

  $(Package/uhttpd/default)

  MENU:=1

endef



define Package/uhttpd/description

 uHTTPd is a tiny single threaded HTTP server with TLS, CGI and Lua

 support. It is intended as a drop-in replacement for the Busybox

 HTTP daemon.

endef





define Package/uhttpd-mod-tls

  $(Package/uhttpd/default)

  TITLE+= (TLS plugin)

  DEPENDS:=uhttpd +PACKAGE_uhttpd-mod-tls_cyassl:libcyassl +PACKAGE_uhttpd-mod-tls_openssl:libopenssl

endef



define Package/uhttpd-mod-tls/description

 The TLS plugin adds HTTPS support to uHTTPd.

endef



define Package/uhttpd-mod-tls/config

        choice

                depends on PACKAGE_uhttpd-mod-tls

                prompt "TLS Provider"

                default PACKAGE_uhttpd-mod-tls_cyassl



                config PACKAGE_uhttpd-mod-tls_cyassl

                        bool "CyaSSL"



                config PACKAGE_uhttpd-mod-tls_openssl

                        bool "OpenSSL"

        endchoice

endef



UHTTPD_TLS:=

TLS_CFLAGS:=

TLS_LDFLAGS:=



ifneq ($(CONFIG_PACKAGE_uhttpd-mod-tls_cyassl),)

  UHTTPD_TLS:=cyassl

  TLS_CFLAGS:=-I$(STAGING_DIR)/usr/include/cyassl -DTLS_IS_CYASSL

  TLS_LDFLAGS:=-lcyassl -lm

endif



ifneq ($(CONFIG_PACKAGE_uhttpd-mod-tls_openssl),)

  UHTTPD_TLS:=openssl

  TLS_CFLAGS:=-DTLS_IS_OPENSSL

  TLS_LDFLAGS:=-lssl

endif



define Package/uhttpd-mod-lua

  $(Package/uhttpd/default)

  TITLE+= (Lua plugin)

  DEPENDS:=uhttpd +liblua

endef



define Package/uhttpd-mod-lua/description

 The Lua plugin adds a CGI-like Lua runtime interface to uHTTPd.

endef





TARGET_CFLAGS += $(TLS_CFLAGS)

TARGET_LDFLAGS += -Wl,-rpath-link=$(STAGING_DIR)/usr/lib

MAKE_VARS += 

 FPIC="$(FPIC)" 

 LUA_SUPPORT="$(if $(CONFIG_PACKAGE_uhttpd-mod-lua),1)" 

 TLS_SUPPORT="$(if $(CONFIG_PACKAGE_uhttpd-mod-tls),1)" 

 UHTTPD_TLS="$(UHTTPD_TLS)" 

 TLS_CFLAGS="$(TLS_CFLAGS)" 

 TLS_LDFLAGS="$(TLS_LDFLAGS)"



define Build/Prepare

 mkdir -p $(PKG_BUILD_DIR)

 $(CP) ./src/* $(PKG_BUILD_DIR)/

endef



define Package/uhttpd/conffiles

/etc/config/uhttpd

/etc/uhttpd.crt

/etc/uhttpd.key

endef



define Package/uhttpd/install

 $(INSTALL_DIR) $(1)/etc/init.d

 $(INSTALL_BIN) ./files/uhttpd.init $(1)/etc/init.d/uhttpd

 $(INSTALL_DIR) $(1)/etc/config

 $(INSTALL_CONF) ./files/uhttpd.config $(1)/etc/config/uhttpd

 $(INSTALL_DIR) $(1)/usr/sbin

 $(INSTALL_BIN) $(PKG_BUILD_DIR)/uhttpd $(1)/usr/sbin/uhttpd

endef



define Package/uhttpd-mod-tls/install

 $(INSTALL_DIR) $(1)/usr/lib

 $(INSTALL_BIN) $(PKG_BUILD_DIR)/uhttpd_tls.so $(1)/usr/lib/

endef



define Package/uhttpd-mod-lua/install

 $(INSTALL_DIR) $(1)/usr/lib

 $(INSTALL_BIN) $(PKG_BUILD_DIR)/uhttpd_lua.so $(1)/usr/lib/

endef





$(eval $(call BuildPackage,uhttpd))

$(eval $(call BuildPackage,uhttpd-mod-tls))

$(eval $(call BuildPackage,uhttpd-mod-lua))
最后编辑:2016年02月24日 ©著作权归作者所有

发表评论