95 lines
2.6 KiB
Markdown
95 lines
2.6 KiB
Markdown
|
# Categories
|
||
|
|
||
|
The LuCI modules are divided into several category directories, namely:
|
||
|
* applications (Single applications or plugins for other modules or applications)
|
||
|
* i18n (Translation files)
|
||
|
* libs (Independent libraries)
|
||
|
* modules (Collections of applications)
|
||
|
* themes (Frontend themes)
|
||
|
|
||
|
Each module goes into a subdirectory of any of this category-directories.
|
||
|
|
||
|
# Module directory
|
||
|
The contents of a module directory are as follows:
|
||
|
|
||
|
## Makefile
|
||
|
This is the module's makefile. If the module just contains Lua sourcecode or resources then the following Makefile should suffice.
|
||
|
|
||
|
include ../../build/config.mk
|
||
|
include ../../build/module.mk
|
||
|
|
||
|
|
||
|
If you have C(++) code in your module your Makefile should at least contain the following things.
|
||
|
|
||
|
include ../../build/config.mk
|
||
|
include ../../build/gccconfig.mk
|
||
|
include ../../build/module.mk
|
||
|
|
||
|
compile:
|
||
|
# Commands to compile and link your C-code
|
||
|
# and to install them under the dist/ hierarchy
|
||
|
|
||
|
clean: luaclean
|
||
|
# Commands to clean your compiled objects
|
||
|
|
||
|
|
||
|
|
||
|
## src
|
||
|
The *src* directory is reserved for C sourcecode.
|
||
|
|
||
|
## luasrc
|
||
|
*luasrc* contains all Lua sourcecode files. These will automatically be stripped or compiled depending on the Make target and are installed in the LuCI installation directory.
|
||
|
|
||
|
## lua
|
||
|
*lua* is equivalent to _luasrc_ but containing Lua files will be installed in the Lua document root.
|
||
|
|
||
|
## htdocs
|
||
|
All files under *htdocs* will be copied to the document root of the target webserver.
|
||
|
|
||
|
## root
|
||
|
All directories and files under *root* will be copied to the installation target as they are.
|
||
|
|
||
|
## dist
|
||
|
*dist* is reserved for the builder to create a working installation tree that will represent the filesystem on the target machine.
|
||
|
*DO NOT* put any files there as they will get deleted.
|
||
|
|
||
|
## ipkg
|
||
|
*ipkg* contains IPKG package control files, like _preinst'', ''posinst'', ''prerm'', ''postrm''. ''conffiles_.
|
||
|
See IPKG documentation for details.
|
||
|
|
||
|
|
||
|
# OpenWRT feed integration
|
||
|
If you want to add your module to the LuCI OpenWRT feed you have to add several sections to the contrib/package/luci/Makefile.
|
||
|
|
||
|
For a Web UI applications this is:
|
||
|
|
||
|
A package description:
|
||
|
|
||
|
define Package/luci-app-YOURMODULE
|
||
|
$(call Package/luci/webtemplate)
|
||
|
DEPENDS+=+some-package +some-other-package
|
||
|
TITLE:=SHORT DESCRIPTION OF YOURMODULE
|
||
|
endef
|
||
|
|
||
|
|
||
|
|
||
|
A package installation target:
|
||
|
|
||
|
define Package/luci-app-YOURMODULE/install
|
||
|
$(call Package/luci/install/template,$(1),applications/YOURMODULE)
|
||
|
endef
|
||
|
|
||
|
|
||
|
A module build instruction:
|
||
|
|
||
|
ifneq ($(CONFIG_PACKAGE_luci-app-YOURMODULE),)
|
||
|
PKG_SELECTED_MODULES+=applications/YOURMODULE
|
||
|
endif
|
||
|
|
||
|
|
||
|
|
||
|
A build package call:
|
||
|
|
||
|
$(eval $(call BuildPackage,luci-app-YOURMODULE))
|
||
|
|