mirror of
https://github.com/libretro/hatari.git
synced 2026-11-07 10:36:00 -10:00
140 lines
4.1 KiB
Bash
Executable File
140 lines
4.1 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# NOTE: this is a simple script wrapper around the cmake command line tools,
|
|
# for those used to the autotools configure script conventions
|
|
|
|
if ! command -v cmake > /dev/null 2>&1; then
|
|
echo "ERROR: You need the 'cmake' program to configure the Hatari build process."
|
|
echo "Please install 'cmake' first, then try again."
|
|
exit 1
|
|
fi
|
|
|
|
print_help()
|
|
{
|
|
echo "This is a simple configure script wrapper around CMake build system."
|
|
echo
|
|
echo "Hatari / build options:"
|
|
echo " --prefix=<path> Set the install prefix to path"
|
|
echo " --disable-dsp Disable DSP emulation for Falcon mode"
|
|
echo " --disable-tracing Disable tracing messages for debugging"
|
|
echo " --disable-osx-bundle Disable application bundling on macOS"
|
|
echo " --cross-compile-win64_32 Build the 32 bit Windows version using mingw-w64"
|
|
echo " --cross-compile-win64_64 Build the 64 bit Windows version using mingw-w64"
|
|
echo
|
|
echo "Debugging / hardening options:"
|
|
echo " --enable-asan Enable address sanitizer debug build"
|
|
echo " --enable-debug Enable debug (-O/-g) builds"
|
|
echo " --enable-hardened Enable compiler run-time hardening (if distro doesn't)"
|
|
echo " --enable-ssp Enable compiler stack protections"
|
|
echo " --enable-ubsan Enable undefined behavior sanitizer debug build"
|
|
echo " --enable-werror Use -Werror flag to stop on compiler warnings"
|
|
echo
|
|
echo "Please run cmake directly for full control over the build."
|
|
echo
|
|
}
|
|
|
|
cmake_args=""
|
|
build_type="Release"
|
|
|
|
while [ $# -gt 0 ]
|
|
do
|
|
preq=${1%=*} # get part before =
|
|
case $preq
|
|
in
|
|
--help)
|
|
print_help
|
|
exit 0
|
|
;;
|
|
# main options
|
|
--prefix)
|
|
prefix=${1##*=} # get part after =
|
|
cmake_args="$cmake_args -DCMAKE_INSTALL_PREFIX:PATH=$prefix"
|
|
;;
|
|
--enable-dsp)
|
|
cmake_args="$cmake_args -DENABLE_DSP_EMU:BOOL=1"
|
|
;;
|
|
--disable-dsp)
|
|
cmake_args="$cmake_args -DENABLE_DSP_EMU:BOOL=0"
|
|
;;
|
|
--enable-tracing)
|
|
cmake_args="$cmake_args -DENABLE_TRACING:BOOL=1"
|
|
;;
|
|
--disable-tracing)
|
|
cmake_args="$cmake_args -DENABLE_TRACING:BOOL=0"
|
|
;;
|
|
--enable-osx-bundle)
|
|
cmake_args="$cmake_args -DENABLE_OSX_BUNDLE:BOOL=1"
|
|
;;
|
|
--disable-osx-bundle)
|
|
cmake_args="$cmake_args -DENABLE_OSX_BUNDLE:BOOL=0"
|
|
;;
|
|
--cross-compile-win64_32)
|
|
cmake_args="$cmake_args -DCMAKE_TOOLCHAIN_FILE=cmake/Toolchain-mingw32-win64_32.cmake"
|
|
;;
|
|
--cross-compile-win64_64)
|
|
cmake_args="$cmake_args -DCMAKE_TOOLCHAIN_FILE=cmake/Toolchain-mingw32-win64_64.cmake"
|
|
;;
|
|
# debugging options
|
|
--enable-asan)
|
|
cmake_args="$cmake_args -DENABLE_ASAN:BOOL=1"
|
|
;;
|
|
--disable-asan)
|
|
cmake_args="$cmake_args -DENABLE_ASAN:BOOL=0"
|
|
;;
|
|
--enable-debug)
|
|
build_type="Debug"
|
|
cmake_args="$cmake_args -DCMAKE_BUILD_TYPE:STRING=Debug"
|
|
;;
|
|
--disable-debug)
|
|
build_type="Release"
|
|
cmake_args="$cmake_args -DCMAKE_BUILD_TYPE:STRING=Release"
|
|
;;
|
|
--enable-hardened)
|
|
cmake_args="$cmake_args -DENABLE_HARDENED:BOOL=1"
|
|
;;
|
|
--disable-hardened)
|
|
cmake_args="$cmake_args -DENABLE_HARDENED:BOOL=0"
|
|
;;
|
|
--enable-ssp)
|
|
cmake_args="$cmake_args -DENABLE_SSP:BOOL=1"
|
|
;;
|
|
--disable-ssp)
|
|
cmake_args="$cmake_args -DENABLE_SSP:BOOL=0"
|
|
;;
|
|
--enable-ubsan)
|
|
cmake_args="$cmake_args -DENABLE_UBSAN:BOOL=1"
|
|
;;
|
|
--disable-ubsan)
|
|
cmake_args="$cmake_args -DENABLE_UBSAN:BOOL=0"
|
|
;;
|
|
--enable-werror)
|
|
cmake_args="$cmake_args -DENABLE_WERROR:BOOL=1"
|
|
;;
|
|
--disable-werror)
|
|
cmake_args="$cmake_args -DENABLE_WERROR:BOOL=0"
|
|
;;
|
|
|
|
*)
|
|
echo "Invalid argument: $preq"
|
|
echo "Run $0 --help for a list of valid parameters."
|
|
exit 2
|
|
;;
|
|
esac
|
|
shift 1
|
|
done
|
|
|
|
# remove previous cmake's cache
|
|
rm -rf CMakeCache.txt CMakeFiles/
|
|
|
|
if [ -e `dirname $0`/CMakeCache.txt ]; then
|
|
echo "Source directory is not clean, please run 'make distclean' there first."
|
|
exit 1
|
|
fi
|
|
|
|
cmake `dirname $0` $cmake_args || exit 1
|
|
|
|
echo
|
|
echo "Now you must type: make; make install"
|
|
echo "to actually build and install the software"
|
|
echo
|