about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAdrien Devresse <adrien.devresse@epfl.ch>2017-10-31T21·15+0100
committerAdrien Devresse <adrien.devresse@epfl.ch>2017-11-02T17·47+0100
commita3322e3bfc96f33d3e195fd38a7c09f263e7e75f (patch)
treee219a8db3dbe4ebba5c8189888e2df12e4db1329
parent200b5a7cb0fb256ab47c933b3150aed91d9d3470 (diff)
Continue CMake support improvement
- Update documentation
- Remove type target
- Remove typos
- simplify target
- improve 1-1 matchign with Bazel targets
-rw-r--r--CMake/AbseilHelpers.cmake3
-rw-r--r--CMake/README.md79
-rw-r--r--absl/base/CMakeLists.txt49
-rw-r--r--absl/debugging/CMakeLists.txt39
-rw-r--r--absl/strings/CMakeLists.txt1
-rw-r--r--absl/types/CMakeLists.txt54
6 files changed, 174 insertions, 51 deletions
diff --git a/CMake/AbseilHelpers.cmake b/CMake/AbseilHelpers.cmake
index f6243c3b4889..9e1772bb5f0e 100644
--- a/CMake/AbseilHelpers.cmake
+++ b/CMake/AbseilHelpers.cmake
@@ -16,10 +16,9 @@
 
 include(CMakeParseArguments)
 
-set(_ABSL_HELPERS_PATH "${CMAKE_CURRENT_LIST_DIR}")
 
 #
-# create a static library absl_based on the following variable
+# create a library in the absl namespace
 #
 # parameters
 # SOURCES : sources files for the library
diff --git a/CMake/README.md b/CMake/README.md
index 53d3d3351891..ea56b6dac522 100644
--- a/CMake/README.md
+++ b/CMake/README.md
@@ -4,37 +4,64 @@
 
 ### Recommended usage : incorporate Abseil into an  CMake project
 
