tfa-layerscape: fix fiptool host build
authorPetr Štetiar <ynezz@true.cz>
Wed, 24 Jul 2019 14:00:39 +0000 (14:00 +0000)
committerPetr Štetiar <ynezz@true.cz>
Sat, 27 Jul 2019 05:13:59 +0000 (07:13 +0200)
fiptool is a host tool, used in a firmware generation pipeline, but it's
not treated as such, leading to the build breakage on the hosts which
don't have {Open,Libre}SSL dev package installed:

 In file included from fiptool.h:16:0,
                 from fiptool.c:19:
 fiptool_platform.h:18:27: fatal error: openssl/sha.h:
 No such file or directory
  #  include <openssl/sha.h>

So this patch promotes fiptool into the host tool with proper host
include and library paths under STAGING_DIR.

Ref: https://github.com/openwrt/openwrt/pull/2267
Signed-off-by: Petr Štetiar <ynezz@true.cz>
(cherry picked from commit b8249cef9fedb1e2e3ed4f1b16382c6815e08df1)

package/boot/tfa-layerscape/Makefile
package/boot/tfa-layerscape/patches/001-fiptool-hostbuild-fixes.patch [new file with mode: 0644]

index 4f1c709..8d62fbc 100644 (file)
@@ -16,8 +16,9 @@ PKG_SOURCE_URL:=https://source.codeaurora.org/external/qoriq/qoriq-components/at
 PKG_SOURCE_VERSION:=7e34aebe658c7c3439d2d68b0ce6b9776e8e6996
 PKG_MIRROR_HASH:=9cf0bc32fa589a0ee7c48c87898679e645341f29da1253d0ba5d2e82c6ea074d
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_BUILD_DEPENDS:=uboot-layerscape
+PKG_BUILD_DEPENDS:=uboot-layerscape tfa-layerscape/host
 
+include $(INCLUDE_DIR)/host-build.mk
 include $(INCLUDE_DIR)/package.mk
 
 define Package/tfa-layerscape/Config
@@ -46,7 +47,20 @@ define Build/Compile
        $(MAKE) -C $(PKG_BUILD_DIR) CROSS_COMPILE=$(TARGET_CROSS) \
                fip pbl PLAT=$(PLAT) BOOT_MODE=$(BOOT_MODE) \
                RCW=$(STAGING_DIR_IMAGE)/$(BUILD_VARIANT)-rcw.bin \
-               BL33=$(STAGING_DIR_IMAGE)/$(BUILD_VARIANT)-uboot.bin
+               BL33=$(STAGING_DIR_IMAGE)/$(BUILD_VARIANT)-uboot.bin \
+               FIPTOOL=$(STAGING_DIR_HOST)/bin/fiptool
+endef
+
+HOST_CFLAGS += -Wall -Werror -pedantic -std=c99
+define Host/Compile
+       $(MAKE) -C \
+               $(HOST_BUILD_DIR)/tools/fiptool \
+               CFLAGS="$(HOST_CFLAGS)" \
+               LDFLAGS="$(HOST_LDFLAGS)"
+endef
+
+define Host/Install
+       $(INSTALL_BIN) $(HOST_BUILD_DIR)/tools/fiptool/fiptool $(STAGING_DIR_HOST)/bin/
 endef
 
 define Package/tfa-layerscape/ls1012ardb
@@ -132,6 +146,7 @@ TFAS := \
   ls1088ardb-sdboot \
   ls2088ardb
 
