diff --git a/compile_qemu_nyx.sh b/compile_qemu_nyx.sh
index e36fe285f8..0dc40aa558 100755
--- a/compile_qemu_nyx.sh
+++ b/compile_qemu_nyx.sh
@@ -1,5 +1,4 @@
#!/bin/bash
-set -e
# Copyright (C) 2021 Sergej Schumilo
#
@@ -18,12 +17,14 @@ set -e
# You should have received a copy of the GNU General Public License
# along with QEMU-PT. If not, see .
+set -e
if [ -z "$BASH_VERSION" ]; then
exit 0
fi
-error () {
+error()
+{
echo "$0: "
echo ""
echo "Available compile options: "
@@ -33,111 +34,84 @@ error () {
echo " - debug enable several debug options"
echo " - debug_static enable several debug options and statically link libxdc and capstone4"
echo ""
- exit 3
+ exit 1
}
-compile_libraries (){
- echo "[!] compiling capstone4..."
- cd capstone_v4
- make -j
- cd ..
- echo "[!] capstone4 is ready!"
+compile_libraries()
+{
+ echo "[!] Compiling capstone4..."
+ make -C $CAPSTONE_ROOT -j $(nproc)
- echo "[!] compiling libxdc..."
- cd libxdc
- CFLAGS="-I../capstone_v4/include/" V=1 make libxdc.a
- cd ..
- echo "[!] libxdc is ready!"
+ echo "[!] Compiling libxdc..."
+ LDFLAGS="-L$CAPSTONE_ROOT -L$LIBXDC_ROOT" CFLAGS="-I$CAPSTONE_ROOT/include/" make -C $LIBXDC_ROOT -j $(nproc)
+
+ case $1 in
+ "dynamic"|"debug")
+ echo "[!] Installing capstone4..."
+ sudo make -C $CAPSTONE_ROOT install
+ echo "[!] Installing libxdc..."
+ sudo make -C $LIBXDC_ROOT install
+ ;;
+ esac
}
-compile_and_install_libraries () {
- if [ ! -f "/usr/lib/libcapstone.so" ] || [ ! -d "/usr/include/capstone/" ]; then
- echo "[!] capstone not found! Installing..."
- cd capstone_v4
- make -j
- echo "[ ] requesting permissions to install capstone4 ..."
- sudo make install
- echo "[!] done ..."
- cd ..
- fi
+configure_qemu()
+{
+ QEMU_CONFIGURE="./configure --target-list=x86_64-softmmu --disable-gtk --disable-docs --enable-gtk --disable-werror --disable-capstone --disable-libssh --disable-tools"
- if [ ! -f "/usr/lib/libxdc.so" ] || [ ! -f "/usr/include/libxdc.h" ]; then
- echo "[!] libxdc not found! Installing..."
- cd libxdc
- make -j
- echo "[ ] requesting permissions to install libxdc ..."
- sudo make install
- echo "[!] done ..."
- cd ..
- fi
+ case $1 in
+ "debug_static"|"static"|"lto")
+ export LIBS="-L$CAPSTONE_ROOT -L$LIBXDC_ROOT/ $LIBS"
+ export QEMU_CFLAGS="-I$CAPSTONE_ROOT/include/ -I$LIBXDC_ROOT/ $QEMU_CFLAGS"
+ ;;
+ *)
+ error
+ ;;
+ esac
+
+ case $1 in
+ "dynamic")
+ $QEMU_CONFIGURE --enable-nyx
+ ;;
+ "debug")
+ $QEMU_CONFIGURE --enable-nyx --enable-sanitizers --enable-debug
+ ;;
+ "debug_static")
+ $QEMU_CONFIGURE --enable-nyx --enable-sanitizers --enable-debug --enable-nyx-static
+ ;;
+ "static")
+ $QEMU_CONFIGURE --enable-nyx --enable-nyx-static
+ ;;
+ "lto")
+ $QEMU_CONFIGURE --enable-nyx --enable-nyx-static --enable-nyx-flto
+ ;;
+ *)
+ error
+ ;;
+ esac
}
-compile () {
- if [ -f GNUmakefile ]; then
- rm GNUmakefile 2> /dev/null
- fi
-
- make -j
- echo "[!] QEMU-Nyx is ready!"
+compile_qemu()
+{
+ test -f GNUmakefile && rm GNUmakefile 2> /dev/null
+ make -j $(nproc)
}
-git submodule init
-git submodule update libxdc
-git submodule update capstone_v4
-if [ "$#" == 0 ] ; then
+if [ "$#" -ne 1 ] ; then
error
fi
-if [ "$1" == "dynamic" ];
-then
-
- make clean
- compile_and_install_libraries
- ./configure --target-list=x86_64-softmmu --disable-gtk --disable-docs --enable-gtk --disable-werror --disable-capstone --disable-libssh --enable-nyx --disable-tools
- compile
- exit 0
+if [ -z "$LIBXDC_ROOT" -o -z "$CAPSTONE_ROOT" ]; then
+ git submodule init
+ git submodule update libxdc
+ git submodule update capstone_v4
+
+ LIBXDC_ROOT="$PWD/libxdc"
+ CAPSTONE_ROOT="$PWD/capstone_v4"
fi
-if [ "$1" == "debug" ];
-then
-
- make clean
- compile_and_install_libraries
- ./configure --target-list=x86_64-softmmu --disable-gtk --disable-docs --enable-gtk --disable-werror --disable-capstone --disable-libssh --enable-nyx --enable-sanitizers --enable-debug --disable-tools
- compile
- exit 0
-fi
-
-if [ "$1" == "debug_static" ];
-then
-
- make clean
- compile_libraries
- ./configure --target-list=x86_64-softmmu --disable-gtk --disable-docs --enable-gtk --disable-werror --disable-capstone --disable-libssh --enable-nyx --enable-sanitizers --enable-debug --enable-nyx-static --disable-tools
- compile
- exit 0
-fi
-
-if [ "$1" == "static" ];
-then
-
- make clean
- compile_libraries
- ./configure --target-list=x86_64-softmmu --disable-gtk --disable-docs --enable-gtk --disable-werror --disable-capstone --disable-libssh --enable-nyx --enable-nyx-static --disable-tools
- compile
- exit 0
-fi
-
-if [ "$1" == "lto" ];
-then
-
- make clean
- compile_libraries
- ./configure --target-list=x86_64-softmmu --disable-gtk --disable-docs --enable-gtk --disable-werror --disable-capstone --disable-libssh --enable-nyx --enable-nyx-static --enable-nyx-flto --disable-tools
- compile
- exit 0
-fi
-
-error
-exit 1
+make clean
+compile_libraries $1
+configure_qemu $1
+compile_qemu
diff --git a/configure b/configure
index b753ee9c64..af144b6690 100755
--- a/configure
+++ b/configure
@@ -6105,8 +6105,7 @@ if test "$nyx" = "yes" ; then
CFLAGS="-DNESTED_PATCH -Wno-error=maybe-uninitialized -DQEMU_NYX -g -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
if test "$nyx_static" = "yes" ; then
- LIBS="-L$PWD/capstone_v4/ -l:libcapstone.a -L$PWD/libxdc/ -l:libxdc.a -I$PWD/capstone_v4/include/ -I$PWD/libxdc/ $LIBS"
- QEMU_INCLUDES=" -I$PWD/capstone_v4/include/ -I$PWD/libxdc/ $QEMU_INCLUDES"
+ LIBS="-l:libcapstone.a -l:libxdc.a $LIBS"
else
LIBS="-lcapstone -lxdc $LIBS"
fi