Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
abseil-cpp
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
open
abseil-cpp
Commits
5fbde925
Unverified
Commit
5fbde925
authored
Oct 22, 2018
by
ahedberg
Committed by
GitHub
Oct 22, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #136 from rongjiecomputer/cc_library
[CMake] Implement absl_cc_library as Bazel's cc_library
parents
45221ccc
bd2d9a42
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
159 additions
and
70 deletions
+159
-70
CMake/AbseilHelpers.cmake
+103
-0
absl/base/CMakeLists.txt
+41
-55
absl/container/CMakeLists.txt
+4
-4
absl/debugging/CMakeLists.txt
+1
-1
absl/memory/CMakeLists.txt
+1
-1
absl/strings/CMakeLists.txt
+4
-4
absl/types/CMakeLists.txt
+5
-5
No files found.
CMake/AbseilHelpers.cmake
View file @
5fbde925
...
...
@@ -62,7 +62,110 @@ function(absl_library)
endif
()
endfunction
()
#
# CMake function to imitate Bazel's cc_library rule.
#
# Parameters:
# NAME: name of target (see Note)
# HDRS: List of public header files for the library
# SRCS: List of source files for the library
# DEPS: List of other libraries to be linked in to the binary targets
# COPTS: List of private compile options
# DEFINES: List of public defines
# LINKOPTS: List of link options
# PUBLIC: Add this so that this library will be exported under absl:: (see Note).
# TESTONLY: When added, this target will only be built if user passes -DABSL_RUN_TESTS=ON to CMake.
#
# Note:
#
# By default, absl_cc_library will always create a library named absl_internal_${NAME},
# which means other targets can only depend this library as absl_internal_${NAME}, not ${NAME}.
# This is to reduce namespace pollution.
#
# absl_cc_library(
# NAME
# awesome_lib
# HDRS
# "a.h"
# SRCS
# "a.cc"
# )
# absl_cc_library(
# NAME
# fantastic_lib
# SRCS
# "b.cc"
# DEPS
# absl_internal_awesome_lib # not "awesome_lib"!
# )
#
# If PUBLIC is set, absl_cc_library will instead create a target named
# absl_${NAME} and an alias absl::${NAME}.
#
# absl_cc_library(
# NAME
# main_lib
# ...
# PUBLIC
# )
#
# User can then use the library as absl::main_lib (although absl_main_lib is defined too).
#
# TODO: Implement "ALWAYSLINK"
function
(
absl_cc_library
)
cmake_parse_arguments
(
ABSL_CC_LIB
"DISABLE_INSTALL;PUBLIC;TESTONLY"
"NAME"
"HDRS;SRCS;COPTS;DEFINES;LINKOPTS;DEPS"
${
ARGN
}
)
if
(
NOT ABSL_CC_LIB_TESTONLY OR ABSL_RUN_TESTS
)
if
(
ABSL_CC_LIB_PUBLIC
)
set
(
_NAME
"absl_
${
ABSL_CC_LIB_NAME
}
"
)
else
()
set
(
_NAME
"absl_internal_
${
ABSL_CC_LIB_NAME
}
"
)
endif
()
# Check if this is a header-only library
if
(
"
${
ABSL_CC_LIB_SRCS
}
"
STREQUAL
""
)
set
(
ABSL_CC_LIB_IS_INTERFACE 1
)
else
()
set
(
ABSL_CC_LIB_IS_INTERFACE 0
)
endif
()
if
(
NOT ABSL_CC_LIB_IS_INTERFACE
)
add_library
(
${
_NAME
}
STATIC
""
)
target_sources
(
${
_NAME
}
PRIVATE
${
ABSL_CC_LIB_SRCS
}
${
ABSL_CC_LIB_HDRS
}
)
target_include_directories
(
${
_NAME
}
PUBLIC
${
ABSL_COMMON_INCLUDE_DIRS
}
)
# TODO(rongjiecomputer): Revisit ABSL_COMPILE_CXXFLAGS when fixing GH#123
target_compile_options
(
${
_NAME
}
PRIVATE
${
ABSL_COMPILE_CXXFLAGS
}
${
ABSL_CC_LIB_COPTS
}
)
target_link_libraries
(
${
_NAME
}
PUBLIC
${
ABSL_CC_LIB_DEPS
}
PRIVATE
${
ABSL_CC_LIB_LINKOPTS
}
)
target_compile_definitions
(
${
_NAME
}
PUBLIC
${
ABSL_CC_LIB_DEFINES
}
)
# Add all Abseil targets to a a folder in the IDE for organization.
set_property
(
TARGET
${
_NAME
}
PROPERTY FOLDER
${
ABSL_IDE_FOLDER
}
)
else
()
# Generating header-only library
add_library
(
${
_NAME
}
INTERFACE
)
target_include_directories
(
${
_NAME
}
INTERFACE
${
ABSL_COMMON_INCLUDE_DIRS
}
)
target_link_libraries
(
${
_NAME
}
INTERFACE
${
ABSL_CC_LIB_DEPS
}
${
ABSL_CC_LIB_LINKOPTS
}
)
target_compile_definitions
(
${
_NAME
}
INTERFACE
${
ABSL_CC_LIB_DEFINES
}
)
endif
()
if
(
ABSL_CC_LIB_PUBLIC
)
add_library
(
absl::
${
ABSL_CC_LIB_NAME
}
ALIAS
${
_NAME
}
)
endif
()
endif
()
endfunction
()
#
# header only virtual target creation
...
...
absl/base/CMakeLists.txt
View file @
5fbde925
...
...
@@ -78,54 +78,44 @@ absl_library(
${
BASE_SRC
}
PUBLIC_LIBRARIES
absl_dynamic_annotations
absl_spinlock_wait
absl_
internal_
spinlock_wait
EXPORT_NAME
base
)
# throw delegate library
set
(
THROW_DELEGATE_SRC
"internal/throw_delegate.cc"
)
absl_library
(
TARGET
absl_throw_delegate
SOURCES
${
THROW_DELEGATE_SRC
}
PUBLIC_LIBRARIES
${
THROW_DELEGATE_PUBLIC_LIBRARIES
}
PRIVATE_COMPILE_FLAGS
${
ABSL_EXCEPTIONS_FLAG
}
EXPORT_NAME
absl_cc_library
(
NAME
throw_delegate
SRCS
"internal/throw_delegate.cc"
HDRS
"internal/throw_delegate.h"
COPTS
${
ABSL_EXCEPTIONS_FLAG
}
DEPS
absl::base
)
if
(
BUILD_TESTING
)
# exception-safety testing library
set
(
EXCEPTION_SAFETY_TESTING_SRC
# exception-safety testing library
absl_cc_library
(
NAME
exception_safety_testing
HDRS
"internal/exception_safety_testing.h"
SRCS
"internal/exception_safety_testing.cc"
)
set
(
EXCEPTION_SAFETY_TESTING_PUBLIC_LIBRARIES
${
ABSL_TEST_COMMON_LIBRARIES
}
COPTS
${
ABSL_EXCEPTIONS_FLAG
}
DEPS
absl::base
absl::memory
absl::meta
absl::strings
absl::optional
gtest
)
absl_library
(
TARGET
absl_base_internal_exception_safety_testing
SOURCES
${
EXCEPTION_SAFETY_TESTING_SRC
}
PUBLIC_LIBRARIES
${
EXCEPTION_SAFETY_TESTING_PUBLIC_LIBRARIES
}
PRIVATE_COMPILE_FLAGS
${
ABSL_EXCEPTIONS_FLAG
}
TESTONLY
)
endif
()
# dynamic_annotations library
...
...
@@ -138,29 +128,25 @@ absl_library(
${
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"
absl_cc_library
(
NAME
spinlock_wait
SRCS
"internal/spinlock_wait.cc"
HDRS
"internal/scheduling_mode.h"
"internal/spinlock_wait.h"
)
absl_library
(
TARGET
absl_malloc_internal
SOURCES
${
MALLOC_INTERNAL_SRC
}
PUBLIC_LIBRARIES
absl_cc_library
(
NAME
malloc_internal
SRCS
"internal/low_level_alloc.cc"
HDRS
"internal/direct_mmap.h"
"internal/low_level_alloc.h"
DEPS
absl_dynamic_annotations
)
...
...
@@ -211,7 +197,7 @@ absl_test(
# test absl_throw_delegate_test
set
(
THROW_DELEGATE_TEST_SRC
"throw_delegate_test.cc"
)
set
(
THROW_DELEGATE_TEST_PUBLIC_LIBRARIES absl::base absl_throw_delegate
)
set
(
THROW_DELEGATE_TEST_PUBLIC_LIBRARIES absl::base absl_
internal_
throw_delegate
)
absl_test
(
TARGET
...
...
@@ -368,7 +354,7 @@ absl_test(
set
(
EXCEPTION_SAFETY_TESTING_TEST_SRC
"exception_safety_testing_test.cc"
)
set
(
EXCEPTION_SAFETY_TESTING_TEST_PUBLIC_LIBRARIES
absl::base
absl_
base_
internal_exception_safety_testing
absl_internal_exception_safety_testing
absl::memory
absl::meta
absl::strings
...
...
absl/container/CMakeLists.txt
View file @
5fbde925
...
...
@@ -82,7 +82,7 @@ absl_library(
# test fixed_array_test
set
(
FIXED_ARRAY_TEST_SRC
"fixed_array_test.cc"
)
set
(
FIXED_ARRAY_TEST_PUBLIC_LIBRARIES absl::base absl_throw_delegate test_instance_tracker_lib
)
set
(
FIXED_ARRAY_TEST_PUBLIC_LIBRARIES absl::base absl_
internal_
throw_delegate test_instance_tracker_lib
)
absl_test
(
TARGET
...
...
@@ -111,7 +111,7 @@ absl_test(
set
(
FIXED_ARRAY_EXCEPTION_SAFETY_TEST_SRC
"fixed_array_exception_safety_test.cc"
)
set
(
FIXED_ARRAY_EXCEPTION_SAFETY_TEST_PUBLIC_LIBRARIES
absl::container
absl_
base_
internal_exception_safety_testing
absl_internal_exception_safety_testing
)
absl_test
(
...
...
@@ -128,7 +128,7 @@ absl_test(
# test inlined_vector_test
set
(
INLINED_VECTOR_TEST_SRC
"inlined_vector_test.cc"
)
set
(
INLINED_VECTOR_TEST_PUBLIC_LIBRARIES absl::base absl_throw_delegate test_instance_tracker_lib
)
set
(
INLINED_VECTOR_TEST_PUBLIC_LIBRARIES absl::base absl_
internal_
throw_delegate test_instance_tracker_lib
)
absl_test
(
TARGET
...
...
@@ -153,7 +153,7 @@ absl_test(
# test test_instance_tracker_test
set
(
TEST_INSTANCE_TRACKER_TEST_SRC
"internal/test_instance_tracker_test.cc"
)
set
(
TEST_INSTANCE_TRACKER_TEST_PUBLIC_LIBRARIES absl::base absl_throw_delegate test_instance_tracker_lib
)
set
(
TEST_INSTANCE_TRACKER_TEST_PUBLIC_LIBRARIES absl::base absl_
internal_
throw_delegate test_instance_tracker_lib
)
absl_test
(
...
...
absl/debugging/CMakeLists.txt
View file @
5fbde925
...
...
@@ -85,7 +85,7 @@ absl_library(
${
SYMBOLIZE_SRC
}
PUBLIC_LIBRARIES
absl::base
absl_malloc_internal
absl_
internal_
malloc_internal
EXPORT_NAME
symbolize
)
...
...
absl/memory/CMakeLists.txt
View file @
5fbde925
...
...
@@ -53,7 +53,7 @@ absl_test(
set
(
MEMORY_EXCEPTION_SAFETY_TEST_SRC
"memory_exception_safety_test.cc"
)
set
(
MEMORY_EXCEPTION_SAFETY_TEST_PUBLIC_LIBRARIES
absl::memory
absl_
base_
internal_exception_safety_testing
absl_internal_exception_safety_testing
)
absl_test
(
...
...
absl/strings/CMakeLists.txt
View file @
5fbde925
...
...
@@ -67,7 +67,7 @@ list(APPEND STRINGS_SRC
${
STRINGS_PUBLIC_HEADERS
}
${
STRINGS_INTERNAL_HEADERS
}
)
set
(
STRINGS_PUBLIC_LIBRARIES absl::base absl_throw_delegate
)
set
(
STRINGS_PUBLIC_LIBRARIES absl::base absl_
internal_
throw_delegate
)
absl_library
(
TARGET
...
...
@@ -207,7 +207,7 @@ absl_test(
# test string_view_test
set
(
STRING_VIEW_TEST_SRC
"string_view_test.cc"
)
set
(
STRING_VIEW_TEST_PUBLIC_LIBRARIES absl::strings absl_throw_delegate absl::base
)
set
(
STRING_VIEW_TEST_PUBLIC_LIBRARIES absl::strings absl_
internal_
throw_delegate absl::base
)
absl_test
(
TARGET
...
...
@@ -235,7 +235,7 @@ absl_test(
# test str_replace_test
set
(
STR_REPLACE_TEST_SRC
"str_replace_test.cc"
)
set
(
STR_REPLACE_TEST_PUBLIC_LIBRARIES absl::strings absl::base absl_throw_delegate
)
set
(
STR_REPLACE_TEST_PUBLIC_LIBRARIES absl::strings absl::base absl_
internal_
throw_delegate
)
absl_test
(
TARGET
...
...
@@ -249,7 +249,7 @@ absl_test(
# test str_split_test
set
(
STR_SPLIT_TEST_SRC
"str_split_test.cc"
)
set
(
STR_SPLIT_TEST_PUBLIC_LIBRARIES absl::strings absl::base absl_throw_delegate
)
set
(
STR_SPLIT_TEST_PUBLIC_LIBRARIES absl::strings absl::base absl_
internal_
throw_delegate
)
absl_test
(
TARGET
...
...
absl/types/CMakeLists.txt
View file @
5fbde925
...
...
@@ -123,7 +123,7 @@ absl_library(
# test any_test
set
(
ANY_TEST_SRC
"any_test.cc"
)
set
(
ANY_TEST_PUBLIC_LIBRARIES absl::base absl
::
throw_delegate absl::any absl::bad_any_cast test_instance_tracker_lib
)
set
(
ANY_TEST_PUBLIC_LIBRARIES absl::base absl
_internal_
throw_delegate absl::any absl::bad_any_cast test_instance_tracker_lib
)
absl_test
(
TARGET
...
...
@@ -152,7 +152,7 @@ set(ANY_EXCEPTION_SAFETY_TEST_SRC "any_exception_safety_test.cc")
set
(
ANY_EXCEPTION_SAFETY_TEST_PUBLIC_LIBRARIES
absl::any
absl::base
absl_
base_
internal_exception_safety_testing
absl_internal_exception_safety_testing
)
absl_test
(
...
...
@@ -169,7 +169,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::span test_instance_tracker_lib
)
set
(
SPAN_TEST_PUBLIC_LIBRARIES absl::base absl::strings absl
_internal_
throw_delegate absl::span test_instance_tracker_lib
)
absl_test
(
TARGET
...
...
@@ -197,7 +197,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 absl_bad_optional_access
)
set
(
OPTIONAL_TEST_PUBLIC_LIBRARIES absl::base absl
_internal_
throw_delegate absl::optional absl_bad_optional_access
)
absl_test
(
TARGET
...
...
@@ -213,7 +213,7 @@ absl_test(
set
(
OPTIONAL_EXCEPTION_SAFETY_TEST_SRC
"optional_exception_safety_test.cc"
)
set
(
OPTIONAL_EXCEPTION_SAFETY_TEST_PUBLIC_LIBRARIES
absl::optional
absl_
base_
internal_exception_safety_testing
absl_internal_exception_safety_testing
)
absl_test
(
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment