|
@@ -25,32 +25,33 @@ system is based on hand-written Makefiles or shell scripts.
|
|
09: LIBFOO_LICENSE = GPLv3+
|
|
09: LIBFOO_LICENSE = GPLv3+
|
|
10: LIBFOO_LICENSE_FILES = COPYING
|
|
10: LIBFOO_LICENSE_FILES = COPYING
|
|
11: LIBFOO_INSTALL_STAGING = YES
|
|
11: LIBFOO_INSTALL_STAGING = YES
|
|
-12: LIBFOO_DEPENDENCIES = host-libaaa libbbb
|
|
|
|
-13:
|
|
|
|
-14: define LIBFOO_BUILD_CMDS
|
|
|
|
-15: $(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_LD)" -C $(@D) all
|
|
|
|
-16: endef
|
|
|
|
-17:
|
|
|
|
-18: define LIBFOO_INSTALL_STAGING_CMDS
|
|
|
|
-19: $(INSTALL) -D -m 0755 $(@D)/libfoo.a $(STAGING_DIR)/usr/lib/libfoo.a
|
|
|
|
-20: $(INSTALL) -D -m 0644 $(@D)/foo.h $(STAGING_DIR)/usr/include/foo.h
|
|
|
|
-21: $(INSTALL) -D -m 0755 $(@D)/libfoo.so* $(STAGING_DIR)/usr/lib
|
|
|
|
-22: endef
|
|
|
|
-23:
|
|
|
|
-24: define LIBFOO_INSTALL_TARGET_CMDS
|
|
|
|
-25: $(INSTALL) -D -m 0755 $(@D)/libfoo.so* $(TARGET_DIR)/usr/lib
|
|
|
|
-26: $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/foo.d
|
|
|
|
-27: endef
|
|
|
|
-28:
|
|
|
|
-29: define LIBFOO_DEVICES
|
|
|
|
-30: /dev/foo c 666 0 0 42 0 - - -
|
|
|
|
-31: endef
|
|
|
|
-32:
|
|
|
|
-33: define LIBFOO_PERMISSIONS
|
|
|
|
-34: /bin/foo f 4755 0 0 - - - - -
|
|
|
|
-35: endef
|
|
|
|
-36:
|
|
|
|
-37: $(eval $(generic-package))
|
|
|
|
|
|
+12: LIBFOO_CONFIG_FIXUP = libfoo-config
|
|
|
|
+13: LIBFOO_DEPENDENCIES = host-libaaa libbbb
|
|
|
|
+14:
|
|
|
|
+15: define LIBFOO_BUILD_CMDS
|
|
|
|
+16: $(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_LD)" -C $(@D) all
|
|
|
|
+17: endef
|
|
|
|
+18:
|
|
|
|
+19: define LIBFOO_INSTALL_STAGING_CMDS
|
|
|
|
+20: $(INSTALL) -D -m 0755 $(@D)/libfoo.a $(STAGING_DIR)/usr/lib/libfoo.a
|
|
|
|
+21: $(INSTALL) -D -m 0644 $(@D)/foo.h $(STAGING_DIR)/usr/include/foo.h
|
|
|
|
+22: $(INSTALL) -D -m 0755 $(@D)/libfoo.so* $(STAGING_DIR)/usr/lib
|
|
|
|
+23: endef
|
|
|
|
+24:
|
|
|
|
+25: define LIBFOO_INSTALL_TARGET_CMDS
|
|
|
|
+26: $(INSTALL) -D -m 0755 $(@D)/libfoo.so* $(TARGET_DIR)/usr/lib
|
|
|
|
+27: $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/foo.d
|
|
|
|
+28: endef
|
|
|
|
+29:
|
|
|
|
+30: define LIBFOO_DEVICES
|
|
|
|
+31: /dev/foo c 666 0 0 42 0 - - -
|
|
|
|
+32: endef
|
|
|
|
+33:
|
|
|
|
+34: define LIBFOO_PERMISSIONS
|
|
|
|
+35: /bin/foo f 4755 0 0 - - - - -
|
|
|
|
+36: endef
|
|
|
|
+37:
|
|
|
|
+38: $(eval $(generic-package))
|
|
--------------------------------
|
|
--------------------------------
|
|
|
|
|
|
The Makefile begins on line 6 to 10 with metadata information: the
|
|
The Makefile begins on line 6 to 10 with metadata information: the
|
|
@@ -69,7 +70,45 @@ install header files and other development files in the staging space.
|
|
This will ensure that the commands listed in the
|
|
This will ensure that the commands listed in the
|
|
+LIBFOO_INSTALL_STAGING_CMDS+ variable will be executed.
|
|
+LIBFOO_INSTALL_STAGING_CMDS+ variable will be executed.
|
|
|
|
|
|
-On line 12, we specify the list of dependencies this package relies
|
|
|
|
|
|
+On line 12, we specify that there is some fixing to be done to some
|
|
|
|
+of the 'libfoo-config' files that were installed during
|
|
|
|
++LIBFOO_INSTALL_STAGING_CMDS+ phase.
|
|
|
|
+These *-config files are executable shell script files that are
|
|
|
|
+located in '$(STAGING_DIR)/usr/bin' directory and are executed
|
|
|
|
+by other 3rd party packages to find out the location and the linking
|
|
|
|
+flags of this particular package.
|
|
|
|
+
|
|
|
|
+The problem is that all these *-config files by default give wrong,
|
|
|
|
+host system linking flags that are unsuitable for cross-compiling.
|
|
|
|
+
|
|
|
|
+For example: '-I/usr/include' instead of '-I$(STAGING_DIR)/usr/include'
|
|
|
|
+or: '-L/usr/lib' instead of '-L$(STAGING_DIR)/usr/lib'
|
|
|
|
+
|
|
|
|
+So some sed magic is done to these scripts to make them give correct
|
|
|
|
+flags.
|
|
|
|
+The argument to be given to +LIBFOO_CONFIG_FIXUP+ is the file name(s)
|
|
|
|
+of the shell script(s) needing fixing. All these names are relative to
|
|
|
|
+'$(STAGING_DIR)/usr/bin' and if needed multiple names can be given.
|
|
|
|
+
|
|
|
|
+Example 1:
|
|
|
|
+
|
|
|
|
+Package divine installs shell script '$(STAGING_DIR)/usr/bin/divine-config'.
|
|
|
|
+
|
|
|
|
+So it's fixup would be:
|
|
|
|
+
|
|
|
|
+DIVINE_CONFIG = divine-config
|
|
|
|
+
|
|
|
|
+Example 2:
|
|
|
|
+
|
|
|
|
+Package imagemagick installs the following scripts:
|
|
|
|
+'$(STAGING_DIR)/usr/bin/{Magick,Magick++,MagickCore,MagickWand,Wand}-config'
|
|
|
|
+
|
|
|
|
+So it's fixup would be:
|
|
|
|
+
|
|
|
|
+IMAGEMAGICK_CONFIG_FIXUP = Magick-config Magick++-config \
|
|
|
|
+ MagickCore-config MagickWand-config Wand-config
|
|
|
|
+
|
|
|
|
+On line 13, we specify the list of dependencies this package relies
|
|
on. These dependencies are listed in terms of lower-case package names,
|
|
on. These dependencies are listed in terms of lower-case package names,
|
|
which can be packages for the target (without the +host-+
|
|
which can be packages for the target (without the +host-+
|
|
prefix) or packages for the host (with the +host-+) prefix).
|
|
prefix) or packages for the host (with the +host-+) prefix).
|
|
@@ -245,6 +284,11 @@ information is (assuming the package name is +libfoo+) :
|
|
variables are executed to install the package into the target
|
|
variables are executed to install the package into the target
|
|
directory.
|
|
directory.
|
|
|
|
|
|
|
|
+* +LIBFOO_CONFIG_FIXUP+ lists the names of the files in
|
|
|
|
+ '$(STAGING_DIR)/usr/bin' that need some special fixing to make them
|
|
|
|
+ cross-compiling friendly. Multiple file names separated by space can be
|
|
|
|
+ given and all are relative to '$(STAGING_DIR)/usr/bin'.
|
|
|
|
+
|
|
* +LIBFOO_DEVICES+ lists the device files to be created by Buildroot
|
|
* +LIBFOO_DEVICES+ lists the device files to be created by Buildroot
|
|
when using the static device table. The syntax to use is the
|
|
when using the static device table. The syntax to use is the
|
|
makedevs one. You can find some documentation for this syntax in the
|
|
makedevs one. You can find some documentation for this syntax in the
|