Skip to content

Commit

Permalink
[CMAKE] Plumb include_directories() into tablegen()
Browse files Browse the repository at this point in the history
Previously, the tablegen() cmake command, which defines custom
commands for running tablegen, included several hardcoded paths.  This
becomes unwieldy as there are more users for which these paths are
insufficient.  For most targets, cmake uses include_directories() and
the INCLUDE_DIRECTORIES directory property to specify include paths.
This change picks up the INCLUDE_DIRECTORIES property and adds it
to the include path used when running tablegen.  As a side effect, this
allows us to remove several hard coded paths to tablegen that are redundant
with specified include_directories().

I haven't removed the hardcoded path to CMAKE_CURRENT_SOURCE_DIR, which
seems generically useful.  There are several users in clang which apparently
don't have the current directory as an include_directories().  This could
be considered separately.

Differential Revision: https://reviews.llvm.org/D77156
  • Loading branch information
stephenneuendorffer committed Apr 3, 2020
1 parent 34a497b commit ae044c5
Show file tree
Hide file tree
Showing 12 changed files with 23 additions and 24 deletions.
2 changes: 1 addition & 1 deletion clang/cmake/modules/AddClang.cmake
Expand Up @@ -17,7 +17,7 @@ function(clang_tablegen)
message(FATAL_ERROR "SOURCE source-file required by clang_tablegen")
endif()

set( CLANG_TABLEGEN_ARGUMENTS -I ${CLANG_SOURCE_DIR}/include )
set( CLANG_TABLEGEN_ARGUMENTS "" )
set( LLVM_TARGET_DEFINITIONS ${CTG_SOURCE} )
tablegen(CLANG ${CTG_UNPARSED_ARGUMENTS} ${CLANG_TABLEGEN_ARGUMENTS})

Expand Down
7 changes: 3 additions & 4 deletions llvm/cmake/modules/TableGen.cmake
Expand Up @@ -2,10 +2,6 @@
# Extra parameters for `tblgen' may come after `ofn' parameter.
# Adds the name of the generated file to TABLEGEN_OUTPUT.

if(LLVM_MAIN_INCLUDE_DIR)
set(LLVM_TABLEGEN_FLAGS -I ${LLVM_MAIN_INCLUDE_DIR})
endif()

function(tablegen project ofn)
# Validate calling context.
if(NOT ${project}_TABLEGEN_EXE)
Expand Down Expand Up @@ -75,6 +71,8 @@ function(tablegen project ofn)
set(tblgen_change_flag "--write-if-changed")
endif()

get_directory_property(includes "INCLUDE_DIRECTORIES")
list(TRANSFORM includes PREPEND -I)
# We need both _TABLEGEN_TARGET and _TABLEGEN_EXE in the DEPENDS list
# (both the target and the file) to have .inc files rebuilt on
# a tablegen change, as cmake does not propagate file-level dependencies
Expand All @@ -86,6 +84,7 @@ function(tablegen project ofn)
# but lets us having smaller and cleaner code here.
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${ofn}
COMMAND ${${project}_TABLEGEN_EXE} ${ARGN} -I ${CMAKE_CURRENT_SOURCE_DIR}
${includes}
${LLVM_TABLEGEN_FLAGS}
${LLVM_TARGET_DEFINITIONS_ABSOLUTE}
${tblgen_change_flag}
Expand Down
2 changes: 1 addition & 1 deletion mlir/cmake/modules/AddMLIR.cmake
@@ -1,5 +1,5 @@
function(mlir_tablegen ofn)
tablegen(MLIR ${ARGV} "-I${MLIR_MAIN_SRC_DIR}" "-I${MLIR_INCLUDE_DIR}")
tablegen(MLIR ${ARGV})
set(TABLEGEN_OUTPUT ${TABLEGEN_OUTPUT} ${CMAKE_CURRENT_BINARY_DIR}/${ofn}
PARENT_SCOPE)
endfunction()
Expand Down
4 changes: 2 additions & 2 deletions mlir/examples/toy/Ch3/CMakeLists.txt
@@ -1,11 +1,12 @@
include_directories(include)
add_subdirectory(include)

