[llvm] ae044c5 - [CMAKE] Plumb include_directories() into tablegen()

Stephen Neuendorffer via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 3 11:06:34 PDT 2020


Yup, it's already reverted.  I'll use something that works in 3.4.3

Steve

On Fri, Apr 3, 2020 at 11:04 AM Craig Topper via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> I think I'm getting errors that TRANSFORM isn't a valid list sub-command
> with cmake 3.4.3
>
> ~Craig
>
>
> On Fri, Apr 3, 2020 at 10:38 AM Stephen Neuendorffer via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>>
>> Author: Stephen Neuendorffer
>> Date: 2020-04-03T10:38:25-07:00
>> New Revision: ae044c5b0caa095602b6ef4cca40d57efc26a8f6
>>
>> URL:
>> https://github.com/llvm/llvm-project/commit/ae044c5b0caa095602b6ef4cca40d57efc26a8f6
>> DIFF:
>> https://github.com/llvm/llvm-project/commit/ae044c5b0caa095602b6ef4cca40d57efc26a8f6.diff
>>
>> LOG: [CMAKE] Plumb include_directories() into tablegen()
>>
>> 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
>>
>> Added:
>>
>>
>> Modified:
>>     clang/cmake/modules/AddClang.cmake
>>     llvm/cmake/modules/TableGen.cmake
>>     mlir/cmake/modules/AddMLIR.cmake
>>     mlir/examples/toy/Ch3/CMakeLists.txt
>>     mlir/examples/toy/Ch4/CMakeLists.txt
>>     mlir/examples/toy/Ch4/include/toy/CMakeLists.txt
>>     mlir/examples/toy/Ch5/CMakeLists.txt
>>     mlir/examples/toy/Ch5/include/toy/CMakeLists.txt
>>     mlir/examples/toy/Ch6/CMakeLists.txt
>>     mlir/examples/toy/Ch6/include/toy/CMakeLists.txt
>>     mlir/examples/toy/Ch7/CMakeLists.txt
>>     mlir/examples/toy/Ch7/include/toy/CMakeLists.txt
>>
>> Removed:
>>
>>
>>
>>
>> ################################################################################
>> diff  --git a/clang/cmake/modules/AddClang.cmake
>> b/clang/cmake/modules/AddClang.cmake
>> index 577cc11ab015..c1bb386de6f7 100644
>> --- a/clang/cmake/modules/AddClang.cmake
>> +++ b/clang/cmake/modules/AddClang.cmake
>> @@ -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})
>>
>>
>> diff  --git a/llvm/cmake/modules/TableGen.cmake
>> b/llvm/cmake/modules/TableGen.cmake
>> index 632f69aa3386..8d0c5afabe96 100644
>> --- a/llvm/cmake/modules/TableGen.cmake
>> +++ b/llvm/cmake/modules/TableGen.cmake
>> @@ -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)
>> @@ -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
>> @@ -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}
>>
>> diff  --git a/mlir/cmake/modules/AddMLIR.cmake
>> b/mlir/cmake/modules/AddMLIR.cmake
>> index 2adb8f2f2935..7449f54ea877 100644
>> --- a/mlir/cmake/modules/AddMLIR.cmake
>> +++ b/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()
>>
>> diff  --git a/mlir/examples/toy/Ch3/CMakeLists.txt
>> b/mlir/examples/toy/Ch3/CMakeLists.txt
>> index 4dab5e4d0626..ef70dcbac309 100644
>> --- a/mlir/examples/toy/Ch3/CMakeLists.txt
>> +++ b/mlir/examples/toy/Ch3/CMakeLists.txt
>> @@ -1,3 +1,4 @@
>> +include_directories(include)
>>  add_subdirectory(include)
>>
>>  set(LLVM_LINK_COMPONENTS
>> @@ -5,7 +6,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(ToyCh3CombineIncGen)
>>
>>  add_toy_chapter(toyc-ch3
>> @@ -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
>>
>> diff  --git a/mlir/examples/toy/Ch4/CMakeLists.txt
>> b/mlir/examples/toy/Ch4/CMakeLists.txt
>> index 3589b10645a6..ae30a691894e 100644
>> --- a/mlir/examples/toy/Ch4/CMakeLists.txt
>> +++ b/mlir/examples/toy/Ch4/CMakeLists.txt
>> @@ -1,3 +1,4 @@
>> +include_directories(include)
>>  add_subdirectory(include)
>>
>>  set(LLVM_LINK_COMPONENTS
>> @@ -5,7 +6,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(ToyCh4CombineIncGen)
>>
>>  add_toy_chapter(toyc-ch4
>> @@ -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
>>
>> diff  --git a/mlir/examples/toy/Ch4/include/toy/CMakeLists.txt
>> b/mlir/examples/toy/Ch4/include/toy/CMakeLists.txt
>> index 798d0df1d8d6..7f60477fc272 100644
>> --- a/mlir/examples/toy/Ch4/include/toy/CMakeLists.txt
>> +++ b/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)
>>
>> diff  --git a/mlir/examples/toy/Ch5/CMakeLists.txt
>> b/mlir/examples/toy/Ch5/CMakeLists.txt
>> index c3627cf11cd7..ba3a88e03c0b 100644
>> --- a/mlir/examples/toy/Ch5/CMakeLists.txt
>> +++ b/mlir/examples/toy/Ch5/CMakeLists.txt
>> @@ -1,3 +1,4 @@
>> +include_directories(include)
>>  add_subdirectory(include)
>>
>>  set(LLVM_LINK_COMPONENTS
>> @@ -5,7 +6,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(ToyCh5CombineIncGen)
>>
>>  add_toy_chapter(toyc-ch5
>> @@ -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)
>>
>> diff  --git a/mlir/examples/toy/Ch5/include/toy/CMakeLists.txt
>> b/mlir/examples/toy/Ch5/include/toy/CMakeLists.txt
>> index aaa932896d0f..e8bd1fc0bc2e 100644
>> --- a/mlir/examples/toy/Ch5/include/toy/CMakeLists.txt
>> +++ b/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)
>>
>> diff  --git a/mlir/examples/toy/Ch6/CMakeLists.txt
>> b/mlir/examples/toy/Ch6/CMakeLists.txt
>> index 5d39a9ab5fc1..be797c6c1e96 100644
>> --- a/mlir/examples/toy/Ch6/CMakeLists.txt
>> +++ b/mlir/examples/toy/Ch6/CMakeLists.txt
>> @@ -1,3 +1,4 @@
>> +include_directories(include)
>>  add_subdirectory(include)
>>
>>  set(LLVM_LINK_COMPONENTS
>> @@ -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
>> @@ -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)
>>
>> diff  --git a/mlir/examples/toy/Ch6/include/toy/CMakeLists.txt
>> b/mlir/examples/toy/Ch6/include/toy/CMakeLists.txt
>> index aecf11fab6c9..c6adf5a15a73 100644
>> --- a/mlir/examples/toy/Ch6/include/toy/CMakeLists.txt
>> +++ b/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)
>>
>> diff  --git a/mlir/examples/toy/Ch7/CMakeLists.txt
>> b/mlir/examples/toy/Ch7/CMakeLists.txt
>> index 760052ee840f..9a9f335d3a92 100644
>> --- a/mlir/examples/toy/Ch7/CMakeLists.txt
>> +++ b/mlir/examples/toy/Ch7/CMakeLists.txt
>> @@ -1,3 +1,4 @@
>> +include_directories(include)
>>  add_subdirectory(include)
>>
>>  set(LLVM_LINK_COMPONENTS
>> @@ -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
>> @@ -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)
>>
>> diff  --git a/mlir/examples/toy/Ch7/include/toy/CMakeLists.txt
>> b/mlir/examples/toy/Ch7/include/toy/CMakeLists.txt
>> index fa30bd2e8e03..43eb23bf93b8 100644
>> --- a/mlir/examples/toy/Ch7/include/toy/CMakeLists.txt
>> +++ b/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)
>>
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200403/51bd0e66/attachment.html>


More information about the llvm-commits mailing list