diff options
-rw-r--r-- | docs/manual/adding-packages-handwritten.txt | 167 | ||||
-rw-r--r-- | docs/manual/adding-packages.txt | 2 |
2 files changed, 0 insertions, 169 deletions
diff --git a/docs/manual/adding-packages-handwritten.txt b/docs/manual/adding-packages-handwritten.txt deleted file mode 100644 index beb25f687..000000000 --- a/docs/manual/adding-packages-handwritten.txt +++ /dev/null @@ -1,167 +0,0 @@ -[[handwritten-tutorial]] - -Manual Makefile ---------------- - -*NOTE: new manual makefiles should not be created, and existing manual -makefiles should be converted either to the generic, autotools or -cmake infrastructure. This section is only kept to document the -existing manual makefiles and to help understand how they work.* - ------------------------- -01: ############################################################# -02: # -03: # libfoo -04: # -05: ############################################################# -06: LIBFOO_VERSION = 1.0 -07: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz -08: LIBFOO_SITE = http://www.foosoftware.org/downloads -09: LIBFOO_DIR = $(BUILD_DIR)/foo-$(FOO_VERSION) -10: LIBFOO_BINARY = foo -11: LIBFOO_TARGET_BINARY = usr/bin/foo -12: -13: $(DL_DIR)/$(LIBFOO_SOURCE): -14: $(call DOWNLOAD,$(LIBFOO_SITE)/$(LIBFOO_SOURCE)) -15: -16: $(LIBFOO_DIR)/.source: $(DL_DIR)/$(LIBFOO_SOURCE) -17: $(ZCAT) $(DL_DIR)/$(LIBFOO_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - -18: touch $@ -19: -20: $(LIBFOO_DIR)/.configured: $(LIBFOO_DIR)/.source -21: (cd $(LIBFOO_DIR); rm -rf config.cache; \ -22: $(TARGET_CONFIGURE_OPTS) \ -23: $(TARGET_CONFIGURE_ARGS) \ -24: ./configure \ -25: --target=$(GNU_TARGET_NAME) \ -26: --host=$(GNU_TARGET_NAME) \ -27: --build=$(GNU_HOST_NAME) \ -28: --prefix=/usr \ -29: --sysconfdir=/etc \ -30: ) -31: touch $@ -32: -33: $(LIBFOO_DIR)/$(LIBFOO_BINARY): $(LIBFOO_DIR)/.configured -34: $(MAKE) CC=$(TARGET_CC) -C $(LIBFOO_DIR) -35: -36: $(TARGET_DIR)/$(LIBFOO_TARGET_BINARY): $(LIBFOO_DIR)/$(LIBFOO_BINARY) -37: $(MAKE) DESTDIR=$(TARGET_DIR) -C $(LIBFOO_DIR) install-strip -38: rm -Rf $(TARGET_DIR)/usr/man -39: -40: libfoo: uclibc ncurses $(TARGET_DIR)/$(LIBFOO_TARGET_BINARY) -41: -42: libfoo-source: $(DL_DIR)/$(LIBFOO_SOURCE) -43: -44: libfoo-clean: -45: $(MAKE) prefix=$(TARGET_DIR)/usr -C $(LIBFOO_DIR) uninstall -46: -$(MAKE) -C $(LIBFOO_DIR) clean -47: -48: libfoo-dirclean: -49: rm -rf $(LIBFOO_DIR) -50: -51: ############################################################# -52: # -53: # Toplevel Makefile options -54: # -55: ############################################################# -56: ifeq ($(BR2_PACKAGE_LIBFOO),y) -57: TARGETS += libfoo -58: endif ------------------------- - -First of all, this Makefile example works for a package which -comprises a single binary executable. For other software, such as -libraries or more complex stuff with multiple binaries, it must be -qqadapted. For examples look at the other +*.mk+ files in the -+package+ directory. - -At lines 6-11, a couple of useful variables are defined: - -* +LIBFOO_VERSION+: The version of 'libfoo' that should be downloaded. - -* +LIBFOO_SOURCE+: The name of the tarball of 'libfoo' on the download - website or FTP site. As you can see +LIBFOO_VERSION+ is used. - -* +LIBFOO_SITE+: The HTTP or FTP site from which 'libfoo' archive is - downloaded. It must include the complete path to the directory where - +LIBFOO_SOURCE+ can be found. - -* +LIBFOO_DIR+: The directory into which the software will be - configured and compiled. Basically, it's a subdirectory of - +BUILD_DIR+ which is created upon decompression of the tarball. - -* +LIBFOO_BINARY+: Software binary name. As said previously, this is - an example for a package with a single binary. - -* +LIBFOO_TARGET_BINARY+: The full path of the binary inside the - target filesystem. Lines 13-14 define a target that downloads the - tarball from the remote site to the download directory (+DL_DIR+). - -Lines 16-18 define a target and associated rules that uncompress the -downloaded tarball. As you can see, this target depends on the tarball -file so that the previous target (lines 13-14) is called before -executing the rules of the current target. Uncompressing is followed -by 'touching' a hidden file to mark the software as having been -uncompressed. This trick is used everywhere in a Buildroot Makefile to -split steps (download, uncompress, configure, compile, install) while -still having correct dependencies. - -Lines 20-31 define a target and associated rules that configure the -software. It depends on the previous target (the hidden +.source+ -file) so that we are sure the software has been uncompressed. In order -to configure the package, it basically runs the well-known -+./configure+ script. As we may be doing cross-compilation, +target+, -+host+ and +build+ arguments are given. The prefix is also set to -+/usr+, not because the software will be installed in +/usr+ on your -host system, but because the software will be installed in + /usr+ on -the target filesystem. Finally it creates a +.configured+ file to mark -the software as configured. - -Lines 33-34 define a target and a rule that compile the software. This -target will create the binary file in the compilation directory and -depends on the software being already configured (hence the reference -to the +.configured+ file). It basically runs +make+ inside the -source directory. - -Lines 36-38 define a target and associated rules that install the -software inside the target filesystem. They depend on the binary file -in the source directory to make sure the software has been -compiled. They use the +install-strip+ target of the software -+Makefile+ by passing a +DESTDIR+ argument so that the +Makefile+ -doesn't try to install the software in the host +/usr+ but rather in -the target +/usr+. After the installation, the +/usr/man + directory -inside the target filesystem is removed to save space. - -Line 40 defines the main target of the software — the one that -will eventually be used by the top level +Makefile+ to download, -compile, and then install this package. This target should first of -all depend on all needed dependencies of the software (in our example, -'uclibc' and 'ncurses') and also depend on the final binary. This last -dependency will call all previous dependencies in the correct order. - -Line 42 defines a simple target that only downloads the code -source. This is not used during normal operation of Buildroot, but is -needed if you intend to download all required sources at once for -later offline build. Note that if you add a new package, providing a -+libfoo-source+ target is 'mandatory' to support users that wish to do -offline-builds. Furthermore, it eases checking if all package-sources -are downloadable. - -Lines 44-46 define a simple target to clean the software build by -calling the Makefile with the appropriate options. The +-clean+ -target should run +make clean+ on $(BUILD_DIR)/package-version and -MUST uninstall all files of the package from $(STAGING_DIR) and from -$(TARGET_DIR). - -Lines 48-49 define a simple target to completely remove the directory -in which the software was uncompressed, configured and compiled. The -+-dirclean+ target MUST completely rm $(BUILD_DIR)/ package-version. - -Lines 51-58 add the target +libfoo+ to the list of targets to be -compiled by Buildroot, by first checking if the configuration option -for this package has been enabled using the configuration tool. If so, -it then "subscribes" this package to be compiled by adding -the package to the TARGETS global variable. The name added to the -TARGETS global variable is the name of this package's target, as -defined on line 40, which is used by Buildroot to download, compile, -and then install this package. diff --git a/docs/manual/adding-packages.txt b/docs/manual/adding-packages.txt index cb75f2daa..f672ec625 100644 --- a/docs/manual/adding-packages.txt +++ b/docs/manual/adding-packages.txt @@ -15,8 +15,6 @@ include::adding-packages-autotools.txt[] include::adding-packages-cmake.txt[] -include::adding-packages-handwritten.txt[] - include::adding-packages-gettext.txt[] include::adding-packages-conclusion.txt[] |