+$(eval $(call HostBuild))
 $(foreach tfa,$(TFAS), \
        $(eval $(Package/tfa-layerscape/$(tfa))) \
        $(eval $(call Package/tfa-layerscape/Config,$(tfa),$(TITLE),$(BIN_BL2),$(BIN_FIP))) \
diff --git a/package/boot/tfa-layerscape/patches/001-fiptool-hostbuild-fixes.patch b/package/boot/tfa-layerscape/patches/001-fiptool-hostbuild-fixes.patch
new file mode 100644 (file)
index 0000000..0567e58
--- /dev/null
@@ -0,0 +1,71 @@
+--- a/Makefile
++++ b/Makefile
+@@ -448,10 +448,6 @@ endif
+ CRTTOOLPATH           ?=      tools/cert_create
+ CRTTOOL                       ?=      ${CRTTOOLPATH}/cert_create${BIN_EXT}
+-# Variables for use with Firmware Image Package
+-FIPTOOLPATH           ?=      tools/fiptool
+-FIPTOOL                       ?=      ${FIPTOOLPATH}/fiptool${BIN_EXT}
+-
+ ################################################################################
+ # Include BL specific makefiles
+ ################################################################################
+@@ -661,14 +657,12 @@ endif
+ clean:
+       @echo "  CLEAN"
+       $(call SHELL_REMOVE_DIR,${BUILD_PLAT})
+-      ${Q}${MAKE} --no-print-directory -C ${FIPTOOLPATH} clean
+       ${Q}${MAKE} PLAT=${PLAT} --no-print-directory -C ${CRTTOOLPATH} clean
+ realclean distclean:
+       @echo "  REALCLEAN"
+       $(call SHELL_REMOVE_DIR,${BUILD_BASE})
+       $(call SHELL_DELETE_ALL, ${CURDIR}/cscope.*)
+-      ${Q}${MAKE} --no-print-directory -C ${FIPTOOLPATH} clean
+       ${Q}${MAKE} PLAT=${PLAT} --no-print-directory -C ${CRTTOOLPATH} clean
+ checkcodebase:                locate-checkpatch
+@@ -717,7 +711,7 @@ certificates: ${CRT_DEPS} ${CRTTOOL}
+       @${ECHO_BLANK_LINE}
+ endif
+-${BUILD_PLAT}/${FIP_NAME}: ${FIP_DEPS} ${FIPTOOL}
++${BUILD_PLAT}/${FIP_NAME}: ${FIP_DEPS}
+       ${Q}${FIPTOOL} create ${FIP_ARGS} $@
+       ${Q}${FIPTOOL} info $@
+       @${ECHO_BLANK_LINE}
+@@ -733,21 +727,16 @@ fwu_certificates: ${FWU_CRT_DEPS} ${CRTT
+       @${ECHO_BLANK_LINE}
+ endif
+-${BUILD_PLAT}/${FWU_FIP_NAME}: ${FWU_FIP_DEPS} ${FIPTOOL}
++${BUILD_PLAT}/${FWU_FIP_NAME}: ${FWU_FIP_DEPS}
+       ${Q}${FIPTOOL} create ${FWU_FIP_ARGS} $@
+       ${Q}${FIPTOOL} info $@
+       @${ECHO_BLANK_LINE}
+       @echo "Built $@ successfully"
+       @${ECHO_BLANK_LINE}
+-fiptool: ${FIPTOOL}
+ fip: ${BUILD_PLAT}/${FIP_NAME}
+ fwu_fip: ${BUILD_PLAT}/${FWU_FIP_NAME}
+-.PHONY: ${FIPTOOL}
+-${FIPTOOL}:
+-      ${Q}${MAKE} CPPFLAGS="-DVERSION='\"${VERSION_STRING}\"'" --no-print-directory -C ${FIPTOOLPATH}
+-
+ cscope:
+       @echo "  CSCOPE"
+       ${Q}find ${CURDIR} -name "*.[chsS]" > cscope.files
+--- a/tools/fiptool/Makefile
++++ b/tools/fiptool/Makefile
+@@ -37,7 +37,7 @@ all: ${PROJECT} fip_create
+ ${PROJECT}: ${OBJECTS} Makefile
+       @echo "  LD      $@"
+-      ${Q}${HOSTCC} ${OBJECTS} -o $@ ${LDLIBS}
++      ${Q}${HOSTCC} ${OBJECTS} -o $@ ${LDLIBS} $(LDFLAGS)
+       @${ECHO_BLANK_LINE}
+       @echo "Built $@ successfully"
+       @${ECHO_BLANK_LINE}