[cmake] Updates for basic shared library support (#7)

Mostly this is CMake cleanup.  Several library dependencies are missing, which
is often revealed with shared library builds.  Also, it's generally bad to
link directly against LLVM libraries because it fails when using
LLVM_LINK_LLVM_DYLIB.  MLIR will pull in libLLVM.so, and there will be
duplicate linkage with the the explicit libraries.  There may need to be more
refactoring here.
pull/12/head
stephenneuendorffer 2020-08-05 14:49:18 -07:00 committed by GitHub
parent b6313d9c64
commit 44af7a6d30
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 39 additions and 16 deletions

View File

@ -49,6 +49,18 @@ endif()
find_package(MLIR REQUIRED CONFIG) find_package(MLIR REQUIRED CONFIG)
message(STATUS "Using MLIRConfig.cmake in: ${MLIR_DIR}") message(STATUS "Using MLIRConfig.cmake in: ${MLIR_DIR}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}") message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
#set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/bin)
set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/lib)
# Define the default arguments to use with 'lit', and an option for the user to
# override.
set(LIT_ARGS_DEFAULT "-sv")
if (MSVC_IDE OR XCODE)
set(LIT_ARGS_DEFAULT "${LIT_ARGS_DEFAULT} --no-progress-bar")
endif()
set(LLVM_LIT_ARGS "${LIT_ARGS_DEFAULT}" CACHE STRING "Default options for lit")
list(APPEND CMAKE_MODULE_PATH "${MLIR_CMAKE_DIR}") list(APPEND CMAKE_MODULE_PATH "${MLIR_CMAKE_DIR}")
list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}") list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")
include(TableGen) include(TableGen)

View File

@ -29,6 +29,9 @@ if(NPCOMP_ENABLE_IREE)
) )
endif() endif()
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
add_mlir_library(NPCOMPInitAll add_mlir_library(NPCOMPInitAll
InitAll.cpp InitAll.cpp
@ -47,5 +50,7 @@ add_mlir_library(NPCOMPInitAll
NPCOMPTCFPasses NPCOMPTCFPasses
NPCOMPTypingPasses NPCOMPTypingPasses
${dialect_libs}
${conversion_libs}
${ALL_DEPENDS} ${ALL_DEPENDS}
) )

View File

@ -7,7 +7,8 @@ add_mlir_dialect_library(NPCOMPBasicpyDialect
DEPENDS DEPENDS
MLIRBasicpyOpsIncGen MLIRBasicpyOpsIncGen
NPCOMPTypingCPA
)
target_link_libraries(NPCOMPBasicpyDialect PUBLIC MLIRIR) LINK_LIBS PUBLIC
NPCOMPTypingCPA
MLIRIR
)

View File

@ -6,8 +6,9 @@ add_mlir_dialect_library(NPCOMPNumpyDialect
${PROJECT_SOURCE_DIR}/include/npcomp/Dialect/Numpy ${PROJECT_SOURCE_DIR}/include/npcomp/Dialect/Numpy
DEPENDS DEPENDS
NPCOMPBasicpyDialect
MLIRNumpyOpsIncGen MLIRNumpyOpsIncGen
)
target_link_libraries(NPCOMPNumpyDialect PUBLIC MLIRIR) LINK_LIBS PUBLIC
NPCOMPBasicpyDialect
MLIRIR
)

View File

@ -10,7 +10,6 @@ add_mlir_library(NPCOMPE2E
DEPENDS DEPENDS
NPCOMPE2EPassIncGen NPCOMPE2EPassIncGen
MLIRLinalgOps
LINK_COMPONENTS LINK_COMPONENTS
Core Core
@ -22,3 +21,5 @@ add_mlir_library(NPCOMPE2E
MLIRStandardToLLVM MLIRStandardToLLVM
MLIRSCFToStandard MLIRSCFToStandard
) )
mlir_check_all_link_libraries(NPCOMPE2E)

View File

@ -4,13 +4,13 @@ add_mlir_library(NPCOMPJITRuntime
ADDITIONAL_HEADER_DIRS ADDITIONAL_HEADER_DIRS
${PROJECT_SRC_DIR}/include/npcomp/JITRuntime ${PROJECT_SRC_DIR}/include/npcomp/JITRuntime
DEPENDS
NPCOMPE2E
MLIRExecutionEngine
LINK_COMPONENTS LINK_COMPONENTS
Core Core
LINK_LIBS PUBLIC LINK_LIBS PUBLIC
NPCOMPRuntime NPCOMPRuntime
NPCOMPE2E
MLIRExecutionEngine
) )
mlir_check_all_link_libraries(NPCOMPE2E)

View File

@ -40,7 +40,6 @@ target_link_libraries(NPCOMPPythonCommon
MLIRSCF MLIRSCF
# Upstream depends # Upstream depends
LLVMSupport
MLIRDialect MLIRDialect
MLIREDSC MLIREDSC
MLIREDSCInterface MLIREDSCInterface
@ -48,8 +47,8 @@ target_link_libraries(NPCOMPPythonCommon
MLIRLLVMIR MLIRLLVMIR
MLIRPass MLIRPass
MLIRTransforms MLIRTransforms
${ExtraInit_LIBADD}
) )
npcomp_python_target_compile_options(NPCOMPPythonCommon) npcomp_python_target_compile_options(NPCOMPPythonCommon)
mlir_check_all_link_libraries(NPCOMPPythonCommon)

View File

@ -17,6 +17,8 @@ add_mlir_library(NPCOMPRuntime
EXCLUDE_FROM_LIBMLIR EXCLUDE_FROM_LIBMLIR
) )
mlir_check_all_link_libraries(NPCOMPRuntime)
# The library that defines the symbols that the compiler emits references # The library that defines the symbols that the compiler emits references
# to. # to.
# Note: is uses some of the same facilities that the user API depends on, # Note: is uses some of the same facilities that the user API depends on,
@ -35,4 +37,3 @@ add_mlir_library(NPCOMPCompilerRuntimeShlib
target_link_libraries(NPCOMPCompilerRuntimeShlib PRIVATE NPCOMPRuntime) target_link_libraries(NPCOMPCompilerRuntimeShlib PRIVATE NPCOMPRuntime)
set_target_properties(NPCOMPCompilerRuntimeShlib PROPERTIES LINK_FLAGS set_target_properties(NPCOMPCompilerRuntimeShlib PROPERTIES LINK_FLAGS
"-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/unix_version.script") "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/unix_version.script")

View File

@ -135,7 +135,6 @@ target_link_libraries(${extension_target}
${dialect_libs} ${dialect_libs}
# Upstream depends # Upstream depends
LLVMSupport
MLIRAffineToStandard MLIRAffineToStandard
MLIRAffineTransforms MLIRAffineTransforms
MLIRDialect MLIRDialect
@ -152,3 +151,5 @@ target_link_libraries(${extension_target}
) )
npcomp_python_target_compile_options(${extension_target}) npcomp_python_target_compile_options(${extension_target})
mlir_check_all_link_libraries(${extension_target})

View File

@ -10,3 +10,5 @@ add_llvm_executable(npcomp-opt npcomp-opt.cpp)
llvm_update_compile_flags(npcomp-opt) llvm_update_compile_flags(npcomp-opt)
target_link_libraries(npcomp-opt PRIVATE ${LIBS}) target_link_libraries(npcomp-opt PRIVATE ${LIBS})
mlir_check_all_link_libraries(npcomp-opt)