Skip to content

Commit

Permalink
Restructure rules_cc
Browse files Browse the repository at this point in the history
BEGIN_PUBLIC
Restructure rules_cc

Design doc: https://docs.google.com/document/d/1L1JFgjpZ7SrBinb24DC_5nTIELeYDacikcme-YcA7xs/edit
END_PUBLIC

PiperOrigin-RevId: 643879458
Change-Id: Id3fd760fde1c1145cb5044fff9020b61652d2f25
  • Loading branch information
comius authored and Copybara-Service committed Jun 17, 2024
1 parent 5e848c1 commit 94d34d7
Show file tree
Hide file tree
Showing 27 changed files with 538 additions and 192 deletions.
43 changes: 43 additions & 0 deletions cc/cc_binary.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Copyright 2024 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""cc_binary rule"""

# TODO(bazel-team): To avoid breaking changes, if the below are no longer
# forwarding to native rules, flag @bazel_tools@bazel_tools//tools/cpp:link_extra_libs
# should either: (a) alias the flag @rules_cc//:link_extra_libs, or (b) be
# added as a dependency to @rules_cc//:link_extra_lib. The intermediate library
# @bazel_tools@bazel_tools//tools/cpp:link_extra_lib should either be added as a dependency
# to @rules_cc//:link_extra_lib, or removed entirely (if possible).
_LINK_EXTRA_LIB = "@rules_cc//:link_extra_lib" # copybara-use-repo-external-label

def cc_binary(**attrs):
"""Bazel cc_binary rule.
https://docs.bazel.build/versions/main/be/c-cpp.html#cc_binary
Args:
**attrs: Rule attributes
"""

is_library = "linkshared" in attrs and attrs["linkshared"]

# Executable builds also include the "link_extra_lib" library.
if not is_library:
if "deps" in attrs and attrs["deps"] != None:
attrs["deps"] = attrs["deps"] + [_LINK_EXTRA_LIB]
else:
attrs["deps"] = [_LINK_EXTRA_LIB]

# buildifier: disable=native-cc
native.cc_binary(**attrs)
17 changes: 17 additions & 0 deletions cc/cc_import.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Copyright 2024 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""cc_import rule"""

def cc_import(**kwargs):
native.cc_import(**kwargs) # buildifier: disable=native-cc
17 changes: 17 additions & 0 deletions cc/cc_library.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Copyright 2024 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""cc_library rule"""

def cc_library(**kwargs):
native.cc_library(**kwargs) # buildifier: disable=native-cc
17 changes: 17 additions & 0 deletions cc/cc_shared_library.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Copyright 2024 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""cc_library rule"""

def cc_shared_library(**kwargs):
native.cc_shared_library(**kwargs) # buildifier: disable=native-cc
44 changes: 44 additions & 0 deletions cc/cc_test.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Copyright 2024 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""cc_test rule"""

# TODO(bazel-team): To avoid breaking changes, if the below are no longer
# forwarding to native rules, flag @bazel_tools@bazel_tools//tools/cpp:link_extra_libs
# should either: (a) alias the flag @rules_cc//:link_extra_libs, or (b) be
# added as a dependency to @rules_cc//:link_extra_lib. The intermediate library
# @bazel_tools@bazel_tools//tools/cpp:link_extra_lib should either be added as a dependency
# to @rules_cc//:link_extra_lib, or removed entirely (if possible).
_LINK_EXTRA_LIB = "@rules_cc//:link_extra_lib" # copybara-use-repo-external-label

def cc_test(**attrs):
"""Bazel cc_test rule.
https://docs.bazel.build/versions/main/be/c-cpp.html#cc_test
Args:
**attrs: Rule attributes
"""

is_library = "linkshared" in attrs and attrs["linkshared"]

# Executable builds also include the "link_extra_lib" library.
if not is_library:
if "deps" in attrs and attrs["deps"] != None:
attrs["deps"] = attrs["deps"] + [_LINK_EXTRA_LIB]
else:
attrs["deps"] = [_LINK_EXTRA_LIB]

# buildifier: disable=native-cc
native.cc_test(**attrs)
31 changes: 31 additions & 0 deletions cc/common/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Copyright 2024 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

load("@bazel_skylib//:bzl_library.bzl", "bzl_library")

bzl_library(
name = "common",
srcs = glob(["*.bzl"]),
visibility = ["//visibility:public"],
deps = ["//cc/private/rules_impl:native_bzl"],
)

filegroup(
name = "srcs",
srcs = glob([
"**/*.bzl",
"**/BUILD",
]),
visibility = ["//visibility:public"],
)
19 changes: 19 additions & 0 deletions cc/common/cc_common.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Copyright 2024 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""cc_common module"""

load("//cc/private/rules_impl:native.bzl", "native_cc_common")

cc_common = native_cc_common
19 changes: 19 additions & 0 deletions cc/common/cc_info.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Copyright 2024 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""CcInfo"""

load("//cc/private/rules_impl:native.bzl", "NativeCcInfo")

CcInfo = NativeCcInfo
18 changes: 18 additions & 0 deletions cc/common/cc_shared_library_hint_info.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Copyright 2024 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""CcSharedLibraryInfo"""

load("//cc/private/rules_impl:native.bzl", "NativeCcSharedLibraryHintInfo")

CcSharedLibraryHintInfo = NativeCcSharedLibraryHintInfo
18 changes: 18 additions & 0 deletions cc/common/cc_shared_library_info.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Copyright 2024 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""CcSharedLibraryInfo"""

load("//cc/private/rules_impl:native.bzl", "NativeCcSharedLibraryInfo")

CcSharedLibraryInfo = NativeCcSharedLibraryInfo
18 changes: 18 additions & 0 deletions cc/common/debug_package_info.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Copyright 2024 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""DebugPackageInfo"""

load("//cc/private/rules_impl:native.bzl", "NativeDebugPackageInfo")

DebugPackageInfo = NativeDebugPackageInfo
Loading

0 comments on commit 94d34d7

Please sign in to comment.