diff mbox

[v1,1/1] Makefile: Capstone: Add support for cross compile ranlib

Message ID e457d4e906dceea4de6c3431813a06b137c1ab9c.1510103351.git.alistair.francis@xilinx.com (mailing list archive)
State New, archived
Headers show

Commit Message

Alistair Francis Nov. 8, 2017, 1:10 a.m. UTC
When cross compiling QEMU for Windows we need to specify the cross
version of ranlib to avoid build errors when buildling capstone. This
patch ensures we use the same cross prefix on ranlib as other toolchain
components.

Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
Suggested-by: Peter Maydell <peter.maydell@linaro.org>
---

 Makefile  | 2 +-
 configure | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)

Comments

Philippe Mathieu-Daudé Nov. 8, 2017, 5 a.m. UTC | #1
Hi Alistair,

On 11/07/2017 10:10 PM, Alistair Francis wrote:
> When cross compiling QEMU for Windows we need to specify the cross

What toolchain do you use?

> version of ranlib to avoid build errors when buildling capstone. This

"building"

> patch ensures we use the same cross prefix on ranlib as other toolchain
> components.
> 
> Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
> Suggested-by: Peter Maydell <peter.maydell@linaro.org>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

MXE:
Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
> 
>  Makefile  | 2 +-
>  configure | 3 +++
>  2 files changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/Makefile b/Makefile
> index 0496c5057a..814f6820d9 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -405,7 +405,7 @@ CAP_CFLAGS += -DCAPSTONE_HAS_POWERPC
>  CAP_CFLAGS += -DCAPSTONE_HAS_X86
>  
>  subdir-capstone: .git-submodule-status
> -	$(call quiet-command,$(MAKE) -C $(SRC_PATH)/capstone CAPSTONE_SHARED=no BUILDDIR="$(BUILD_DIR)/capstone" CC="$(CC)" AR="$(AR)" LD="$(LD)" CFLAGS="$(CAP_CFLAGS)" $(SUBDIR_MAKEFLAGS) $(BUILD_DIR)/capstone/$(LIBCAPSTONE))
> +	$(call quiet-command,$(MAKE) -C $(SRC_PATH)/capstone CAPSTONE_SHARED=no BUILDDIR="$(BUILD_DIR)/capstone" CC="$(CC)" AR="$(AR)" LD="$(LD)" RANLIB="$(RANLIB)" CFLAGS="$(CAP_CFLAGS)" $(SUBDIR_MAKEFLAGS) $(BUILD_DIR)/capstone/$(LIBCAPSTONE))
>  
>  $(SUBDIR_RULES): libqemuutil.a $(common-obj-y) $(chardev-obj-y) \
>  	$(qom-obj-y) $(crypto-aes-obj-$(CONFIG_USER_ONLY))
> diff --git a/configure b/configure
> index a6055c0710..0e856bbc04 100755
> --- a/configure
> +++ b/configure
> @@ -482,6 +482,7 @@ ccas="${CCAS-$cc}"
>  cpp="${CPP-$cc -E}"
>  objcopy="${OBJCOPY-${cross_prefix}objcopy}"
>  ld="${LD-${cross_prefix}ld}"
> +ranlib="${RANLIB-${cross_prefix}ranlib}"
>  nm="${NM-${cross_prefix}nm}"
>  strip="${STRIP-${cross_prefix}strip}"
>  windres="${WINDRES-${cross_prefix}windres}"
> @@ -6288,6 +6289,7 @@ echo "CCAS=$ccas" >> $config_host_mak
>  echo "CPP=$cpp" >> $config_host_mak
>  echo "OBJCOPY=$objcopy" >> $config_host_mak
>  echo "LD=$ld" >> $config_host_mak
> +echo "RANLIB=$ranlib" >> $config_host_mak
>  echo "NM=$nm" >> $config_host_mak
>  echo "WINDRES=$windres" >> $config_host_mak
>  echo "CFLAGS=$CFLAGS" >> $config_host_mak
> @@ -6782,6 +6784,7 @@ for rom in seabios vgabios ; do
>      echo "OBJCOPY=objcopy" >> $config_mak
>      echo "IASL=$iasl" >> $config_mak
>      echo "LD=$ld" >> $config_mak
> +    echo "RANLIB=$ranlib" >> $config_mak
>  done
>  
>  # set up tests data directory
>
Daniel P. Berrangé Nov. 8, 2017, 9:05 a.m. UTC | #2
On Tue, Nov 07, 2017 at 05:10:46PM -0800, Alistair Francis wrote:
> When cross compiling QEMU for Windows we need to specify the cross
> version of ranlib to avoid build errors when buildling capstone. This
> patch ensures we use the same cross prefix on ranlib as other toolchain
> components.
> 
> Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
> Suggested-by: Peter Maydell <peter.maydell@linaro.org>
> ---
> 
>  Makefile  | 2 +-
>  configure | 3 +++
>  2 files changed, 4 insertions(+), 1 deletion(-)

