Skip to content

Commit

Permalink
Continue CMake support improvement
Browse files Browse the repository at this point in the history
- Update documentation
- Remove type target
- Remove typos
- simplify target
- improve 1-1 matchign with Bazel targets
  • Loading branch information
adevress committed Oct 31, 2017
1 parent 200b5a7 commit 5215f76
Show file tree
Hide file tree
Showing 5 changed files with 98 additions and 38 deletions.
2 changes: 1 addition & 1 deletion CMake/AbseilHelpers.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ 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
Expand Down
79 changes: 54 additions & 25 deletions CMake/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,37 +4,66 @@

### 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
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)


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




Expand Down
45 changes: 43 additions & 2 deletions absl/base/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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}
)
Expand All @@ -78,6 +76,9 @@ absl_library(
absl_base
SOURCES
${BASE_SRC}
PUBLIC_LIBRARIES
absl_dynamic_annotations
absl_spinlock_wait
EXPORT_NAME
base
)
Expand Down Expand Up @@ -110,6 +111,46 @@ absl_library(
)


# 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
#
Expand Down
1 change: 0 additions & 1 deletion absl/strings/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@


list(APPEND STRINGS_PUBLIC_HEADERS
"ascii_ctype.h"
"ascii.h"
"escaping.h"
"match.h"
Expand Down
9 changes: 0 additions & 9 deletions absl/types/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -68,15 +68,6 @@ absl_library(



absl_header_library(
TARGET
absl_types
PUBLIC_LIBRARIES
absl_optional absl_bad_any_cast absl_bad_optional_access
EXPORT_NAME
types
)

#
## TESTS
#
Expand Down

0 comments on commit 5215f76

Please sign in to comment.