X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=CMakeLists.txt;h=89e8f819e6cc65e5db9538c24239494d28ede126;hb=2df0ca34aa3000dadf76633ca700abf0bf50756d;hp=a1978c417bbcb03ff6613e4c499590279fb6eddf;hpb=fe136448ff77395f270f84570131bb673340a3d7;p=platform%2Fupstream%2Fglog.git diff --git a/CMakeLists.txt b/CMakeLists.txt index a1978c4..89e8f81 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,10 @@ if (POLICY CMP0042) cmake_policy (SET CMP0042 NEW) endif (POLICY CMP0042) +if (POLICY CMP0063) + cmake_policy (SET CMP0063 NEW) +endif (POLICY CMP0063) + project (google-glog) enable_testing () @@ -23,6 +27,8 @@ set (CPACK_PACKAGE_VERSION_PATCH ${GLOG_PATCH_VERSION}) set (CPACK_PACKAGE_VERSION ${GLOG_VERSION}) option (WITH_GFLAGS "Use gflags" ON) +option (WITH_THREADS "Enable multithreading support" ON) +option (WITH_TLS "Enable Thread Local Storage (TLS) support" ON) list (APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) @@ -51,7 +57,9 @@ if (WITH_GFLAGS) endif (gflags_FOUND) endif (WITH_GFLAGS) -find_package (Threads) +if (WITH_THREADS) + find_package (Threads) +endif (WITH_THREADS) check_include_file (dlfcn.h HAVE_DLFCN_H) check_include_file (execinfo.h HAVE_EXECINFO_H) @@ -176,6 +184,31 @@ using namespace Outer::Inner;; int main() { return i; } " HAVE_NAMESPACES) +check_cxx_source_compiles (" +__declspec(thread) int tls; +int main() { } +" HAVE_MSVC_TLS) + +check_cxx_source_compiles (" +thread_local int tls; +int main() { } +" HAVE_CXX11_TLS) + +check_cxx_source_compiles (" +__attribute__((thread)) int tls; +int main() { } +" HAVE_CYGWIN_TLS) + +if (WITH_TLS) + if (HAVE_CYGWIN_TLS) + set (GLOG_THREAD_LOCAL_STORAGE "__attribute__((thread))") + elseif (HAVE_MSVC_TLS) + set (GLOG_THREAD_LOCAL_STORAGE "__declspec(thread)") + elseif (HAVE_CXX11_TLS) + set (GLOG_THREAD_LOCAL_STORAGE thread_local) + endif (HAVE_CYGWIN_TLS) +endif (WITH_TLS) + set (_PC_FIELDS "gregs[REG_PC]" "gregs[REG_EIP]" @@ -306,9 +339,13 @@ endif (HAVE_USING_OPERATOR) set (SIZEOF_VOID_P ${CMAKE_SIZEOF_VOID_P}) -if (Threads_FOUND AND CMAKE_USE_PTHREADS_INIT) - set (HAVE_PTHREAD 1) -endif (Threads_FOUND AND CMAKE_USE_PTHREADS_INIT) +if (WITH_THREADS AND Threads_FOUND) + if (CMAKE_USE_PTHREADS_INIT) + set (HAVE_PTHREAD 1) + endif (CMAKE_USE_PTHREADS_INIT) +else (WITH_THREADS AND Threads_FOUND) + set (NO_THREADS 1) +endif (WITH_THREADS AND Threads_FOUND) set (TEST_SRC_DIR \"${CMAKE_CURRENT_SOURCE_DIR}\") @@ -365,6 +402,10 @@ if (UNWIND_LIBRARY) target_link_libraries (glog PUBLIC ${UNWIND_LIBRARY}) endif (UNWIND_LIBRARY) +if (HAVE_PTHREAD) + target_link_libraries (glog PUBLIC ${CMAKE_THREAD_LIBS_INIT}) +endif (HAVE_PTHREAD) + if (WIN32 AND HAVE_SNPRINTF) set_property (SOURCE src/windows/port.cc APPEND PROPERTY COMPILE_DEFINITIONS HAVE_SNPRINTF) @@ -396,6 +437,7 @@ set_target_properties (glog PROPERTIES PUBLIC_HEADER "${GLOG_PUBLIC_H}") target_include_directories (glog BEFORE PUBLIC "$" "$" + "$" PRIVATE ${CMAKE_CURRENT_BINARY_DIR} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src) @@ -428,12 +470,6 @@ else (NOT BUILD_SHARED_LIBS) "GOOGLE_GLOG_DLL_DECL_FOR_UNITTESTS=${_IMPORT}") endif (NOT BUILD_SHARED_LIBS) -if (HAVE_PTHREAD) - target_link_libraries (glog PUBLIC ${CMAKE_THREAD_LIBS_INIT}) -else (HAVE_PTHREAD) - target_compile_definitions (glog PUBLIC NO_THREADS) -endif (HAVE_PTHREAD) - if (HAVE_EXECINFO_H) set (HAVE_STACKTRACE 1) endif (HAVE_EXECINFO_H)