From 501f63e27de8b1a2e504f98f231801ca324052d0 Mon Sep 17 00:00:00 2001 From: Leonardo de Moura Date: Tue, 16 Jul 2013 22:11:48 -0700 Subject: [PATCH] Add build instructions. Improve build. Signed-off-by: Leonardo de Moura --- README | 12 ++++++++++++ src/CMakeLists.txt | 40 ++++++++++++++++++++++++++++++++++++---- src/shell/CMakeLists.txt | 2 +- 3 files changed, 49 insertions(+), 5 deletions(-) diff --git a/README b/README index 19766d9046..eaa85c982e 100644 --- a/README +++ b/README @@ -9,6 +9,18 @@ Requirements: - cmake http://www.cmake.org +Instructions for DEBUG build + mkdir -p build/debug + cd build/debug + cmake -DCMAKE_BUILD_TYPE=DEBUG ../../src + make + +Instructions for RELEASE build + mkdir -p build/release + cd build/release + cmake -DCMAKE_BUILD_TYPE=RELEASE ../../src + make + Instructions for installing gcc-4.8 (C++11 compatible) on Ubuntu Execute: sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 73ca4cbce7..54fb698c59 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -2,11 +2,43 @@ cmake_minimum_required (VERSION 2.8.7) project (LEAN CXX) set (LEAN_VERSION_MAJOR 0) set (LEAN_VERSION_MINOR 1) -set (CMAKE_CXX_COMPILER "g++-4.8") -set (CMAKE_CXX_FLAGS_DEBUG "-DLEAN_DEBUG -DLEAN_TRACE -g") -set (CMAKE_CXX_FLAGS_RELEASE "-O3") + set (CMAKE_COLOR_MAKEFILE ON) -add_definitions(-std=c++11 -Wall) + +# Initialize CXXFLAGS. +set(CMAKE_CXX_FLAGS "-Wall -std=c++11") +set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g -DLEAN_DEBUG -DLEAN_TRACE") +set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG") +set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG") +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g") + +# Compiler-specific C++11 activation. +if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") + execute_process( + COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) + if (NOT (GCC_VERSION VERSION_GREATER 4.8 OR GCC_VERSION VERSION_EQUAL 4.8)) + message(FATAL_ERROR "${PROJECT_NAME} requires g++ 4.8 or greater.") + endif () +elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") +else () + message(FATAL_ERROR "Your C++ compiler does not support C++11.") +endif () + +if (GMP_INCLUDE_DIR AND GMP_LIBRARIES) + # Already in cache, be silent + set(GMP_FIND_QUIETLY TRUE) +endif (GMP_INCLUDE_DIR AND GMP_LIBRARIES) + +find_path(GMP_INCLUDE_DIR NAMES gmp.h ) +find_library(GMP_LIBRARIES NAMES gmp libgmp ) +MESSAGE(STATUS "GMP: " ${GMP_LIBRARIES}) + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(GMP DEFAULT_MSG GMP_INCLUDE_DIR GMP_LIBRARIES) +mark_as_advanced(GMP_INCLUDE_DIR GMP_LIBRARIES) + +set (CMAKE_CXX_COMPILER "g++-4.8") add_subdirectory(util) add_subdirectory(shell) diff --git a/src/shell/CMakeLists.txt b/src/shell/CMakeLists.txt index 43ff828c2c..5981dc819f 100644 --- a/src/shell/CMakeLists.txt +++ b/src/shell/CMakeLists.txt @@ -6,7 +6,7 @@ configure_file ( include_directories("${LEAN_BINARY_DIR}") include_directories (${LEAN_SOURCE_DIR}/util) -set (EXTRA_LIBS ${EXTRA_LIBS} util gmp) +set (EXTRA_LIBS ${EXTRA_LIBS} util ${GMP_LIBRARIES}) add_executable(lean lean.cpp) target_link_libraries (lean ${EXTRA_LIBS})