diff --git a/Makefile.in b/Makefile.in index f3dcf7b70..d2ce55797 100644 --- a/Makefile.in +++ b/Makefile.in @@ -20,6 +20,8 @@ LIBS=@LIBS@ LDFLAGS=@LDFLAGS@ -lpthread -fopenmp LDFLAGS_EXTRA= PREFIX=@prefix@ +HAS_PYTHON=@HAS_PYTHON@ +PYTHON_PACKAGE_DIR=@PYTHON_PACKAGE_DIR@ ######################### Z3=z3 @@ -464,3 +466,25 @@ uninstall: @rm -f $(PREFIX)/include/z3_v1.h @rm -f $(PREFIX)/include/z3_macros.h @rm -f $(PREFIX)/include/z3++.h + +install-python: $(BIN_DIR)/lib$(Z3).so + @if test $(HAS_PYTHON) -eq 0; then echo "Python is not available in your system."; exit 1; fi + @echo "Installing Python bindings at $(PYTHON_PACKAGE_DIR)." + @cp python/z3.py $(PYTHON_PACKAGE_DIR) + @cp python/z3core.py $(PYTHON_PACKAGE_DIR) + @cp python/z3types.py $(PYTHON_PACKAGE_DIR) + @cp python/z3consts.py $(PYTHON_PACKAGE_DIR) + @cp python/z3tactics.py $(PYTHON_PACKAGE_DIR) + @cp python/z3printer.py $(PYTHON_PACKAGE_DIR) + @cp $(BIN_DIR)/lib$(Z3).so $(PYTHON_PACKAGE_DIR) + +uninstall-python: + @if test $(HAS_PYTHON) -eq 0; then echo "Python is not available in your system."; exit 1; fi + @echo "Uninstalling Python bindings from $(PYTHON_PACKAGE_DIR)." + @rm -f $(PYTHON_PACKAGE_DIR)/z3.py + @rm -f $(PYTHON_PACKAGE_DIR)/z3core.py + @rm -f $(PYTHON_PACKAGE_DIR)/z3types.py + @rm -f $(PYTHON_PACKAGE_DIR)/z3consts.py + @rm -f $(PYTHON_PACKAGE_DIR)/z3tactics.py + @rm -f $(PYTHON_PACKAGE_DIR)/z3printer.py + @rm -f $(PYTHON_PACKAGE_DIR)/$(BIN_DIR)/lib$(Z3).so diff --git a/README b/README index 696f8e0e8..ab68e4911 100644 --- a/README +++ b/README @@ -36,10 +36,19 @@ Use the following commands to install in a different prefix (e.g., /usr). make sudo make install -To uninstall z3, use +To uninstall Z3, use sudo make uninstall +To install Z3 Python bindings, use + + sudo make install-python + +To uninstall Z3 Python bindings, use + + sudo make uninstall-python + + Remark: the Z3 makefile imports the source file list from Visual Studio project files. To add new source files to the Z3 core, you must include them at: lib/lib.vcxproj diff --git a/configure.in b/configure.in index 66a6f75c3..7f1ad4a48 100644 --- a/configure.in +++ b/configure.in @@ -45,6 +45,36 @@ AC_SUBST(SLIBFLAGS) AC_SUBST(COMP_VERSIONS) AC_SUBST(STATIC_FLAGS) +cat > tst_python.py <= "3": + exit(1) +exit(0) +EOF + +if python tst_python.py; then + HAS_PYTHON="1" + HAS_PYTHON_MSG="yes" +cat > get_py_dir.py << EOF +import distutils.sysconfig +print distutils.sysconfig.get_python_lib() +EOF + if python get_py_dir.py > dir.txt; then + PYTHON_PACKAGE_DIR=`cat dir.txt` + else + HAS_PYTHON="0" + HAS_PYTHON_MSG="no" + fi + rm -f dir.txt + rm -f get_py_dir.py +else + HAS_PYTHON="0" + HAS_PYTHON_MSG="no" +fi +AC_SUBST(PYTHON_PACKAGE_DIR) +AC_SUBST(HAS_PYTHON) +rm -f tst_python.py + cat > tst64.c <