From 66c8d9716036301cf89e3a870837c93536b31d9d Mon Sep 17 00:00:00 2001 From: David Sisson Date: Fri, 20 Oct 2023 11:38:37 -0700 Subject: [PATCH] feat: update CMAKE files to work in a submodule (#87) --- CMakeLists.txt | 14 ++++++++++---- src/substrait/proto/CMakeLists.txt | 15 ++++++--------- .../textplan/parser/grammar/CMakeLists.txt | 5 +++-- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d4f78ef9..552c0897 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,11 +11,17 @@ set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED True) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -add_compile_options($<$:-fsanitize=undefined>) -add_link_options($<$:-fsanitize=undefined>) +option(SUBSTRAIT_CPP_SANITIZE_DEBUG_BUILD + "Turns on address and undefined memory sanitization runtime checking." + ON) -add_compile_options($<$:-fsanitize=address>) -add_link_options($<$:-fsanitize=address>) +if(${SUBSTRAIT_CPP_SANITIZE_DEBUG_BUILD}) + add_compile_options($<$:-fsanitize=undefined>) + add_link_options($<$:-fsanitize=undefined>) + + add_compile_options($<$:-fsanitize=address>) + add_link_options($<$:-fsanitize=address>) +endif() option( SUBSTRAIT_CPP_BUILD_TESTING diff --git a/src/substrait/proto/CMakeLists.txt b/src/substrait/proto/CMakeLists.txt index 0c5d5a62..26198013 100644 --- a/src/substrait/proto/CMakeLists.txt +++ b/src/substrait/proto/CMakeLists.txt @@ -1,5 +1,4 @@ # SPDX-License-Identifier: Apache-2.0 - find_package(Protobuf REQUIRED) include_directories(${Protobuf_INCLUDE_DIRS}) include_directories(${CMAKE_CURRENT_BINARY_DIR}) @@ -8,8 +7,10 @@ find_package(Perl REQUIRED) set(UPDATE_PROTO_PACKAGE_TOOL "${CMAKE_CURRENT_SOURCE_DIR}/update_proto_package.pl") -set(PROTO_INCLUDE_DIR - "${CMAKE_SOURCE_DIR}/third_party/substrait/proto/substrait") +set(RAW_PROTO_INCLUDE_DIR + "${CMAKE_CURRENT_SOURCE_DIR}/../../../third_party/substrait/proto/substrait" +) +cmake_path(SET PROTO_INCLUDE_DIR NORMALIZE "${RAW_PROTO_INCLUDE_DIR}") cmake_path(GET PROTO_INCLUDE_DIR PARENT_PATH PROTO_INCLUDE_TOPLEVEL_DIR) set(PROTOBUF_IMPORT_DIRS ${PROTO_INCLUDE_DIR}/extensions) @@ -24,9 +25,7 @@ set(GENERATED_PROTO_MIDLEVEL_DIR "${GENERATED_PROTO_TOPLEVEL_DIR}/substrait/proto") set(GENERATED_PROTOBUF_LIST) foreach(PROTO_FILE IN LISTS PROTOBUF_FILELIST) - file(RELATIVE_PATH RELATIVE_PROTO_PATH - "${CMAKE_SOURCE_DIR}/third_party/substrait/proto/substrait" - "${PROTO_FILE}") + file(RELATIVE_PATH RELATIVE_PROTO_PATH "${PROTO_INCLUDE_DIR}" "${PROTO_FILE}") set(GENERATED_PROTO_FILE ${GENERATED_PROTO_MIDLEVEL_DIR}/${RELATIVE_PROTO_PATH}) @@ -54,9 +53,7 @@ cmake_path(GET PROTO_OUTPUT_PARENT_DIR PARENT_PATH PROTO_OUTPUT_MIDLEVEL_DIR) cmake_path(GET PROTO_OUTPUT_MIDLEVEL_DIR PARENT_PATH PROTO_OUTPUT_TOPLEVEL_DIR) foreach(PROTO_FILE IN LISTS PROTOBUF_FILELIST) - file(RELATIVE_PATH RELATIVE_PROTO_PATH - "${CMAKE_SOURCE_DIR}/third_party/substrait/proto/substrait" - "${PROTO_FILE}") + file(RELATIVE_PATH RELATIVE_PROTO_PATH "${PROTO_INCLUDE_DIR}" "${PROTO_FILE}") set(GENERATED_PROTO_FILE ${GENERATED_PROTO_MIDLEVEL_DIR}/${RELATIVE_PROTO_PATH}) message( diff --git a/src/substrait/textplan/parser/grammar/CMakeLists.txt b/src/substrait/textplan/parser/grammar/CMakeLists.txt index e04ea81a..47d88944 100644 --- a/src/substrait/textplan/parser/grammar/CMakeLists.txt +++ b/src/substrait/textplan/parser/grammar/CMakeLists.txt @@ -1,12 +1,13 @@ # SPDX-License-Identifier: Apache-2.0 -list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/third_party/antlr4/cmake") +list(APPEND CMAKE_MODULE_PATH + "${CMAKE_CURRENT_SOURCE_DIR}/../../../../../third_party/antlr4/cmake") set(CMAKE_CXX_STANDARD 17) add_definitions(-DANTLR4CPP_STATIC) -set(GRAMMAR_DIR ${CMAKE_BINARY_DIR}/src/substrait/textplan/parser/grammar) +set(GRAMMAR_DIR ${CMAKE_CURRENT_BINARY_DIR}) # using /MD flag for antlr4_runtime (for Visual C++ compilers only) set(ANTLR4_WITH_STATIC_CRT OFF)