From da0712a90f84fa238e098f66d11bb2e44f37adfa Mon Sep 17 00:00:00 2001 From: Sam Xi Date: Wed, 7 Sep 2016 11:35:32 -0400 Subject: [PATCH] cmake: Clean up build type and install options. THIS INCLUDES BREAKING CHANGES. 1. Remove the DEBUG build option (forgot CMake already has such an option through CMAKE_BUILD_TYPE). 2. If no build type is specified, we build for release. Importantly, this means building with -O3. 3. Install directory is ${LLVM_HOME}, not ${LLVM_HOME}/install. 4. Remove BUILD_ON_SOURCE option - this is silly. If the user is going to build with CMake, he/she should it properly (i.e. build out of source and install with `make install`). This is the breaking change - users of CMake will need to run `make install` and update their Makefiles to reflect the new installation directory structure (bin/ and lib/ instead of full-trace/ and profile-func/). Change-Id: Icbf32468b89716aa3f8baf504bfe2e9d66f38ceb --- CMakeLists.txt | 3 +-- ast-pass/CMakeLists.txt | 5 ----- cmake-scripts/TracerConfig.cmake | 13 ++++++++----- cmake-scripts/buildTracerBitcode.cmake | 7 +------ full-trace/CMakeLists.txt | 10 ---------- profile-func/CMakeLists.txt | 6 +----- 6 files changed, 11 insertions(+), 33 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 700fd72..e4530df 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,13 +2,12 @@ cmake_minimum_required(VERSION 2.8.12) project(LLVM_TRACER CXX) enable_testing() -set(CMAKE_INSTALL_PREFIX $ENV{TRACER_HOME}/install) +set(CMAKE_INSTALL_PREFIX $ENV{TRACER_HOME}) set(SCRIPT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/cmake-scripts") include("${SCRIPT_DIR}/TracerConfig.cmake") include("${SCRIPT_DIR}/findAndSetLLVM.cmake") set(CMAKE_CXX_COMPILER ${CLANGXX}) -option(DEBUG "Build in debugging mode (-O0, -g)" OFF) add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/full-trace") add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/profile-func") diff --git a/ast-pass/CMakeLists.txt b/ast-pass/CMakeLists.txt index 0b2ca79..b58a15d 100644 --- a/ast-pass/CMakeLists.txt +++ b/ast-pass/CMakeLists.txt @@ -13,11 +13,6 @@ add_definitions( ) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti -std=c++11") -if (DEBUG) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -g") -else (DEBUG) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3") -endif (DEBUG) set(SOURCE_FILES GetLabeledStmts.cpp) add_executable(get-labeled-stmts ${SOURCE_FILES}) diff --git a/cmake-scripts/TracerConfig.cmake b/cmake-scripts/TracerConfig.cmake index f0f6274..9c6ebaf 100644 --- a/cmake-scripts/TracerConfig.cmake +++ b/cmake-scripts/TracerConfig.cmake @@ -14,8 +14,15 @@ STRING(REPLACE ";" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") # sets debug level to g3, which contains more infomation than g2. # to use it : cmake /where/source/code -DCMAKE_BUILD_TYPE=DEBUG -set(CMAKE_CXX_FLAGS_DEBUG -g3) +set(CMAKE_CXX_FLAGS_DEBUG "-g3 -O0") +# Builds an optimized tracer for release. +set(CMAKE_CXX_FLAGS_RELEASE "-O3") + +# If we don't specify a build type, build for release. +if (CMAKE_BUILD_TYPE STREQUAL "") + set (CMAKE_BUILD_TYPE RELEASE) +endif() if(NOT DEFINED TEST_CMAKE) SET(TEST_CMAKE FALSE) @@ -23,10 +30,6 @@ endif() SET(RECOMMAND_LLVM_PREFIX ${CMAKE_BINARY_DIR}/lib/llvm-${LLVM_RECOMMEND_VERSION}) -if(NOT DEFINED BUILD_ON_SOURCE) - SET(BUILD_ON_SOURCE TRUE) -endif() - if(NOT DEFINED AUTOINSTALL) SET(AUTOINSTALL FALSE) endif() diff --git a/cmake-scripts/buildTracerBitcode.cmake b/cmake-scripts/buildTracerBitcode.cmake index f9bfa8b..d343f94 100644 --- a/cmake-scripts/buildTracerBitcode.cmake +++ b/cmake-scripts/buildTracerBitcode.cmake @@ -6,12 +6,7 @@ function(build_tracer_bitcode TEST_NAME f_SRC WORKLOAD) set(FULL_S "${CMAKE_CURRENT_BINARY_DIR}/full.s") set(RAW_EXE "${CMAKE_CURRENT_BINARY_DIR}/${TEST_NAME}") set(PROFILE_EXE "${CMAKE_CURRENT_BINARY_DIR}/${TEST_NAME}-instrumented") - - if(${BUILD_ON_SOURCE}) - set(TRACE_LOGGER "${CMAKE_CURRENT_SOURCE_DIR}/../../profile-func/trace_logger.${LLVM_EXT}") - else() - set(TRACE_LOGGER "${CMAKE_CURRENT_BINARY_DIR}/../../profile-func/trace_logger.${LLVM_EXT}") - endif() + set(TRACE_LOGGER "${CMAKE_CURRENT_BINARY_DIR}/../../profile-func/trace_logger.${LLVM_EXT}") set(FULLTRACE_SO "$") diff --git a/full-trace/CMakeLists.txt b/full-trace/CMakeLists.txt index 26f7b7f..b620d9f 100644 --- a/full-trace/CMakeLists.txt +++ b/full-trace/CMakeLists.txt @@ -1,9 +1,4 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti") -if (DEBUG) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -g") -else (DEBUG) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3") -endif (DEBUG) file(GLOB SRC "*.cpp") add_library(full_trace SHARED ${SRC}) @@ -11,8 +6,3 @@ install(TARGETS full_trace LIBRARY DESTINATION lib) # remove name prefix in order not to generate libxxxxxx name set_target_properties(full_trace PROPERTIES PREFIX "") - -if(${BUILD_ON_SOURCE}) - set_target_properties(full_trace PROPERTIES LIBRARY_OUTPUT_DIRECTORY - "${CMAKE_CURRENT_SOURCE_DIR}") -endif() diff --git a/profile-func/CMakeLists.txt b/profile-func/CMakeLists.txt index 2f22c97..f13723f 100644 --- a/profile-func/CMakeLists.txt +++ b/profile-func/CMakeLists.txt @@ -3,11 +3,7 @@ file(GLOB SRC "*.c") set(LLVMC_FLAGS ${LLVMC_FLAGS} "-O3") -if(${BUILD_ON_SOURCE}) - build_llvm_bc(${FCTS} SRC ${CMAKE_CURRENT_SOURCE_DIR}) -else() - build_llvm_bitcode(${FCTS} SRC) -endif() +build_llvm_bitcode(${FCTS} SRC) add_custom_target(PROFILE_FUNC ALL DEPENDS ${FCTS}) install(FILES ${FCTS}.llvm DESTINATION lib)