Reviewed-by: Daniel P. Berrange <berrange@redhat.com>


> 
> diff --git a/Makefile b/Makefile
> index 0496c5057a..814f6820d9 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -405,7 +405,7 @@ CAP_CFLAGS += -DCAPSTONE_HAS_POWERPC
>  CAP_CFLAGS += -DCAPSTONE_HAS_X86
>  
>  subdir-capstone: .git-submodule-status
> -	$(call quiet-command,$(MAKE) -C $(SRC_PATH)/capstone CAPSTONE_SHARED=no BUILDDIR="$(BUILD_DIR)/capstone" CC="$(CC)" AR="$(AR)" LD="$(LD)" CFLAGS="$(CAP_CFLAGS)" $(SUBDIR_MAKEFLAGS) $(BUILD_DIR)/capstone/$(LIBCAPSTONE))
> +	$(call quiet-command,$(MAKE) -C $(SRC_PATH)/capstone CAPSTONE_SHARED=no BUILDDIR="$(BUILD_DIR)/capstone" CC="$(CC)" AR="$(AR)" LD="$(LD)" RANLIB="$(RANLIB)" CFLAGS="$(CAP_CFLAGS)" $(SUBDIR_MAKEFLAGS) $(BUILD_DIR)/capstone/$(LIBCAPSTONE))
>  
>  $(SUBDIR_RULES): libqemuutil.a $(common-obj-y) $(chardev-obj-y) \
>  	$(qom-obj-y) $(crypto-aes-obj-$(CONFIG_USER_ONLY))
> diff --git a/configure b/configure
> index a6055c0710..0e856bbc04 100755
> --- a/configure
> +++ b/configure
> @@ -482,6 +482,7 @@ ccas="${CCAS-$cc}"
>  cpp="${CPP-$cc -E}"
>  objcopy="${OBJCOPY-${cross_prefix}objcopy}"
>  ld="${LD-${cross_prefix}ld}"
> +ranlib="${RANLIB-${cross_prefix}ranlib}"
>  nm="${NM-${cross_prefix}nm}"
>  strip="${STRIP-${cross_prefix}strip}"
>  windres="${WINDRES-${cross_prefix}windres}"
> @@ -6288,6 +6289,7 @@ echo "CCAS=$ccas" >> $config_host_mak
>  echo "CPP=$cpp" >> $config_host_mak
>  echo "OBJCOPY=$objcopy" >> $config_host_mak
>  echo "LD=$ld" >> $config_host_mak
> +echo "RANLIB=$ranlib" >> $config_host_mak
>  echo "NM=$nm" >> $config_host_mak
>  echo "WINDRES=$windres" >> $config_host_mak
>  echo "CFLAGS=$CFLAGS" >> $config_host_mak
> @@ -6782,6 +6784,7 @@ for rom in seabios vgabios ; do
>      echo "OBJCOPY=objcopy" >> $config_mak
>      echo "IASL=$iasl" >> $config_mak
>      echo "LD=$ld" >> $config_mak
> +    echo "RANLIB=$ranlib" >> $config_mak
>  done
>  
>  # set up tests data directory
> -- 
> 2.11.0
> 
> 

