X-Git-Url: http://plrg.eecs.uci.edu/git/?p=libcds.git;a=blobdiff_plain;f=CMakeLists.txt;h=6aaa300db8f92c8a8fe5bb476773ffdf6b0f446b;hp=8ebef3ff110c64839bff06712716ce0c9e38e54b;hb=c3352315d3563a201433837b0932bba249344f67;hpb=ee631642e2cb3031c083cf364cf32e830521c01e diff --git a/CMakeLists.txt b/CMakeLists.txt index 8ebef3ff..6aaa300d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,7 @@ cmake_minimum_required(VERSION 2.8.12) cmake_policy(SET CMP0016 NEW) +set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/build/cmake ${CMAKE_MODULE_PATH}) +include(TargetArch) project(cds) @@ -17,6 +19,8 @@ find_package(Boost 1.50 COMPONENTS system thread REQUIRED) include_directories(${Boost_INCLUDE_DIRS}) +target_architecture(CMAKE_TARGET_ARCHITECTURE) + if(WITH_BOOST_ATOMIC) if(${Boost_MINOR_VERSION} GREATER 53) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DCDS_USE_BOOST_ATOMIC") @@ -74,18 +78,29 @@ if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Debug CACHE STRING "Default build type to Debug" FORCE) endif() -if(CMAKE_COMPILER_IS_GNUCXX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -fno-strict-aliasing") -# gcc 4.8: disable noise -Wunused-local-typedefs - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-local-typedefs -Wno-unused-parameter") +if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" ) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra -pedantic -fno-strict-aliasing") + if(CMAKE_TARGET_ARCHITECTURE STREQUAL "x86_64") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcx16") + endif() + if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "7.0.0") +# gcc 4.8 - 6: disable noise -Wunused-local-typedefs + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-local-typedefs") + endif() endif() set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG") message("Build type -- ${CMAKE_BUILD_TYPE}") message("Compiler version: ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}") -message("Compiler flags: ${CMAKE_CXX_FLAGS}") +MESSAGE("Target architecture: ${CMAKE_TARGET_ARCHITECTURE}") +if (CMAKE_BUILD_TYPE STREQUAL "DEBUG") + message("Compiler flags: ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}") +else() + message("Compiler flags: ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}") +endif() +message("Boost: ${Boost_LIB_VERSION} in ${Boost_INCLUDE_DIRS}, lib ${Boost_LIBRARY_DIRS}") + include_directories(${PROJECT_SOURCE_DIR}) @@ -105,8 +120,10 @@ set(SOURCES src/hp_gc.cpp src/dllmain.cpp) add_library(${CDS_SHARED_LIBRARY} SHARED ${SOURCES}) -set_target_properties( ${CDS_SHARED_LIBRARY} PROPERTIES VERSION ${PROJECT_VERSION}) +set_target_properties( ${CDS_SHARED_LIBRARY} PROPERTIES VERSION ${PROJECT_VERSION} + DEBUG_POSTFIX "_d") add_library(${CDS_STATIC_LIBRARY} STATIC ${SOURCES}) +set_target_properties(${CDS_STATIC_LIBRARY} PROPERTIES DEBUG_POSTFIX "_d") target_link_libraries(${CDS_SHARED_LIBRARY} PRIVATE ${CMAKE_THREAD_LIBS_INIT}) target_link_libraries(${CDS_STATIC_LIBRARY} PRIVATE ${CMAKE_THREAD_LIBS_INIT})