From bd021815b164dd06caa3d66c2317a7c651b47f5b Mon Sep 17 00:00:00 2001 From: Leonardo de Moura Date: Tue, 20 Nov 2012 15:13:37 -0800 Subject: [PATCH] eliminated autoconf dependency Signed-off-by: Leonardo de Moura --- README | 14 +- configure.ac | 224 -------------------- scripts/config-debug.mk.in | 20 -- scripts/config-release.mk.in | 20 -- scripts/config-vs-debug-x64.mk | 21 -- scripts/config-vs-debug.mk | 21 -- scripts/config-vs-release-x64.mk | 21 -- scripts/config-vs-release.mk | 23 --- scripts/mk_util.py | 343 +++++++++++++++++++++++++++---- 9 files changed, 307 insertions(+), 400 deletions(-) delete mode 100644 configure.ac delete mode 100644 scripts/config-debug.mk.in delete mode 100644 scripts/config-release.mk.in delete mode 100644 scripts/config-vs-debug-x64.mk delete mode 100644 scripts/config-vs-debug.mk delete mode 100644 scripts/config-vs-release-x64.mk delete mode 100644 scripts/config-vs-release.mk diff --git a/README b/README index 88469071c..42f6b1e58 100644 --- a/README +++ b/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 Execute: - autoconf - ./configure python scripts/mk_make.py cd build 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). - autoconf - ./configure --prefix=/home/leo - python scripts/mk_make.py + python scripts/mk_make.py --prefix=/home/leo cd build make sudo make install @@ -35,14 +31,10 @@ To uninstall Z3, use 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. - autoconf - ./configure CXX=clang++ - python scripts/mk_make.py + CXX=clang++ CC=clang python scripts/mk_make.py cd build make - - diff --git a/configure.ac b/configure.ac deleted file mode 100644 index a2e2d826d..000000000 --- a/configure.ac +++ /dev/null @@ -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 <= "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 <= "3": + print "ERROR: python 2.x required." + exit(1) + import os import glob import re import getopt -import sys import shutil from mk_exception import * from fnmatch import fnmatch import distutils.sysconfig 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() BUILD_DIR='build' REV_BUILD_DIR='..' @@ -41,11 +60,130 @@ VS_PROJ = False TRACE = False DOTNET_ENABLED=False STATIC_LIB=False - VER_MAJOR=None VER_MINOR=None VER_BUILD=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\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\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\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): 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 "\nOptions:" 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 " -b , --build= subdirectory where Z3 will be built (default: build)." print " -d, --debug compile Z3 in debug mode." @@ -129,19 +270,21 @@ def display_help(): # Parse configuration option for mk_make script def parse_options(): - global VERBOSE, DEBUG_MODE, IS_WINDOWS, VS_X64, ONLY_MAKEFILES, SHOW_CPPS, VS_PROJ, TRACE, DOTNET_ENABLED, STATIC_LIB - options, remainder = getopt.gnu_getopt(sys.argv[1:], 'b:dsxhmcvtn', ['build=', - 'debug', - 'silent', - 'x64', - 'help', - 'makefiles', - 'showcpp', - 'vsproj', - 'trace', - 'nodotnet', - 'staticlib' - ]) + 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:dsxhmcvtnp:g', ['build=', + 'debug', + 'silent', + 'x64', + 'help', + 'makefiles', + 'showcpp', + 'vsproj', + 'trace', + 'nodotnet', + 'staticlib', + 'prefix=', + 'gmp' + ]) for opt, arg in options: if opt in ('-b', '--build'): if arg == 'src': @@ -169,6 +312,10 @@ def parse_options(): DOTNET_ENABLED = False elif opt in ('--staticlib'): STATIC_LIB = True + elif opt in ('-p', '--prefix'): + PREFIX = arg + elif opt in ('-g', '--gmp'): + GMP = True else: raise MKException("Invalid command line option '%s'" % opt) @@ -343,14 +490,7 @@ class Component: out.write('\n') if SHOW_CPPS: out.write('\t@echo %s/%s\n' % (self.src_dir, cppfile)) - # TRACE is enabled in debug mode by default - 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)) + out.write('\t@$(CXX) $(CXXFLAGS) $(%s) $(CXX_OUT_FLAG)%s %s\n' % (include_defs, objfile, srcfile)) def mk_makefile(self, out): include_defs = mk_fresh_name('includes') @@ -842,24 +982,149 @@ def add_z3py_example(name, path=None): c = PythonExampleComponent(name, path) reg_component(name, c) -# Copy configuration correct file to BUILD_DIR -def cp_config_mk(): +def mk_config(): + if ONLY_MAKEFILES: + return + config = open('%s/config.mk' % BUILD_DIR, 'w') if IS_WINDOWS: - if VS_X64: - if DEBUG_MODE: - shutil.copyfile('scripts/config-vs-debug-x64.mk', '%s/config.mk' % BUILD_DIR) - else: - shutil.copyfile('scripts/config-vs-release-x64.mk', '%s/config.mk' % BUILD_DIR) - else: - if DEBUG_MODE: - shutil.copyfile('scripts/config-vs-debug.mk', '%s/config.mk' % BUILD_DIR) - else: - shutil.copyfile('scripts/config-vs-release.mk', '%s/config.mk' % BUILD_DIR) - else: + 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: - shutil.copyfile('scripts/config-debug.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: + 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: - shutil.copyfile('scripts/config-release.mk', '%s/config.mk' % BUILD_DIR) + # 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: + CPPFLAGS = '%s -DZ3DEBUG' % CPPFLAGS + if TRACE or DEBUG_MODE: + CPPFLAGS = '%s -D_TRACE' % CPPFLAGS + if DEBUG_MODE: + CXXFLAGS = '%s -g -Wall' % CXXFLAGS + else: + 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): out.write('install:\n') @@ -883,7 +1148,7 @@ def mk_uninstall(out): # Generate the Z3 makefile def mk_makefile(): mk_dir(BUILD_DIR) - cp_config_mk() + mk_config() if VERBOSE: print "Writing %s/Makefile" % BUILD_DIR out = open('%s/Makefile' % BUILD_DIR, 'w')