Regards,
Daniel
Philippe Mathieu-Daudé Nov. 8, 2017, 2:08 p.m. UTC | #3
On 11/08/2017 02:00 AM, Philippe Mathieu-Daudé wrote:
> Hi Alistair,
> 
> On 11/07/2017 10:10 PM, Alistair Francis wrote:
>> When cross compiling QEMU for Windows we need to specify the cross
> 
> What toolchain do you use?
> 
>> version of ranlib to avoid build errors when buildling capstone. This
> 
> "building"
> 
>> patch ensures we use the same cross prefix on ranlib as other toolchain
>> components.

Please add this extra info in the commit (take from the mail thread)
which may be useful if we add a continuous integration test for these
toolchains/distribs.

- Fedora23 mingw
- RHEL-7 with mingw packages from epel:

   LINK    qemu-img.exe
 build-win64/capstone/capstone.lib: error adding symbols: Archive has no
index; run ranlib to add one
 collect2: error: ld returned 1 exit status

$ x86_64-w64-mingw32-ar --version
GNU ar (GNU Binutils) 2.25

- RHEL7.2

>>
>> Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
>> Suggested-by: Peter Maydell <peter.maydell@linaro.org>
> 
> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> 
> MXE:
> Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> 
>> ---
>>
>>  Makefile  | 2 +-
>>  configure | 3 +++
>>  2 files changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/Makefile b/Makefile
>> index 0496c5057a..814f6820d9 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -405,7 +405,7 @@ CAP_CFLAGS += -DCAPSTONE_HAS_POWERPC
>>  CAP_CFLAGS += -DCAPSTONE_HAS_X86
>>  
>>  subdir-capstone: .git-submodule-status
>> -	$(call quiet-command,$(MAKE) -C $(SRC_PATH)/capstone CAPSTONE_SHARED=no BUILDDIR="$(BUILD_DIR)/capstone" CC="$(CC)" AR="$(AR)" LD="$(LD)" CFLAGS="$(CAP_CFLAGS)" $(SUBDIR_MAKEFLAGS) $(BUILD_DIR)/capstone/$(LIBCAPSTONE))
>> +	$(call quiet-command,$(MAKE) -C $(SRC_PATH)/capstone CAPSTONE_SHARED=no BUILDDIR="$(BUILD_DIR)/capstone" CC="$(CC)" AR="$(AR)" LD="$(LD)" RANLIB="$(RANLIB)" CFLAGS="$(CAP_CFLAGS)" $(SUBDIR_MAKEFLAGS) $(BUILD_DIR)/capstone/$(LIBCAPSTONE))
>>  
>>  $(SUBDIR_RULES): libqemuutil.a $(common-obj-y) $(chardev-obj-y) \
>>  	$(qom-obj-y) $(crypto-aes-obj-$(CONFIG_USER_ONLY))
>> diff --git a/configure b/configure
>> index a6055c0710..0e856bbc04 100755
>> --- a/configure
>> +++ b/configure
>> @@ -482,6 +482,7 @@ ccas="${CCAS-$cc}"
>>  cpp="${CPP-$cc -E}"
>>  objcopy="${OBJCOPY-${cross_prefix}objcopy}"
>>  ld="${LD-${cross_prefix}ld}"
>> +ranlib="${RANLIB-${cross_prefix}ranlib}"
>>  nm="${NM-${cross_prefix}nm}"
>>  strip="${STRIP-${cross_prefix}strip}"
>>  windres="${WINDRES-${cross_prefix}windres}"
>> @@ -6288,6 +6289,7 @@ echo "CCAS=$ccas" >> $config_host_mak
>>  echo "CPP=$cpp" >> $config_host_mak
>>  echo "OBJCOPY=$objcopy" >> $config_host_mak
>>  echo "LD=$ld" >> $config_host_mak
>> +echo "RANLIB=$ranlib" >> $config_host_mak
>>  echo "NM=$nm" >> $config_host_mak
>>  echo "WINDRES=$windres" >> $config_host_mak
>>  echo "CFLAGS=$CFLAGS" >> $config_host_mak
>> @@ -6782,6 +6784,7 @@ for rom in seabios vgabios ; do
>>      echo "OBJCOPY=objcopy" >> $config_mak
>>      echo "IASL=$iasl" >> $config_mak
>>      echo "LD=$ld" >> $config_mak
>> +    echo "RANLIB=$ranlib" >> $config_mak
>>  done
>>  
>>  # set up tests data directory
>>
Richard Henderson Nov. 9, 2017, 7:53 a.m. UTC | #4
On 11/08/2017 02:10 AM, Alistair Francis wrote:
> When cross compiling QEMU for Windows we need to specify the cross
> version of ranlib to avoid build errors when buildling capstone. This
> patch ensures we use the same cross prefix on ranlib as other toolchain
> components.
> 
> Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
> Suggested-by: Peter Maydell <peter.maydell@linaro.org>
> ---

