mfgtools: Allow target build
PATCH 1/1 mfgtools: Allow target build
--- package/Config.in | 1 + .../mfgtools/0001-Fix-CXXFLAGS-in-CMakeList.patch | 58 ++++++++++++++++++++++ package/mfgtools/Config.in | 14 ++++++ package/mfgtools/mfgtools.mk | 17 +++++++ 4 files changed, 90 insertions(+) create mode 100644 package/mfgtools/0001-Fix-CXXFLAGS-in-CMakeList.patch create mode 100644 package/mfgtools/Config.in
package/Config.in +1 -0
@@ -186,6 +186,7 @@ menu "Filesystem and flash utilities" source "package/genext2fs/Config.in" source "package/genpart/Config.in" source "package/genromfs/Config.in" + source "package/mfgtools/Config.in" source "package/mmc-utils/Config.in" source "package/mtd/Config.in" source "package/mtools/Config.in"
package/mfgtools/0001-Fix-CXXFLAGS-in-CMakeList.patch new file +58 -0
58 lines not on this page · raw message
package/mfgtools/Config.in new file +14 -0
@@ -0,0 +1,14 @@ +comment "mfgtools needs gcc >= 4.8" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + +config BR2_PACKAGE_MFGTOOLS + bool "mfgtools" + depends on BR2_arm + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # needs C++11 + help + This package contains the Freescale manufacturing tool. + It is designed to program firmware to i.MX boards during + production. The communication is done over USB using the + Freescale UTP protocol. + + https://github.com/codeauroraforum/mfgtools
package/mfgtools/mfgtools.mk +17 -0
@@ -11,19 +11,35 @@ MFGTOOLS_LICENSE = BSD-3-Clause or CPOL MFGTOOLS_LICENSE_FILES = LICENSE README.txt HOST_MFGTOOLS_DEPENDENCIES = host-libusb +MFGTOOLS_CFLAGS = \ + $(CFLAGS) $(LDFLAGS) -std=c++11 -lpthread \ + -L$(@D)/MfgToolLib -lMfgToolLib -I$(@D)/MfgToolLib \ + -lusb-1.0 -I$(TARGET_DIR)/usr/include/libusb-1.0 \ + -fpermissive -Wno-write-strings HOST_MFGTOOLS_CFLAGS = \ $(HOST_CFLAGS) $(HOST_LDFLAGS) -std=c++11 -lpthread \ -L$(@D)/MfgToolLib -lMfgToolLib -I$(@D)/MfgToolLib \ -lusb-1.0 -I$(HOST_DIR)/include/libusb-1.0 \ -fpermissive -Wno-write-strings +define MFGTOOLS_CLI_BUILD + $(CONFIGURE_OPTS) $(MAKE) CC="$(TARGET_CXX)" \ + CFLAGS="$(MFGTOOLS_CFLAGS)" -C $(@D)/TestPrgm +endef define HOST_MFGTOOLS_CLI_BUILD $(HOST_CONFIGURE_OPTS) $(MAKE) CC="$(HOSTCXX)" \ CFLAGS="$(HOST_MFGTOOLS_CFLAGS)" -C $(@D)/TestPrgm endef +MFGTOOLS_POST_BUILD_HOOKS += MFGTOOLS_CLI_BUILD HOST_MFGTOOLS_POST_BUILD_HOOKS += HOST_MFGTOOLS_CLI_BUILD +define MFGTOOLS_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/MfgToolLib/libMfgToolLib.so \ + $(TARGET_DIR)/usr/lib/libMfgToolLib.so + $(INSTALL) -D -m 755 $(@D)/TestPrgm/mfgtoolcli \ + $(TARGET_DIR)/usr/bin/mfgtoolcli +endef define HOST_MFGTOOLS_INSTALL_CMDS $(INSTALL) -D -m 755 $(@D)/MfgToolLib/libMfgToolLib.so \ $(HOST_DIR)/lib/libMfgToolLib.so
@@ -31,4 +47,5 @@ define HOST_MFGTOOLS_INSTALL_CMDS $(HOST_DIR)/bin/mfgtoolcli endef +$(eval $(cmake-package)) $(eval $(host-cmake-package))
Signature · 1 line
2.7.4
PATCH 1/1 mfgtools: Allow target build
Hello Vincent,
Thanks for this contribution!
package/mfgtools/0001-Fix-CXXFLAGS-in-CMakeList.patch line 2
Quoted 8 lines · Vincent Prince
package/mfgtools/0001-Fix-CXXFLAGS-in-CMakeList.patch new file +2
-0@@ -0,0 +1,58 @@ +--- a/MfgToolLib/CMakeLists.txt ++++ b/MfgToolLib/CMakeLists.txt
All patches need a description + Signed-off-by. See
https://buildroot.org/downloads/manual/manual.html#_format_and_licensing_of_the_package_patches.
package/mfgtools/mfgtools.mk MFGTOOLS_LICENSE = BSD-3-Clause or CPOL · line 15
Quoted 10 lines
package/mfgtools/mfgtools.mk +2
-0@@ -11,19 +11,35 @@ MFGTOOLS_LICENSE = BSD-3-Clause or CPOL MFGTOOLS_LICENSE_FILES = LICENSE README.txt HOST_MFGTOOLS_DEPENDENCIES = host-libusb +MFGTOOLS_CFLAGS = \ + $(CFLAGS) $(LDFLAGS) -std=c++11 -lpthread \
CFLAGS and LDFLAGS don't have any meaning in Buildroot, you probably meant TARGET_CFLAGS and TARGET_LDFLAGS.
package/mfgtools/mfgtools.mk MFGTOOLS_LICENSE = BSD-3-Clause or CPOL · line 17
Quoted 2 lines
package/mfgtools/mfgtools.mk +2
-0+ -L$(@D)/MfgToolLib -lMfgToolLib -I$(@D)/MfgToolLib \ + -lusb-1.0 -I$(TARGET_DIR)/usr/include/libusb-1.0 \
You can't use header files from TARGET_DIR, since you have no guarantee that they are installed here. The headers are in STAGING_DIR instead.
package/mfgtools/mfgtools.mk MFGTOOLS_LICENSE = BSD-3-Clause or CPOL · line 26
Quoted 2 lines
package/mfgtools/mfgtools.mk +2
-0+define MFGTOOLS_CLI_BUILD + $(CONFIGURE_OPTS) $(MAKE) CC="$(TARGET_CXX)" \
CONFIGURE_OPTS don't exist in Buildroot, it's TARGET_CONFIGURE_OPTS. THen you don't need to pass CC="$(TARGET_CXX)", because it's part of TARGET_CONFIGURE_OPTS.
package/mfgtools/mfgtools.mk MFGTOOLS_LICENSE = BSD-3-Clause or CPOL · line 42
Quoted 6 lines
package/mfgtools/mfgtools.mk +6
-0+define MFGTOOLS_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/MfgToolLib/libMfgToolLib.so \ + $(TARGET_DIR)/usr/lib/libMfgToolLib.so + $(INSTALL) -D -m 755 $(@D)/TestPrgm/mfgtoolcli \ + $(TARGET_DIR)/usr/bin/mfgtoolcli +endef
Add a blank line here.
package/mfgtools/mfgtools.mk define HOST_MFGTOOLS_INSTALL_CMDS · line 51
Quoted 9 lines
package/mfgtools/mfgtools.mk +1
-0define HOST_MFGTOOLS_INSTALL_CMDS $(INSTALL) -D -m 755 $(@D)/MfgToolLib/libMfgToolLib.so \ $(HOST_DIR)/lib/libMfgToolLib.so@@ -31,4 +47,5 @@ define HOST_MFGTOOLS_INSTALL_CMDS $(HOST_DIR)/bin/mfgtoolcli endef +$(eval $(cmake-package)) $(eval $(host-cmake-package))
Could you rework your patch according to those comments, and send an updated version ?
Thanks a lot!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering https://bootlin.com
PATCH v2 1/1 package/mfgtools: Allow target build
--- package/Config.in | 1 + .../mfgtools/0001-Fix-CXXFLAGS-in-CMakeList.patch | 62 ++++++++++++++++++++++ package/mfgtools/Config.in | 15 ++++++ package/mfgtools/mfgtools.mk | 20 +++++++ 4 files changed, 98 insertions(+) create mode 100644 package/mfgtools/0001-Fix-CXXFLAGS-in-CMakeList.patch create mode 100644 package/mfgtools/Config.in
package/Config.in +1 -0
@@ -186,6 +186,7 @@ menu "Filesystem and flash utilities" source "package/genext2fs/Config.in" source "package/genpart/Config.in" source "package/genromfs/Config.in" + source "package/mfgtools/Config.in" source "package/mmc-utils/Config.in" source "package/mtd/Config.in" source "package/mtools/Config.in"
package/mfgtools/0001-Fix-CXXFLAGS-in-CMakeList.patch new file +62 -0
62 lines not on this page · raw message
package/mfgtools/Config.in new file +15 -0
@@ -0,0 +1,15 @@ +comment "mfgtools needs gcc >= 4.8" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + +config BR2_PACKAGE_MFGTOOLS + bool "mfgtools" + depends on BR2_arm + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # needs C++11 + select BR2_PACKAGE_LIBUSB + help + This package contains the Freescale manufacturing tool. + It is designed to program firmware to i.MX boards during + production. The communication is done over USB using the + Freescale UTP protocol. + + https://github.com/codeauroraforum/mfgtools
package/mfgtools/mfgtools.mk +20 -0
@@ -9,21 +9,40 @@ MFGTOOLS_SITE = $(call github,codeauroraforum,mfgtools,$(MFGTOOLS_VERSION)) MFGTOOLS_SUBDIR = MfgToolLib MFGTOOLS_LICENSE = BSD-3-Clause or CPOL MFGTOOLS_LICENSE_FILES = LICENSE README.txt + +MFGTOOLS_DEPENDENCIES = libusb HOST_MFGTOOLS_DEPENDENCIES = host-libusb +MFGTOOLS_CFLAGS = \ + $(TARGET_CFLAGS) $(TARGET_LDFLAGS) -std=c++11 -lpthread \ + -L$(@D)/MfgToolLib -lMfgToolLib -I$(@D)/MfgToolLib \ + -lusb-1.0 -I$(STAGING_DIR)/usr/include/libusb-1.0 \ + -fpermissive -Wno-write-strings HOST_MFGTOOLS_CFLAGS = \ $(HOST_CFLAGS) $(HOST_LDFLAGS) -std=c++11 -lpthread \ -L$(@D)/MfgToolLib -lMfgToolLib -I$(@D)/MfgToolLib \ -lusb-1.0 -I$(HOST_DIR)/include/libusb-1.0 \ -fpermissive -Wno-write-strings +define MFGTOOLS_CLI_BUILD + $(TARGET_CONFIGURE_OPTS) $(MAKE) CC="$(TARGET_CXX)" \ + CFLAGS="$(MFGTOOLS_CFLAGS)" -C $(@D)/TestPrgm +endef define HOST_MFGTOOLS_CLI_BUILD $(HOST_CONFIGURE_OPTS) $(MAKE) CC="$(HOSTCXX)" \ CFLAGS="$(HOST_MFGTOOLS_CFLAGS)" -C $(@D)/TestPrgm endef +MFGTOOLS_POST_BUILD_HOOKS += MFGTOOLS_CLI_BUILD HOST_MFGTOOLS_POST_BUILD_HOOKS += HOST_MFGTOOLS_CLI_BUILD +define MFGTOOLS_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/MfgToolLib/libMfgToolLib.so \ + $(TARGET_DIR)/usr/lib/libMfgToolLib.so + $(INSTALL) -D -m 755 $(@D)/TestPrgm/mfgtoolcli \ + $(TARGET_DIR)/usr/bin/mfgtoolcli +endef + define HOST_MFGTOOLS_INSTALL_CMDS $(INSTALL) -D -m 755 $(@D)/MfgToolLib/libMfgToolLib.so \ $(HOST_DIR)/lib/libMfgToolLib.so
@@ -31,4 +50,5 @@ define HOST_MFGTOOLS_INSTALL_CMDS $(HOST_DIR)/bin/mfgtoolcli endef +$(eval $(cmake-package)) $(eval $(host-cmake-package))
Signature · 1 line
2.7.4
PATCH v2 1/1 package/mfgtools: Allow target build
Hello Vincent,
Quoted 1 line · On Mon, 14 May 2018 11:11:14 +0200 Vincent Prince…
Signed-off-by Vincent Prince <[email protected]>
Sorry for the very long delay in answering. First of all, the 0.02 version of mfgtools we're using is very, very old. Upstream has much more recent version, which hopefully cross-compile better. It would probably be beneficial to start by updating to a more recent version.
package/mfgtools/0001-Fix-CXXFLAGS-in-CMakeList.patch line 1
Quoted 7 lines
package/mfgtools/0001-Fix-CXXFLAGS-in-CMakeList.patch new file +1
-0@@ -0,0 +1,62 @@ +CMakeLists.txt: Fix cross-compilation
This is way too short. What gets fixed already ? The patch file name mentions just fixing CXXFLAGS, but the patch does much more.
Also, since upstream uses Git, we want a patch generated by "git format-patch". But as said above, perhaps updating to a newer upstream release will help avoid these cross-compilation issues.
Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com