mirror of
https://github.com/Z3Prover/z3
synced 2025-04-12 20:18:18 +00:00
eliminated autoconf dependency
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
This commit is contained in:
parent
b3e048782c
commit
bd021815b1
14
README
14
README
|
@ -12,8 +12,6 @@ Z3 can be built using Visual Studio Command Prompt and make/g++.
|
||||||
2) Building Z3 using make/g++ and Python
|
2) Building Z3 using make/g++ and Python
|
||||||
Execute:
|
Execute:
|
||||||
|
|
||||||
autoconf
|
|
||||||
./configure
|
|
||||||
python scripts/mk_make.py
|
python scripts/mk_make.py
|
||||||
cd build
|
cd build
|
||||||
make
|
make
|
||||||
|
@ -24,9 +22,7 @@ You can change the installation p
|
||||||
|
|
||||||
Use the following commands to install in a different prefix (e.g., /home/leo).
|
Use the following commands to install in a different prefix (e.g., /home/leo).
|
||||||
|
|
||||||
autoconf
|
python scripts/mk_make.py --prefix=/home/leo
|
||||||
./configure --prefix=/home/leo
|
|
||||||
python scripts/mk_make.py
|
|
||||||
cd build
|
cd build
|
||||||
make
|
make
|
||||||
sudo make install
|
sudo make install
|
||||||
|
@ -35,14 +31,10 @@ To uninstall Z3, use
|
||||||
|
|
||||||
sudo make uninstall
|
sudo make uninstall
|
||||||
|
|
||||||
3) Building Z3 using clang++ on Linux/OSX
|
3) Building Z3 using clang and clang++ on Linux/OSX
|
||||||
Remark: clang does not support OpenMP yet.
|
Remark: clang does not support OpenMP yet.
|
||||||
|
|
||||||
autoconf
|
CXX=clang++ CC=clang python scripts/mk_make.py
|
||||||
./configure CXX=clang++
|
|
||||||
python scripts/mk_make.py
|
|
||||||
cd build
|
cd build
|
||||||
make
|
make
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
224
configure.ac
224
configure.ac
|
@ -1,224 +0,0 @@
|
||||||
AC_INIT([z3], [4.2])
|
|
||||||
AC_CONFIG_SRCDIR(src/util/util.cpp)
|
|
||||||
AC_PREFIX_DEFAULT(/usr)
|
|
||||||
|
|
||||||
###################
|
|
||||||
#
|
|
||||||
# Testing python
|
|
||||||
#
|
|
||||||
###################
|
|
||||||
AC_ARG_WITH(python,
|
|
||||||
[AS_HELP_STRING([--with-python=PYTHON_PATH],
|
|
||||||
[specify the location of the python 2.x executable.])])
|
|
||||||
|
|
||||||
PYTHON="python"
|
|
||||||
if test "x$with_python" != x; then
|
|
||||||
PYTHON="$with_python"
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_SUBST(PYTHON)
|
|
||||||
|
|
||||||
cat > tst_python.py <<EOF
|
|
||||||
from sys import version
|
|
||||||
if version >= "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
|
|
||||||
rm -f tst_python.py
|
|
||||||
|
|
||||||
if test "$HAS_PYTHON" = "0"; then
|
|
||||||
AC_MSG_ERROR([You need Python 2.x to generate the Z3 Makefiles.\nPlease download python at http://python.org])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_SUBST(PYTHON_PACKAGE_DIR)
|
|
||||||
|
|
||||||
###################
|
|
||||||
#
|
|
||||||
# Configuring bignum package
|
|
||||||
#
|
|
||||||
###################
|
|
||||||
# Select big num package
|
|
||||||
ARITH="internal"
|
|
||||||
AC_ARG_WITH([gmp], [AS_HELP_STRING([--with-gmp], [Use GMP for multi-precision naturals (default=no)])], [use_gmp=yes], [use_gmp=no])
|
|
||||||
AS_IF([test "$use_gmp" = "yes"],[
|
|
||||||
ARITH="gmp"
|
|
||||||
CPPFLAGS="$CPPFLAGS -D_MP_GMP"
|
|
||||||
],[
|
|
||||||
CPPFLAGS="$CPPFLAGS -D_MP_INTERNAL"
|
|
||||||
])
|
|
||||||
AC_SUBST(EXTRA_LIB_SRCS)
|
|
||||||
|
|
||||||
if test "$ARITH" = "gmp"; then
|
|
||||||
AC_CHECK_LIB(gmp, __gmpz_init, ,
|
|
||||||
[AC_MSG_ERROR([GNU MP not found, see http://gmplib.org/])])
|
|
||||||
AC_CHECK_HEADER([gmp.h], GMP='gmp', AC_MSG_ERROR([GMP include file not found]))
|
|
||||||
AC_SUBST(LIBS)
|
|
||||||
echo $CPPFLAGS
|
|
||||||
fi
|
|
||||||
|
|
||||||
###################
|
|
||||||
#
|
|
||||||
# Basic configuration
|
|
||||||
#
|
|
||||||
###################
|
|
||||||
# Sets CXX
|
|
||||||
AC_LANG([C++])
|
|
||||||
AC_PROG_CXX(g++ clang++ false)
|
|
||||||
AC_PROG_CC
|
|
||||||
if test $CXX = "false"; then
|
|
||||||
AC_MSG_ERROR([C++ compiler was not found])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_PROG_MAKE_SET
|
|
||||||
|
|
||||||
AC_LANG_CPLUSPLUS
|
|
||||||
|
|
||||||
# Sets GREP
|
|
||||||
AC_PROG_GREP
|
|
||||||
|
|
||||||
# Sets SED
|
|
||||||
AC_PROG_SED
|
|
||||||
|
|
||||||
AS_IF([test "$CXX" = "g++"], [
|
|
||||||
# Enable OpenMP
|
|
||||||
CXXFLAGS="$CXXFLAGS -fopenmp"
|
|
||||||
LDFLAGS="$LDFLAGS -fopenmp"
|
|
||||||
SLIBEXTRAFLAGS="$SLIBEXTRAFLAGS -fopenmp"
|
|
||||||
# Use -mfpmath=sse
|
|
||||||
CXXFLAGS="$CXXFLAGS -mfpmath=sse"
|
|
||||||
],
|
|
||||||
[test "$CXX" = "clang++"], [
|
|
||||||
# OpenMP is not supported in clang++
|
|
||||||
CXXFLAGS="$CXXFLAGS -D _NO_OMP_"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
AC_MSG_ERROR([Unsupported compiler: $CXX])
|
|
||||||
])
|
|
||||||
|
|
||||||
AR=ar
|
|
||||||
AC_SUBST(AR)
|
|
||||||
|
|
||||||
###################
|
|
||||||
#
|
|
||||||
# Platform characteristics
|
|
||||||
#
|
|
||||||
###################
|
|
||||||
host_os=`uname -s`
|
|
||||||
|
|
||||||
AS_IF([test "$host_os" = "Darwin"], [
|
|
||||||
PLATFORM=osx
|
|
||||||
SO_EXT=.dylib
|
|
||||||
SLIBFLAGS="$SLIBFLAGS -dynamiclib"
|
|
||||||
COMP_VERSIONS="-compatibility_version \$(Z3_VERSION) -current_version \$(Z3_VERSION)"
|
|
||||||
STATIC_FLAGS=
|
|
||||||
], [test "$host_os" = "Linux"], [
|
|
||||||
CXXFLAGS=$CXXFLAGS -D _LINUX_
|
|
||||||
PLATFORM=linux
|
|
||||||
SO_EXT=.so
|
|
||||||
LDFLAGS="$LDFLAGS -lrt"
|
|
||||||
SLIBFLAGS="$SLIBFLAGS -shared"
|
|
||||||
COMP_VERSIONS=
|
|
||||||
STATIC_FLAGS=-static
|
|
||||||
CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
|
|
||||||
if test "$CXX" = "clang++"; then
|
|
||||||
# More flags for clang++ for Linux
|
|
||||||
CXXFLAGS="$CXXFLAGS -Wno-unknown-pragmas -Wno-overloaded-virtual -Wno-unused-value"
|
|
||||||
fi
|
|
||||||
SLIBEXTRAFLAGS="$SLIBEXTRAFLAGS -lrt"
|
|
||||||
], [test "$host_os" = "FreeBSD"], [
|
|
||||||
CXXFLAGS="$CXXFLAGS -D _FREEBSD_"
|
|
||||||
PLATFORM=bsd
|
|
||||||
SO_EXT=.so
|
|
||||||
LDFLAGS="$LDFLAGS -lrt"
|
|
||||||
SLIBFLAGS="$SLIBFLAGS -shared"
|
|
||||||
COMP_VERSIONS=
|
|
||||||
STATIC_FLAGS=-static
|
|
||||||
SLIBEXTRAFLAGS="$SLIBEXTRAFLAGS -lrt"
|
|
||||||
], [test "${host_os:0:6}" = "CYGWIN"], [
|
|
||||||
PLATFORM=win
|
|
||||||
SO_EXT=.dll
|
|
||||||
SLIBFLAGS="$SLIBFLAGS -shared"
|
|
||||||
COMP_VERSIONS=
|
|
||||||
CXXFLAGS="$CXXFLAGS -D_CYGWIN -fno-strict-aliasing"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
AC_MSG_ERROR([Unknown host platform: $host_os])
|
|
||||||
])
|
|
||||||
|
|
||||||
AC_SUBST(SLIBFLAGS)
|
|
||||||
AC_SUBST(LDFLAGS)
|
|
||||||
AC_SUBST(SLIBEXTRAFLAGS)
|
|
||||||
AC_SUBST(SO_EXT)
|
|
||||||
|
|
||||||
###################
|
|
||||||
#
|
|
||||||
# Checking if 32 or 64 bits
|
|
||||||
#
|
|
||||||
###################
|
|
||||||
AC_CHECK_SIZEOF(int *)
|
|
||||||
|
|
||||||
if test $ac_cv_sizeof_int_p -eq 8; then
|
|
||||||
dnl In 64-bit systems we have to compile using -fPIC
|
|
||||||
CXXFLAGS="$CXXFLAGS -fPIC"
|
|
||||||
CPPFLAGS="$CPPFLAGS -D_AMD64_"
|
|
||||||
dnl Only enable use of thread local storage for 64-bit Linux. It is disabled for OSX and 32-bit Linux
|
|
||||||
if test $PLATFORM = "linux"; then
|
|
||||||
CPPFLAGS="$CPPFLAGS -D_USE_THREAD_LOCAL"
|
|
||||||
fi
|
|
||||||
IS_X64="yes"
|
|
||||||
else
|
|
||||||
IS_X64="no"
|
|
||||||
fi
|
|
||||||
|
|
||||||
###################
|
|
||||||
#
|
|
||||||
# Generating configuration
|
|
||||||
#
|
|
||||||
###################
|
|
||||||
AC_OUTPUT(scripts/config-debug.mk scripts/config-release.mk)
|
|
||||||
|
|
||||||
###################
|
|
||||||
#
|
|
||||||
# Checking how to build Z3
|
|
||||||
#
|
|
||||||
###################
|
|
||||||
|
|
||||||
# Python is available, give user the option to generate the make files wherever they want
|
|
||||||
cat <<EOF
|
|
||||||
Z3 was configured with success.
|
|
||||||
Host platform: $PLATFORM
|
|
||||||
Compiler: $CXX
|
|
||||||
Arithmetic: $ARITH
|
|
||||||
Python: $PYTHON
|
|
||||||
Prefix: $prefix
|
|
||||||
64-bit: $IS_X64
|
|
||||||
|
|
||||||
To build and install Z3, execute:
|
|
||||||
python scripts/mk_make.py
|
|
||||||
cd build
|
|
||||||
make
|
|
||||||
sudo make install
|
|
||||||
EOF
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
CC=@CC@
|
|
||||||
PREFIX=@prefix@
|
|
||||||
CXX=@CXX@
|
|
||||||
CXXFLAGS=@CPPFLAGS@ @CXXFLAGS@ -DZ3DEBUG -D_TRACE -c -g -Wall -msse -msse2
|
|
||||||
CXX_OUT_FLAG=-o
|
|
||||||
OBJ_EXT=.o
|
|
||||||
LIB_EXT=.a
|
|
||||||
AR=@AR@
|
|
||||||
AR_FLAGS=rcs
|
|
||||||
AR_OUTFLAG=
|
|
||||||
EXE_EXT=
|
|
||||||
LINK=@CXX@
|
|
||||||
LINK_FLAGS=
|
|
||||||
LINK_OUT_FLAG=-o
|
|
||||||
LINK_EXTRA_FLAGS=-lpthread @LDFLAGS@
|
|
||||||
SO_EXT=@SO_EXT@
|
|
||||||
SLINK=@CXX@
|
|
||||||
SLINK_FLAGS=@SLIBFLAGS@
|
|
||||||
SLINK_EXTRA_FLAGS=@SLIBEXTRAFLAGS@
|
|
||||||
SLINK_OUT_FLAG=-o
|
|
|
@ -1,20 +0,0 @@
|
||||||
CC=@CC@
|
|
||||||
PREFIX=@prefix@
|
|
||||||
CXX=@CXX@
|
|
||||||
CXXFLAGS=@CPPFLAGS@ @CXXFLAGS@ -c -O3 -D _EXTERNAL_RELEASE -fomit-frame-pointer -msse -msse2
|
|
||||||
CXX_OUT_FLAG=-o
|
|
||||||
OBJ_EXT=.o
|
|
||||||
LIB_EXT=.a
|
|
||||||
AR=@AR@
|
|
||||||
AR_FLAGS=rcs
|
|
||||||
AR_OUTFLAG=
|
|
||||||
EXE_EXT=
|
|
||||||
LINK=@CXX@
|
|
||||||
LINK_FLAGS=
|
|
||||||
LINK_OUT_FLAG=-o
|
|
||||||
LINK_EXTRA_FLAGS=-lpthread @LDFLAGS@
|
|
||||||
SO_EXT=@SO_EXT@
|
|
||||||
SLINK=@CXX@
|
|
||||||
SLINK_FLAGS=@SLIBFLAGS@
|
|
||||||
SLINK_EXTRA_FLAGS=@SLIBEXTRAFLAGS@
|
|
||||||
SLINK_OUT_FLAG=-o
|
|
|
@ -1,21 +0,0 @@
|
||||||
CC=cl
|
|
||||||
CXX=cl
|
|
||||||
CXXFLAGS=/c /Zi /nologo /openmp /W3 /WX- /Od /Oy- /D WIN32 /D _AMD64_ /D _DEBUG /D Z3DEBUG /D _CONSOLE /D _TRACE /D _WINDOWS /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /analyze-
|
|
||||||
CXX_OUT_FLAG=/Fo
|
|
||||||
OBJ_EXT=.obj
|
|
||||||
LIB_EXT=.lib
|
|
||||||
AR=lib
|
|
||||||
AR_FLAGS=/nologo
|
|
||||||
AR_OUTFLAG=/OUT:
|
|
||||||
EXE_EXT=.exe
|
|
||||||
LINK=cl
|
|
||||||
LINK_FLAGS=/nologo /MDd
|
|
||||||
LINK_EXTRA_FLAGS=/link /DEBUG /MACHINE:X64 /SUBSYSTEM:CONSOLE /INCREMENTAL:NO /STACK:8388608 /OPT:REF /OPT:ICF /TLBID:1 /DYNAMICBASE /NXCOMPAT
|
|
||||||
LINK_OUT_FLAG=/Fe
|
|
||||||
|
|
||||||
SO_EXT=.dll
|
|
||||||
SLINK=cl
|
|
||||||
SLINK_FLAGS=/nologo /LDd
|
|
||||||
SLINK_EXTRA_FLAGS=/link /DEBUG /MACHINE:X64 /SUBSYSTEM:WINDOWS /INCREMENTAL:NO /STACK:8388608 /OPT:REF /OPT:ICF /TLBID:1 /DYNAMICBASE:NO
|
|
||||||
SLINK_OUT_FLAG=/Fe
|
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
CC=cl
|
|
||||||
CXX=cl
|
|
||||||
CXXFLAGS=/c /Zi /nologo /openmp /W3 /WX- /Od /Oy- /D WIN32 /D _DEBUG /D Z3DEBUG /D _CONSOLE /D _TRACE /D _WINDOWS /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /analyze- /arch:SSE2
|
|
||||||
CXX_OUT_FLAG=/Fo
|
|
||||||
OBJ_EXT=.obj
|
|
||||||
LIB_EXT=.lib
|
|
||||||
AR=lib
|
|
||||||
AR_FLAGS=/nologo
|
|
||||||
AR_OUTFLAG=/OUT:
|
|
||||||
EXE_EXT=.exe
|
|
||||||
LINK=cl
|
|
||||||
LINK_FLAGS=/nologo /MDd
|
|
||||||
LINK_EXTRA_FLAGS=/link /DEBUG /MACHINE:X86 /SUBSYSTEM:CONSOLE /INCREMENTAL:NO /STACK:8388608 /OPT:REF /OPT:ICF /TLBID:1 /DYNAMICBASE /NXCOMPAT
|
|
||||||
LINK_OUT_FLAG=/Fe
|
|
||||||
|
|
||||||
SO_EXT=.dll
|
|
||||||
SLINK=cl
|
|
||||||
SLINK_FLAGS=/nologo /LDd
|
|
||||||
SLINK_EXTRA_FLAGS=/link /DEBUG /MACHINE:X86 /SUBSYSTEM:WINDOWS /INCREMENTAL:NO /STACK:8388608 /OPT:REF /OPT:ICF /TLBID:1 /DYNAMICBASE:NO
|
|
||||||
SLINK_OUT_FLAG=/Fe
|
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
CC=cl
|
|
||||||
CXX=cl
|
|
||||||
CXXFLAGS=/c /Zi /nologo /openmp /W3 /WX- /O2 /D _EXTERNAL_RELEASE /D WIN32 /D NDEBUG /D _LIB /D _WINDOWS /D _AMD64_ /D _UNICODE /D UNICODE /Gm- /EHsc /MD /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TP
|
|
||||||
CXX_OUT_FLAG=/Fo
|
|
||||||
OBJ_EXT=.obj
|
|
||||||
LIB_EXT=.lib
|
|
||||||
AR=lib
|
|
||||||
AR_FLAGS=/nologo
|
|
||||||
AR_OUTFLAG=/OUT:
|
|
||||||
EXE_EXT=.exe
|
|
||||||
LINK=cl
|
|
||||||
LINK_FLAGS=/nologo /MD
|
|
||||||
LINK_EXTRA_FLAGS=/link /MACHINE:X64 /SUBSYSTEM:CONSOLE /INCREMENTAL:NO /STACK:8388608
|
|
||||||
LINK_OUT_FLAG=/Fe
|
|
||||||
|
|
||||||
SO_EXT=.dll
|
|
||||||
SLINK=cl
|
|
||||||
SLINK_FLAGS=/nologo /LD
|
|
||||||
SLINK_EXTRA_FLAGS=/link /MACHINE:X64 /SUBSYSTEM:WINDOWS /INCREMENTAL:NO /STACK:8388608
|
|
||||||
SLINK_OUT_FLAG=/Fe
|
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
CC=cl
|
|
||||||
CXX=cl
|
|
||||||
CXXFLAGS=/nologo /c /Zi /openmp /W3 /WX- /O2 /Oy- /D _EXTERNAL_RELEASE /D WIN32 /D NDEBUG /D _CONSOLE /D _WINDOWS /D ASYNC_COMMANDS /Gm- /EHsc /MD /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /analyze- /arch:SSE2
|
|
||||||
CXX_OUT_FLAG=/Fo
|
|
||||||
OBJ_EXT=.obj
|
|
||||||
LIB_EXT=.lib
|
|
||||||
AR=lib
|
|
||||||
AR_FLAGS=/nologo
|
|
||||||
AR_OUTFLAG=/OUT:
|
|
||||||
EXE_EXT=.exe
|
|
||||||
LINK=cl
|
|
||||||
LINK_FLAGS=/nologo /MD
|
|
||||||
LINK_EXTRA_FLAGS=/link /DEBUG /MACHINE:X86 /SUBSYSTEM:CONSOLE /INCREMENTAL:NO /STACK:8388608 /OPT:REF /OPT:ICF /TLBID:1 /DYNAMICBASE /NXCOMPAT
|
|
||||||
LINK_OUT_FLAG=/Fe
|
|
||||||
|
|
||||||
SO_EXT=.dll
|
|
||||||
SLINK=cl
|
|
||||||
SLINK_FLAGS=/nologo /LD
|
|
||||||
SLINK_EXTRA_FLAGS=/link /DEBUG /MACHINE:X86 /SUBSYSTEM:WINDOWS /INCREMENTAL:NO /STACK:8388608 /OPT:REF /OPT:ICF /TLBID:1 /DYNAMICBASE:NO
|
|
||||||
SLINK_OUT_FLAG=/Fe
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -6,17 +6,36 @@
|
||||||
#
|
#
|
||||||
# Author: Leonardo de Moura (leonardo)
|
# Author: Leonardo de Moura (leonardo)
|
||||||
############################################
|
############################################
|
||||||
|
import sys
|
||||||
|
|
||||||
|
if sys.version >= "3":
|
||||||
|
print "ERROR: python 2.x required."
|
||||||
|
exit(1)
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import glob
|
import glob
|
||||||
import re
|
import re
|
||||||
import getopt
|
import getopt
|
||||||
import sys
|
|
||||||
import shutil
|
import shutil
|
||||||
from mk_exception import *
|
from mk_exception import *
|
||||||
from fnmatch import fnmatch
|
from fnmatch import fnmatch
|
||||||
import distutils.sysconfig
|
import distutils.sysconfig
|
||||||
import compileall
|
import compileall
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
def getenv(name, default):
|
||||||
|
try:
|
||||||
|
return os.environ[name]
|
||||||
|
except:
|
||||||
|
return default
|
||||||
|
|
||||||
|
CXX=getenv("CXX", None)
|
||||||
|
CC=getenv("CC", None)
|
||||||
|
CPPFLAGS=getenv("CPPFLAGS", "")
|
||||||
|
CXXFLAGS=getenv("CXXFLAGS", "")
|
||||||
|
LDFLAGS=getenv("LDFLAGS", "")
|
||||||
|
CXX_COMPILERS=['g++', 'clang++']
|
||||||
|
C_COMPILERS=['gcc', 'clang']
|
||||||
PYTHON_PACKAGE_DIR=distutils.sysconfig.get_python_lib()
|
PYTHON_PACKAGE_DIR=distutils.sysconfig.get_python_lib()
|
||||||
BUILD_DIR='build'
|
BUILD_DIR='build'
|
||||||
REV_BUILD_DIR='..'
|
REV_BUILD_DIR='..'
|
||||||
|
@ -41,11 +60,130 @@ VS_PROJ = False
|
||||||
TRACE = False
|
TRACE = False
|
||||||
DOTNET_ENABLED=False
|
DOTNET_ENABLED=False
|
||||||
STATIC_LIB=False
|
STATIC_LIB=False
|
||||||
|
|
||||||
VER_MAJOR=None
|
VER_MAJOR=None
|
||||||
VER_MINOR=None
|
VER_MINOR=None
|
||||||
VER_BUILD=None
|
VER_BUILD=None
|
||||||
VER_REVISION=None
|
VER_REVISION=None
|
||||||
|
PREFIX='/usr'
|
||||||
|
GMP=False
|
||||||
|
|
||||||
|
def which(program):
|
||||||
|
import os
|
||||||
|
def is_exe(fpath):
|
||||||
|
return os.path.isfile(fpath) and os.access(fpath, os.X_OK)
|
||||||
|
|
||||||
|
fpath, fname = os.path.split(program)
|
||||||
|
if fpath:
|
||||||
|
if is_exe(program):
|
||||||
|
return program
|
||||||
|
else:
|
||||||
|
for path in getenv("PATH", "").split(os.pathsep):
|
||||||
|
exe_file = os.path.join(path, program)
|
||||||
|
if is_exe(exe_file):
|
||||||
|
return exe_file
|
||||||
|
|
||||||
|
class TempFile:
|
||||||
|
def __init__(self, name):
|
||||||
|
try:
|
||||||
|
self.name = name
|
||||||
|
self.fname = open(name, 'w')
|
||||||
|
except:
|
||||||
|
raise MKException("Failed to create temporary file '%s'" % self.name)
|
||||||
|
|
||||||
|
def add(self, s):
|
||||||
|
self.fname.write(s)
|
||||||
|
|
||||||
|
def commit(self):
|
||||||
|
self.fname.close()
|
||||||
|
|
||||||
|
def __del__(self):
|
||||||
|
self.fname.close()
|
||||||
|
try:
|
||||||
|
os.remove(self.name)
|
||||||
|
except:
|
||||||
|
raise MKException("Failed to eliminate temporary file '%s'" % self.name)
|
||||||
|
|
||||||
|
def exec_cmd(cmd):
|
||||||
|
if isinstance(cmd, str):
|
||||||
|
cmd = cmd.split(' ')
|
||||||
|
new_cmd = []
|
||||||
|
for e in cmd:
|
||||||
|
e = e.strip(' ')
|
||||||
|
if e != "":
|
||||||
|
se = e.split(' ')
|
||||||
|
if len(se) > 1:
|
||||||
|
new_cmd.extend(se)
|
||||||
|
else:
|
||||||
|
new_cmd.append(e)
|
||||||
|
cmd = new_cmd
|
||||||
|
null = open(os.devnull, 'wb')
|
||||||
|
try:
|
||||||
|
return subprocess.call(cmd, stdout=null, stderr=null)
|
||||||
|
except:
|
||||||
|
# Failed to create process
|
||||||
|
return 1
|
||||||
|
|
||||||
|
def exec_compiler_cmd(cmd):
|
||||||
|
r = exec_cmd(cmd)
|
||||||
|
if os.path.exists('a.out'):
|
||||||
|
os.remove('a.out')
|
||||||
|
return r
|
||||||
|
|
||||||
|
def test_cxx_compiler(cc):
|
||||||
|
if is_verbose():
|
||||||
|
print "Testing %s..." % cc
|
||||||
|
t = TempFile('tst.cpp')
|
||||||
|
t.add('#include<iostream>\nint main() { return 0; }\n')
|
||||||
|
t.commit()
|
||||||
|
return exec_compiler_cmd([cc, CPPFLAGS, CXXFLAGS, 'tst.cpp', LDFLAGS]) == 0
|
||||||
|
|
||||||
|
def test_c_compiler(cc):
|
||||||
|
if is_verbose():
|
||||||
|
print "Testing %s..." % cc
|
||||||
|
t = TempFile('tst.c')
|
||||||
|
t.add('#include<stdio.h>\nint main() { return 0; }\n')
|
||||||
|
t.commit()
|
||||||
|
return exec_compiler_cmd([cc, CPPFLAGS, 'tst.c', LDFLAGS]) == 0
|
||||||
|
|
||||||
|
def test_gmp(cc):
|
||||||
|
if is_verbose():
|
||||||
|
print "Testing GMP..."
|
||||||
|
t = TempFile('tst.cpp')
|
||||||
|
t.add('#include<gmp.h>\nint main() { mpz_t t; mpz_init(t); mpz_clear(t); return 0; }\n')
|
||||||
|
t.commit()
|
||||||
|
return exec_cmd([cc, CPPFLAGS, CXXFLAGS, 'tst.cpp', LDFLAGS, '-lgmp']) == 0
|
||||||
|
|
||||||
|
def is64():
|
||||||
|
return sys.maxsize >= 2**32
|
||||||
|
|
||||||
|
def find_ar():
|
||||||
|
if is_verbose():
|
||||||
|
print "Testing ar..."
|
||||||
|
if exec_cmd(['ar', '--version']) != 0:
|
||||||
|
raise MKException('ar (archive tool) was not found')
|
||||||
|
return "ar"
|
||||||
|
|
||||||
|
def find_cxx_compiler():
|
||||||
|
global CXX, CXX_COMPILERS
|
||||||
|
if CXX != None:
|
||||||
|
if test_cxx_compiler(CXX):
|
||||||
|
return CXX
|
||||||
|
for cxx in CXX_COMPILERS:
|
||||||
|
if test_cxx_compiler(cxx):
|
||||||
|
CXX = cxx
|
||||||
|
return CXX
|
||||||
|
raise MKException('C++ compiler was not found. Try to set the environment variable CXX with the C++ compiler available in your system.')
|
||||||
|
|
||||||
|
def find_c_compiler():
|
||||||
|
global CC, C_COMPILERS
|
||||||
|
if CC != None:
|
||||||
|
if test_c_compiler(CC):
|
||||||
|
return CC
|
||||||
|
for c in C_COMPILERS:
|
||||||
|
if test_c_compiler(c):
|
||||||
|
CC = c
|
||||||
|
return CC
|
||||||
|
raise MKException('C compiler was not found. Try to set the environment variable CC with the C compiler available in your system.')
|
||||||
|
|
||||||
def set_version(major, minor, build, revision):
|
def set_version(major, minor, build, revision):
|
||||||
global VER_MAJOR, VER_MINOR, VER_BUILD, VER_REVISION
|
global VER_MAJOR, VER_MINOR, VER_BUILD, VER_REVISION
|
||||||
|
@ -115,6 +253,9 @@ def display_help():
|
||||||
print "It must be executed from the Z3 root directory."
|
print "It must be executed from the Z3 root directory."
|
||||||
print "\nOptions:"
|
print "\nOptions:"
|
||||||
print " -h, --help display this message."
|
print " -h, --help display this message."
|
||||||
|
if not IS_WINDOWS:
|
||||||
|
print " -p, --prefix installation prefix (default: %s)." % PREFIX
|
||||||
|
print " -g, --gmp use GMP."
|
||||||
print " -s, --silent do not print verbose messages."
|
print " -s, --silent do not print verbose messages."
|
||||||
print " -b <sudir>, --build=<subdir> subdirectory where Z3 will be built (default: build)."
|
print " -b <sudir>, --build=<subdir> subdirectory where Z3 will be built (default: build)."
|
||||||
print " -d, --debug compile Z3 in debug mode."
|
print " -d, --debug compile Z3 in debug mode."
|
||||||
|
@ -129,8 +270,8 @@ def display_help():
|
||||||
|
|
||||||
# Parse configuration option for mk_make script
|
# Parse configuration option for mk_make script
|
||||||
def parse_options():
|
def parse_options():
|
||||||
global VERBOSE, DEBUG_MODE, IS_WINDOWS, VS_X64, ONLY_MAKEFILES, SHOW_CPPS, VS_PROJ, TRACE, DOTNET_ENABLED, STATIC_LIB
|
global VERBOSE, DEBUG_MODE, IS_WINDOWS, VS_X64, ONLY_MAKEFILES, SHOW_CPPS, VS_PROJ, TRACE, DOTNET_ENABLED, STATIC_LIB, PREFIX, GMP
|
||||||
options, remainder = getopt.gnu_getopt(sys.argv[1:], 'b:dsxhmcvtn', ['build=',
|
options, remainder = getopt.gnu_getopt(sys.argv[1:], 'b:dsxhmcvtnp:g', ['build=',
|
||||||
'debug',
|
'debug',
|
||||||
'silent',
|
'silent',
|
||||||
'x64',
|
'x64',
|
||||||
|
@ -140,7 +281,9 @@ def parse_options():
|
||||||
'vsproj',
|
'vsproj',
|
||||||
'trace',
|
'trace',
|
||||||
'nodotnet',
|
'nodotnet',
|
||||||
'staticlib'
|
'staticlib',
|
||||||
|
'prefix=',
|
||||||
|
'gmp'
|
||||||
])
|
])
|
||||||
for opt, arg in options:
|
for opt, arg in options:
|
||||||
if opt in ('-b', '--build'):
|
if opt in ('-b', '--build'):
|
||||||
|
@ -169,6 +312,10 @@ def parse_options():
|
||||||
DOTNET_ENABLED = False
|
DOTNET_ENABLED = False
|
||||||
elif opt in ('--staticlib'):
|
elif opt in ('--staticlib'):
|
||||||
STATIC_LIB = True
|
STATIC_LIB = True
|
||||||
|
elif opt in ('-p', '--prefix'):
|
||||||
|
PREFIX = arg
|
||||||
|
elif opt in ('-g', '--gmp'):
|
||||||
|
GMP = True
|
||||||
else:
|
else:
|
||||||
raise MKException("Invalid command line option '%s'" % opt)
|
raise MKException("Invalid command line option '%s'" % opt)
|
||||||
|
|
||||||
|
@ -343,14 +490,7 @@ class Component:
|
||||||
out.write('\n')
|
out.write('\n')
|
||||||
if SHOW_CPPS:
|
if SHOW_CPPS:
|
||||||
out.write('\t@echo %s/%s\n' % (self.src_dir, cppfile))
|
out.write('\t@echo %s/%s\n' % (self.src_dir, cppfile))
|
||||||
# TRACE is enabled in debug mode by default
|
out.write('\t@$(CXX) $(CXXFLAGS) $(%s) $(CXX_OUT_FLAG)%s %s\n' % (include_defs, objfile, srcfile))
|
||||||
extra_opt = ''
|
|
||||||
if TRACE and not DEBUG_MODE:
|
|
||||||
if IS_WINDOWS:
|
|
||||||
extra_opt = '/D _TRACE'
|
|
||||||
else:
|
|
||||||
extra_opt = '-D _TRACE'
|
|
||||||
out.write('\t@$(CXX) $(CXXFLAGS) %s $(%s) $(CXX_OUT_FLAG)%s %s\n' % (extra_opt, include_defs, objfile, srcfile))
|
|
||||||
|
|
||||||
def mk_makefile(self, out):
|
def mk_makefile(self, out):
|
||||||
include_defs = mk_fresh_name('includes')
|
include_defs = mk_fresh_name('includes')
|
||||||
|
@ -842,24 +982,149 @@ def add_z3py_example(name, path=None):
|
||||||
c = PythonExampleComponent(name, path)
|
c = PythonExampleComponent(name, path)
|
||||||
reg_component(name, c)
|
reg_component(name, c)
|
||||||
|
|
||||||
# Copy configuration correct file to BUILD_DIR
|
def mk_config():
|
||||||
def cp_config_mk():
|
if ONLY_MAKEFILES:
|
||||||
|
return
|
||||||
|
config = open('%s/config.mk' % BUILD_DIR, 'w')
|
||||||
if IS_WINDOWS:
|
if IS_WINDOWS:
|
||||||
if VS_X64:
|
config.write(
|
||||||
|
'CC=cl\n'
|
||||||
|
'CXX=cl\n'
|
||||||
|
'CXX_OUT_FLAG=/Fo\n'
|
||||||
|
'OBJ_EXT=.obj\n'
|
||||||
|
'LIB_EXT=.lib\n'
|
||||||
|
'AR=lib\n'
|
||||||
|
'AR_FLAGS=/nologo\n'
|
||||||
|
'AR_OUTFLAG=/OUT:\n'
|
||||||
|
'EXE_EXT=.exe\n'
|
||||||
|
'LINK=cl\n'
|
||||||
|
'LINK_OUT_FLAG=/Fe\n'
|
||||||
|
'SO_EXT=.dll\n'
|
||||||
|
'SLINK=cl\n'
|
||||||
|
'SLINK_OUT_FLAG=/Fe\n')
|
||||||
if DEBUG_MODE:
|
if DEBUG_MODE:
|
||||||
shutil.copyfile('scripts/config-vs-debug-x64.mk', '%s/config.mk' % BUILD_DIR)
|
config.write(
|
||||||
|
'LINK_FLAGS=/nologo /MDd\n'
|
||||||
|
'SLINK_FLAGS=/nologo /LDd\n')
|
||||||
|
if not VS_X64:
|
||||||
|
config.write(
|
||||||
|
'CXXFLAGS=/c /Zi /nologo /openmp /W3 /WX- /Od /Oy- /D WIN32 /D _DEBUG /D Z3DEBUG /D _CONSOLE /D _TRACE /D _WINDOWS /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /analyze- /arch:SSE2\n'
|
||||||
|
'LINK_EXTRA_FLAGS=/link /DEBUG /MACHINE:X86 /SUBSYSTEM:CONSOLE /INCREMENTAL:NO /STACK:8388608 /OPT:REF /OPT:ICF /TLBID:1 /DYNAMICBASE /NXCOMPAT\n'
|
||||||
|
'SLINK_EXTRA_FLAGS=/link /DEBUG /MACHINE:X86 /SUBSYSTEM:WINDOWS /INCREMENTAL:NO /STACK:8388608 /OPT:REF /OPT:ICF /TLBID:1 /DYNAMICBASE:NO\n')
|
||||||
else:
|
else:
|
||||||
shutil.copyfile('scripts/config-vs-release-x64.mk', '%s/config.mk' % BUILD_DIR)
|
config.write(
|
||||||
|
'CXXFLAGS=/c /Zi /nologo /openmp /W3 /WX- /Od /Oy- /D WIN32 /D _AMD64_ /D _DEBUG /D Z3DEBUG /D _CONSOLE /D _TRACE /D _WINDOWS /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /analyze-\n'
|
||||||
|
'LINK_EXTRA_FLAGS=/link /DEBUG /MACHINE:X64 /SUBSYSTEM:CONSOLE /INCREMENTAL:NO /STACK:8388608 /OPT:REF /OPT:ICF /TLBID:1 /DYNAMICBASE /NXCOMPAT\n'
|
||||||
|
'SLINK_EXTRA_FLAGS=/link /DEBUG /MACHINE:X64 /SUBSYSTEM:WINDOWS /INCREMENTAL:NO /STACK:8388608 /OPT:REF /OPT:ICF /TLBID:1 /DYNAMICBASE:NO\n')
|
||||||
else:
|
else:
|
||||||
|
# Windows Release mode
|
||||||
|
config.write(
|
||||||
|
'LINK_FLAGS=/nologo /MD\n'
|
||||||
|
'SLINK_FLAGS=/nologo /LD\n')
|
||||||
|
extra_opt = ''
|
||||||
|
if TRACE:
|
||||||
|
extra_opt = '/D _TRACE'
|
||||||
|
if not VS_X64:
|
||||||
|
config.write(
|
||||||
|
'CXXFLAGS=/nologo /c /Zi /openmp /W3 /WX- /O2 /Oy- /D _EXTERNAL_RELEASE /D WIN32 /D NDEBUG %s /D _CONSOLE /D _WINDOWS /D ASYNC_COMMANDS /Gm- /EHsc /MD /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /analyze- /arch:SSE2\n' % extra_opt)
|
||||||
|
config.write(
|
||||||
|
'LINK_EXTRA_FLAGS=/link /DEBUG /MACHINE:X86 /SUBSYSTEM:CONSOLE /INCREMENTAL:NO /STACK:8388608 /OPT:REF /OPT:ICF /TLBID:1 /DYNAMICBASE /NXCOMPAT\n'
|
||||||
|
'SLINK_EXTRA_FLAGS=/link /DEBUG /MACHINE:X86 /SUBSYSTEM:WINDOWS /INCREMENTAL:NO /STACK:8388608 /OPT:REF /OPT:ICF /TLBID:1 /DYNAMICBASE:NO\n')
|
||||||
|
else:
|
||||||
|
config.write(
|
||||||
|
'CXXFLAGS=/c /Zi /nologo /openmp /W3 /WX- /O2 /D _EXTERNAL_RELEASE /D WIN32 /D NDEBUG %s /D _LIB /D _WINDOWS /D _AMD64_ /D _UNICODE /D UNICODE /Gm- /EHsc /MD /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TP\n' % extra_opt)
|
||||||
|
config.write(
|
||||||
|
'LINK_EXTRA_FLAGS=/link /MACHINE:X64 /SUBSYSTEM:CONSOLE /INCREMENTAL:NO /STACK:8388608\n'
|
||||||
|
'SLINK_EXTRA_FLAGS=/link /MACHINE:X64 /SUBSYSTEM:WINDOWS /INCREMENTAL:NO /STACK:8388608\n')
|
||||||
|
|
||||||
|
# End of Windows VS config.mk
|
||||||
|
else:
|
||||||
|
global CXX, CC, GMP, CPPFLAGS, CXXFLAGS, LDFLAGS
|
||||||
|
ARITH = "internal"
|
||||||
|
find_ar()
|
||||||
|
CXX = find_cxx_compiler()
|
||||||
|
CC = find_c_compiler()
|
||||||
|
if GMP:
|
||||||
|
test_gmp(CXX)
|
||||||
|
ARITH = "gmp"
|
||||||
|
CPPFLAGS = '%s -D_MP_GMP' % CPPFLAGS
|
||||||
|
LDFLAGS = '%s -lgmp' % LDFLAGS
|
||||||
|
else:
|
||||||
|
CPPFLAGS = '%s -D_MP_INTERNAL' % CPPFLAGS
|
||||||
|
CXXFLAGS = '%s -c' % CXXFLAGS
|
||||||
|
if CXX == 'g++':
|
||||||
|
CXXFLAGS = '%s -fopenmp -mfpmath=sse' % CXXFLAGS
|
||||||
|
LDFLAGS = '%s -fopenmp' % LDFLAGS
|
||||||
|
SLIBEXTRAFLAGS = '-fopenmp'
|
||||||
|
else:
|
||||||
|
# CLang does not support OMP
|
||||||
|
CXXFLAGS = '%s -D_NO_OMP_' % CXXFLAGS
|
||||||
|
SLIBEXTRAFLAGS = ''
|
||||||
|
sysname = os.uname()[0]
|
||||||
|
if sysname == 'Darwin':
|
||||||
|
SO_EXT = '.dylib'
|
||||||
|
SLIBFLAGS = '-dynamiclib'
|
||||||
|
elif sysname == 'Linux':
|
||||||
|
CXXFLAGS = '%s -fno-strict-aliasing -D_LINUX_' % CXXFLAGS
|
||||||
|
if CXX == 'clang++':
|
||||||
|
CXXFLAGS = '%s -Wno-unknown-pragmas -Wno-overloaded-virtual -Wno-unused-value' % CXXFLAGS
|
||||||
|
SO_EXT = '.so'
|
||||||
|
LDFLAGS = '%s -lrt' % LDFLAGS
|
||||||
|
SLIBFLAGS = '-shared'
|
||||||
|
SLIBEXTRAFLAGS = '%s -lrt' % SLIBEXTRAFLAGS
|
||||||
|
elif sysname == 'FreeBSD':
|
||||||
|
CXXFLAGS = '%s -fno-strict-aliasing -D_FREEBSD_' % CXXFLAGS
|
||||||
|
SO_EXT = '.so'
|
||||||
|
LDFLAGS = '%s -lrt' % LDFLAGS
|
||||||
|
SLIBFLAGS = '-shared'
|
||||||
|
SLIBEXTRAFLAGS = '%s -lrt' % SLIBEXTRAFLAGS
|
||||||
|
elif sysname[:6] == 'CYGWIN':
|
||||||
|
CXXFLAGS = '%s -D_CYGWIN -fno-strict-aliasing' % CXXFLAGS
|
||||||
|
SO_EXT = '.dll'
|
||||||
|
SLIBFLAGS = '-shared'
|
||||||
|
else:
|
||||||
|
raise MKException('Unsupported platform: %s' % sysname)
|
||||||
|
if is64():
|
||||||
|
CXXFLAGS = '%s -fPIC' % CXXFLAGS
|
||||||
|
CPPFLAGS = '%s -D_AMD64_' % CPPFLAGS
|
||||||
|
if sysname == 'Linux':
|
||||||
|
CPPFLAGS = '%s -D_USE_THREAD_LOCAL' % CPPFLAGS
|
||||||
if DEBUG_MODE:
|
if DEBUG_MODE:
|
||||||
shutil.copyfile('scripts/config-vs-debug.mk', '%s/config.mk' % BUILD_DIR)
|
CPPFLAGS = '%s -DZ3DEBUG' % CPPFLAGS
|
||||||
else:
|
if TRACE or DEBUG_MODE:
|
||||||
shutil.copyfile('scripts/config-vs-release.mk', '%s/config.mk' % BUILD_DIR)
|
CPPFLAGS = '%s -D_TRACE' % CPPFLAGS
|
||||||
else:
|
|
||||||
if DEBUG_MODE:
|
if DEBUG_MODE:
|
||||||
shutil.copyfile('scripts/config-debug.mk', '%s/config.mk' % BUILD_DIR)
|
CXXFLAGS = '%s -g -Wall' % CXXFLAGS
|
||||||
else:
|
else:
|
||||||
shutil.copyfile('scripts/config-release.mk', '%s/config.mk' % BUILD_DIR)
|
CXXFLAGS = '%s -O3 -D _EXTERNAL_RELEASE -fomit-frame-pointer' % CXXFLAGS
|
||||||
|
CXXFLAGS = '%s -msse -msse2' % CXXFLAGS
|
||||||
|
config.write('PREFIX=%s\n' % PREFIX)
|
||||||
|
config.write('CC=%s\n' % CC)
|
||||||
|
config.write('CXX=%s\n' % CXX)
|
||||||
|
config.write('CXXFLAGS=%s %s\n' % (CPPFLAGS, CXXFLAGS))
|
||||||
|
config.write('CXX_OUT_FLAG=-o\n')
|
||||||
|
config.write('OBJ_EXT=.o\n')
|
||||||
|
config.write('LIB_EXT=.a\n')
|
||||||
|
config.write('AR=ar\n')
|
||||||
|
config.write('AR_FLAGS=rcs\n')
|
||||||
|
config.write('AR_OUTFLAG=\n')
|
||||||
|
config.write('EXE_EXT=\n')
|
||||||
|
config.write('LINK=%s\n' % CXX)
|
||||||
|
config.write('LINK_FLAGS=\n')
|
||||||
|
config.write('LINK_OUT_FLAG=-o\n')
|
||||||
|
config.write('LINK_EXTRA_FLAGS=-lpthread %s\n' % LDFLAGS)
|
||||||
|
config.write('SO_EXT=%s\n' % SO_EXT)
|
||||||
|
config.write('SLINK=%s\n' % CXX)
|
||||||
|
config.write('SLINK_FLAGS=%s\n' % SLIBFLAGS)
|
||||||
|
config.write('SLINK_EXTRA_FLAGS=%s\n' % SLIBEXTRAFLAGS)
|
||||||
|
config.write('SLINK_OUT_FLAG=-o\n')
|
||||||
|
if is_verbose():
|
||||||
|
print 'Host platform: %s' % sysname
|
||||||
|
print 'C++ Compiler: %s' % CXX
|
||||||
|
print 'C Compiler : %s' % CC
|
||||||
|
print 'Arithmetic: %s' % ARITH
|
||||||
|
print 'Prefix: %s' % PREFIX
|
||||||
|
print '64-bit: %s' % is64()
|
||||||
|
|
||||||
def mk_install(out):
|
def mk_install(out):
|
||||||
out.write('install:\n')
|
out.write('install:\n')
|
||||||
|
@ -883,7 +1148,7 @@ def mk_uninstall(out):
|
||||||
# Generate the Z3 makefile
|
# Generate the Z3 makefile
|
||||||
def mk_makefile():
|
def mk_makefile():
|
||||||
mk_dir(BUILD_DIR)
|
mk_dir(BUILD_DIR)
|
||||||
cp_config_mk()
|
mk_config()
|
||||||
if VERBOSE:
|
if VERBOSE:
|
||||||
print "Writing %s/Makefile" % BUILD_DIR
|
print "Writing %s/Makefile" % BUILD_DIR
|
||||||
out = open('%s/Makefile' % BUILD_DIR, 'w')
|
out = open('%s/Makefile' % BUILD_DIR, 'w')
|
||||||
|
|
Loading…
Reference in a new issue