Thanks.  Queued for pull with another outstanding capstone patch.


r~
diff mbox

Patch

diff --git a/Makefile b/Makefile
index 0496c5057a..814f6820d9 100644
--- a/Makefile
+++ b/Makefile
@@ -405,7 +405,7 @@  CAP_CFLAGS += -DCAPSTONE_HAS_POWERPC
 CAP_CFLAGS += -DCAPSTONE_HAS_X86
 
 subdir-capstone: .git-submodule-status
-	$(call quiet-command,$(MAKE) -C $(SRC_PATH)/capstone CAPSTONE_SHARED=no BUILDDIR="$(BUILD_DIR)/capstone" CC="$(CC)" AR="$(AR)" LD="$(LD)" CFLAGS="$(CAP_CFLAGS)" $(SUBDIR_MAKEFLAGS) $(BUILD_DIR)/capstone/$(LIBCAPSTONE))
+	$(call quiet-command,$(MAKE) -C $(SRC_PATH)/capstone CAPSTONE_SHARED=no BUILDDIR="$(BUILD_DIR)/capstone" CC="$(CC)" AR="$(AR)" LD="$(LD)" RANLIB="$(RANLIB)" CFLAGS="$(CAP_CFLAGS)" $(SUBDIR_MAKEFLAGS) $(BUILD_DIR)/capstone/$(LIBCAPSTONE))
 
 $(SUBDIR_RULES): libqemuutil.a $(common-obj-y) $(chardev-obj-y) \
 	$(qom-obj-y) $(crypto-aes-obj-$(CONFIG_USER_ONLY))
diff --git a/configure b/configure
index a6055c0710..0e856bbc04 100755
--- a/configure
+++ b/configure
@@ -482,6 +482,7 @@  ccas="${CCAS-$cc}"
 cpp="${CPP-$cc -E}"
 objcopy="${OBJCOPY-${cross_prefix}objcopy}"
 ld="${LD-${cross_prefix}ld}"
+ranlib="${RANLIB-${cross_prefix}ranlib}"
 nm="${NM-${cross_prefix}nm}"
 strip="${STRIP-${cross_prefix}strip}"
 windres="${WINDRES-${cross_prefix}windres}"
@@ -6288,6 +6289,7 @@  echo "CCAS=$ccas" >> $config_host_mak
 echo "CPP=$cpp" >> $config_host_mak
 echo "OBJCOPY=$objcopy" >> $config_host_mak
 echo "LD=$ld" >> $config_host_mak
+echo "RANLIB=$ranlib" >> $config_host_mak
 echo "NM=$nm" >> $config_host_mak
 echo "WINDRES=$windres" >> $config_host_mak
 echo "CFLAGS=$CFLAGS" >> $config_host_mak
@@ -6782,6 +6784,7 @@  for rom in seabios vgabios ; do
     echo "OBJCOPY=objcopy" >> $config_mak
     echo "IASL=$iasl" >> $config_mak
     echo "LD=$ld" >> $config_mak
+    echo "RANLIB=$ranlib" >> $config_mak
 done
 
 # set up tests data directory