-build build-x86-default -Dmachine=nehalem $use_shared
-
-# enable cross compilation if gcc cross-compiler is found
-c=aarch64-linux-gnu-gcc
-if command -v $c >/dev/null 2>&1 ; then
- # compile the general v8a also for clang to increase coverage
- export CC="ccache clang"
- build build-arm64-host-clang $use_shared \
- --cross-file $srcdir/config/arm/arm64_armv8_linux_gcc
-
- for f in $srcdir/config/arm/arm*gcc ; do
- export CC="ccache gcc"
- build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) \
- $use_shared --cross-file $f
+# Set the install path for libraries to "lib" explicitly to prevent problems
+# with pkg-config prefixes if installed in "lib/x86_64-linux-gnu" later.
+generic_isa='nehalem'
+if ! check_cc_flags "-march=$generic_isa" ; then
+ generic_isa='corei7'
+fi
+build build-x86-generic cc skipABI -Dcheck_includes=true \
+ -Dlibdir=lib -Dcpu_instruction_set=$generic_isa $use_shared
+
+# 32-bit with default compiler
+if check_cc_flags '-m32' ; then
+ if [ -d '/usr/lib/i386-linux-gnu' ] ; then
+ # 32-bit pkgconfig on Debian/Ubuntu
+ export PKG_CONFIG_LIBDIR='/usr/lib/i386-linux-gnu/pkgconfig'
+ elif [ -d '/usr/lib32' ] ; then
+ # 32-bit pkgconfig on Arch
+ export PKG_CONFIG_LIBDIR='/usr/lib32/pkgconfig'
+ else
+ # 32-bit pkgconfig on RHEL/Fedora (lib vs lib64)
+ export PKG_CONFIG_LIBDIR='/usr/lib/pkgconfig'
+ fi
+ target_override='i386-pc-linux-gnu'
+ build build-32b cc ABI -Dc_args='-m32' -Dc_link_args='-m32'
+ target_override=
+ unset PKG_CONFIG_LIBDIR
+fi
+
+# x86 MinGW
+build build-x86-mingw $srcdir/config/x86/cross-mingw skipABI \
+ -Dexamples=helloworld
+
+# generic armv8a with clang as host compiler
+f=$srcdir/config/arm/arm64_armv8_linux_gcc
+export CC="clang"
+build build-arm64-host-clang $f ABI $use_shared
+unset CC
+# some gcc/arm configurations
+for f in $srcdir/config/arm/arm64_[bdo]*gcc ; do
+ export CC="$CCACHE gcc"
+ targetdir=build-$(basename $f | tr '_' '-' | cut -d'-' -f-2)
+ build $targetdir $f skipABI $use_shared
+ unset CC
+done
+
+# ppc configurations
+for f in $srcdir/config/ppc/ppc* ; do
+ targetdir=build-$(basename $f | cut -d'-' -f-2)
+ build $targetdir $f ABI $use_shared
+done
+
+# Test installation of the x86-generic target, to be used for checking
+# the sample apps build using the pkg-config file for cflags and libs
+load_env cc
+build_path=$(readlink -f $builds_dir/build-x86-generic)
+export DESTDIR=$build_path/install
+install_target $build_path $DESTDIR
+pc_file=$(find $DESTDIR -name libdpdk.pc)
+export PKG_CONFIG_PATH=$(dirname $pc_file):$PKG_CONFIG_PATH
+libdir=$(dirname $(find $DESTDIR -name librte_eal.so))
+export LD_LIBRARY_PATH=$libdir:$LD_LIBRARY_PATH
+examples=${DPDK_BUILD_TEST_EXAMPLES:-"cmdline helloworld l2fwd l3fwd skeleton timer"}
+# if pkg-config defines the necessary flags, test building some examples
+if pkg-config --define-prefix libdpdk >/dev/null 2>&1; then
+ export PKGCONF="pkg-config --define-prefix"
+ for example in $examples; do
+ echo "## Building $example"
+ [ $example = helloworld ] && static=static || static= # save disk space
+ $MAKE -C $DESTDIR/usr/local/share/dpdk/examples/$example \
+ clean shared $static >&$veryverbose