-include(LLVMParseArguments)
include(LLVMProcessSources)
include(LLVM-Config)
# Assume that;
# - LLVM_COMPILE_FLAGS is list.
# - PROPERTY COMPILE_FLAGS is string.
- string(REPLACE ";" " " target_compile_flags "${LLVM_COMPILE_FLAGS}")
+ string(REPLACE ";" " " target_compile_flags " ${LLVM_COMPILE_FLAGS}")
if(update_src_props)
foreach(fn ${sources})
DEPENDS ${export_file}
VERBATIM
COMMENT "Creating export file for ${target_name}")
- set_property(TARGET ${target_name} APPEND_STRING PROPERTY
- LINK_FLAGS " -Wl,--version-script,${CMAKE_CURRENT_BINARY_DIR}/${native_export_file}")
+ if (${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
+ set_property(TARGET ${target_name} APPEND_STRING PROPERTY
+ LINK_FLAGS " -Wl,-M,${CMAKE_CURRENT_BINARY_DIR}/${native_export_file}")
+ else()
+ set_property(TARGET ${target_name} APPEND_STRING PROPERTY
+ LINK_FLAGS " -Wl,--version-script,${CMAKE_CURRENT_BINARY_DIR}/${native_export_file}")
+ endif()
else()
set(native_export_file "${target_name}.def")
- set(CAT "cat")
- set(export_file_nativeslashes ${export_file})
- if(WIN32 AND NOT CYGWIN)
- set(CAT "type")
- # Convert ${export_file} to native format (backslashes) for "type"
- # Does not use file(TO_NATIVE_PATH) as it doesn't create a native
- # path but a build-system specific format (see CMake bug
- # http://public.kitware.com/Bug/print_bug_page.php?bug_id=5939 )
- string(REPLACE / \\ export_file_nativeslashes ${export_file})
- endif()
-
add_custom_command(OUTPUT ${native_export_file}
- COMMAND ${CMAKE_COMMAND} -E echo "EXPORTS" > ${native_export_file}
- COMMAND ${CAT} ${export_file_nativeslashes} >> ${native_export_file}
+ COMMAND ${PYTHON_EXECUTABLE} -c "import sys;print(''.join(['EXPORTS\\n']+sys.stdin.readlines(),))"
+ < ${export_file} > ${native_export_file}
DEPENDS ${export_file}
VERBATIM
COMMENT "Creating export file for ${target_name}")
set(export_file_linker_flag "${CMAKE_CURRENT_BINARY_DIR}/${native_export_file}")
if(MSVC)
- set(export_file_linker_flag "/DEF:${export_file_linker_flag}")
+ set(export_file_linker_flag "/DEF:\"${export_file_linker_flag}\"")
endif()
set_property(TARGET ${target_name} APPEND_STRING PROPERTY
LINK_FLAGS " ${export_file_linker_flag}")
# Pass -O3 to the linker. This enabled different optimizations on different
# linkers.
- if(NOT (${CMAKE_SYSTEM_NAME} MATCHES "Darwin" OR WIN32))
+ if(NOT (${CMAKE_SYSTEM_NAME} MATCHES "Darwin|SunOS" OR WIN32))
set_property(TARGET ${target_name} APPEND_STRING PROPERTY
LINK_FLAGS " -Wl,-O3")
endif()
# ld64's implementation of -dead_strip breaks tools that use plugins.
set_property(TARGET ${target_name} APPEND_STRING PROPERTY
LINK_FLAGS " -Wl,-dead_strip")
+ elseif(${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
+ set_property(TARGET ${target_name} APPEND_STRING PROPERTY
+ LINK_FLAGS " -Wl,-z -Wl,discard-unused=sections")
elseif(NOT WIN32 AND NOT LLVM_LINKER_IS_GOLD)
# Object files are compiled with -ffunction-data-sections.
# Versions of bfd ld < 2.23.1 have a bug in --gc-sections that breaks
endif()
endfunction()
+# If on Windows and building with MSVC, add the resource script containing the
+# VERSIONINFO data to the project. This embeds version resource information
+# into the output .exe or .dll.
+# TODO: Enable for MinGW Windows builds too.
+#
+function(add_windows_version_resource_file OUT_VAR)
+ set(sources ${ARGN})
+ if (MSVC)
+ set(resource_file ${LLVM_SOURCE_DIR}/resources/windows_version_resource.rc)
+ if(EXISTS ${resource_file})
+ set(sources ${sources} ${resource_file})
+ source_group("Resource Files" ${resource_file})
+ set(windows_resource_file ${resource_file} PARENT_SCOPE)
+ endif()
+ endif(MSVC)
+
+ set(${OUT_VAR} ${sources} PARENT_SCOPE)
+endfunction(add_windows_version_resource_file)
+
+# set_windows_version_resource_properties(name resource_file...
+# VERSION_MAJOR int
+# Optional major version number (defaults to LLVM_VERSION_MAJOR)
+# VERSION_MINOR int
+# Optional minor version number (defaults to LLVM_VERSION_MINOR)
+# VERSION_PATCHLEVEL int
+# Optional patchlevel version number (defaults to LLVM_VERSION_PATCH)
+# VERSION_STRING
+# Optional version string (defaults to PACKAGE_VERSION)
+# PRODUCT_NAME
+# Optional product name string (defaults to "LLVM")
+# )
+function(set_windows_version_resource_properties name resource_file)
+ cmake_parse_arguments(ARG
+ ""
+ "VERSION_MAJOR;VERSION_MINOR;VERSION_PATCHLEVEL;VERSION_STRING;PRODUCT_NAME"
+ ""
+ ${ARGN})
+
+ if (NOT DEFINED ARG_VERSION_MAJOR)
+ set(ARG_VERSION_MAJOR ${LLVM_VERSION_MAJOR})
+ endif()
+
+ if (NOT DEFINED ARG_VERSION_MINOR)
+ set(ARG_VERSION_MINOR ${LLVM_VERSION_MINOR})
+ endif()
+
+ if (NOT DEFINED ARG_VERSION_PATCHLEVEL)
+ set(ARG_VERSION_PATCHLEVEL ${LLVM_VERSION_PATCH})
+ endif()
+
+ if (NOT DEFINED ARG_VERSION_STRING)
+ set(ARG_VERSION_STRING ${PACKAGE_VERSION})
+ endif()
+
+ if (NOT DEFINED ARG_PRODUCT_NAME)
+ set(ARG_PRODUCT_NAME "LLVM")
+ endif()
+
+ set_property(SOURCE ${resource_file}
+ PROPERTY COMPILE_FLAGS /nologo)
+ set_property(SOURCE ${resource_file}
+ PROPERTY COMPILE_DEFINITIONS
+ "RC_VERSION_FIELD_1=${ARG_VERSION_MAJOR}"
+ "RC_VERSION_FIELD_2=${ARG_VERSION_MINOR}"
+ "RC_VERSION_FIELD_3=${ARG_VERSION_PATCHLEVEL}"
+ "RC_VERSION_FIELD_4=0"
+ "RC_FILE_VERSION=\"${ARG_VERSION_STRING}\""
+ "RC_INTERNAL_NAME=\"${name}\""
+ "RC_PRODUCT_NAME=\"${ARG_PRODUCT_NAME}\""
+ "RC_PRODUCT_VERSION=\"${ARG_VERSION_STRING}\"")
+endfunction(set_windows_version_resource_properties)
+
# llvm_add_library(name sources...
# SHARED;STATIC
# STATIC by default w/o BUILD_SHARED_LIBS.
# MODULE
# Target ${name} might not be created on unsupported platforms.
# Check with "if(TARGET ${name})".
+# DISABLE_LLVM_LINK_LLVM_DYLIB
+# Do not link this library to libLLVM, even if
+# LLVM_LINK_LLVM_DYLIB is enabled.
# OUTPUT_NAME name
# Corresponds to OUTPUT_NAME in target properties.
# DEPENDS targets...
# )
function(llvm_add_library name)
cmake_parse_arguments(ARG
- "MODULE;SHARED;STATIC"
+ "MODULE;SHARED;STATIC;DISABLE_LLVM_LINK_LLVM_DYLIB"
"OUTPUT_NAME"
"ADDITIONAL_HEADERS;DEPENDS;LINK_COMPONENTS;LINK_LIBS;OBJLIBS"
${ARGN})
if(ARG_MODULE)
add_library(${name} MODULE ${ALL_FILES})
elseif(ARG_SHARED)
+ add_windows_version_resource_file(ALL_FILES ${ALL_FILES})
add_library(${name} SHARED ${ALL_FILES})
else()
add_library(${name} STATIC ${ALL_FILES})
endif()
+
+ if(DEFINED windows_resource_file)
+ set_windows_version_resource_properties(${name} ${windows_resource_file})
+ set(windows_resource_file ${windows_resource_file} PARENT_SCOPE)
+ endif()
+
set_output_directory(${name} ${LLVM_RUNTIME_OUTPUT_INTDIR} ${LLVM_LIBRARY_OUTPUT_INTDIR})
- llvm_update_compile_flags(${name})
+ # $<TARGET_OBJECTS> doesn't require compile flags.
+ if(NOT obj_name)
+ llvm_update_compile_flags(${name})
+ endif()
add_link_opts( ${name} )
if(ARG_OUTPUT_NAME)
set_target_properties(${name}
# property has been set to an empty value.
get_property(lib_deps GLOBAL PROPERTY LLVMBUILD_LIB_DEPS_${name})
- llvm_map_components_to_libnames(llvm_libs
- ${ARG_LINK_COMPONENTS}
- ${LLVM_LINK_COMPONENTS}
- )
+ if (LLVM_LINK_LLVM_DYLIB AND NOT ARG_STATIC AND NOT ARG_DISABLE_LLVM_LINK_LLVM_DYLIB)
+ set(llvm_libs LLVM)
+ else()
+ llvm_map_components_to_libnames(llvm_libs
+ ${ARG_LINK_COMPONENTS}
+ ${LLVM_LINK_COMPONENTS}
+ )
+ endif()
if(CMAKE_VERSION VERSION_LESS 2.8.12)
# Link libs w/o keywords, assuming PUBLIC.
else()
llvm_add_library(${name} ${ARGN})
endif()
- set_property( GLOBAL APPEND PROPERTY LLVM_LIBS ${name} )
+ # The gtest libraries should not be installed or exported as a target
+ if ("${name}" STREQUAL gtest OR "${name}" STREQUAL gtest_main)
+ set(_is_gtest TRUE)
+ else()
+ set(_is_gtest FALSE)
+ set_property( GLOBAL APPEND PROPERTY LLVM_LIBS ${name} )
+ endif()
if( EXCLUDE_FROM_ALL )
set_target_properties( ${name} PROPERTIES EXCLUDE_FROM_ALL ON)
- else()
+ elseif(NOT _is_gtest)
if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ${name} STREQUAL "LTO")
if(ARG_SHARED OR BUILD_SHARED_LIBS)
- install(TARGETS ${name}
- EXPORT LLVMExports
- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
- COMPONENT ${name})
+ if(WIN32 OR CYGWIN)
+ set(install_type RUNTIME)
+ else()
+ set(install_type LIBRARY)
+ endif()
else()
- install(TARGETS ${name}
- EXPORT LLVMExports
- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}
- COMPONENT ${name})
+ set(install_type ARCHIVE)
endif()
+ install(TARGETS ${name}
+ EXPORT LLVMExports
+ ${install_type} DESTINATION lib${LLVM_LIBDIR_SUFFIX}
+ COMPONENT ${name})
+
if (NOT CMAKE_CONFIGURATION_TYPES)
add_custom_target(install-${name}
DEPENDS ${name}
macro(add_llvm_executable name)
- llvm_process_sources( ALL_FILES ${ARGN} )
+ cmake_parse_arguments(ARG "DISABLE_LLVM_LINK_LLVM_DYLIB" "" "" ${ARGN})
+ llvm_process_sources( ALL_FILES ${ARG_UNPARSED_ARGUMENTS} )
+
+ # Generate objlib
+ if(LLVM_ENABLE_OBJLIB)
+ # Generate an obj library for both targets.
+ set(obj_name "obj.${name}")
+ add_library(${obj_name} OBJECT EXCLUDE_FROM_ALL
+ ${ALL_FILES}
+ )
+ llvm_update_compile_flags(${obj_name})
+ set(ALL_FILES "$<TARGET_OBJECTS:${obj_name}>")
+
+ set_target_properties(${obj_name} PROPERTIES FOLDER "Object Libraries")
+ endif()
+
+ add_windows_version_resource_file(ALL_FILES ${ALL_FILES})
+
+ if(XCODE)
+ # Note: the dummy.cpp source file provides no definitions. However,
+ # it forces Xcode to properly link the static library.
+ list(APPEND ALL_FILES "${LLVM_SOURCE_DIR}/cmake/dummy.cpp")
+ endif()
+
if( EXCLUDE_FROM_ALL )
add_executable(${name} EXCLUDE_FROM_ALL ${ALL_FILES})
else()
add_executable(${name} ${ALL_FILES})
endif()
- llvm_update_compile_flags(${name})
+
+ if(DEFINED windows_resource_file)
+ set_windows_version_resource_properties(${name} ${windows_resource_file})
+ endif()
+
+ # $<TARGET_OBJECTS> doesn't require compile flags.
+ if(NOT LLVM_ENABLE_OBJLIB)
+ llvm_update_compile_flags(${name})
+ endif()
add_link_opts( ${name} )
# Do not add -Dname_EXPORTS to the command-line when building files in this
add_llvm_symbol_exports( ${name} ${LLVM_EXPORTED_SYMBOL_FILE} )
endif(LLVM_EXPORTED_SYMBOL_FILE)
+ if (LLVM_LINK_LLVM_DYLIB AND NOT ARG_DISABLE_LLVM_LINK_LLVM_DYLIB)
+ set(USE_SHARED USE_SHARED)
+ endif()
+
set(EXCLUDE_FROM_ALL OFF)
set_output_directory(${name} ${LLVM_RUNTIME_OUTPUT_INTDIR} ${LLVM_LIBRARY_OUTPUT_INTDIR})
- llvm_config( ${name} ${LLVM_LINK_COMPONENTS} )
+ llvm_config( ${name} ${USE_SHARED} ${LLVM_LINK_COMPONENTS} )
if( LLVM_COMMON_DEPENDS )
add_dependencies( ${name} ${LLVM_COMMON_DEPENDS} )
endif( LLVM_COMMON_DEPENDS )
endif()
endfunction()
-
-set (LLVM_TOOLCHAIN_TOOLS
- llvm-ar
- llvm-objdump
- )
+if(NOT LLVM_TOOLCHAIN_TOOLS)
+ set (LLVM_TOOLCHAIN_TOOLS
+ llvm-ar
+ llvm-objdump
+ )
+endif()
macro(add_llvm_tool name)
if( NOT LLVM_BUILD_TOOLS )
macro(add_llvm_utility name)
- add_llvm_executable(${name} ${ARGN})
+ add_llvm_executable(${name} DISABLE_LLVM_LINK_LLVM_DYLIB ${ARGN})
set_target_properties(${name} PROPERTIES FOLDER "Utils")
if( LLVM_INSTALL_UTILS )
install (TARGETS ${name}
set( CURRENT_LLVM_TARGET LLVM${target_name} )
endmacro(add_llvm_target)
+function(canonicalize_tool_name name output)
+ string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/" "" nameStrip ${name})
+ string(REPLACE "-" "_" nameUNDERSCORE ${nameStrip})
+ string(TOUPPER ${nameUNDERSCORE} nameUPPER)
+ set(${output} "${nameUPPER}" PARENT_SCOPE)
+endfunction(canonicalize_tool_name)
+
# Add external project that may want to be built as part of llvm such as Clang,
# lld, and Polly. This adds two options. One for the source directory of the
# project, which defaults to ${CMAKE_CURRENT_SOURCE_DIR}/${name}. Another to
if("${add_llvm_external_dir}" STREQUAL "")
set(add_llvm_external_dir ${name})
endif()
- list(APPEND LLVM_IMPLICIT_PROJECT_IGNORE "${CMAKE_CURRENT_SOURCE_DIR}/${add_llvm_external_dir}")
- string(REPLACE "-" "_" nameUNDERSCORE ${name})
- string(TOUPPER ${nameUNDERSCORE} nameUPPER)
- set(LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${add_llvm_external_dir}"
+ canonicalize_tool_name(${name} nameUPPER)
+ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${add_llvm_external_dir}/CMakeLists.txt)
+ # Treat it as in-tree subproject.
+ option(LLVM_TOOL_${nameUPPER}_BUILD
+ "Whether to build ${name} as part of LLVM" On)
+ mark_as_advanced(LLVM_TOOL_${name}_BUILD)
+ if(LLVM_TOOL_${nameUPPER}_BUILD)
+ add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/${add_llvm_external_dir} ${add_llvm_external_dir})
+ # Don't process it in add_llvm_implicit_projects().
+ set(LLVM_TOOL_${nameUPPER}_BUILD OFF)
+ endif()
+ else()
+ set(LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR
+ "${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR}"
CACHE PATH "Path to ${name} source directory")
- if (NOT ${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR} STREQUAL ""
- AND EXISTS ${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR}/CMakeLists.txt)
- option(LLVM_EXTERNAL_${nameUPPER}_BUILD
- "Whether to build ${name} as part of LLVM" ON)
- if (LLVM_EXTERNAL_${nameUPPER}_BUILD)
- add_subdirectory(${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR} ${add_llvm_external_dir})
+ set(LLVM_TOOL_${nameUPPER}_BUILD_DEFAULT ON)
+ if(NOT LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR OR NOT EXISTS ${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR})
+ set(LLVM_TOOL_${nameUPPER}_BUILD_DEFAULT OFF)
+ endif()
+ if("${LLVM_EXTERNAL_${nameUPPER}_BUILD}" STREQUAL "OFF")
+ set(LLVM_TOOL_${nameUPPER}_BUILD_DEFAULT OFF)
+ endif()
+ option(LLVM_TOOL_${nameUPPER}_BUILD
+ "Whether to build ${name} as part of LLVM"
+ ${LLVM_TOOL_${nameUPPER}_BUILD_DEFAULT})
+ if (LLVM_TOOL_${nameUPPER}_BUILD)
+ if(EXISTS ${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR})
+ add_subdirectory(${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR} ${add_llvm_external_dir})
+ elseif(NOT "${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR}" STREQUAL "")
+ message(WARNING "Nonexistent directory for ${name}: ${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR}")
+ endif()
+ # FIXME: It'd be redundant.
+ set(LLVM_TOOL_${nameUPPER}_BUILD Off)
endif()
endif()
endmacro(add_llvm_external_project)
macro(add_llvm_tool_subdirectory name)
- list(APPEND LLVM_IMPLICIT_PROJECT_IGNORE "${CMAKE_CURRENT_SOURCE_DIR}/${name}")
- add_subdirectory(${name})
+ add_llvm_external_project(${name})
endmacro(add_llvm_tool_subdirectory)
-macro(ignore_llvm_tool_subdirectory name)
- list(APPEND LLVM_IMPLICIT_PROJECT_IGNORE "${CMAKE_CURRENT_SOURCE_DIR}/${name}")
-endmacro(ignore_llvm_tool_subdirectory)
+function(get_project_name_from_src_var var output)
+ string(REGEX MATCH "LLVM_EXTERNAL_(.*)_SOURCE_DIR"
+ MACHED_TOOL "${var}")
+ if(MACHED_TOOL)
+ set(${output} ${CMAKE_MATCH_1} PARENT_SCOPE)
+ else()
+ set(${output} PARENT_SCOPE)
+ endif()
+endfunction()
-function(add_llvm_implicit_external_projects)
+function(create_llvm_tool_options)
+ file(GLOB sub-dirs "${CMAKE_CURRENT_SOURCE_DIR}/*")
+ foreach(dir ${sub-dirs})
+ if(IS_DIRECTORY "${dir}" AND EXISTS "${dir}/CMakeLists.txt")
+ canonicalize_tool_name(${dir} name)
+ option(LLVM_TOOL_${name}_BUILD
+ "Whether to build ${name} as part of LLVM" On)
+ mark_as_advanced(LLVM_TOOL_${name}_BUILD)
+ endif()
+ endforeach()
+endfunction(create_llvm_tool_options)
+
+function(add_llvm_implicit_projects)
set(list_of_implicit_subdirs "")
file(GLOB sub-dirs "${CMAKE_CURRENT_SOURCE_DIR}/*")
foreach(dir ${sub-dirs})
- if(IS_DIRECTORY "${dir}")
- list(FIND LLVM_IMPLICIT_PROJECT_IGNORE "${dir}" tool_subdir_ignore)
- if( tool_subdir_ignore EQUAL -1
- AND EXISTS "${dir}/CMakeLists.txt")
+ if(IS_DIRECTORY "${dir}" AND EXISTS "${dir}/CMakeLists.txt")
+ canonicalize_tool_name(${dir} name)
+ if (LLVM_TOOL_${name}_BUILD)
get_filename_component(fn "${dir}" NAME)
list(APPEND list_of_implicit_subdirs "${fn}")
endif()
foreach(external_proj ${list_of_implicit_subdirs})
add_llvm_external_project("${external_proj}")
endforeach()
-endfunction(add_llvm_implicit_external_projects)
+endfunction(add_llvm_implicit_projects)
# Generic support for adding a unittest.
function(add_unittest test_suite test_name)
set(cppflags "${cppflags} -I${d}")
endforeach(d)
set(ldflags "${CMAKE_EXE_LINKER_FLAGS}")
+ if (LLVM_LINK_LLVM_DYLIB)
+ set(linkmode "dylib")
+ else()
+ set(linkmode "component-libs")
+ endif()
add_custom_command(OUTPUT ${binpath}
- COMMAND ${CMAKE_BINARY_DIR}/bin/llvm-go "cc=${cc}" "cxx=${cxx}" "cppflags=${cppflags}" "ldflags=${ldflags}"
+ COMMAND ${CMAKE_BINARY_DIR}/bin/llvm-go "go=${GO_EXECUTABLE}" "cc=${cc}" "cxx=${cxx}" "cppflags=${cppflags}" "ldflags=${ldflags}" "linkmode=${linkmode}"
${ARG_GOFLAGS} build -o ${binpath} ${pkgpath}
DEPENDS llvm-config ${CMAKE_BINARY_DIR}/bin/llvm-go${CMAKE_EXECUTABLE_SUFFIX}
${llvmlibs} ${ARG_DEPENDS}
# A raw function to create a lit target. This is used to implement the testuite
# management functions.
function(add_lit_target target comment)
- parse_arguments(ARG "PARAMS;DEPENDS;ARGS" "" ${ARGN})
+ cmake_parse_arguments(ARG "" "" "PARAMS;DEPENDS;ARGS" ${ARGN})
set(LIT_ARGS "${ARG_ARGS} ${LLVM_LIT_ARGS}")
separate_arguments(LIT_ARGS)
if (NOT CMAKE_CFG_INTDIR STREQUAL ".")
foreach(param ${ARG_PARAMS})
list(APPEND LIT_COMMAND --param ${param})
endforeach()
- if (ARG_DEFAULT_ARGS)
+ if (ARG_UNPARSED_ARGUMENTS)
add_custom_target(${target}
- COMMAND ${LIT_COMMAND} ${ARG_DEFAULT_ARGS}
+ COMMAND ${LIT_COMMAND} ${ARG_UNPARSED_ARGUMENTS}
COMMENT "${comment}"
${cmake_3_2_USES_TERMINAL}
)
# A function to add a set of lit test suites to be driven through 'check-*' targets.
function(add_lit_testsuite target comment)
- parse_arguments(ARG "PARAMS;DEPENDS;ARGS" "" ${ARGN})
+ cmake_parse_arguments(ARG "" "" "PARAMS;DEPENDS;ARGS" ${ARGN})
# EXCLUDE_FROM_ALL excludes the test ${target} out of check-all.
if(NOT EXCLUDE_FROM_ALL)
# Register the testsuites, params and depends for the global check rule.
- set_property(GLOBAL APPEND PROPERTY LLVM_LIT_TESTSUITES ${ARG_DEFAULT_ARGS})
+ set_property(GLOBAL APPEND PROPERTY LLVM_LIT_TESTSUITES ${ARG_UNPARSED_ARGUMENTS})
set_property(GLOBAL APPEND PROPERTY LLVM_LIT_PARAMS ${ARG_PARAMS})
set_property(GLOBAL APPEND PROPERTY LLVM_LIT_DEPENDS ${ARG_DEPENDS})
set_property(GLOBAL APPEND PROPERTY LLVM_LIT_EXTRA_ARGS ${ARG_ARGS})
# Produce a specific suffixed check rule.
add_lit_target(${target} ${comment}
- ${ARG_DEFAULT_ARGS}
+ ${ARG_UNPARSED_ARGUMENTS}
PARAMS ${ARG_PARAMS}
DEPENDS ${ARG_DEPENDS}
ARGS ${ARG_ARGS}
function(add_lit_testsuites project directory)
if (NOT CMAKE_CONFIGURATION_TYPES)
- parse_arguments(ARG "PARAMS;DEPENDS;ARGS" "" ${ARGN})
+ cmake_parse_arguments(ARG "" "" "PARAMS;DEPENDS;ARGS" ${ARGN})
file(GLOB_RECURSE litCfg ${directory}/lit*.cfg)
set(lit_suites)
foreach(f ${litCfg})