mirror of
				https://github.com/Z3Prover/z3
				synced 2025-10-31 19:52:29 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			122 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| # This script tests Z3
 | |
| 
 | |
| SCRIPT_DIR="$( cd ${BASH_SOURCE[0]%/*} ; echo $PWD )"
 | |
| . ${SCRIPT_DIR}/run_quiet.sh
 | |
| 
 | |
| set -x
 | |
| set -e
 | |
| set -o pipefail
 | |
| : ${Z3_SRC_DIR?"Z3_SRC_DIR must be specified"}
 | |
| : ${Z3_BUILD_DIR?"Z3_BUILD_DIR must be specified"}
 | |
| : ${PYTHON_BINDINGS?"PYTHON_BINDINGS must be specified"}
 | |
| : ${PYTHON_EXECUTABLE?"PYTHON_EXECUTABLE must be specified"}
 | |
| : ${DOTNET_BINDINGS?"DOTNET_BINDINGS must be specified"}
 | |
| : ${JAVA_BINDINGS?"JAVA_BINDINGS must be specified"}
 | |
| : ${UBSAN_BUILD?"UBSAN_BUILD must be specified"}
 | |
| : ${RUN_API_EXAMPLES?"RUN_API_EXAMPLES must be specified"}
 | |
| 
 | |
| if [ "X${RUN_API_EXAMPLES}" = "X0" ]; then
 | |
|   echo "Skipping run of API examples"
 | |
|   exit 0
 | |
| fi
 | |
| 
 | |
| # Set compiler flags
 | |
| source ${SCRIPT_DIR}/set_compiler_flags.sh
 | |
| 
 | |
| # Set CMake generator args
 | |
| source ${SCRIPT_DIR}/set_generator_args.sh
 | |
| 
 | |
| # Sanitizer environment variables
 | |
| source ${SCRIPT_DIR}/sanitizer_env.sh
 | |
| 
 | |
| cd "${Z3_BUILD_DIR}"
 | |
| 
 | |
| # Build and run C example
 | |
| cmake --build $(pwd) --target c_example "${GENERATOR_ARGS[@]}"
 | |
| run_quiet examples/c_example_build_dir/c_example
 | |
| 
 | |
| # Build and run C++ example
 | |
| cmake --build $(pwd) --target cpp_example "${GENERATOR_ARGS[@]}"
 | |
| run_quiet examples/cpp_example_build_dir/cpp_example
 | |
| 
 | |
| # Build and run tptp5 example
 | |
| cmake --build $(pwd) --target z3_tptp5 "${GENERATOR_ARGS[@]}"
 | |
| # FIXME: Do something more useful with example
 | |
| run_quiet examples/tptp_build_dir/z3_tptp5 -help
 | |
| 
 | |
| # Build an run c_maxsat_example
 | |
| cmake --build $(pwd) --target c_maxsat_example "${GENERATOR_ARGS[@]}"
 | |
| # FIXME: It is known that the maxsat example leaks memory and the
 | |
| # the Z3 developers have stated this is "wontfix".
 | |
| # See https://github.com/Z3Prover/z3/issues/1299
 | |
| run_no_lsan \
 | |
|   run_quiet \
 | |
|     examples/c_maxsat_example_build_dir/c_maxsat_example \
 | |
|     ${Z3_SRC_DIR}/examples/maxsat/ex.smt
 | |
| 
 | |
| if [ "X${UBSAN_BUILD}" = "X1" ]; then
 | |
|   # FIXME: We really need libz3 to link against a shared UBSan runtime.
 | |
|   # Right now we link against the static runtime which breaks all the
 | |
|   # non-native language bindings.
 | |
|   echo "FIXME: Can't run other examples when building with UBSan"
 | |
|   exit 0
 | |
| fi
 | |
| 
 | |
| 
 | |
| if [ "X${PYTHON_BINDINGS}" = "X1" ]; then
 | |
|   # Run python examples
 | |
|   # `all_interval_series.py` produces a lot of output so just throw
 | |
|   # away output.
 | |
|   # TODO: This example is slow should we remove it from testing?
 | |
|   if [ "X${ASAN_BUILD}" = "X1" -a "X${Z3_BUILD_TYPE}" = "XDebug" ]; then
 | |
|     # Too slow when doing ASan Debug build
 | |
|     echo "Skipping all_interval_series.py under ASan Debug build"
 | |
|   else
 | |
|     run_quiet run_non_native_binding ${PYTHON_EXECUTABLE} python/all_interval_series.py
 | |
|   fi
 | |
|   run_quiet run_non_native_binding ${PYTHON_EXECUTABLE} python/complex.py
 | |
|   run_quiet run_non_native_binding ${PYTHON_EXECUTABLE} python/example.py
 | |
|   # FIXME: `hamiltonian.py` example is disabled because its too slow.
 | |
|   #${PYTHON_EXECUTABLE} python/hamiltonian.py
 | |
|   run_quiet run_non_native_binding ${PYTHON_EXECUTABLE} python/marco.py
 | |
|   run_quiet run_non_native_binding ${PYTHON_EXECUTABLE} python/mss.py
 | |
|   run_quiet run_non_native_binding ${PYTHON_EXECUTABLE} python/socrates.py
 | |
|   run_quiet run_non_native_binding ${PYTHON_EXECUTABLE} python/visitor.py
 | |
|   run_quiet run_non_native_binding ${PYTHON_EXECUTABLE} python/z3test.py
 | |
| fi
 | |
| 
 | |
| if [ "X${DOTNET_BINDINGS}" = "X1" ]; then
 | |
|   # Build .NET example
 | |
|   # FIXME: Move compliation step into CMake target
 | |
|   mcs ${Z3_SRC_DIR}/examples/dotnet/Program.cs /target:exe /out:dotnet_test.exe /reference:Microsoft.Z3.dll /r:System.Numerics.dll
 | |
|   # Run .NET example
 | |
|   run_quiet run_non_native_binding mono ./dotnet_test.exe
 | |
| fi
 | |
| 
 | |
| if [ "X${JAVA_BINDINGS}" = "X1" ]; then
 | |
|   # Build Java example
 | |
|   # FIXME: Move compilation step into CMake target
 | |
|   mkdir -p examples/java
 | |
|   cp ${Z3_SRC_DIR}/examples/java/JavaExample.java examples/java/
 | |
|   javac examples/java/JavaExample.java -classpath com.microsoft.z3.jar
 | |
|   # Run Java example
 | |
|   if [ "$(uname)" = "Darwin" ]; then
 | |
|     # macOS
 | |
|     export DYLD_LIBRARY_PATH=$(pwd):${DYLD_LIBRARY_PATH}
 | |
|   else
 | |
|     # Assume Linux for now
 | |
|     export LD_LIBRARY_PATH=$(pwd):${LD_LIBRARY_PATH}
 | |
|   fi
 | |
|   if [ "X${ASAN_BUILD}" = "X1" ]; then
 | |
|     # The JVM seems to crash (SEGV) if we pre-load ASan
 | |
|     # so don't run it for now.
 | |
|     echo "Skipping JavaExample under ASan build"
 | |
|   else
 | |
|     run_quiet \
 | |
|       run_non_native_binding \
 | |
|         java -cp .:examples/java:com.microsoft.z3.jar JavaExample
 | |
|   fi
 | |
| fi
 | |
| 
 |