Skip to content

Commit

Permalink
Move all config handling into a single place – a config.h file, do no…
Browse files Browse the repository at this point in the history
…t clutter the command line with these additional project-wide defines. (#5102)

Signed-off-by: Anton Korobeynikov <anton@korobeynikov.info>
  • Loading branch information
asl authored Jan 17, 2025
1 parent 1bae920 commit fa9dc08
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 14 deletions.
15 changes: 7 additions & 8 deletions BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,17 @@ genrule(
outs = ["config.h"],
# TODO: We should actually check these properly instead of just #undefing them.
# Maybe select() can help here?
# CONFIG_PKGDATADIR is where p4c should look for p4include at runtime.
# This will work only if the binary is executed by Bazel. For a general
# solution, we would need to make p4c aware of Bazel, specifically:
# https://github.com/bazelbuild/bazel/blob/master/tools/cpp/runfiles/runfiles_src.h
cmd = "sed -e 's|cmakedefine|define|g' \
-e 's|define HAVE_LIBGC 1|undef HAVE_LIBGC|g' \
-e 's|define HAVE_LIBBACKTRACE 1|undef HAVE_LIBBACKTRACE|g' \
-e 's|define HAVE_MM_MALLOC_H 1|undef HAVE_MM_MALLOC_H|g' \
< $(SRCS) > $(OUTS)",
-e 's|@MAX_LOGGING_LEVEL@|10|g' \
-e 's|@CONFIG_PKGDATADIR@|external/%s|g' \
< $(SRCS) > $(OUTS)" % repository_name(),
visibility = ["//visibility:private"],
)

Expand Down Expand Up @@ -215,13 +221,6 @@ cc_library(
"backends/dpdk/dbprint-dpdk.cpp",
"backends/dpdk/printUtils.cpp",
],
copts = [
# Where p4c should look for p4include at runtime.
("-DCONFIG_PKGDATADIR=\\\"external/%s\\\"" % repository_name()),
# This will work only if the binary is executed by Bazel. For a general
# solution, we would need to make p4c aware of Bazel, specifically:
# https://github.com/bazelbuild/bazel/blob/master/tools/cpp/runfiles/runfiles_src.h
],
textual_hdrs = glob([
"ir/**/*.h",
"frontends/**/*.h",
Expand Down
9 changes: 6 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,6 @@ set (P4C_DRIVER_NAME "p4c" CACHE STRING "Customize the name of the driver script

set(MAX_LOGGING_LEVEL 10 CACHE STRING "Control the maximum logging level for -T logs")
set_property(CACHE MAX_LOGGING_LEVEL PROPERTY STRINGS 0 1 2 3 4 5 6 7 8 9 10)
add_definitions(-DMAX_LOGGING_LEVEL=${MAX_LOGGING_LEVEL})

if (NOT CMAKE_BUILD_TYPE)
set (CMAKE_BUILD_TYPE "Release")
Expand Down Expand Up @@ -198,6 +197,10 @@ find_package (BISON 3.0 REQUIRED)
if (ENABLE_GTESTS)
include(GoogleTest)
p4c_obtain_googletest()
# Some P4C source files include gtest files. This will be propagated to the
# definition in config.h We need this definition to guard against compilation
# errors.
set(P4C_GTEST_ENABLED ON)
endif ()
include(Abseil)
p4c_obtain_abseil()
Expand Down Expand Up @@ -373,8 +376,8 @@ include_directories (
${P4C_BINARY_DIR}
${P4C_SOURCE_DIR}/extensions
)
add_definitions (-DCONFIG_PREFIX="${CMAKE_INSTALL_PREFIX}")
add_definitions (-DCONFIG_PKGDATADIR="${CMAKE_INSTALL_PREFIX}/${P4C_ARTIFACTS_OUTPUT_DIRECTORY}")
set(CONFIG_PREFIX ${CMAKE_INSTALL_PREFIX})
set(CONFIG_PKGDATADIR ${CMAKE_INSTALL_PREFIX}/${P4C_ARTIFACTS_OUTPUT_DIRECTORY})

set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${P4C_CXX_FLAGS}")
set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${P4C_CXX_FLAGS}")
Expand Down
3 changes: 0 additions & 3 deletions cmake/GoogleTest.cmake
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
macro(p4c_obtain_googletest)
# Some P4C source files include gtest files.
# We need this definition to guard against compilation errors.
add_definitions(-DP4C_GTEST_ENABLED)
# Print download state while setting up GTest.
set(FETCHCONTENT_QUIET_PREV ${FETCHCONTENT_QUIET})
set(FETCHCONTENT_QUIET OFF)
Expand Down
9 changes: 9 additions & 0 deletions cmake/config.h.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,12 @@

/* Define to 1 if you have the mm_malloc.h header */
#cmakedefine HAVE_MM_MALLOC_H 1

#cmakedefine CONFIG_PKGDATADIR "@CONFIG_PKGDATADIR@"

#cmakedefine CONFIG_PREFIX "@CONFIG_PREFIX@"

/* The maximum logging level for -T logs */
#cmakedefine MAX_LOGGING_LEVEL @MAX_LOGGING_LEVEL@

#cmakedefine P4C_GTEST_ENABLED 1
1 change: 1 addition & 0 deletions lib/json.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ limitations under the License.
#include <type_traits>
#include <vector>

#include "config.h"
#ifdef P4C_GTEST_ENABLED
#include "gtest/gtest_prod.h"
#endif
Expand Down
1 change: 1 addition & 0 deletions lib/source_file.h
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ limitations under the License.
#include <vector>

#include "absl/strings/str_format.h"
#include "config.h"
#include "cstring.h"
#include "stringify.h"

Expand Down

0 comments on commit fa9dc08

Please sign in to comment.