-    We recommended to build and use abseil in the same way than googletest
-    ( https://github.com/google/googletest/blob/master/googletest/README.md )
+  For API / ABI compatibility reasons, it is recommended to build
+  and use abseil in a subdirectory of your project or as an embedded
+  dependency
 
-    * Download abseil and copy it in a sub-directory in your project.
+  This is similar to the recommended usage of the googletest framework
+  ( https://github.com/google/googletest/blob/master/googletest/README.md )
 
-    * Or add abseil as a git-submodule in your project
+  Build and use step-by-step
 
-    You can then use the cmake `add_subdirectory()` command to include
-    abseil directly and use the abseil targets in your project.
 
-    Abseil requires CCTZ and the googletest framework. Consequently, 
+  1- Download abseil and copy it in a sub-directory in your project.
+      or add abseil as a git-submodule in your project
+
+  2- If not done yet, download and copy in your project the two dependencies of
+      abseil `cctz` and `googletest`
+
+    * cctz  https://github.com/google/cctz
+    * googletest https://github.com/google/googletest
+
+  3- You can then use the cmake command `add_subdirectory()` to include
+  abseil directly and use the abseil targets in your project.
+
+    Note: Abseil requires CCTZ and the googletest framework. Consequently,
     the targets  `gtest`, `gtest_main`, `gmock` and `cctz` need
-    to be declared in your project before including abseil with `add_subdirectory`. 
-    You can find instructions on how to get and build these projects at these 
-    URL :
-        * cctz  https://github.com/google/cctz
-        * googletest https://github.com/google/googletest
-
-    
-
-    Here is a short CMakeLists.txt example of a possible project file 
-    using abseil
-    
-    project(my_project)
-    
-    add_subdirectory(googletest)
-    add_subdirectory(cctz)    
-    add_subdirectory(abseil-cpp)
-
-    add_executable(my_exe source.cpp)
-    target_link_libraries(my_exe base synchronization strings)
+    to be declared in your project before including abseil with `add_subdirectory`.
+
+
+  4- Add the absl:: target you wish to use to the `target_link_libraries()`
+    section of your executable or of your library
+
+
+      Here is a short CMakeLists.txt example of a possible project file
+      using abseil
+
+      project(my_project)
+
+      add_subdirectory(googletest)
+      add_subdirectory(cctz)
+      add_subdirectory(abseil-cpp)
+
+      add_executable(my_exe source.cpp)
+      target_link_libraries(my_exe absl::base absl::synchronization absl::strings)
+
+
+    You will find here a non exhaustive list of absl public targets
+
+      absl::base
+      absl::algorithm
+      absl::container
+      absl::debugging
+      absl::memory
+      absl::meta
+      absl::numeric
+      absl::strings
+      absl::synchronization
+      absl::time
+      absl::utility
+
 
 
 
diff --git a/absl/base/CMakeLists.txt b/absl/base/CMakeLists.txt
index 06f09d8f9ac5..3e94d51fef8e 100644
--- a/absl/base/CMakeLists.txt
+++ b/absl/base/CMakeLists.txt
@@ -65,10 +65,8 @@ list(APPEND BASE_SRC
   "internal/sysinfo.cc"
   "internal/thread_identity.cc"
   "internal/unscaledcycleclock.cc"
-  "internal/spinlock_wait.cc"
   "internal/low_level_alloc.cc"
   "internal/malloc_hook.cc"
-  "dynamic_annotations.cc"
   ${BASE_PUBLIC_HEADERS}
   ${BASE_INTERNAL_HEADERS}
 )
@@ -78,6 +76,9 @@ absl_library(
     absl_base
   SOURCES
     ${BASE_SRC}
+  PUBLIC_LIBRARIES
+    absl_dynamic_annotations
+    absl_spinlock_wait
   EXPORT_NAME
     base
 )
@@ -93,6 +94,8 @@ absl_library(
     ${MALLOC_EXTENSION_SRC}
   PUBLIC_LIBRARIES
     ${MALLOC_EXTENSION_PUBLIC_LIBRARIES}
+  EXPORT_NAME
+    malloc_extension
 )
 
 # throw delegate library
@@ -107,9 +110,51 @@ absl_library(
     ${THROW_DELEGATE_PUBLIC_LIBRARIES}
   PRIVATE_COMPILE_FLAGS
     ${ABSL_EXCEPTIONS_FLAG}
+  EXPORT_NAME
+    throw_delegate
 )
 
 
+# dynamic_annotations library
+set(DYNAMIC_ANNOTATIONS_SRC "dynamic_annotations.cc")
+
+absl_library(
+  TARGET
+    absl_dynamic_annotations
+  SOURCES
+    ${DYNAMIC_ANNOTATIONS_SRC}
+)
+
+
+# spinlock_wait library
+set(SPINLOCK_WAIT_SRC "internal/spinlock_wait.cc")
+
+absl_library(
+  TARGET
+    absl_spinlock_wait
+  SOURCES
+    ${SPINLOCK_WAIT_SRC}
+)
+
+
+# malloc_internal library
+list(APPEND MALLOC_INTERNAL_SRC
+  "internal/low_level_alloc.cc"
+  "internal/malloc_hook.cc"
+  "internal/malloc_hook_mmap_linux.inc"
+)
+
+absl_library(
+  TARGET
+    absl_malloc_internal
+  SOURCES
+    ${MALLOC_INTERNAL_SRC}
+  PUBLIC_LIBRARIES
+    absl_dynamic_annotations
+)
+
+
+
 #
 ## TESTS
 #
diff --git a/absl/debugging/CMakeLists.txt b/absl/debugging/CMakeLists.txt
index 48529a3e2607..57efe80fd05e 100644
--- a/absl/debugging/CMakeLists.txt
+++ b/absl/debugging/CMakeLists.txt
@@ -42,17 +42,52 @@ absl_library(
     absl_stacktrace
   SOURCES
     ${STACKTRACE_SRC}
-  PUBLIC_LIBRARIES
-    ${STACKTRACE_PUBLIC_LIBRARIES}
   EXPORT_NAME
     stacktrace
 )
 
 
+list(APPEND LEAK_CHECK_SRC
+  "leak_check.cc"
+)
+
+
+# leak_check library
+absl_library(
+  TARGET
+    absl_leak_check
+  SOURCES
+    ${LEAK_CHECK_SRC}
+  PUBLIC_LIBRARIES
+    absl_base
+  EXPORT_NAME
+    leak_check
+)
+
+
+# component target
 absl_header_library(
   TARGET
     absl_debugging
+  PUBLIC_LIBRARIES
+    absl_stacktrace absl_leak_check
   EXPORT_NAME
     debugging
 )
 
+#
+## TESTS
+#
+
+# test leak_check_test
+list(APPEND LEAK_CHECK_TEST_SRC "leak_check_test.cc")
+
+absl_test(
+  TARGET
+    leak_check_test
+  SOURCES
+    ${LEAK_CHECK_TEST_SRC}
+  PUBLIC_LIBRARIES
+    absl_leak_check
+)
+
diff --git a/absl/strings/CMakeLists.txt b/absl/strings/CMakeLists.txt
index 7923e34402dd..dcd4974bc61d 100644
--- a/absl/strings/CMakeLists.txt
+++ b/absl/strings/CMakeLists.txt
@@ -16,7 +16,6 @@
 
 
 list(APPEND STRINGS_PUBLIC_HEADERS
-  "ascii_ctype.h"
   "ascii.h"
   "escaping.h"
   "match.h"
diff --git a/absl/types/CMakeLists.txt b/absl/types/CMakeLists.txt
index 95b19fec3a39..3e4644974921 100644
--- a/absl/types/CMakeLists.txt
+++ b/absl/types/CMakeLists.txt
@@ -23,12 +23,32 @@ list(APPEND TYPES_PUBLIC_HEADERS
 )
 
 
+# any library
+absl_header_library(
+  TARGET
+    absl_any
+  PUBLIC_LIBRARIES
+    absl::utility
+  EXPORT_NAME
+    any
+)
+
+# span library
+absl_header_library(
+  TARGET
+    absl_span
+  PUBLIC_LIBRARIES
+    absl::utility
+  EXPORT_NAME
+    span
+)
+
 
+# bad_any_cast library
 list(APPEND BAD_ANY_CAST_SRC
   "bad_any_cast.cc"
   ${TYPES_PUBLIC_HEADERS}
 )
-set(BAD_ANY_CAST_PUBLIC_LIBRARIES absl::base)
 
 absl_library(
   TARGET
@@ -36,13 +56,16 @@ absl_library(
   SOURCES
     ${BAD_ANY_CAST_SRC}
   PUBLIC_LIBRARIES
-    ${BAD_ANY_CAST_PUBLIC_LIBRARIES}
+    absl::base absl::any
+  EXPORT_NAME
+    bad_any_cast
 )
 
 
-
-set(OPTIONAL_SRC "optional.cc")
-set(OPTIONAL_PUBLIC_LIBRARIES absl::base)
+# optional library
+list(APPEND OPTIONAL_SRC
+  "optional.cc"
+)
 
 absl_library(
   TARGET
@@ -50,7 +73,9 @@ absl_library(
   SOURCES
     ${OPTIONAL_SRC}
   PUBLIC_LIBRARIES
-    ${OPTIONAL_PUBLIC_LIBRARIES}
+    absl::base
+  EXPORT_NAME
+    optional
 )
 
 
@@ -64,19 +89,12 @@ absl_library(
     ${BAD_OPTIONAL_ACCESS_SRC}
   PUBLIC_LIBRARIES
     ${BAD_OPTIONAL_ACCESS_PUBLIC_LIBRARIES}
+  EXPORT_NAME
+    bad_optional_access
 )
 
 
 
-absl_header_library(
-  TARGET
-    absl_types
-  PUBLIC_LIBRARIES
-    absl_optional absl_bad_any_cast absl_bad_optional_access
-  EXPORT_NAME
-    types
-)
-
 #
 ## TESTS
 #
@@ -84,7 +102,7 @@ absl_header_library(
 
 # test any_test
 set(ANY_TEST_SRC "any_test.cc")
-set(ANY_TEST_PUBLIC_LIBRARIES absl::base absl_throw_delegate absl_bad_any_cast test_instance_tracker_lib)
+set(ANY_TEST_PUBLIC_LIBRARIES absl::base absl::throw_delegate absl::any absl::bad_any_cast test_instance_tracker_lib)
 
 absl_test(
   TARGET
@@ -111,7 +129,7 @@ absl_test(
 
 # test span_test
 set(SPAN_TEST_SRC "span_test.cc")
-set(SPAN_TEST_PUBLIC_LIBRARIES absl::base absl::strings absl_throw_delegate absl_bad_any_cast test_instance_tracker_lib)
+set(SPAN_TEST_PUBLIC_LIBRARIES absl::base absl::strings absl::throw_delegate absl::span test_instance_tracker_lib)
 
 absl_test(
   TARGET
@@ -139,7 +157,7 @@ absl_test(
 
 # test optional_test
 set(OPTIONAL_TEST_SRC "optional_test.cc")
-set(OPTIONAL_TEST_PUBLIC_LIBRARIES absl::base absl_throw_delegate absl_optional bad_optional_access)
+set(OPTIONAL_TEST_PUBLIC_LIBRARIES absl::base absl::throw_delegate absl::optional absl_bad_optional_access)
 
 absl_test(
   TARGET