set(LLVM_LINK_COMPONENTS
Support
)

set(LLVM_TARGET_DEFINITIONS mlir/ToyCombine.td)
mlir_tablegen(ToyCombine.inc -gen-rewriters "-I${CMAKE_CURRENT_SOURCE_DIR}/include")
mlir_tablegen(ToyCombine.inc -gen-rewriters)
add_public_tablegen_target(ToyCh3CombineIncGen)

add_toy_chapter(toyc-ch3
Expand All @@ -20,7 +21,6 @@ add_toy_chapter(toyc-ch3
ToyCh3CombineIncGen
)

include_directories(include/)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include/)
target_link_libraries(toyc-ch3
Expand Down
4 changes: 2 additions & 2 deletions mlir/examples/toy/Ch4/CMakeLists.txt
@@ -1,11 +1,12 @@
include_directories(include)
add_subdirectory(include)

set(LLVM_LINK_COMPONENTS
Support
)

set(LLVM_TARGET_DEFINITIONS mlir/ToyCombine.td)
mlir_tablegen(ToyCombine.inc -gen-rewriters "-I${CMAKE_CURRENT_SOURCE_DIR}/include")
mlir_tablegen(ToyCombine.inc -gen-rewriters)
add_public_tablegen_target(ToyCh4CombineIncGen)

add_toy_chapter(toyc-ch4
Expand All @@ -22,7 +23,6 @@ add_toy_chapter(toyc-ch4
ToyCh4CombineIncGen
)

include_directories(include/)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include/)
target_link_libraries(toyc-ch4
Expand Down
4 changes: 2 additions & 2 deletions mlir/examples/toy/Ch4/include/toy/CMakeLists.txt
@@ -1,6 +1,6 @@
set(LLVM_TARGET_DEFINITIONS Ops.td)
mlir_tablegen(Ops.h.inc -gen-op-decls "-I${CMAKE_CURRENT_SOURCE_DIR}/..")
mlir_tablegen(Ops.cpp.inc -gen-op-defs "-I${CMAKE_CURRENT_SOURCE_DIR}/..")
mlir_tablegen(Ops.h.inc -gen-op-decls)
mlir_tablegen(Ops.cpp.inc -gen-op-defs)
add_public_tablegen_target(ToyCh4OpsIncGen)

set(LLVM_TARGET_DEFINITIONS ShapeInferenceInterface.td)
Expand Down
4 changes: 2 additions & 2 deletions mlir/examples/toy/Ch5/CMakeLists.txt
@@ -1,11 +1,12 @@
include_directories(include)
add_subdirectory(include)

set(LLVM_LINK_COMPONENTS
Support
)

set(LLVM_TARGET_DEFINITIONS mlir/ToyCombine.td)
mlir_tablegen(ToyCombine.inc -gen-rewriters "-I${CMAKE_CURRENT_SOURCE_DIR}/include")
mlir_tablegen(ToyCombine.inc -gen-rewriters)
add_public_tablegen_target(ToyCh5CombineIncGen)

add_toy_chapter(toyc-ch5
Expand All @@ -23,7 +24,6 @@ add_toy_chapter(toyc-ch5
ToyCh5CombineIncGen
)

include_directories(include/)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include/)
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
Expand Down
4 changes: 2 additions & 2 deletions mlir/examples/toy/Ch5/include/toy/CMakeLists.txt
@@ -1,6 +1,6 @@
set(LLVM_TARGET_DEFINITIONS Ops.td)
mlir_tablegen(Ops.h.inc -gen-op-decls "-I${CMAKE_CURRENT_SOURCE_DIR}/..")
mlir_tablegen(Ops.cpp.inc -gen-op-defs "-I${CMAKE_CURRENT_SOURCE_DIR}/..")
mlir_tablegen(Ops.h.inc -gen-op-decls)
mlir_tablegen(Ops.cpp.inc -gen-op-defs)
add_public_tablegen_target(ToyCh5OpsIncGen)

set(LLVM_TARGET_DEFINITIONS ShapeInferenceInterface.td)
Expand Down
4 changes: 2 additions & 2 deletions mlir/examples/toy/Ch6/CMakeLists.txt
@@ -1,3 +1,4 @@
include_directories(include)
add_subdirectory(include)

set(LLVM_LINK_COMPONENTS
Expand All @@ -6,7 +7,7 @@ set(LLVM_LINK_COMPONENTS
)

set(LLVM_TARGET_DEFINITIONS mlir/ToyCombine.td)
mlir_tablegen(ToyCombine.inc -gen-rewriters "-I${CMAKE_CURRENT_SOURCE_DIR}/include")
mlir_tablegen(ToyCombine.inc -gen-rewriters)
add_public_tablegen_target(ToyCh6CombineIncGen)

add_toy_chapter(toyc-ch6
Expand All @@ -25,7 +26,6 @@ add_toy_chapter(toyc-ch6
ToyCh6CombineIncGen
)

include_directories(include/)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include/)
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
Expand Down
4 changes: 2 additions & 2 deletions mlir/examples/toy/Ch6/include/toy/CMakeLists.txt
@@ -1,6 +1,6 @@
set(LLVM_TARGET_DEFINITIONS Ops.td)
mlir_tablegen(Ops.h.inc -gen-op-decls "-I${CMAKE_CURRENT_SOURCE_DIR}/..")
mlir_tablegen(Ops.cpp.inc -gen-op-defs "-I${CMAKE_CURRENT_SOURCE_DIR}/..")
mlir_tablegen(Ops.h.inc -gen-op-decls)
mlir_tablegen(Ops.cpp.inc -gen-op-defs)
add_public_tablegen_target(ToyCh6OpsIncGen)

set(LLVM_TARGET_DEFINITIONS ShapeInferenceInterface.td)
Expand Down
4 changes: 2 additions & 2 deletions mlir/examples/toy/Ch7/CMakeLists.txt
@@ -1,3 +1,4 @@
include_directories(include)
add_subdirectory(include)

set(LLVM_LINK_COMPONENTS
Expand All @@ -6,7 +7,7 @@ set(LLVM_LINK_COMPONENTS
)

set(LLVM_TARGET_DEFINITIONS mlir/ToyCombine.td)
mlir_tablegen(ToyCombine.inc -gen-rewriters "-I${CMAKE_CURRENT_SOURCE_DIR}/include")
mlir_tablegen(ToyCombine.inc -gen-rewriters)
add_public_tablegen_target(ToyCh7CombineIncGen)

add_toy_chapter(toyc-ch7
Expand All @@ -25,7 +26,6 @@ add_toy_chapter(toyc-ch7
ToyCh7CombineIncGen
)

include_directories(include/)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include/)
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
Expand Down
4 changes: 2 additions & 2 deletions mlir/examples/toy/Ch7/include/toy/CMakeLists.txt
@@ -1,6 +1,6 @@
set(LLVM_TARGET_DEFINITIONS Ops.td)
mlir_tablegen(Ops.h.inc -gen-op-decls "-I${CMAKE_CURRENT_SOURCE_DIR}/..")
mlir_tablegen(Ops.cpp.inc -gen-op-defs "-I${CMAKE_CURRENT_SOURCE_DIR}/..")
mlir_tablegen(Ops.h.inc -gen-op-decls)
mlir_tablegen(Ops.cpp.inc -gen-op-defs)
add_public_tablegen_target(ToyCh7OpsIncGen)

set(LLVM_TARGET_DEFINITIONS ShapeInferenceInterface.td)
Expand Down

0 comments on commit ae044c5

Please sign in to comment.