|
@@ -1299,6 +1299,10 @@ for opt do
|
|
|
;;
|
|
|
--enable-capstone) capstone="yes"
|
|
|
;;
|
|
|
+ --enable-capstone=git) capstone="git"
|
|
|
+ ;;
|
|
|
+ --enable-capstone=system) capstone="system"
|
|
|
+ ;;
|
|
|
*)
|
|
|
echo "ERROR: unknown option $opt"
|
|
|
echo "Try '$0 --help' for more information"
|
|
@@ -4419,18 +4423,54 @@ fi
|
|
|
##########################################
|
|
|
# capstone
|
|
|
|
|
|
-if test "$capstone" != no; then
|
|
|
- if $pkg_config capstone; then
|
|
|
- capstone=yes
|
|
|
+case "$capstone" in
|
|
|
+ "" | yes)
|
|
|
+ if $pkg_config capstone; then
|
|
|
+ capstone=system
|
|
|
+ elif test -e "${source_path}/.git" ; then
|
|
|
+ capstone=git
|
|
|
+ elif test -e "${source_path}/capstone/Makefile" ; then
|
|
|
+ capstone=internal
|
|
|
+ elif test -z "$capstone" ; then
|
|
|
+ capstone=no
|
|
|
+ else
|
|
|
+ feature_not_found "capstone" "Install capstone devel or git submodule"
|
|
|
+ fi
|
|
|
+ ;;
|
|
|
+
|
|
|
+ system)
|
|
|
+ if ! $pkg_config capstone; then
|
|
|
+ feature_not_found "capstone" "Install capstone devel"
|
|
|
+ fi
|
|
|
+ ;;
|
|
|
+esac
|
|
|
+
|
|
|
+case "$capstone" in
|
|
|
+ git | internal)
|
|
|
+ if test "$capstone" = git; then
|
|
|
+ git_submodules="${git_submodules} capstone"
|
|
|
+ fi
|
|
|
+ mkdir -p capstone
|
|
|
+ QEMU_CFLAGS="$QEMU_CFLAGS -I\$(SRC_PATH)/capstone/include"
|
|
|
+ if test "$mingw32" = "yes"; then
|
|
|
+ LIBCAPSTONE=capstone.lib
|
|
|
+ else
|
|
|
+ LIBCAPSTONE=libcapstone.a
|
|
|
+ fi
|
|
|
+ LIBS="-L\$(BUILD_DIR)/capstone -lcapstone $LIBS"
|
|
|
+ ;;
|
|
|
+
|
|
|
+ system)
|
|
|
QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags capstone)"
|
|
|
LIBS="$($pkg_config --libs capstone) $LIBS"
|
|
|
- else
|
|
|
- if test "$capstone" = yes; then
|
|
|
- feature_not_found capstone
|
|
|
- fi
|
|
|
- capstone=no
|
|
|
- fi
|
|
|
-fi
|
|
|
+ ;;
|
|
|
+
|
|
|
+ no)
|
|
|
+ ;;
|
|
|
+ *)
|
|
|
+ error_exit "Unknown state for capstone: $capstone"
|
|
|
+ ;;
|
|
|
+esac
|
|
|
|
|
|
##########################################
|
|
|
# check if we have fdatasync
|
|
@@ -6165,7 +6205,7 @@ fi
|
|
|
if test "$ivshmem" = "yes" ; then
|
|
|
echo "CONFIG_IVSHMEM=y" >> $config_host_mak
|
|
|
fi
|
|
|
-if test "$capstone" = "yes" ; then
|
|
|
+if test "$capstone" != "no" ; then
|
|
|
echo "CONFIG_CAPSTONE=y" >> $config_host_mak
|
|
|
fi
|
|
|
|
|
@@ -6650,6 +6690,12 @@ done # for target in $targets
|
|
|
if [ "$dtc_internal" = "yes" ]; then
|
|
|
echo "config-host.h: subdir-dtc" >> $config_host_mak
|
|
|
fi
|
|
|
+if [ "$capstone" = "git" -o "$capstone" = "internal" ]; then
|
|
|
+ echo "config-host.h: subdir-capstone" >> $config_host_mak
|
|
|
+fi
|
|
|
+if test -n "$LIBCAPSTONE"; then
|
|
|
+ echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak
|
|
|
+fi
|
|
|
|
|
|
if test "$numa" = "yes"; then
|
|
|
echo "CONFIG_NUMA=y" >> $config_host_mak
|