Skip to contentSkip to conversation

mfgtools: Allow target build

PATCH Superseded Vincent Prince 2 participants 4 messages May 4, 2018 – Apr 7, 2019

lore
Share & tools
lore
#0 lore raw

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
index 9cd5d9c..04a0f6d 100644
@@ -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
new file mode 100644
index 0000000..d1fc068
@@ -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
index e4663a8..24a9d9f 100644
@@ -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
#1 lore raw

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
new file mode 100644
index 0000000..91933df
@@ -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
index e4663a8..24a9d9f 100644
@@ -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 -0
 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))

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
#2 lore raw

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
index 9cd5d9c..04a0f6d 100644
@@ -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
new file mode 100644
index 0000000..0ab51a8
@@ -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
index e4663a8..9867785 100644
@@ -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
#3 lore raw

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…

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
new file mode 100644
index 0000000..eee58b8
@@ -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