pax_global_header00006660000000000000000000000064141741400760014516gustar00rootroot0000000000000052 comment=3198059d419edd4723989c5ad4dd23d6662a2236 rocm-cmake-rocm-5.0.0/000077500000000000000000000000001417414007600144745ustar00rootroot00000000000000rocm-cmake-rocm-5.0.0/.github/000077500000000000000000000000001417414007600160345ustar00rootroot00000000000000rocm-cmake-rocm-5.0.0/.github/workflows/000077500000000000000000000000001417414007600200715ustar00rootroot00000000000000rocm-cmake-rocm-5.0.0/.github/workflows/test.yml000077500000000000000000000032241417414007600215770ustar00rootroot00000000000000name: rocm-cmake on: [push, pull_request] jobs: cancel: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@0.6.0 with: access_token: ${{ github.token }} lint: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v1 - name: Set up Python 3.9 uses: actions/setup-python@v2 with: python-version: 3.9 - name: Install dependencies run: | python -m pip install --upgrade setuptools pip wheel python -m pip install cget cmakelang[YAML] - name: Run linter run: | cget build -T analyze test: runs-on: ${{ matrix.platform }} strategy: max-parallel: 4 matrix: platform: - ubuntu-18.04 - macos-10.14 - windows-2016 cmake-version: - 3.20.0 - 3.10.2 steps: - uses: actions/checkout@v1 - name: Set up Python 3.9 uses: actions/setup-python@v2 with: python-version: 3.9 - name: Setup cmake uses: jwlawson/actions-setup-cmake@v1.9 with: cmake-version: ${{ matrix.cmake-version }} - name: Install dependencies run: | python -m pip install --upgrade setuptools pip wheel python -m pip install cget ninja python -m pip install -r doc/requirements.txt - name: Run tests run: | git config --global user.email "you@example.com" git config --global user.name "Your Name" cmake --version cget build --test cget build -T doc cget build -Cy --test -DROCM_CMAKE_GENERATOR=Ninja cget build -T doc rocm-cmake-rocm-5.0.0/.travis.yml000066400000000000000000000023521417414007600166070ustar00rootroot00000000000000sudo: required dist: trusty language: cpp script: cmake matrix: include: # OSX - os: osx compiler: clang - os: linux compiler: gcc addons: &gcc apt: packages: - util-linux - g++-5 - cppcheck - clang-4.0 - clang-tidy-4.0 - realpath - python3-pip sources: - ubuntu-toolchain-r-test - llvm-toolchain-trusty-4.0 install: - export CHECKOUT_PATH=`pwd` # Show compiler info - $CXX --version - which $CXX - $CC --version - which $CC - which cmake - cmake --version - python3 --version - pip3 install --user 'cmakelang[YAML]' script: - export INSTALL_PREFIX_PATH="${TRAVIS_BUILD_DIR}/usr" - export PATH="/Users/travis/Library/Python/3.7/bin:$PATH" - mkdir -p "$INSTALL_PREFIX_PATH" - cd $CHECKOUT_PATH - cmake-lint $(find ./test -type f | grep .cmake$) $(find ./share -type f | grep .cmake$) - mkdir build - cd build - cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX_PATH .. - make check - make install - rm -rf "$INSTALL_PREFIX_PATH" rocm-cmake-rocm-5.0.0/CHANGELOG.md000077500000000000000000000134041417414007600163120ustar00rootroot00000000000000# Change Log for rocm-cmake ## [0.7.1] ### Added - `CLANG_TIDY_USE_COLOR` variable added to control the color output from `clang-tidy`, by default this is `On`. - If `CPACK_RESOURCE_FILE_LICENSE` is not set, `rocm_create_package` will now automatically attempt to find a LICENSE, LICENSE.txt, or LICENSE.md file in the top-level CMake source directory. If one is found, it is set up as the license file for the package. ## [0.7.0] ### Added - Component packaging functionality: - `rocm_package_setup_component` sets up a component for packaging, with the given name and values for the component and associated package. - The variable `ROCM_PACKAGE_COMPONENTS` stores a list of the components which have been set up with `rocm_package_setup_component`. - `rocm_package_add_rpm_dependencies` adds any number of dependencies to the RPM package for an optional specified component, including version checks (e.g. `foo >= 1.0`) - `rocm_package_add_deb_dependencies` adds any number of dependencies to the DEB package for an optional specified component, including version checks (e.g. `foo >= 1.0`) - Note that this version format matches RPM, it is reformatted to the Debian package format. This is to reduce code duplication. - `rocm_package_add_dependencies` is a convenience wrapper which calls both `rocm_add_rpm_dependencies` and `rocm_add_deb_dependencies` to add any number of dependencies to both packages for an optional specified component. - Client packaging functions: - `rocm_package_setup_client_component` is a convenience wrapper which adds the library as a runtime dependency if shared libraries were built, and sets the parent of the client package to `clients`. - Utility functions: - `rocm_join_if_set` joins any number of non-empty strings to the end of a given variable interspersed with a specified glue string, setting that variable if it was previously empty - `rocm_find_program_version` checks to see if the given command is available, and if it is available that the version matches some criteria. The detected version is returned in ``, and whether it matches all given criteria in `_OK`. - `` defaults to `_VERSION` if not specified. ### Changed - If `ROCM_PACKAGE_COMPONENTS` is set (either manually or by `rocm_package_setup_component`), then the components listed in `ROCM_PACKAGE_COMPONENTS` will be built as separate packages. - `rocm_read_os_release` and `rocm_set_os_id` moved to the utilities file. As this file is included in `ROCMCreatePackage.cmake`, this change is backwards compatible. - `rocm_install_symlink_subdir` now accepts a `COMPONENT` argument, which controls the component that the symlinks are installed into. ## [0.6.2] ### Changed - If the ROCm platform version that is being built for is less than version 4.5.0, `ROCM_DEP_ROCMCORE` is automatically disabled. - The ROCm platform version is determined by: - the user-set CMake variable `ROCM_PLATFORM_VERSION`; otherwise - if the install prefix resolves to a path containing `rocm-`, that version is used; otherwise - if the real path to the version of `rocm-cmake` used contains `rocm-`, that version is used. - If the ROCm platform version is not set, then it is assumed to be greater than 4.5.0. ## [0.6.1] ### Added - Modules added to generate documentation: - `ROCMDocs` - `ROCMDoxygenDoc` - `ROCMSphinxDoc` ## [0.6.0] ### Added - `ADDONS` flag added to `rocm_enable_cppcheck` in order to run with addons - The cache variable `ROCM_USE_DEV_COMPONENT` may be set to `OFF` to build with legacy behaviour. - On Windows, this variable defaults to `OFF`. - `rocm_install_targets` can now install to a specific component using COMPONENT argument. - `rocm_install` is a wrapper on `install`: - If the installation mode is TARGETS, call `rocm_install_targets` with the same arguments. - If `ROCM_USE_DEV_COMPONENT` is `OFF` or COMPONENT is specified, call `install` with the same arguments. - Otherwise, insert the correct arguments to install everything except libraries to the `devel` package, and install libraries to the base package with namelinks in the `devel` package. ### Changed - If `ROCM_USE_DEV_COMPONENT` is `ON`: - `rocm_install_targets`: - Unless COMPONENT is specified, library targets will be installed to the default package and namelinked in the devel package. - Unless COMPONENT is specified, everything else (including any files/folders specified by INCLUDE) will be installed to the devel package. - If COMPONENT was specified in the call to `rocm_install_targets`, that component is used instead of the above behaviour. - `rocm_export_targets`: - All cmake files will be installed to the devel package. - `rocm_create_package`: - Package generation will be performed component-wise, and automatically include the devel component, even if the COMPONENTS argument was not provided. - If provided with the `HEADER_ONLY` option (accepting no arguments), then only the devel package will be generated. The devel package will also have the "Provides" field populated with the name/version of the runtime package for backwards compatibility. This provides field is introduced as a deprecated feature, and will be removed in a future release. - Corrects semantic versioning to SameMajorVersion compatibility (e.g. 0.6 is compatible if 0.5 is requested). - Moved ROCMConfigVersion.cmake file to share/rocm/cmake directory for better compatibility with automatic installation. - Correct CHANGELOG.md formatting ## [0.5.1] ### Added - Add ROCMConfigVersion.cmake file so cmake can check the version - Switched to semantic versioning ## [0.5] ### Added - Change Log added and version number incremented ## [0.4] Pre Change Log versions rocm-cmake-rocm-5.0.0/CMakeLists.txt000077500000000000000000000027641417414007600172500ustar00rootroot00000000000000################################################################################ # Copyright (C) 2017 Advanced Micro Devices, Inc. ################################################################################ cmake_minimum_required (VERSION 3.6) set(CMAKE_INSTALL_PREFIX "/opt/rocm" CACHE PATH "") project(rocm-cmake) install(DIRECTORY share DESTINATION .) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ROCMConfigVersion.cmake DESTINATION share/rocm/cmake) set(CPACK_RPM_PACKAGE_LICENSE "MIT") list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/share/rocm/cmake) include(ROCMCreatePackage) include(ROCMSetupVersion) rocm_setup_version(VERSION 0.6.1) include(CMakePackageConfigHelpers) write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/ROCMConfigVersion.cmake COMPATIBILITY SameMajorVersion) rocm_create_package( NAME rocm-cmake MAINTAINER "Paul Fultz II pfultz@amd.com" ) set(CONFIGURE_DEPENDS) if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.12) set(CONFIGURE_DEPENDS CONFIGURE_DEPENDS) endif() file(GLOB_RECURSE CMAKE_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CONFIGURE_DEPENDS} share/*.cmake test/*.cmake) add_custom_target(analyze COMMAND cmake-lint ${CMAKE_FILES} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) add_custom_target(format COMMAND cmake-format -i ${CMAKE_FILES} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) enable_testing() add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure -C ${CMAKE_CFG_INTDIR}) add_subdirectory(test) add_subdirectory(doc) rocm-cmake-rocm-5.0.0/LICENSE000066400000000000000000000020751417414007600155050ustar00rootroot00000000000000MIT License Copyright (c) 2017 Advanced Micro Devices, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. rocm-cmake-rocm-5.0.0/README.md000077500000000000000000000003671417414007600157640ustar00rootroot00000000000000Rocm cmake modules ================== ROCM cmake modules provides cmake modules for common build tasks needed for the ROCM software stack. To install from source, just run: ``` mkdir build cd build cmake .. cmake --build . --target install ``` rocm-cmake-rocm-5.0.0/appveyor.yml000066400000000000000000000016571417414007600170750ustar00rootroot00000000000000 os: Visual Studio 2015 environment: matrix: # - GENERATOR: "Visual Studio 14 2015 Win64" # CONFIG: Debug # - GENERATOR: "Visual Studio 14 2015 Win64" # CONFIG: Release - GENERATOR: "Visual Studio 14 2015" CONFIG: Debug # - GENERATOR: "Visual Studio 14 2015" # CONFIG: Release matrix: fast_finish: true build_script: - cmd: set PATH=C:\Program Files (x86)\CMake\bin;%PATH% - cmd: set PATH=C:\Program Files (x86)\MSBuild\14.0\Bin;%PATH% - cmd: call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\vsvars32.bat" - cmd: git config --global user.email "you@example.com" - cmd: git config --global user.name "Your Name" - cmd: set CTEST_OUTPUT_ON_FAILURE=1 - cmd: cmake --version - cmd: mkdir build - cmd: cd build - cmd: cmake .. -G"%GENERATOR%" - cmd: cmake --build . --config %CONFIG% --target check # test_script: # - cmd: ctest -C Debug --output-on-failure # - cmd: cd ../../ rocm-cmake-rocm-5.0.0/cmake-format.yaml000066400000000000000000000271321417414007600177330ustar00rootroot00000000000000# Options affecting listfile parsing parse: # Specify structure for custom cmake functions additional_commands: rocm_mark_as_analyzer: pargs: nargs: 0 rocm_check_toolchain_var: pargs: nargs: 4 rocm_find_clang_tidy_version: pargs: nargs: 1 rocm_enable_clang_tidy: pargs: nargs: '*' flags: - ALL - ANALYZE_TEMPORARY_DTORS - ENABLE_ALPHA_CHECKS kwargs: HEADER_FILTER: 1 CHECKS: + ERRORS: + EXTRA_ARGS: + CLANG_ARGS: + rocm_clang_tidy_check: pargs: nargs: 1 rocm_find_cppcheck_version: pargs: nargs: 1 rocm_enable_cppcheck: pargs: nargs: '*' flags: - FORCE - INCONCLUSIVE kwargs: RULE_FILE: 1 CHECKS: + SUPPRESS: + DEFINE: + UNDEFINE: + INCLUDE: + SOURCES: + rocm_create_package: pargs: nargs: '*' flags: - LDCONFIG - PTH kwargs: NAME: 1 DESCRIPTION: 1 SECTION: 1 MAINTAINER: 1 LDCONFIG_DIR: 1 PREFIX: 1 DEPENDS: + rocm_set_os_id: pargs: nargs: 1 rocm_read_os_release: pargs: nargs: 2 rocm_install_symlink_subdir: pargs: nargs: 1 rocm_install_targets: pargs: nargs: '*' flags: [] kwargs: PREFIX: 1 EXPORT: 1 TARGETS: + INCLUDE: + rocm_list_split: pargs: nargs: 3 rocm_write_package_template_function: pargs: nargs: 2 rocm_write_package_deps: pargs: nargs: 1 rocm_export_targets: pargs: nargs: '*' flags: [] kwargs: NAMESPACE: 1 EXPORT: 1 NAME: 1 COMPATIBILITY: 1 PREFIX: 1 TARGETS: + DEPENDS: + INCLUDE: + STATIC_DEPENDS: + rocm_configure_package_config_file: pargs: nargs: 2+ flags: [] kwargs: INSTALL_DESTINATION: 1 PREFIX: 1 PATH_VARS: + rocm_set_parent: pargs: nargs: 1 rocm_get_rev_count: pargs: nargs: 1+ flags: [] kwargs: DIRECTORY: 1 REV: + rocm_get_commit_count: pargs: nargs: 1+ flags: [] kwargs: PARENT: 1 DIRECTORY: 1 rocm_get_build_info: pargs: nargs: 2 rocm_get_version: pargs: nargs: 1+ flags: [] kwargs: VERSION: 1 DIRECTORY: 1 rocm_version_regex_parse: pargs: nargs: 3 rocm_setup_version: pargs: nargs: '*' flags: - NO_GIT_TAG_VERSION kwargs: VERSION: 1 PARENT: 1 rocm_get_so_patch: pargs: nargs: 1 rocm_set_soversion: pargs: nargs: 2 test_expect_eq: pargs: nargs: 2 test_expect_matches: pargs: nargs: 2 test_expect_not_matches: pargs: nargs: 2 test_expect_file: pargs: nargs: '*' test_exec: pargs: nargs: '*' flags: - OUTPUT_QUIET - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE - ERROR_STRIP_TRAILING_WHITESPACE - ECHO_OUTPUT_VARIABLE - ECHO_ERROR_VARIABLE kwargs: COMMAND: '*' WORKING_DIRECTORY: 1 TIMEOUT: 1 RESULT_VARIABLE: 1 RESULTS_VARIABLE: 1 OUTPUT_VARIABLE: 1 ERROR_VARIABLE: 1 INPUT_FILE: 1 OUTPUT_FILE: 1 ERROR_FILE: 1 COMMAND_ECHO: 1 ENCODING: 1 configure_dir: pargs: nargs: 1+ flags: [] kwargs: CMAKE_ARGS: + TARGETS: + install_dir: pargs: nargs: 1+ flags: [] kwargs: CMAKE_ARGS: + TARGETS: + write_version_cmake: pargs: nargs: 3 test_check_package: pargs: nargs: '*' flags: [] kwargs: NAME: 1 HEADER: 1 TARGET: 1 CHECK_TARGET: 1 # Override configurations per-command where available override_spec: {} # Specify variable tags. vartags: [] # Specify property tags. proptags: [] # Options affecting formatting. format: # Disable formatting entirely, making cmake-format a no-op disable: false # How wide to allow formatted cmake files line_width: 120 # How many spaces to tab for indent tab_size: 4 # If true, lines are indented using tab characters (utf-8 # 0x09) instead of space characters (utf-8 0x20). # In cases where the layout would require a fractional tab # character, the behavior of the fractional indentation is # governed by use_tabchars: false # If is True, then the value of this variable # indicates how fractional indentions are handled during # whitespace replacement. If set to 'use-space', fractional # indentation is left as spaces (utf-8 0x20). If set to # '`round-up` fractional indentation is replaced with a single' # tab character (utf-8 0x09) effectively shifting the column # to the next tabstop fractional_tab_policy: use-space # If an argument group contains more than this many sub-groups # (parg or kwarg groups) then force it to a vertical layout. max_subgroups_hwrap: 2 # If a positional argument group contains more than this many # arguments, then force it to a vertical layout. max_pargs_hwrap: 8 # If a cmdline positional group consumes more than this many # lines without nesting, then invalidate the layout (and nest) max_rows_cmdline: 2 # If true, separate flow control names from their parentheses # with a space separate_ctrl_name_with_space: false # If true, separate function names from parentheses with a # space separate_fn_name_with_space: false # If a statement is wrapped to more than one line, than dangle # the closing parenthesis on its own line. dangle_parens: false # If the trailing parenthesis must be 'dangled' on its on # 'line, then align it to this reference: `prefix`: the start' # 'of the statement, `prefix-indent`: the start of the' # 'statement, plus one indentation level, `child`: align to' # the column of the arguments dangle_align: prefix # If the statement spelling length (including space and # parenthesis) is smaller than this amount, then force reject # nested layouts. min_prefix_chars: 4 # If the statement spelling length (including space and # parenthesis) is larger than the tab width by more than this # amount, then force reject un-nested layouts. max_prefix_chars: 10 # If a candidate layout is wrapped horizontally but it exceeds # this many lines, then reject the layout. max_lines_hwrap: 2 # What style line endings to use in the output. line_ending: unix # Format command names consistently as 'lower' or 'upper' case command_case: lower # Format keywords consistently as 'lower' or 'upper' case keyword_case: unchanged # A list of command names which should always be wrapped always_wrap: [] # If true, the argument lists which are known to be sortable # will be sorted lexicographicall enable_sort: true # If true, the parsers may infer whether or not an argument # list is sortable (without annotation). autosort: false # By default, if cmake-format cannot successfully fit # everything into the desired linewidth it will apply the # last, most agressive attempt that it made. If this flag is # True, however, cmake-format will print error, exit with non- # zero status code, and write-out nothing require_valid_layout: false # A dictionary mapping layout nodes to a list of wrap # decisions. See the documentation for more information. layout_passes: {} # Options affecting comment reflow and formatting. markup: # What character to use for bulleted lists bullet_char: '*' # What character to use as punctuation after numerals in an # enumerated list enum_char: . # If comment markup is enabled, don't reflow the first comment # block in each listfile. Use this to preserve formatting of # your copyright/license statements. first_comment_is_literal: false # If comment markup is enabled, don't reflow any comment block # which matches this (regex) pattern. Default is `None` # (disabled). literal_comment_pattern: null # Regular expression to match preformat fences in comments # default= ``r'^\s*([`~]{3}[`~]*)(.*)$'`` fence_pattern: ^\s*([`~]{3}[`~]*)(.*)$ # Regular expression to match rulers in comments default= # '``r''^\s*[^\w\s]{3}.*[^\w\s]{3}$''``' ruler_pattern: ^\s*[^\w\s]{3}.*[^\w\s]{3}$ # If a comment line matches starts with this pattern then it # is explicitly a trailing comment for the preceeding # argument. Default is '#<' explicit_trailing_pattern: '#<' # If a comment line starts with at least this many consecutive # hash characters, then don't lstrip() them off. This allows # for lazy hash rulers where the first hash char is not # separated by space hashruler_min_length: 10 # If true, then insert a space between the first hash char and # remaining hash chars in a hash ruler, and normalize its # length to fill the column canonicalize_hashrulers: true # enable comment markup parsing and reflow enable_markup: true # Options affecting the linter lint: # a list of lint codes to disable disabled_codes: - C0111 - C0113 - W0106 # regular expression pattern describing valid function names function_pattern: '[0-9a-z_]+' # regular expression pattern describing valid macro names macro_pattern: '[0-9a-z_]+' # regular expression pattern describing valid names for # variables with global (cache) scope global_var_pattern: '[A-Z][0-9A-Z_]+' # regular expression pattern describing valid names for # variables with global scope (but internal semantic) internal_var_pattern: '[A-Z][0-9A-Z_]+' # regular expression pattern describing valid names for # variables with local scope # TODO: Should be [a-z][a-z0-9_]+ local_var_pattern: '[a-zA-Z_][a-zA-Z0-9_]+' # regular expression pattern describing valid names for # privatedirectory variables private_var_pattern: '[a-zA-Z_][a-zA-Z0-9_]+' # regular expression pattern describing valid names for public # directory variables public_var_pattern: '[A-Z][0-9A-Z_]+' # regular expression pattern describing valid names for # function/macro arguments and loop variables. argument_var_pattern: '[A-Za-z_][0-9A-Za-z_]+' # regular expression pattern describing valid names for # keywords used in functions or macros keyword_pattern: '[A-Z][0-9A-Z_]+' # In the heuristic for C0201, how many conditionals to match # within a loop in before considering the loop a parser. max_conditionals_custom_parser: 2 # Require at least this many newlines between statements min_statement_spacing: 1 # Require no more than this many newlines between statements max_statement_spacing: 2 max_returns: 6 max_branches: 25 max_arguments: 5 max_localvars: 15 max_statements: 120 # Options affecting file encoding encode: # If true, emit the unicode byte-order mark (BOM) at the start # of the file emit_byteorder_mark: false # Specify the encoding of the input file. Defaults to utf-8 input_encoding: utf-8 # Specify the encoding of the output file. Defaults to utf-8. # Note that cmake only claims to support utf-8 so be careful # when using anything else output_encoding: utf-8 # Miscellaneous configurations options. misc: # A dictionary containing any per-command configuration # overrides. Currently only `command_case` is supported. per_command: {} rocm-cmake-rocm-5.0.0/doc/000077500000000000000000000000001417414007600152415ustar00rootroot00000000000000rocm-cmake-rocm-5.0.0/doc/CMakeLists.txt000077500000000000000000000001311417414007600177770ustar00rootroot00000000000000include(ROCMSphinxDoc) rocm_add_sphinx_doc(src BUILDER html OUTPUT_DIR html ) rocm-cmake-rocm-5.0.0/doc/requirements.txt000077500000000000000000000000641417414007600205300ustar00rootroot00000000000000sphinx==4.1.2 sphinxcontrib-moderncmakedomain==3.19 rocm-cmake-rocm-5.0.0/doc/src/000077500000000000000000000000001417414007600160305ustar00rootroot00000000000000rocm-cmake-rocm-5.0.0/doc/src/ROCMAnalyzers.rst000077500000000000000000000007511417414007600212210ustar00rootroot00000000000000ROCMAnalyzers ============= This creates a ``analyze`` target which can run all analysis for a project. Commands -------- .. cmake:command:: rocm_mark_as_analyzer .. code-block:: cmake rocm_mark_as_analyzer() Marks a target to be included with the ``analyze`` target. Variables --------- .. cmake:variable:: ROCM_ENABLE_GH_ANNOTATIONS Set this variable to ``ON`` so that analyzers will emit diagnostics in a format that github can use to annotate pull requests. rocm-cmake-rocm-5.0.0/doc/src/ROCMCheckTargetIds.rst000077500000000000000000000005351417414007600220750ustar00rootroot00000000000000ROCMCheckTargetIds ================== Commands -------- .. cmake:command:: rocm_check_target_ids .. code-block:: cmake rocm_check_target_ids( TARGETS ... ) Returns the subset of HIP `target-ids `_ supported by the current CXX compiler. rocm-cmake-rocm-5.0.0/doc/src/ROCMClangTidy.rst000077500000000000000000000031201417414007600211200ustar00rootroot00000000000000ROCMClangTidy ============= Commands -------- .. cmake:command:: rocm_enable_clang_tidy .. code-block:: cmake rocm_enable_clang_tidy( [CHECKS ...] [ERRORS ...] [EXTRA_ARGS ...] [CLANG_ARGS ...] [HEADER_FILTER ] [ALL] [ANALYZE_TEMPORARY_DTORS] [ENABLE_ALPHA_CHECKS] ) Enable checks for clang tidy. .. cmake:command:: rocm_clang_tidy_check .. code-block:: cmake rocm_clang_tidy_check(TARGET) Check the sources from target with clang tidy. Variables --------- .. cmake:variable:: CLANG_TIDY_EXE This cached variable can be used to set which ``clang-tidy`` executable to use. By default it will search for ``clang-tidy`` on the system while preferring the ``clang-tidy`` found in the same directory as ``CMAKE_CXX_COMPILER``. .. cmake:variable:: CLANG_TIDY_CACHE This is location of the ``clang-tidy`` cache. By default, this is stored in the build directory under ``tidy-cache``. .. cmake:variable:: CLANG_TIDY_CACHE_SIZE This sets the size of the cache. If set to ``0`` it will disable the cache. By default, it will cache 10 runs when using the Makefile generators. When using other generators it is disabled since it is not supported. .. cmake:variable:: CLANG_TIDY_DEPEND_ON_TARGET When set to ``On`` it will build the target first before running ``clang-tidy``. By default, this is set to ``On``. Fixits ------ All fixits are saved in the build directory under ``fixits/``. All fixits found during analysis can be applied by running ``clang-apply-replacements fixits/``. rocm-cmake-rocm-5.0.0/doc/src/ROCMCppCheck.rst000077500000000000000000000015461417414007600207340ustar00rootroot00000000000000ROCMCppCheck ============ Commands -------- .. cmake:command:: rocm_enable_cppcheck .. code-block:: cmake rocm_enable_cppcheck( [CHECKS ...] [SUPPRESS ...] [DEFINE ...] [UNDEFINE ...] [INCLUDE ...] [SOURCES ...] [ADDONS ...] [RULE_FILE ] [FORCE] [INCONCLUSIVE] ) Enable checks for cppcheck. Variables --------- .. cmake:variable:: CPPCHECK_EXE This cached variable can be used to set which ``cppcheck`` executable to use. By default it will search for ``cppcheck`` on the system. .. cmake:variable:: CPPCHECK_BUILD_DIR Sets the path to use for cppcheck's build directory where it caches the analysis. By default, this is set the ``cppcheck-build`` under cmake's build directory. rocm-cmake-rocm-5.0.0/doc/src/ROCMCreatePackage.rst000077500000000000000000000011341417414007600217240ustar00rootroot00000000000000ROCMCreatePackage ================= Commands -------- .. cmake:command:: rocm_create_package .. code-block:: cmake rocm_create_package( NAME [DESCRIPTION ] [SECTION
] [MAINTAINER ] [LDCONFIG_DIR ] [PREFIX ] [LDCONFIG] [HEADER_ONLY] ) Sets up CPack packaging, including installing the license file to the correct location and component. If the license file is not specified, also attempts to locate a LICENSE, LICENSE.md, or LICENSE.txt file in `CMAKE_SOURCE_DIR`. rocm-cmake-rocm-5.0.0/doc/src/ROCMDocs.rst000077500000000000000000000007151417414007600201410ustar00rootroot00000000000000ROCMDocs ======== This creates a ``doc`` target which can run all documentation generation for the project. Commands -------- .. cmake:command:: rocm_mark_as_doc .. code-block:: cmake rocm_mark_as_doc() Marks a target to be included with the ``doc`` target. .. cmake:command:: rocm_clean_doc_output .. code-block:: cmake rocm_clean_doc_output(DIR) Output directory of documentation that should be removed when calling ``make clean``. rocm-cmake-rocm-5.0.0/doc/src/ROCMDoxygenDoc.rst000077500000000000000000000016071417414007600213150ustar00rootroot00000000000000ROCMDoxygenDoc ============== Commands -------- .. cmake:command:: rocm_add_doxygen_doc .. code-block:: cmake rocm_add_doxygen_doc( [DEPENDS ] [...] ) This will generate a doxygen file and then create a ``doxygen`` target that will run doxygen. Doxygen settings can be passed directly to the ``rocm_add_doxygen_doc``. Settings for doxygen can be found `here `_. Variables --------- .. cmake:variable:: DOXYGEN_EXECUTABLE This cached variable can be used to set which ``doxygen`` executable to use. By default it will search for ``doxygen`` on the system. .. cmake:variable:: DOT_EXECUTABLE This cached variable can be used to set which ``dot`` executable to use. By default it will search for ``dot`` on the system. If ``dot`` is found then its path will be set in the generated doxygen file. rocm-cmake-rocm-5.0.0/doc/src/ROCMInstallSymlinks.rst000066400000000000000000000003511417414007600224020ustar00rootroot00000000000000ROCMInstallSymlinks =================== Commands -------- .. cmake:command:: rocm_install_symlink_subdir .. code-block:: cmake rocm_install_symlink_subdir(subdir) Install symlinks which point into the ``subdir`` directory. rocm-cmake-rocm-5.0.0/doc/src/ROCMInstallTargets.rst000066400000000000000000000027731417414007600222140ustar00rootroot00000000000000ROCMInstallTargets ================== Commands -------- .. cmake:command:: rocm_install .. code-block:: cmake rocm_install(TARGETS ... [...]) rocm_install({FILES | PROGRAMS} ... [...]) rocm_install(DIRECTORY ... [...]) rocm_install(SCRIPT [...]) rocm_install(CODE [...]) rocm_install(EXPORT [...]) Wraps installers to install to the correct component (devel or runtime) unless COMPONENT is specified. The TARGETS signature wraps ``rocm_install_targets``, all other signatures wrap ``install``. .. cmake:command:: rocm_install_targets .. code-block:: cmake rocm_install_targets( TARGETS ... [PREFIX ] [EXPORT ] [INCLUDE ...] [COMPONENT ] ) Install targets into the appropriate directory. Unless COMPONENT is specified, libraries will be installed to the base package and namelinked in the ``devel`` package, and everything else will be installed to the ``devel`` package. .. cmake:command:: rocm_export_targets .. code-block:: cmake rocm_export_targets( [NAMESPACE ] [EXPORT ] [INCLUDE ...] [NAME ] [COMPATIBILITY ] [PREFIX ] [TARGETS ...] [DEPENDS [PACKAGE ]...] [STATIC_DEPENDS [PACKAGE ]...] ) Export the installed targets so they can be consumed with ``find_package``. rocm-cmake-rocm-5.0.0/doc/src/ROCMPackageConfigHelpers.rst000077500000000000000000000005401417414007600232510ustar00rootroot00000000000000ROCMPackageConfigHelpers ======================== Commands -------- .. cmake:command:: rocm_configure_package_config_file .. code-block:: cmake rocm_configure_package_config_file( INSTALL_DESTINATION [PATH_VARS ...] [PREFIX ] ) Configure the config file used by ``find_package``. rocm-cmake-rocm-5.0.0/doc/src/ROCMSetupVersion.rst000066400000000000000000000012771417414007600217200ustar00rootroot00000000000000ROCMSetupVersion ================ Commands -------- .. cmake:command:: rocm_get_version .. code-block:: cmake rocm_get_version( [VERSION ] [DIRECTORY ] ) Get the version of directory using git tags if possible. .. cmake:command:: rocm_setup_version .. code-block:: cmake rocm_setup_version( VERSION [NO_GIT_TAG_VERSION] [PARENT ] ) Setup the version for the project. This will try to use git tag to set the version if possible unless ``NO_GIT_TAG_VERSION`` is passed. The ``PARENT`` argument can be used to set the commit to start the count of number of commits to the current revision. rocm-cmake-rocm-5.0.0/doc/src/ROCMSphinxDoc.rst000077500000000000000000000017401417414007600211470ustar00rootroot00000000000000ROCMSphinxDoc ============= Commands -------- .. cmake:command:: rocm_add_doxygen_doc .. code-block:: cmake rocm_add_sphinx_doc( SRC_DIR [BUILDER ] [OUTPUT_DIR ] [DEPENDS ] [VARS ...] [TEMPLATE_VARS ...] ) This will create a ``sphinx-${BUILDER}`` which will generate documentation using sphinx. THe ``SRC_DIR`` should be the directory that contains the ``conf.py`` file. Variables --------- .. cmake:variable:: SPHINX_EXECUTABLE This cached variable can be used to set which ``sphinx-build`` executable to use. By default it will search for ``sphinx-build`` on the system. .. cmake:variable:: SPHINX_${BUILDER}_DIR This is the directory where the documentation will be built. By default, it will use the ``OUTPUT_DIR`` passed to ``rocm_add_sphinx_doc`` otherwise it will be set to ``sphinx/${BUILDER}`` directory in the cmake build directory. rocm-cmake-rocm-5.0.0/doc/src/conf.py000077500000000000000000000047701417414007600173420ustar00rootroot00000000000000# Configuration file for the Sphinx documentation builder. # # This file only contains a selection of the most common options. For a full # list see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html # -- Path setup -------------------------------------------------------------- # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # # import os # import sys # sys.path.insert(0, os.path.abspath('.')) # -- Project information ----------------------------------------------------- project = 'rocm-cmake' copyright = '2021, Paul Fultz II' author = 'Paul Fultz II' # -- General configuration --------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ 'sphinxcontrib.moderncmakedomain' ] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] # -- Options for HTML output ------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # html_theme = 'default' html_theme_options = { 'footerbgcolor': '#00182d', 'footertextcolor': '#ffffff', 'sidebarbgcolor': '#e4ece8', 'sidebarbtncolor': '#00a94f', 'sidebartextcolor': '#333333', 'sidebarlinkcolor': '#00a94f', 'relbarbgcolor': '#00529b', 'relbartextcolor': '#ffffff', 'relbarlinkcolor': '#ffffff', 'bgcolor': '#ffffff', 'textcolor': '#444444', 'headbgcolor': '#f2f2f2', 'headtextcolor': '#003564', 'headlinkcolor': '#3d8ff2', 'linkcolor': '#2b63a8', 'visitedlinkcolor': '#2b63a8', 'codebgcolor': '#eeeeee', 'codetextcolor': '#333333', } # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static']rocm-cmake-rocm-5.0.0/doc/src/index.rst000077500000000000000000000030031417414007600176700ustar00rootroot00000000000000.. rocm-cmake documentation master file, created by sphinx-quickstart on Thu Sep 16 18:46:06 2021. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. rocm-cmake ========== - :any:`ROCMAnalyzers` + :any:`rocm_mark_as_analyzer` + :any:`ROCM_ENABLE_GH_ANNOTATIONS` - :any:`ROCMCheckTargetIds` + :any:`rocm_check_target_ids` - :any:`ROCMClangTidy` + :any:`rocm_enable_clang_tidy` + :any:`rocm_clang_tidy_check` + :any:`CLANG_TIDY_EXE` + :any:`CLANG_TIDY_CACHE` + :any:`CLANG_TIDY_CACHE_SIZE` + :any:`CLANG_TIDY_DEPEND_ON_TARGET` - :any:`ROCMCppCheck` + :any:`rocm_enable_cppcheck` + :any:`CPPCHECK_EXE` + :any:`CPPCHECK_BUILD_DIR` - :any:`ROCMCreatePackage` + :any:`rocm_create_package` - :any:`ROCMDocs` + :any:`rocm_mark_as_doc` + :any:`rocm_clean_doc_output` - :any:`ROCMDoxygenDoc` + :any:`rocm_add_doxygen_doc` + :any:`DOXYGEN_EXECUTABLE` + :any:`DOT_EXECUTABLE` - :any:`ROCMInstallSymlinks` + :any:`rocm_install_symlink_subdir` - :any:`ROCMInstallTargets` + :any:`rocm_install` + :any:`rocm_install_targets` + :any:`rocm_export_targets` - :any:`ROCMPackageConfigHelpers` + :any:`rocm_configure_package_config_file` - :any:`ROCMSetupVersion` + :any:`rocm_get_version` + :any:`rocm_setup_version` - :any:`ROCMSphinxDoc` + :any:`rocm_add_doxygen_doc` + :any:`SPHINX_EXECUTABLE` + :any:`SPHINX_${BUILDER}_DIR` Indices and tables ================== * :ref:`genindex` * :ref:`search` rocm-cmake-rocm-5.0.0/share/000077500000000000000000000000001417414007600155765ustar00rootroot00000000000000rocm-cmake-rocm-5.0.0/share/rocm/000077500000000000000000000000001417414007600165365ustar00rootroot00000000000000rocm-cmake-rocm-5.0.0/share/rocm/cmake/000077500000000000000000000000001417414007600176165ustar00rootroot00000000000000rocm-cmake-rocm-5.0.0/share/rocm/cmake/ROCMAnalyzers.cmake000066400000000000000000000007631417414007600232570ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### set(ROCM_ENABLE_GH_ANNOTATIONS Off CACHE BOOL "") if(NOT TARGET analyze) add_custom_target(analyze) endif() function(rocm_mark_as_analyzer) add_dependencies(analyze ${ARGN}) endfunction() rocm-cmake-rocm-5.0.0/share/rocm/cmake/ROCMCheckTargetIds.cmake000066400000000000000000000021401417414007600241220ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2021 Advanced Micro Devices, Inc. # ###################################################################################################################### include(CheckCXXCompilerFlag) include(CMakeParseArguments) function(rocm_check_target_ids VARIABLE) set(options) set(oneValueArgs) set(multiValueArgs TARGETS) cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) if(PARSE_UNPARSED_ARGUMENTS) message( FATAL_ERROR "Unknown keywords given to rocm_check_target_ids(): \"${PARSE_UNPARSED_ARGUMENTS}\"") endif() foreach(_target_id ${PARSE_TARGETS}) set(_result_var "HAVE_${_target_id}") check_cxx_compiler_flag("-xhip --offload-arch=${_target_id}" "${_result_var}") if(${_result_var}) list(APPEND _supported_target_ids "${_target_id}") endif() endforeach() set(${VARIABLE} "${_supported_target_ids}" PARENT_SCOPE) endfunction() rocm-cmake-rocm-5.0.0/share/rocm/cmake/ROCMChecks.cmake000066400000000000000000000050701417414007600225030ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2019 Advanced Micro Devices, Inc. # ###################################################################################################################### set(ROCM_WARN_TOOLCHAIN_VAR ON CACHE BOOL "") set(ROCM_ERROR_TOOLCHAIN_VAR OFF CACHE BOOL "") function(rocm_check_toolchain_var var access value list_file) set(message_type STATUS) if(ROCM_WARN_TOOLCHAIN_VAR) set(message_type WARNING) endif() if(ROCM_ERROR_TOOLCHAIN_VAR) set(message_type SEND_ERROR) endif() if(access STREQUAL "MODIFIED_ACCESS") set(cmake_module Off) get_filename_component(base "${list_file}" DIRECTORY) # Skip warning in cmake's built-in modules if("${base}" STREQUAL "${CMAKE_ROOT}/Modules") set(cmake_module On) elseif("${base}" MATCHES ".*/CMakeFiles/${CMAKE_VERSION}$") set(cmake_module On) endif() if(NOT cmake_module) message( " ******************************************************************************* *----------------------------------- ERROR -----------------------------------* * The variable '${var}' should only be set by the cmake toolchain, * either by calling 'cmake -D${var}=\"${value}\"' or * set in a toolchain file and added with * 'cmake -DCMAKE_TOOLCHAIN_FILE='. *-----------------------------------------------------------------------------* ******************************************************************************* ") message(${message_type} "The toolchain variable '${var}' is modified in the CMakeLists.txt.") endif() endif() endfunction() if(UNIX) foreach(LANG C CXX Fortran) variable_watch(CMAKE_${LANG}_COMPILER rocm_check_toolchain_var) variable_watch(CMAKE_${LANG}_FLAGS rocm_check_toolchain_var) variable_watch(CMAKE_${LANG}_LINK_EXECUTABLE rocm_check_toolchain_var) variable_watch(CMAKE_${LANG}_SIZEOF_DATA_PTR rocm_check_toolchain_var) variable_watch(CMAKE_${LANG}_STANDARD_INCLUDE_DIRECTORIES rocm_check_toolchain_var) variable_watch(CMAKE_${LANG}_STANDARD_LIBRARIES rocm_check_toolchain_var) endforeach() variable_watch(CMAKE_EXE_LINKER_FLAGS rocm_check_toolchain_var) variable_watch(CMAKE_MODULE_LINKER_FLAGS rocm_check_toolchain_var) variable_watch(CMAKE_SHARED_LINKER_FLAGS rocm_check_toolchain_var) variable_watch(CMAKE_STATIC_LINKER_FLAGS rocm_check_toolchain_var) endif() rocm-cmake-rocm-5.0.0/share/rocm/cmake/ROCMClangTidy.cmake000066400000000000000000000300611417414007600231570ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### include(CMakeParseArguments) include(ROCMAnalyzers) get_filename_component(CLANG_TIDY_EXE_HINT "${CMAKE_CXX_COMPILER}" PATH) find_program( CLANG_TIDY_EXE NAMES clang-tidy clang-tidy-9.0 clang-tidy-8.0 clang-tidy-7.0 clang-tidy-6.0 clang-tidy-5.0 clang-tidy-4.0 clang-tidy-3.9 clang-tidy-3.8 clang-tidy-3.7 clang-tidy-3.6 clang-tidy-3.5 HINTS ${CLANG_TIDY_EXE_HINT} PATH_SUFFIXES compiler/bin bin PATHS /opt/rocm/llvm/bin /opt/rocm/hcc /usr/local/opt/llvm/bin) execute_process(COMMAND ${CMAKE_CXX_COMPILER} --version OUTPUT_VARIABLE CLANG_TIDY_COMPILER_VERSION_OUTPUT) function(rocm_find_clang_tidy_version VAR) execute_process(COMMAND ${CLANG_TIDY_EXE} -version OUTPUT_VARIABLE VERSION_OUTPUT) separate_arguments(VERSION_OUTPUT_LIST UNIX_COMMAND "${VERSION_OUTPUT}") list(FIND VERSION_OUTPUT_LIST "version" VERSION_INDEX) if(VERSION_INDEX GREATER 0) math(EXPR VERSION_INDEX "${VERSION_INDEX} + 1") list(GET VERSION_OUTPUT_LIST ${VERSION_INDEX} VERSION) set(${VAR} ${VERSION} PARENT_SCOPE) else() set(${VAR} "0.0" PARENT_SCOPE) endif() endfunction() if(NOT CLANG_TIDY_EXE) message(STATUS "Clang tidy not found") set(CLANG_TIDY_VERSION "0.0") else() rocm_find_clang_tidy_version(CLANG_TIDY_VERSION) message(STATUS "Clang tidy found: ${CLANG_TIDY_VERSION}") endif() set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CLANG_TIDY_CACHE "${CMAKE_BINARY_DIR}/tidy-cache" CACHE STRING "") if(CMAKE_GENERATOR MATCHES "Make") set(CLANG_TIDY_CACHE_SIZE 10 CACHE STRING "") else() set(CLANG_TIDY_CACHE_SIZE 0 CACHE STRING "") endif() set(CLANG_TIDY_FIXIT_DIR ${CMAKE_BINARY_DIR}/fixits) file(MAKE_DIRECTORY ${CLANG_TIDY_FIXIT_DIR}) set_property( DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${CLANG_TIDY_FIXIT_DIR}) set(CLANG_TIDY_DEPEND_ON_TARGET On CACHE BOOL "") set(ROCM_ENABLE_GH_ANNOTATIONS Off CACHE BOOL "Enable github annotations in output") macro(rocm_enable_clang_tidy) set(options ALL ANALYZE_TEMPORARY_DTORS ENABLE_ALPHA_CHECKS) set(oneValueArgs HEADER_FILTER) set(multiValueArgs CHECKS ERRORS EXTRA_ARGS CLANG_ARGS) cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) string(REPLACE ";" "," CLANG_TIDY_CHECKS "${PARSE_CHECKS}") string(REPLACE ";" "," CLANG_TIDY_ERRORS "${PARSE_ERRORS}") message(STATUS "Clang tidy checks: ${CLANG_TIDY_CHECKS}") set(CLANG_TIDY_ALL) if(PARSE_ALL) set(CLANG_TIDY_ALL ALL) endif() set(CLANG_TIDY_EXTRA_ARGS) foreach(ARG ${PARSE_EXTRA_ARGS}) list(APPEND CLANG_TIDY_EXTRA_ARGS "-extra-arg=${ARG}") endforeach() foreach(ARG ${PARSE_CLANG_ARGS}) list(APPEND CLANG_TIDY_EXTRA_ARGS -extra-arg=-Xclang "-extra-arg=${ARG}") endforeach() set(CLANG_TIDY_ENABLE_ALPHA_CHECKS_ARGS) if(PARSE_ENABLE_ALPHA_CHECKS) set(CLANG_TIDY_ENABLE_ALPHA_CHECKS_ARGS --allow-enabling-analyzer-alpha-checkers) endif() if(${CLANG_TIDY_VERSION} VERSION_LESS "3.9.0") set(CLANG_TIDY_ERRORS_ARG "") else() set(CLANG_TIDY_ERRORS_ARG "-warnings-as-errors=${CLANG_TIDY_ERRORS}") endif() if(${CLANG_TIDY_VERSION} VERSION_LESS "4.0.0" OR WIN32) set(CLANG_TIDY_QUIET_ARG "") else() set(CLANG_TIDY_QUIET_ARG "-quiet") endif() if(EXISTS ${CMAKE_SOURCE_DIR}/.clang-tidy) set(CLANG_TIDY_CONFIG_ARG "-config-file=${CMAKE_SOURCE_DIR}/.clang-tidy") else() set(CLANG_TIDY_CONFIG_ARG) endif() if(PARSE_HEADER_FILTER) string(REPLACE "$" "$$" CLANG_TIDY_HEADER_FILTER "${PARSE_HEADER_FILTER}") else() set(CLANG_TIDY_HEADER_FILTER ".*") endif() set(CLANG_TIDY_COMMAND ${CLANG_TIDY_EXE} ${CLANG_TIDY_CONFIG_ARG} ${CLANG_TIDY_QUIET_ARG} ${CLANG_TIDY_ENABLE_ALPHA_CHECKS_ARGS} -p "${CMAKE_BINARY_DIR}" "-checks=${CLANG_TIDY_CHECKS}" "${CLANG_TIDY_ERRORS_ARG}" ${CLANG_TIDY_EXTRA_ARGS} "-header-filter=${CLANG_TIDY_HEADER_FILTER}") execute_process(COMMAND ${CLANG_TIDY_COMMAND} -dump-config OUTPUT_VARIABLE CLANG_TIDY_CONFIG) file(WRITE ${CMAKE_BINARY_DIR}/clang-tidy.yml ${CLANG_TIDY_CONFIG}) add_custom_target(tidy ${CLANG_TIDY_ALL}) if(CLANG_TIDY_EXE) rocm_mark_as_analyzer(tidy) endif() add_custom_target(tidy-base) add_custom_target(tidy-make-fixit-dir COMMAND ${CMAKE_COMMAND} -E make_directory ${CLANG_TIDY_FIXIT_DIR}) add_custom_target(tidy-rm-fixit-dir COMMAND ${CMAKE_COMMAND} -E remove_directory ${CLANG_TIDY_FIXIT_DIR}) add_dependencies(tidy-make-fixit-dir tidy-rm-fixit-dir) add_dependencies(tidy-base tidy-make-fixit-dir) if(CLANG_TIDY_CACHE_SIZE GREATER 0) add_custom_target(tidy-create-cache-dir COMMAND ${CMAKE_COMMAND} -E make_directory ${CLANG_TIDY_CACHE}) add_dependencies(tidy-base tidy-create-cache-dir) endif() endmacro() function(rocm_clang_tidy_check TARGET) get_target_property(SOURCES ${TARGET} SOURCES) # TODO: Use generator expressions instead COMMAND ${CLANG_TIDY_COMMAND} $ COMMAND # ${CLANG_TIDY_COMMAND} $, > add_custom_target(tidy-target-${TARGET}) foreach(SOURCE ${SOURCES}) if(NOT "${SOURCE}" MATCHES "(h|hpp|hxx)$") string(MAKE_C_IDENTIFIER "${SOURCE}" tidy_file) set(tidy_target tidy-target-${TARGET}-${tidy_file}) if(CLANG_TIDY_CACHE_SIZE GREATER 0) get_filename_component(SRC_ABS ${SOURCE} ABSOLUTE) string(FIND ${SRC_ABS} ${CMAKE_CURRENT_BINARY_DIR} BINARY_IDX) if(BINARY_IDX EQUAL -1) set(ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}) else() set(ROOT_DIR ${CMAKE_CURRENT_BINARY_DIR}) endif() get_filename_component(SRC_PATH ${SRC_ABS} DIRECTORY) file(RELATIVE_PATH REL_PATH ${ROOT_DIR} ${SRC_PATH}) get_filename_component(BASE_SOURCE_NAME ${SOURCE} NAME_WE) if(REL_PATH) set(BASE_SOURCE ${REL_PATH}/${BASE_SOURCE_NAME}) else() set(BASE_SOURCE ${BASE_SOURCE_NAME}) endif() file( WRITE ${CMAKE_CURRENT_BINARY_DIR}/${tidy_target}.cmake " set(CLANG_TIDY_COMMAND_LIST \"${CLANG_TIDY_COMMAND}\") set(GH_ANNOTATIONS ${ROCM_ENABLE_GH_ANNOTATIONS}) execute_process( COMMAND ${CMAKE_COMMAND} --build ${CMAKE_CURRENT_BINARY_DIR} --target ${BASE_SOURCE}.i ERROR_QUIET OUTPUT_VARIABLE PP_OUT RESULT_VARIABLE RESULT1) if(NOT RESULT1 EQUAL 0) message(WARNING \"Could not preprocess ${SOURCE} -> ${BASE_SOURCE}.i\") execute_process( COMMAND \${CLANG_TIDY_COMMAND_LIST} ${SOURCE} \"-export-fixes=${CLANG_TIDY_FIXIT_DIR}/${TARGET}-${tidy_file}.yaml\" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} RESULT_VARIABLE RESULT2) if(NOT RESULT2 EQUAL 0) message(FATAL_ERROR \"Clang tidy failed. \") endif() return() endif() string(REPLACE \"Preprocessing CXX source to \" \"\" PP_FILE \"\${PP_OUT}\") string(STRIP \"\${PP_FILE}\" PP_FILE) file(MD5 ${CMAKE_CURRENT_BINARY_DIR}/\${PP_FILE} PP_HASH) execute_process( COMMAND \${CLANG_TIDY_COMMAND_LIST} ${SOURCE} --dump-config WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE TIDY_CONFIG) string(MD5 CONFIG_HASH \" \${TIDY_CONFIG} ${CLANG_TIDY_EXTRA_ARGS} ${CLANG_TIDY_COMPILER_VERSION_OUTPUT}\") set(HASH \${PP_HASH}-\${CONFIG_HASH}) set(HASHES \${HASH}) set(HASH_FILE ${CLANG_TIDY_CACHE}/${TARGET}-${tidy_file}) set(RUN_TIDY On) if(EXISTS \${HASH_FILE}) file(STRINGS \${HASH_FILE} CACHED_HASHES) list(FIND CACHED_HASHES \${HASH} HASH_IDX) if(NOT HASH_IDX EQUAL -1) set(RUN_TIDY Off) list(REMOVE_AT CACHED_HASHES HASH_IDX) endif() list(LENGTH CACHED_HASHES NHASHES) math(EXPR NHASHES \"\${NHASHES} - 1\") if(NHASHES GREATER_EQUAL ${CLANG_TIDY_CACHE_SIZE}) foreach(IDX RANGE ${CLANG_TIDY_CACHE_SIZE} \${NHASHES}) list(REMOVE_AT CACHED_HASHES \${IDX}) endforeach() endif() list(APPEND HASHES \${CACHED_HASHES}) endif() if(RUN_TIDY) execute_process( COMMAND \${CLANG_TIDY_COMMAND_LIST} ${SOURCE} \"-export-fixes=${CLANG_TIDY_FIXIT_DIR}/${TARGET}-${tidy_file}.yaml\" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} RESULT_VARIABLE RESULT3 OUTPUT_VARIABLE TIDY_OUTPUT ERROR_VARIABLE TIDY_OUTPUT) if(GH_ANNOTATIONS) string(REGEX REPLACE \"(/[^:\\t\\r\\n]+):([0-9]+):([0-9]+): (error|warning): ([^]]+])\" \"::warning file=\\\\1,line=\\\\2,col=\\\\3::\\\\5\" TIDY_OUTPUT \"\${TIDY_OUTPUT}\") string(REPLACE \"${CMAKE_SOURCE_DIR}/\" \"\" TIDY_OUTPUT \"\${TIDY_OUTPUT}\") endif() message(\"\${TIDY_OUTPUT}\") if(RESULT3 EQUAL 0) string(REPLACE \";\" \"\\n\" HASH_LINES \"\${HASHES}\") file(WRITE \${HASH_FILE} \"\${HASH_LINES}\") else() message(FATAL_ERROR \"Clang tidy failed. \") endif() endif() ") add_custom_target( ${tidy_target} COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/${tidy_target}.cmake COMMENT "clang-tidy: Running clang-tidy on target ${SOURCE}...") else() add_custom_target( ${tidy_target} COMMAND ${CLANG_TIDY_COMMAND} ${SOURCE} "-export-fixes=${CLANG_TIDY_FIXIT_DIR}/${TARGET}-${tidy_file}.yaml" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMENT "clang-tidy: Running clang-tidy on target ${SOURCE}...") endif() if(CLANG_TIDY_DEPEND_ON_TARGET) add_dependencies(${tidy_target} ${TARGET}) endif() add_dependencies(${tidy_target} tidy-base) add_dependencies(tidy-target-${TARGET} ${tidy_target}) add_dependencies(tidy ${tidy_target}) endif() endforeach() endfunction() rocm-cmake-rocm-5.0.0/share/rocm/cmake/ROCMConfig.cmake000066400000000000000000000005621417414007600225110ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}) include(ROCMChecks) rocm-cmake-rocm-5.0.0/share/rocm/cmake/ROCMCppCheck.cmake000077500000000000000000000107011417414007600227630ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### include(CMakeParseArguments) include(ProcessorCount) include(ROCMAnalyzers) find_program( CPPCHECK_EXE NAMES cppcheck PATHS /opt/rocm/bin) function(rocm_find_cppcheck_version VAR) execute_process(COMMAND ${CPPCHECK_EXE} --version OUTPUT_VARIABLE VERSION_OUTPUT) separate_arguments(VERSION_OUTPUT_LIST UNIX_COMMAND "${VERSION_OUTPUT}") list(LENGTH VERSION_OUTPUT_LIST VERSION_OUTPUT_LIST_LEN) if(VERSION_OUTPUT_LIST_LEN GREATER 1) list(GET VERSION_OUTPUT_LIST 1 VERSION) set(${VAR} ${VERSION} PARENT_SCOPE) else() set(${VAR} "0.0" PARENT_SCOPE) endif() endfunction() if(NOT CPPCHECK_EXE) message(STATUS "Cppcheck not found") set(CPPCHECK_VERSION "0.0") else() rocm_find_cppcheck_version(CPPCHECK_VERSION) message(STATUS "Cppcheck found: ${CPPCHECK_VERSION}") endif() processorcount(CPPCHECK_JOBS) set(CPPCHECK_BUILD_DIR ${CMAKE_BINARY_DIR}/cppcheck-build CACHE STRING "") file(MAKE_DIRECTORY ${CPPCHECK_BUILD_DIR}) set_property( DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${CPPCHECK_BUILD_DIR}) macro(rocm_enable_cppcheck) set(options FORCE INCONCLUSIVE) set(oneValueArgs RULE_FILE) set(multiValueArgs CHECKS SUPPRESS DEFINE UNDEFINE INCLUDE SOURCES ADDONS) cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) string(REPLACE ";" "," CPPCHECK_CHECKS "${PARSE_CHECKS}") string(REPLACE ";" "\n" CPPCHECK_SUPPRESS "${PARSE_SUPPRESS};*:/usr/*") file(WRITE ${CMAKE_BINARY_DIR}/cppcheck-supressions "${CPPCHECK_SUPPRESS}") set(CPPCHECK_DEFINES) foreach(DEF ${PARSE_DEFINE}) list(APPEND CPPCHECK_DEFINES "-D${DEF}") endforeach() set(CPPCHECK_UNDEFINES) foreach(DEF ${PARSE_UNDEFINE}) list(APPEND CPPCHECK_UNDEFINES "-U${DEF}") endforeach() set(CPPCHECK_INCLUDES) foreach(INC ${PARSE_INCLUDE}) list(APPEND CPPCHECK_INCLUDES "-I${INC}") endforeach() # set(CPPCHECK_FORCE) set(CPPCHECK_FORCE "--project=${CMAKE_BINARY_DIR}/compile_commands.json") if(PARSE_FORCE) set(CPPCHECK_FORCE --force) endif() set(CPPCHECK_INCONCLUSIVE "") if(PARSE_INCONCLUSIVE) set(CPPCHECK_INCONCLUSIVE --inconclusive) endif() if(${CPPCHECK_VERSION} VERSION_LESS "1.80") set(CPPCHECK_BUILD_DIR_FLAG) else() set(CPPCHECK_BUILD_DIR_FLAG "--cppcheck-build-dir=${CPPCHECK_BUILD_DIR}") endif() if(${CPPCHECK_VERSION} VERSION_LESS "1.80") set(CPPCHECK_PLATFORM_FLAG) else() set(CPPCHECK_PLATFORM_FLAG "--platform=native") endif() set(CPPCHECK_RULE_FILE_ARG) if(PARSE_RULE_FILE) set(CPPCHECK_RULE_FILE_ARG "--rule-file=${PARSE_RULE_FILE}") endif() set(CPPCHECK_ADDONS_ARG) foreach(ADDON ${PARSE_ADDONS}) list(APPEND CPPCHECK_ADDONS_ARG "--addon=${ADDON}") endforeach() set(CPPCHECK_TEMPLATE_ARG) if(ROCM_ENABLE_GH_ANNOTATIONS) # cmake-lint: disable=C0301 set(CPPCHECK_TEMPLATE_ARG "--template=::warning file={file},line={line},col={column}::{severity}: {inconclusive:inconclusive: }{message} [{id}]" "--template-location={file}:{line}:{column}: note: {info}\n{code}") endif() set(CPPCHECK_COMMAND ${CPPCHECK_EXE} -q # -v # --report-progress ${CPPCHECK_FORCE} ${CPPCHECK_INCONCLUSIVE} ${CPPCHECK_BUILD_DIR_FLAG} ${CPPCHECK_PLATFORM_FLAG} ${CPPCHECK_RULE_FILE_ARG} ${CPPCHECK_TEMPLATE_ARG} ${CPPCHECK_ADDONS_ARG} --inline-suppr --error-exitcode=1 -j ${CPPCHECK_JOBS} ${CPPCHECK_DEFINES} ${CPPCHECK_UNDEFINES} ${CPPCHECK_INCLUDES} "--relative-paths=${CMAKE_SOURCE_DIR}" --enable=${CPPCHECK_CHECKS} --suppressions-list=${CMAKE_BINARY_DIR}/cppcheck-supressions ) add_custom_target( cppcheck COMMAND ${CPPCHECK_COMMAND} ${PARSE_SOURCES} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMENT "cppcheck: Running cppcheck...") if(CPPCHECK_EXE) rocm_mark_as_analyzer(cppcheck) endif() endmacro() rocm-cmake-rocm-5.0.0/share/rocm/cmake/ROCMCreatePackage.cmake000077500000000000000000000267571417414007600240040ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017-2019 Advanced Micro Devices, Inc. # ###################################################################################################################### set(ROCM_DISABLE_LDCONFIG OFF CACHE BOOL "") set(ROCM_DEP_ROCMCORE TRUE CACHE BOOL "Add dependency on rocm-core package, default 'TRUE'") include(CMakeParseArguments) include(GNUInstallDirs) include(ROCMSetupVersion) find_program(MAKE_NSIS_EXE makensis) find_program(RPMBUILD_EXE rpmbuild) find_program(DPKG_EXE dpkg) if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.12.0") # pretty much just a wrapper around string JOIN function(rocm_join_if_set glue inout_variable) string(JOIN "${glue}" to_set_parent ${${inout_variable}} ${ARGN}) set(${inout_variable} "${to_set_parent}" PARENT_SCOPE) endfunction() else() # cmake < 3.12 doesn't have string JOIN function(rocm_join_if_set glue inout_variable) set(accumulator "${${inout_variable}}") set(tglue ${glue}) if(accumulator STREQUAL "") set(tglue "") # No glue needed if initially unset endif() foreach(ITEM IN LISTS ARGN) string(CONCAT accumulator "${accumulator}" "${tglue}" "${ITEM}") set(tglue ${glue}) # Always need glue after the first concatenate endforeach() set(${inout_variable} "${accumulator}" PARENT_SCOPE) endfunction() endif() macro(rocm_package_add_rocm_core_dependency) # Optionally add depenency on rocm-core # This mainly empty package exists to allow all of rocm # to be removed in one step by removing rocm-core if(ROCM_DEP_ROCMCORE) rocm_join_if_set(", " CPACK_DEBIAN_PACKAGE_DEPENDS "rocm-core") rocm_join_if_set(", " CPACK_RPM_PACKAGE_REQUIRES "rocm-core") endif() endmacro() macro(rocm_create_package) set(options LDCONFIG PTH HEADER_ONLY) set(oneValueArgs NAME DESCRIPTION SECTION MAINTAINER LDCONFIG_DIR PREFIX) set(multiValueArgs DEPENDS COMPONENTS) cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) string(TOLOWER ${PARSE_NAME} _rocm_cpack_package_name) set(CPACK_PACKAGE_NAME ${_rocm_cpack_package_name}) set(CPACK_PACKAGE_VENDOR "Advanced Micro Devices, Inc") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PARSE_DESCRIPTION}) set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}) set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR}) set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH}) if(NOT CMAKE_HOST_WIN32) set(CPACK_SET_DESTDIR ON CACHE BOOL "Boolean toggle to make CPack use DESTDIR mechanism when packaging") if(${CPACK_SET_DESTDIR}) set(CPACK_PACKAGING_INSTALL_PREFIX "") endif() endif() rocm_get_patch_version(ROCM_VERSION_NUM) if(ROCM_VERSION_NUM) set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION}.${ROCM_VERSION_NUM}") endif() set(CPACK_DEBIAN_PACKAGE_MAINTAINER ${PARSE_MAINTAINER}) set(CPACK_DEBIAN_PACKAGE_SECTION "devel") set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT") set(CPACK_NSIS_MODIFY_PATH On) set(CPACK_NSIS_PACKAGE_NAME ${PARSE_NAME}) set(CPACK_RPM_PACKAGE_RELOCATABLE Off) set(CPACK_RPM_PACKAGE_AUTOREQPROV Off CACHE BOOL "turns off rpm autoreqprov field; packages explicity list dependencies") set(CPACK_RPM_FILE_NAME "RPM-DEFAULT") if(DEFINED ENV{CPACK_DEBIAN_PACKAGE_RELEASE}) set(DEBIAN_VERSION $ENV{CPACK_DEBIAN_PACKAGE_RELEASE}) elseif(PROJECT_VERSION_TWEAK) # Sanitize tweak version for debian string(REGEX REPLACE "[^A-Za-z0-9.+~]" "~" DEBIAN_VERSION ${PROJECT_VERSION_TWEAK}) endif() if(DEFINED ENV{CPACK_RPM_PACKAGE_RELEASE}) set(RPM_RELEASE $ENV{CPACK_RPM_PACKAGE_RELEASE}) elseif(PROJECT_VERSION_TWEAK) # Sanitize tweak version for rpm string(REPLACE "-" "_" RPM_RELEASE ${PROJECT_VERSION_TWEAK}) endif() if (ROCM_USE_DEV_COMPONENT) list(APPEND PARSE_COMPONENTS devel) set(CPACK_DEBIAN_DEVEL_PACKAGE_NAME "${CPACK_PACKAGE_NAME}-dev") rocm_join_if_set(", " CPACK_DEBIAN_UNSPECIFIED_PACKAGE_RECOMMENDS "${CPACK_PACKAGE_NAME}-dev (>=${CPACK_PACKAGE_VERSION})") execute_process( COMMAND rpmbuild --version RESULT_VARIABLE PROC_RESULT OUTPUT_VARIABLE EVAL_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE ) if(PROC_RESULT EQUAL "0" AND NOT EVAL_RESULT STREQUAL "") string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+$" RPMBUILD_VERSION "${EVAL_RESULT}") if (RPMBUILD_VERSION VERSION_GREATER_EQUAL "4.12.0") rocm_join_if_set(", " CPACK_RPM_UNSPECIFIED_PACKAGE_SUGGESTS "${CPACK_PACKAGE_NAME}-devel >= ${CPACK_PACKAGE_VERSION}") endif() endif() if(PARSE_HEADER_ONLY) set(CPACK_DEBIAN_DEVEL_PACKAGE_PROVIDES "${CPACK_PACKAGE_NAME} (= ${CPACK_PACKAGE_VERSION})") set(CPACK_RPM_DEVEL_PACKAGE_PROVIDES "${CPACK_PACKAGE_NAME} = ${CPACK_PACKAGE_VERSION}") else() rocm_join_if_set(", " CPACK_DEBIAN_DEVEL_PACKAGE_DEPENDS "${CPACK_PACKAGE_NAME} (>=${CPACK_PACKAGE_VERSION})") rocm_join_if_set(", " CPACK_RPM_DEVEL_PACKAGE_REQUIRES "${CPACK_PACKAGE_NAME} >= ${CPACK_PACKAGE_VERSION}") endif() endif() # '%{?dist}' breaks manual builds on debian systems due to empty Provides execute_process( COMMAND rpm --eval %{?dist} RESULT_VARIABLE PROC_RESULT OUTPUT_VARIABLE EVAL_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE) if(PROC_RESULT EQUAL "0" AND NOT EVAL_RESULT STREQUAL "") string(APPEND RPM_RELEASE "%{?dist}") endif() set(CPACK_DEBIAN_PACKAGE_RELEASE ${DEBIAN_VERSION}) set(CPACK_RPM_PACKAGE_RELEASE ${RPM_RELEASE}) set(CPACK_GENERATOR "TGZ;ZIP") if(EXISTS ${MAKE_NSIS_EXE}) list(APPEND CPACK_GENERATOR "NSIS") endif() if(EXISTS ${RPMBUILD_EXE}) list(APPEND CPACK_GENERATOR "RPM") if(PARSE_COMPONENTS) set(CPACK_RPM_COMPONENT_INSTALL ON) endif() endif() if(EXISTS ${DPKG_EXE}) list(APPEND CPACK_GENERATOR "DEB") if(PARSE_COMPONENTS) set(CPACK_DEB_COMPONENT_INSTALL ON) execute_process( COMMAND dpkg --print-architecture RESULT_VARIABLE PROC_RESULT OUTPUT_VARIABLE COMMAND_OUTPUT OUTPUT_STRIP_TRAILING_WHITESPACE) if(PROC_RESULT EQUAL "0" AND NOT COMMAND_OUTPUT STREQUAL "") set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${COMMAND_OUTPUT}") endif() endif() endif() if(PARSE_DEPENDS) string(REPLACE ";" ", " DEPENDS "${PARSE_DEPENDS}") set(CPACK_DEBIAN_PACKAGE_DEPENDS "${DEPENDS}") set(CPACK_RPM_PACKAGE_REQUIRES "${DEPENDS}") endif() rocm_package_add_rocm_core_dependency() set(LIB_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}) if(PARSE_PREFIX) set(LIB_DIR ${CMAKE_INSTALL_PREFIX}/${PARSE_PREFIX}/${CMAKE_INSTALL_LIBDIR}) endif() file(WRITE ${PROJECT_BINARY_DIR}/debian/postinst "") file(WRITE ${PROJECT_BINARY_DIR}/debian/prerm "") set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${PROJECT_BINARY_DIR}/debian/postinst;${PROJECT_BINARY_DIR}/debian/prerm") set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${PROJECT_BINARY_DIR}/debian/postinst") set(CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE "${PROJECT_BINARY_DIR}/debian/prerm") if(PARSE_LDCONFIG AND NOT ${ROCM_DISABLE_LDCONFIG}) set(LDCONFIG_DIR ${LIB_DIR}) if(PARSE_LDCONFIG_DIR) set(LDCONFIG_DIR ${PARSE_LDCONFIG_DIR}) endif() file( APPEND ${PROJECT_BINARY_DIR}/debian/postinst " echo \"${LDCONFIG_DIR}\" > /etc/ld.so.conf.d/${PARSE_NAME}.conf ldconfig ") file( APPEND ${PROJECT_BINARY_DIR}/debian/prerm " rm /etc/ld.so.conf.d/${PARSE_NAME}.conf ldconfig ") endif() if(PARSE_PTH) set(PYTHON_SITE_PACKAGES "/usr/lib/python3/dist-packages;/usr/lib/python2.7/dist-packages" CACHE STRING "The site packages used for packaging") foreach(PYTHON_SITE ${PYTHON_SITE_PACKAGES}) file( APPEND ${PROJECT_BINARY_DIR}/debian/postinst " mkdir -p ${PYTHON_SITE} echo \"${LIB_DIR}\" > ${PYTHON_SITE}/${PARSE_NAME}.pth ") file( APPEND ${PROJECT_BINARY_DIR}/debian/prerm " rm ${PYTHON_SITE}/${PARSE_NAME}.pth ") endforeach() endif() rocm_setup_license(${PARSE_HEADER_ONLY}) if(PARSE_COMPONENTS) rocm_set_comp_cpackvar(PARSE_HEADER_ONLY "${PARSE_COMPONENTS}") endif() include(CPack) endmacro() macro(rocm_setup_license HEADER_ONLY) if(NOT CPACK_RESOURCE_FILE_LICENSE) file(GLOB _license_files LIST_DIRECTORIES FALSE "${CMAKE_SOURCE_DIR}/LICENSE*") set(_detected_license_files) foreach(_license_file IN LISTS _license_files) if(_license_file MATCHES "LICENSE(\\.(md|txt))?$") list(APPEND _detected_license_files "${_license_file}") endif() endforeach() list(LENGTH _detected_license_files _num_licenses) if(_num_licenses GREATER 1) message(AUTHOR_WARNING "rocm-cmake warning: Multiple license files found, " "please specify one using CPACK_RESOURCE_FILE_LICENSE." ) elseif(_num_licenses EQUAL 0) message(AUTHOR_WARNING "rocm-cmake warning: Could not find a license file, " "please specify one using CPACK_RESOURCE_FILE_LICENSE." ) else() list(GET _detected_license_files 0 CPACK_RESOURCE_FILE_LICENSE) message(STATUS "rocm-cmake: Set license file to ${CPACK_RESOURCE_FILE_LICENSE}.") endif() endif() if(CPACK_RESOURCE_FILE_LICENSE) if(ROCM_USE_DEV_COMPONENT AND ${HEADER_ONLY}) install( FILES ${CPACK_RESOURCE_FILE_LICENSE} DESTINATION share/doc/${_rocm_cpack_package_name} COMPONENT devel ) else() install( FILES ${CPACK_RESOURCE_FILE_LICENSE} DESTINATION share/doc/${_rocm_cpack_package_name} ) endif() endif() endmacro() macro(rocm_set_comp_cpackvar HEADER_ONLY components) # Setting component specific variables set(CPACK_ARCHIVE_COMPONENT_INSTALL ON) if(NOT ${HEADER_ONLY}) set(CPACK_RPM_MAIN_COMPONENT "Unspecified") set(CPACK_RPM_UNSPECIFIED_DISPLAY_NAME "${CPACK_PACKAGE_NAME}") list(APPEND CPACK_COMPONENTS_ALL Unspecified) set(CPACK_DEBIAN_UNSPECIFIED_FILE_NAME "${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}-${DEBIAN_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb") set(CPACK_DEBIAN_UNSPECIFIED_PACKAGE_NAME "${CPACK_PACKAGE_NAME}") endif() foreach(COMPONENT ${components}) list(APPEND CPACK_COMPONENTS_ALL "${COMPONENT}") set(CPACK_RPM_${COMPONENT}_FILE_NAME "RPM-DEFAULT") set(CPACK_DEBIAN_${COMPONENT}_FILE_NAME "DEB-DEFAULT") endforeach() endmacro() rocm-cmake-rocm-5.0.0/share/rocm/cmake/ROCMDocs.cmake000077500000000000000000000011021417414007600221660ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2021 Advanced Micro Devices, Inc. # ###################################################################################################################### if(NOT TARGET doc) add_custom_target(doc) endif() function(rocm_mark_as_doc) add_dependencies(doc ${ARGN}) endfunction() function(rocm_clean_doc_output DIR) set_property( DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${DIR}) endfunction() rocm-cmake-rocm-5.0.0/share/rocm/cmake/ROCMDoxygenDoc.cmake000077500000000000000000000171071417414007600233550ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2021 Advanced Micro Devices, Inc. # ###################################################################################################################### include(CMakeParseArguments) include(ROCMDocs) find_program( DOXYGEN_EXECUTABLE NAMES doxygen PATH_SUFFIXES bin DOC "Doxygen documentation generator") mark_as_advanced(DOXYGEN_EXECUTABLE) find_path( DOT_EXECUTABLE NAMES dot PATH_SUFFIXES bin DOC "Graphviz") mark_as_advanced(DOT_EXECUTABLE) set(DOXYGEN_ARGS ABBREVIATE_BRIEF ALIASES ALLEXTERNALS ALLOW_UNICODE_NAMES ALPHABETICAL_INDEX ALWAYS_DETAILED_SEC AUTOLINK_SUPPORT BINARY_TOC BRIEF_MEMBER_DESC BUILTIN_STL_SUPPORT CALLER_GRAPH CALL_GRAPH CASE_SENSE_NAMES CHM_FILE CHM_INDEX_ENCODING CITE_BIB_FILES CLANG_ASSISTED_PARSING CLANG_OPTIONS CLASS_DIAGRAMS CLASS_GRAPH COLLABORATION_GRAPH COLS_IN_ALPHA_INDEX COMPACT_LATEX COMPACT_RTF CPP_CLI_SUPPORT CREATE_SUBDIRS DIAFILE_DIRS DIA_PATH DIRECTORY_GRAPH DISABLE_INDEX DISTRIBUTE_GROUP_DOC DOCBOOK_OUTPUT DOCBOOK_PROGRAMLISTING DOCSET_BUNDLE_ID DOCSET_FEEDNAME DOCSET_PUBLISHER_ID DOCSET_PUBLISHER_NAME DOTFILE_DIRS DOT_CLEANUP DOT_FONTNAME DOT_FONTPATH DOT_FONTSIZE DOT_GRAPH_MAX_NODES DOT_IMAGE_FORMAT DOT_MULTI_TARGETS DOT_NUM_THREADS # DOT_PATH DOT_TRANSPARENT DOXYFILE_ENCODING ECLIPSE_DOC_ID ENABLED_SECTIONS ENABLE_PREPROCESSING ENUM_VALUES_PER_LINE EXAMPLE_PATH EXAMPLE_PATTERNS EXAMPLE_RECURSIVE EXCLUDE EXCLUDE_PATTERNS EXCLUDE_SYMBOLS EXCLUDE_SYMLINKS EXPAND_AS_DEFINED EXPAND_ONLY_PREDEF EXTENSION_MAPPING EXTERNAL_GROUPS EXTERNAL_PAGES EXTERNAL_SEARCH EXTERNAL_SEARCH_ID EXTRACT_ALL EXTRACT_ANON_NSPACES EXTRACT_LOCAL_CLASSES EXTRACT_LOCAL_METHODS EXTRACT_PACKAGE EXTRACT_PRIVATE EXTRACT_STATIC EXTRA_PACKAGES EXTRA_SEARCH_MAPPINGS EXT_LINKS_IN_WINDOW FILE_PATTERNS FILE_VERSION_FILTER FILTER_PATTERNS FILTER_SOURCE_FILES FILTER_SOURCE_PATTERNS FORCE_LOCAL_INCLUDES FORMULA_FONTSIZE FORMULA_TRANSPARENT FULL_PATH_NAMES GENERATE_AUTOGEN_DEF GENERATE_BUGLIST GENERATE_CHI GENERATE_DEPRECATEDLIST GENERATE_DOCBOOK GENERATE_DOCSET GENERATE_ECLIPSEHELP GENERATE_HTML GENERATE_HTMLHELP GENERATE_LATEX GENERATE_LEGEND GENERATE_MAN GENERATE_PERLMOD GENERATE_QHP GENERATE_RTF GENERATE_TAGFILE GENERATE_TESTLIST GENERATE_TODOLIST GENERATE_TREEVIEW GENERATE_XML GRAPHICAL_HIERARCHY GROUP_GRAPHS GROUP_NESTED_COMPOUNDS # HAVE_DOT HHC_LOCATION HIDE_COMPOUND_REFERENCE HIDE_FRIEND_COMPOUNDS HIDE_IN_BODY_DOCS HIDE_SCOPE_NAMES HIDE_UNDOC_CLASSES HIDE_UNDOC_MEMBERS HIDE_UNDOC_RELATIONS HTML_COLORSTYLE_GAMMA HTML_COLORSTYLE_HUE HTML_COLORSTYLE_SAT HTML_DYNAMIC_SECTIONS HTML_EXTRA_FILES HTML_EXTRA_STYLESHEET HTML_FILE_EXTENSION HTML_FOOTER HTML_HEADER HTML_INDEX_NUM_ENTRIES HTML_OUTPUT HTML_STYLESHEET HTML_TIMESTAMP IDL_PROPERTY_SUPPORT IGNORE_PREFIX IMAGE_PATH INCLUDED_BY_GRAPH INCLUDE_FILE_PATTERNS INCLUDE_GRAPH INCLUDE_PATH INHERIT_DOCS INLINE_GROUPED_CLASSES INLINE_INFO INLINE_INHERITED_MEMB INLINE_SIMPLE_STRUCTS INLINE_SOURCES INPUT INPUT_ENCODING INPUT_FILTER INTERACTIVE_SVG INTERNAL_DOCS JAVADOC_AUTOBRIEF LATEX_BATCHMODE LATEX_BIB_STYLE LATEX_CMD_NAME LATEX_EXTRA_FILES LATEX_EXTRA_STYLESHEET LATEX_FOOTER LATEX_HEADER LATEX_HIDE_INDICES LATEX_OUTPUT LATEX_SOURCE_CODE LATEX_TIMESTAMP LAYOUT_FILE LOOKUP_CACHE_SIZE MACRO_EXPANSION MAKEINDEX_CMD_NAME MAN_EXTENSION MAN_LINKS MAN_OUTPUT MAN_SUBDIR MARKDOWN_SUPPORT MATHJAX_CODEFILE MATHJAX_EXTENSIONS MATHJAX_FORMAT MATHJAX_RELPATH MAX_DOT_GRAPH_DEPTH MAX_INITIALIZER_LINES MSCFILE_DIRS MSCGEN_PATH MULTILINE_CPP_IS_BRIEF OPTIMIZE_FOR_FORTRAN OPTIMIZE_OUTPUT_FOR_C OPTIMIZE_OUTPUT_JAVA OPTIMIZE_OUTPUT_VHDL OUTPUT_DIRECTORY OUTPUT_LANGUAGE PAPER_TYPE PDF_HYPERLINKS PERLMOD_LATEX PERLMOD_MAKEVAR_PREFIX PERLMOD_PRETTY PERL_PATH PLANTUML_CFG_FILE PLANTUML_INCLUDE_PATH PLANTUML_JAR_PATH PREDEFINED PROJECT_BRIEF PROJECT_LOGO PROJECT_NAME PROJECT_NUMBER QCH_FILE QHG_LOCATION QHP_CUST_FILTER_ATTRS QHP_CUST_FILTER_NAME QHP_NAMESPACE QHP_SECT_FILTER_ATTRS QHP_VIRTUAL_FOLDER QT_AUTOBRIEF QUIET RECURSIVE REFERENCED_BY_RELATION REFERENCES_LINK_SOURCE REFERENCES_RELATION REPEAT_BRIEF RTF_EXTENSIONS_FILE RTF_HYPERLINKS RTF_OUTPUT RTF_SOURCE_CODE RTF_STYLESHEET_FILE SEARCHDATA_FILE SEARCHENGINE SEARCHENGINE_URL SEARCH_INCLUDES SEPARATE_MEMBER_PAGES SERVER_BASED_SEARCH SHORT_NAMES SHOW_FILES SHOW_GROUPED_MEMB_INC SHOW_INCLUDE_FILES SHOW_NAMESPACES SHOW_USED_FILES SIP_SUPPORT SKIP_FUNCTION_MACROS SORT_BRIEF_DOCS SORT_BY_SCOPE_NAME SORT_GROUP_NAMES SORT_MEMBERS_CTORS_1ST SORT_MEMBER_DOCS SOURCE_BROWSER SOURCE_TOOLTIPS STRICT_PROTO_MATCHING STRIP_CODE_COMMENTS STRIP_FROM_INC_PATH STRIP_FROM_PATH SUBGROUPING TAB_SIZE TAGFILES TCL_SUBST TEMPLATE_RELATIONS TOC_EXPAND TOC_INCLUDE_HEADINGS TREEVIEW_WIDTH TYPEDEF_HIDES_STRUCT UML_LIMIT_NUM_FIELDS UML_LOOK USE_HTAGS USE_MATHJAX USE_MDFILE_AS_MAINPAGE USE_PDFLATEX VERBATIM_HEADERS WARNINGS WARN_AS_ERROR WARN_FORMAT WARN_IF_DOC_ERROR WARN_IF_UNDOCUMENTED WARN_LOGFILE WARN_NO_PARAMDOC XML_OUTPUT XML_PROGRAMLISTING) set(DOXYGEN_CONFIG_FILE "${CMAKE_CURRENT_BINARY_DIR}/doxygen/doxygen.conf" CACHE PATH "Path to generated doxygen configuration file") function(rocm_add_doxygen_doc) set(options) set(oneValueArgs) set(multiValueArgs DEPENDS ${DOXYGEN_ARGS}) cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) file(WRITE ${DOXYGEN_CONFIG_FILE} "# Auto-generated doxygen configuration file\n") if(NOT PARSE_STRIP_FROM_PATH) set(PARSE_STRIP_FROM_PATH ${CMAKE_SOURCE_DIR}) endif() foreach(ARG ${DOXYGEN_ARGS}) if(PARSE_${ARG}) string(REPLACE ";" " " ARG_VALUE "${PARSE_${ARG}}") file(APPEND ${DOXYGEN_CONFIG_FILE} "\n${ARG} = ${ARG_VALUE}\n") endif() endforeach() if(PARSE_OUTPUT_DIRECTORY) if(NOT EXISTS ${PARSE_OUTPUT_DIRECTORY}) file(MAKE_DIRECTORY ${PARSE_OUTPUT_DIRECTORY}) endif() endif() if(DOT_EXECUTABLE) file(APPEND ${DOXYGEN_CONFIG_FILE} "\nDOT_PATH = \"${DOT_EXECUTABLE}\"\n") file(APPEND ${DOXYGEN_CONFIG_FILE} "\nHAVE_DOT = YES\n") else() file(APPEND ${DOXYGEN_CONFIG_FILE} "\nHAVE_DOT = NO\n") endif() add_custom_target( doxygen ${DOXYGEN_EXECUTABLE} ${DOXYGEN_CONFIG_FILE} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMENT "Building documentation with doxygen") if(PARSE_OUTPUT_DIRECTORY) rocm_clean_doc_output(${PARSE_OUTPUT_DIRECTORY}) endif() rocm_mark_as_doc(doxygen) if(PARSE_DEPENDS) add_dependencies(doxygen ${PARSE_DEPENDS}) endif() endfunction() rocm-cmake-rocm-5.0.0/share/rocm/cmake/ROCMInstallSymlinks.cmake000066400000000000000000000024221417414007600244410ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### function(rocm_install_symlink_subdir SUBDIR) # TODO: Check if SUBDIR is relative path Copy instead of symlink on windows if(CMAKE_HOST_WIN32) set(SYMLINK_CMD "file(COPY \${SRC} DESTINATION \${DEST_DIR})") else() set(SYMLINK_CMD "execute_process(COMMAND ln -sf \${SRC_REL} \${DEST})") endif() set(INSTALL_CMD " set(SUBDIR \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${SUBDIR}) file(GLOB_RECURSE FILES RELATIVE \${SUBDIR} \${SUBDIR}/*) foreach(FILE \${FILES}) set(SRC \${SUBDIR}/\${FILE}) set(DEST \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/\${FILE}) get_filename_component(DEST_DIR \${DEST} DIRECTORY) file(MAKE_DIRECTORY \${DEST_DIR}) file(RELATIVE_PATH SRC_REL \${DEST_DIR} \${SRC}) message(STATUS \"symlink: \${SRC_REL} -> \${DEST}\") ${SYMLINK_CMD} endforeach() ") install(CODE "${INSTALL_CMD}") rocm_install(CODE "${INSTALL_CMD}") endfunction() rocm-cmake-rocm-5.0.0/share/rocm/cmake/ROCMInstallTargets.cmake000066400000000000000000000263061417414007600242500ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### cmake_policy(SET CMP0057 NEW) include(CMakeParseArguments) include(GNUInstallDirs) include(ROCMPackageConfigHelpers) set(ROCM_INSTALL_LIBDIR lib) if(WIN32) set(ROCM_USE_DEV_COMPONENT OFF CACHE BOOL "Generate a devel package?") else() set(ROCM_USE_DEV_COMPONENT ON CACHE BOOL "Generate a devel package?") endif() function(rocm_install) if(ARGV0 STREQUAL "TARGETS") # rocm_install_targets deals with the component in its own fashion. rocm_install_targets("${ARGN}") elseif(NOT ROCM_USE_DEV_COMPONENT) # If we want legacy behaviour, directly call install with no meddling. install(${ARGN}) else() # We want to define the COMPONENT argument in the correct position, only if the user did not define # the COMPONENT argument. Therefore, capture the component argument and any arguments which can # legally follow it, so we can place those after the inserted COMPONENT argument. set(options OPTIONAL EXCLUDE_FROM_ALL) set(oneValueArgs COMPONENT RENAME) # Specifying all valid first arguments as multiValueArgs captures all arguments between the first argument # and the COMPONENT argument (or any argument which can follow COMPONENT) in order. set(multiValueArgs FILES PROGRAMS DIRECTORY CODE SCRIPT EXPORT FILES_MATCHING) cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) if(PARSE_COMPONENT) # The user specified the component, so don't do anything. install(${ARGN}) return() endif() set(INSTALL_ARGS "${ARGV0};" "${PARSE_FILES}" "${PARSE_PROGRAMS}" "${PARSE_DIRECTORY}" "${PARSE_CODE}" "${PARSE_SCRIPT}" "${PARSE_EXPORT}") set(RUNTIME_MODES "PROGRAMS") if(PARSE_COMPONENT) list(APPEND INSTALL_ARGS COMPONENT "${PARSE_COMPONENT}") elseif(NOT ARGV0 IN_LIST RUNTIME_MODES) list(APPEND INSTALL_ARGS COMPONENT devel) endif() if(PARSE_RENAME) list(APPEND INSTALL_ARGS RENAME "${PARSE_RENAME}") endif() if(PARSE_OPTIONAL) list(APPEND INSTALL_ARGS OPTIONAL) endif() if(PARSE_EXCLUDE_FROM_ALL) list(APPEND INSTALL_ARGS EXCLUDE_FROM_ALL) endif() if(PARSE_FILES_MATCHING) list(APPEND INSTALL_ARGS FILES_MATCHING "${PARSE_FILES_MATCHING}") endif() install(${INSTALL_ARGS}) endif() endfunction() function(rocm_install_targets) set(options) set(oneValueArgs PREFIX EXPORT COMPONENT) set(multiValueArgs TARGETS INCLUDE) cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWER) set(EXPORT_FILE ${PROJECT_NAME_LOWER}-targets) if(PARSE_EXPORT) set(EXPORT_FILE ${PARSE_EXPORT}) endif() if(PARSE_PREFIX) set(PREFIX_DIR ${PARSE_PREFIX}) set(BIN_INSTALL_DIR ${PARSE_PREFIX}/${CMAKE_INSTALL_BINDIR}) set(LIB_INSTALL_DIR ${PARSE_PREFIX}/${ROCM_INSTALL_LIBDIR}) set(INCLUDE_INSTALL_DIR ${PARSE_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}) else() set(BIN_INSTALL_DIR ${CMAKE_INSTALL_BINDIR}) set(LIB_INSTALL_DIR ${ROCM_INSTALL_LIBDIR}) set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR}) endif() foreach(TARGET ${PARSE_TARGETS}) foreach(INCLUDE ${PARSE_INCLUDE}) get_filename_component(INCLUDE_PATH ${INCLUDE} ABSOLUTE) target_include_directories(${TARGET} INTERFACE $) get_target_property(TARGET_TYPE ${TARGET} TYPE) if(NOT "${TARGET_TYPE}" STREQUAL "INTERFACE_LIBRARY") target_include_directories(${TARGET} PRIVATE ${INCLUDE_PATH}) endif() endforeach() target_include_directories(${TARGET} INTERFACE $/include>) endforeach() set(runtime "Unspecified") set(development "Unspecified") if(PARSE_COMPONENT) set(runtime "${PARSE_COMPONENT}") set(development "${PARSE_COMPONENT}") elseif(ROCM_USE_DEV_COMPONENT) set(development "devel") endif() foreach(INCLUDE ${PARSE_INCLUDE}) install( DIRECTORY ${INCLUDE}/ DESTINATION ${INCLUDE_INSTALL_DIR} COMPONENT ${development} FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp" PATTERN "*.hh" PATTERN "*.hxx" PATTERN "*.inl") endforeach() install( TARGETS ${PARSE_TARGETS} EXPORT ${EXPORT_FILE} RUNTIME DESTINATION ${BIN_INSTALL_DIR} COMPONENT ${runtime} LIBRARY DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${runtime} NAMELINK_SKIP ARCHIVE DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${development} ) foreach(TARGET IN LISTS PARSE_TARGETS) get_target_property(T_TYPE ${TARGET} TYPE) if(T_TYPE STREQUAL "SHARED_LIBRARY") install( TARGETS ${TARGET} EXPORT ${EXPORT_FILE} LIBRARY DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${development} NAMELINK_ONLY ) endif() endforeach() endfunction() set(_rocm_tmp_list_marker "@@__rocm_tmp_list_marker__@@") function(rocm_list_split LIST ELEMENT OUTPUT_LIST) string(REPLACE ";" ${_rocm_tmp_list_marker} TMPLIST "${${LIST}}") string(REPLACE "${_rocm_tmp_list_marker}${ELEMENT}${_rocm_tmp_list_marker}" ";" TMPLIST "${TMPLIST}") string(REPLACE "${ELEMENT}${_rocm_tmp_list_marker}" "" TMPLIST "${TMPLIST}") string(REPLACE "${_rocm_tmp_list_marker}${ELEMENT}" "" TMPLIST "${TMPLIST}") set(LIST_PREFIX _rocm_list_split_${OUTPUT_LIST}_SUBLIST) set(count 0) set(result) foreach(SUBLIST ${TMPLIST}) string(REPLACE ${_rocm_tmp_list_marker} ";" TMPSUBLIST "${SUBLIST}") math(EXPR count "${count}+1") set(list_var ${LIST_PREFIX}_${count}) set(${list_var} "${TMPSUBLIST}" PARENT_SCOPE) list(APPEND result ${LIST_PREFIX}_${count}) endforeach() set(${OUTPUT_LIST} "${result}" PARENT_SCOPE) endfunction() function(rocm_write_package_template_function FILENAME NAME) string(REPLACE ";" " " ARGS "${ARGN}") file( APPEND ${FILENAME} " ${NAME}(${ARGS}) ") endfunction() function(rocm_write_package_deps CONFIG_TEMPLATE) set(DEPENDS ${ARGN}) rocm_list_split(DEPENDS PACKAGE DEPENDS_LIST) foreach(DEPEND ${DEPENDS_LIST}) rocm_write_package_template_function(${CONFIG_TEMPLATE} find_dependency ${${DEPEND}}) endforeach() endfunction() function(rocm_export_targets) set(options) set(oneValueArgs NAMESPACE EXPORT NAME COMPATIBILITY PREFIX) set(multiValueArgs TARGETS DEPENDS INCLUDE STATIC_DEPENDS) cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) set(PACKAGE_NAME ${PROJECT_NAME}) if(PARSE_NAME) set(PACKAGE_NAME ${PARSE_NAME}) endif() string(TOUPPER ${PACKAGE_NAME} PACKAGE_NAME_UPPER) string(TOLOWER ${PACKAGE_NAME} PACKAGE_NAME_LOWER) set(TARGET_FILE ${PACKAGE_NAME_LOWER}-targets) if(PARSE_EXPORT) set(TARGET_FILE ${PARSE_EXPORT}) endif() set(CONFIG_NAME ${PACKAGE_NAME_LOWER}-config) set(TARGET_VERSION ${PROJECT_VERSION}) if(PARSE_PREFIX) set(PREFIX_DIR ${PARSE_PREFIX}) set(PREFIX_ARG PREFIX ${PREFIX_DIR}) set(BIN_INSTALL_DIR ${PREFIX_DIR}/${CMAKE_INSTALL_BINDIR}) set(LIB_INSTALL_DIR ${PREFIX_DIR}/${ROCM_INSTALL_LIBDIR}) set(INCLUDE_INSTALL_DIR ${PREFIX_DIR}/${CMAKE_INSTALL_INCLUDEDIR}) else() set(BIN_INSTALL_DIR ${CMAKE_INSTALL_BINDIR}) set(LIB_INSTALL_DIR ${ROCM_INSTALL_LIBDIR}) set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR}) endif() set(CONFIG_PACKAGE_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/${PACKAGE_NAME_LOWER}) set(CONFIG_TEMPLATE "${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME_LOWER}-config.cmake.in") file( WRITE ${CONFIG_TEMPLATE} " @PACKAGE_INIT@ ") foreach(NAME ${PACKAGE_NAME} ${PACKAGE_NAME_UPPER} ${PACKAGE_NAME_LOWER}) rocm_write_package_template_function(${CONFIG_TEMPLATE} set_and_check ${NAME}_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@") rocm_write_package_template_function(${CONFIG_TEMPLATE} set_and_check ${NAME}_INCLUDE_DIRS "@PACKAGE_INCLUDE_INSTALL_DIR@") endforeach() rocm_write_package_template_function(${CONFIG_TEMPLATE} set_and_check ${PACKAGE_NAME}_TARGET_FILE "@PACKAGE_CONFIG_PACKAGE_INSTALL_DIR@/${TARGET_FILE}.cmake") if(PARSE_DEPENDS) rocm_write_package_deps(${CONFIG_TEMPLATE} ${PARSE_DEPENDS}) endif() if(PARSE_STATIC_DEPENDS AND NOT BUILD_SHARED_LIBS) rocm_write_package_deps(${CONFIG_TEMPLATE} ${PARSE_STATIC_DEPENDS}) endif() foreach(INCLUDE ${PARSE_INCLUDE}) rocm_install(FILES ${INCLUDE} DESTINATION ${CONFIG_PACKAGE_INSTALL_DIR}) get_filename_component(INCLUDE_BASE ${INCLUDE} NAME) rocm_write_package_template_function(${CONFIG_TEMPLATE} include "\${CMAKE_CURRENT_LIST_DIR}/${INCLUDE_BASE}") endforeach() if(PARSE_TARGETS) rocm_write_package_template_function(${CONFIG_TEMPLATE} include "\${${PACKAGE_NAME}_TARGET_FILE}") foreach(NAME ${PACKAGE_NAME} ${PACKAGE_NAME_UPPER} ${PACKAGE_NAME_LOWER}) rocm_write_package_template_function(${CONFIG_TEMPLATE} set ${NAME}_LIBRARIES ${PARSE_TARGETS}) rocm_write_package_template_function(${CONFIG_TEMPLATE} set ${NAME}_LIBRARY ${PARSE_TARGETS}) endforeach() endif() rocm_configure_package_config_file( ${CONFIG_TEMPLATE} ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}.cmake INSTALL_DESTINATION ${CONFIG_PACKAGE_INSTALL_DIR} ${PREFIX_ARG} PATH_VARS LIB_INSTALL_DIR INCLUDE_INSTALL_DIR CONFIG_PACKAGE_INSTALL_DIR) set(COMPATIBILITY_ARG SameMajorVersion) if(PARSE_COMPATIBILITY) set(COMPATIBILITY_ARG ${PARSE_COMPATIBILITY}) endif() write_basic_package_version_file( ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}-version.cmake VERSION ${TARGET_VERSION} COMPATIBILITY ${COMPATIBILITY_ARG}) set(NAMESPACE_ARG) if(PARSE_NAMESPACE) set(NAMESPACE_ARG "NAMESPACE;${PARSE_NAMESPACE}") endif() rocm_install( EXPORT ${TARGET_FILE} DESTINATION ${CONFIG_PACKAGE_INSTALL_DIR} ${NAMESPACE_ARG}) rocm_install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}.cmake ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}-version.cmake DESTINATION ${CONFIG_PACKAGE_INSTALL_DIR}) endfunction() rocm-cmake-rocm-5.0.0/share/rocm/cmake/ROCMPackageConfigHelpers.cmake000066400000000000000000000124021417414007600253040ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### include(CMakePackageConfigHelpers) function(rocm_configure_package_config_file INPUT_FILE OUTPUT_FILE) set(options) set(oneValueArgs INSTALL_DESTINATION PREFIX) set(multiValueArgs PATH_VARS) cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) if(PARSE_UNPARSED_ARGUMENTS) message( FATAL_ERROR "Unknown keywords given to rocm_configure_package_config_file(): \"${PARSE_UNPARSED_ARGUMENTS}\"") endif() if(NOT PARSE_INSTALL_DESTINATION) message(FATAL_ERROR "INSTALL_DESTINATION is required for rocm_configure_package_config_file()") endif() if(IS_ABSOLUTE "${CMAKE_INSTALL_PREFIX}") set(INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") else() get_filename_component(INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" ABSOLUTE) endif() if(IS_ABSOLUTE "${PARSE_INSTALL_DESTINATION}") set(ABSOLUTE_INSTALL_DIR "${PARSE_INSTALL_DESTINATION}") else() set(ABSOLUTE_INSTALL_DIR "${INSTALL_PREFIX}/${PARSE_INSTALL_DESTINATION}") endif() file(RELATIVE_PATH PACKAGE_RELATIVE_PATH "${ABSOLUTE_INSTALL_DIR}" "${INSTALL_PREFIX}") file(RELATIVE_PATH PACKAGE_INSTALL_RELATIVE_DIR "${INSTALL_PREFIX}" "${ABSOLUTE_INSTALL_DIR}") set(CHECK_PREFIX) if(PARSE_PREFIX) # On windows there is no symlinks if(WIN32) set(CHECK_PREFIX " if(NOT \"\${PACKAGE_PREFIX_DIR}/${PACKAGE_INSTALL_RELATIVE_DIR}\" EQUAL \"\${CMAKE_CURRENT_LIST_DIR}\") set(PACKAGE_PREFIX_DIR ${INSTALL_PREFIX}) endif() ") endif() endif() foreach(_var ${PARSE_PATH_VARS}) if(NOT DEFINED ${_var}) message(FATAL_ERROR "Undefined path variable: ${_var}") endif() if(IS_ABSOLUTE "${${_var}}") string(REPLACE "${INSTALL_PREFIX}" "\${PACKAGE_PREFIX_DIR}" PACKAGE_${_var} "${${_var}}") else() set(PACKAGE_${_var} "\${PACKAGE_PREFIX_DIR}/${${_var}}") endif() endforeach() get_filename_component(INPUT_NAME "${INPUT_FILE}" NAME) set(PACKAGE_INIT " #################################################################################### # Auto generated @PACKAGE_INIT@ by rocm_configure_package_config_file() # from ${INPUT_NAME} # Any changes to this file will be overwritten by the next CMake run #################################################################################### get_filename_component(_ROCM_CMAKE_CURRENT_LIST_FILE_REAL \"\${CMAKE_CURRENT_LIST_FILE}\" REALPATH) get_filename_component(_ROCM_CMAKE_CURRENT_LIST_DIR_REAL \"\${_ROCM_CMAKE_CURRENT_LIST_FILE_REAL}\" DIRECTORY) get_filename_component(PACKAGE_PREFIX_DIR \"\${_ROCM_CMAKE_CURRENT_LIST_DIR_REAL}/${PACKAGE_RELATIVE_PATH}\" ABSOLUTE) ${CHECK_PREFIX} macro(set_and_check _var _file) set(\${_var} \"\${_file}\") if(NOT EXISTS \"\${_file}\") message(FATAL_ERROR \"File or directory \${_file} referenced by variable \${_var} does not exist !\") endif() endmacro() include(CMakeFindDependencyMacro OPTIONAL RESULT_VARIABLE _ROCMCMakeFindDependencyMacro_FOUND) if (NOT _ROCMCMakeFindDependencyMacro_FOUND) macro(find_dependency dep) if (NOT \${dep}_FOUND) set(rocm_fd_version) if (\${ARGC} GREATER 1) set(rocm_fd_version \${ARGV1}) endif() set(rocm_fd_exact_arg) if(\${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION_EXACT) set(rocm_fd_exact_arg EXACT) endif() set(rocm_fd_quiet_arg) if(\${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY) set(rocm_fd_quiet_arg QUIET) endif() set(rocm_fd_required_arg) if(\${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED) set(rocm_fd_required_arg REQUIRED) endif() find_package(\${dep} \${rocm_fd_version} \${rocm_fd_exact_arg} \${rocm_fd_quiet_arg} \${rocm_fd_required_arg} ) string(TOUPPER \${dep} cmake_dep_upper) if (NOT \${dep}_FOUND AND NOT \${cmake_dep_upper}_FOUND) set(\${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE \"\${CMAKE_FIND_PACKAGE_NAME} could not be found because dependency \${dep} could not be found.\") set(\${CMAKE_FIND_PACKAGE_NAME}_FOUND False) return() endif() set(rocm_fd_version) set(rocm_fd_required_arg) set(rocm_fd_quiet_arg) set(rocm_fd_exact_arg) endif() endmacro() endif() macro(check_required_components _NAME) foreach(comp \${\${_NAME}_FIND_COMPONENTS}) if(NOT \${_NAME}_\${comp}_FOUND) if(\${_NAME}_FIND_REQUIRED_\${comp}) set(\${_NAME}_FOUND FALSE) endif() endif() endforeach() endmacro() #################################################################################### ") configure_file("${INPUT_FILE}" "${OUTPUT_FILE}" @ONLY) endfunction() rocm-cmake-rocm-5.0.0/share/rocm/cmake/ROCMSetupVersion.cmake000066400000000000000000000132571417414007600237570ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### macro(rocm_set_parent VAR) set(${VAR} ${ARGN} PARENT_SCOPE) set(${VAR} ${ARGN}) endmacro() find_program(GIT NAMES git) function(rocm_get_rev_count OUTPUT_COUNT) set(options) set(oneValueArgs DIRECTORY) set(multiValueArgs REV) cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) set(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) if(PARSE_DIRECTORY) set(DIRECTORY ${PARSE_DIRECTORY}) endif() set(_count 0) if(GIT) execute_process( COMMAND git rev-list --count ${PARSE_REV} WORKING_DIRECTORY ${DIRECTORY} OUTPUT_VARIABLE REV_COUNT OUTPUT_STRIP_TRAILING_WHITESPACE RESULT_VARIABLE RESULT ERROR_QUIET) if(${RESULT} EQUAL 0) set(_count ${REV_COUNT}) endif() endif() rocm_set_parent(${OUTPUT_COUNT} ${_count}) endfunction() function(rocm_get_commit_count OUTPUT_COUNT) set(options) set(oneValueArgs PARENT DIRECTORY) set(multiValueArgs) cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) set(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) if(PARSE_DIRECTORY) set(DIRECTORY ${PARSE_DIRECTORY}) endif() rocm_get_rev_count( ALL_COUNT DIRECTORY ${DIRECTORY} REV HEAD) set(_count ${ALL_COUNT}) if(PARSE_PARENT) rocm_get_rev_count( PARENT_COUNT DIRECTORY ${DIRECTORY} REV HEAD ^${PARSE_PARENT}) set(_count ${PARENT_COUNT}) endif() rocm_set_parent(${OUTPUT_COUNT} ${_count}) endfunction() function(rocm_get_build_info OUTPUT DELIM) set(_info) if(DEFINED ENV{ROCM_BUILD_ID}) set(_info ${_info}${DELIM}$ENV{ROCM_BUILD_ID}) endif() rocm_set_parent(${OUTPUT} ${_info}) endfunction() function(rocm_version_regex_parse REGEX OUTPUT_VARIABLE INPUT) string(REGEX REPLACE ${REGEX} "\\1" OUTPUT "${INPUT}") if("${OUTPUT}" STREQUAL "${INPUT}") rocm_set_parent(${OUTPUT_VARIABLE} 0) else() rocm_set_parent(${OUTPUT_VARIABLE} ${OUTPUT}) endif() endfunction() function(rocm_get_git_commit_tag OUTPUT_VERSION) set(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) if(GIT) set(GIT_COMMAND ${GIT} describe --dirty --long --match [0-9]*) execute_process( COMMAND ${GIT_COMMAND} WORKING_DIRECTORY ${DIRECTORY} OUTPUT_VARIABLE GIT_TAG_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE RESULT_VARIABLE RESULT ERROR_QUIET) if(${RESULT} EQUAL 0) set(_output ${GIT_TAG_VERSION}) else() execute_process( COMMAND ${GIT_COMMAND} --always WORKING_DIRECTORY ${DIRECTORY} OUTPUT_VARIABLE GIT_TAG_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE RESULT_VARIABLE RESULT ERROR_QUIET) if(${RESULT} EQUAL 0) set(_output ${GIT_TAG_VERSION}) endif() endif() else() set(_output "") endif() rocm_set_parent(${OUTPUT_VERSION} ${_output}) endfunction() function(rocm_setup_version) set(options NO_GIT_TAG_VERSION) set(oneValueArgs VERSION PARENT) set(multiValueArgs) cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) if(PARSE_VERSION) # Compensate for missing patch version if(PARSE_VERSION MATCHES "^[0-9]+\\.[0-9]+$") set(PARSE_VERSION ${PARSE_VERSION}.0) endif() rocm_set_parent(PROJECT_VERSION ${PARSE_VERSION}) rocm_set_parent(${PROJECT_NAME}_VERSION ${PROJECT_VERSION}) rocm_version_regex_parse("^([0-9]+).*" _version_MAJOR "${PROJECT_VERSION}") rocm_version_regex_parse("^[0-9]+\\.([0-9]+).*" _version_MINOR "${PROJECT_VERSION}") rocm_version_regex_parse("^[0-9]+\\.[0-9]+\\.([0-9]+).*" _version_PATCH "${PROJECT_VERSION}") foreach(level MAJOR MINOR PATCH) rocm_set_parent(${PROJECT_NAME}_VERSION_${level} ${_version_${level}}) rocm_set_parent(PROJECT_VERSION_${level} ${_version_${level}}) endforeach() set(ROCM_GIT_TAG_HASH "") if(NOT PARSE_NO_GIT_TAG_VERSION) rocm_get_git_commit_tag(ROCM_GIT_TAG_HASH) endif() rocm_set_parent(PROJECT_VERSION_TWEAK ${ROCM_GIT_TAG_HASH}) rocm_set_parent(${PROJECT_NAME}_VERSION_TWEAK ${ROCM_GIT_TAG_HASH}) endif() endfunction() function(rocm_get_patch_version OUTPUT) set(_patch "") if(DEFINED ENV{ROCM_LIBPATCH_VERSION}) set(_patch $ENV{ROCM_LIBPATCH_VERSION}) endif() rocm_set_parent(${OUTPUT} ${_patch}) endfunction() function(rocm_set_soversion LIBRARY_TARGET SOVERSION) if(NOT WIN32 AND NOT APPLE) rocm_version_regex_parse("^([0-9]+).*" LIB_VERSION_MAJOR "${SOVERSION}") rocm_version_regex_parse("^[0-9]+\\.(.*)" LIB_VERSION_MINOR "${SOVERSION}") set(LIB_VERSION_STRING "${LIB_VERSION_MAJOR}.${LIB_VERSION_MINOR}") rocm_get_patch_version(LIB_VERSION_PATCH) if(NOT ${LIB_VERSION_PATCH} EQUAL "") set(LIB_VERSION_STRING "${LIB_VERSION_STRING}.${LIB_VERSION_PATCH}") endif() set_target_properties(${LIBRARY_TARGET} PROPERTIES SOVERSION ${LIB_VERSION_MAJOR}) set_target_properties(${LIBRARY_TARGET} PROPERTIES VERSION ${LIB_VERSION_STRING}) endif() endfunction() rocm-cmake-rocm-5.0.0/share/rocm/cmake/ROCMSphinxDoc.cmake000077500000000000000000000044241417414007600232070ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2021 Advanced Micro Devices, Inc. # ###################################################################################################################### include(CMakeParseArguments) include(ROCMDocs) find_program( SPHINX_EXECUTABLE NAMES sphinx-build HINTS $ENV{SPHINX_DIR} PATH_SUFFIXES bin DOC "Sphinx documentation generator") mark_as_advanced(SPHINX_EXECUTABLE) set(BINARY_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/sphinx/_build") # Sphinx cache with pickled ReST documents set(SPHINX_CACHE_DIR "${CMAKE_CURRENT_BINARY_DIR}/sphinx/_doctrees") # HTML output directory set(SPHINX_DEFAULT_HTML_DIR "${CMAKE_CURRENT_BINARY_DIR}/sphinx/html") function(rocm_add_sphinx_doc SRC_DIR) set(options) set(oneValueArgs BUILDER OUTPUT_DIR) set(multiValueArgs DEPENDS VARS TEMPLATE_VARS) cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) string(TOUPPER ${PARSE_BUILDER} BUILDER) set(ADDITIONAL_ARGS) foreach(VAR ${PARSE_VARS}) list(APPEND ADDITIONAL_ARGS -D ${VAR}) endforeach() foreach(VAR ${PARSE_TEMPLATE_VARS}) list(APPEND ADDITIONAL_ARGS -A ${VAR}) endforeach() if(PARSE_OUTPUT_DIR) get_filename_component(OUTPUT_DIR ${PARSE_OUTPUT_DIR} ABSOLUTE) set(SPHINX_${BUILDER}_DIR ${OUTPUT_DIR} CACHE PATH "Path to ${PARSE_BUILDER} output") else() set(SPHINX_${BUILDER}_DIR "${CMAKE_CURRENT_BINARY_DIR}/sphinx/${PARSE_BUILDER}" CACHE PATH "Path to ${PARSE_BUILDER} output") endif() add_custom_target( sphinx-${BUILDER} ${SPHINX_EXECUTABLE} -b ${PARSE_BUILDER} -d "${SPHINX_CACHE_DIR}" ${ADDITIONAL_ARGS} "${SRC_DIR}" "${SPHINX_${BUILDER}_DIR}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMENT "Building ${PARSE_BUILDER} documentation with Sphinx") rocm_clean_doc_output(${SPHINX_${BUILDER}_DIR}) rocm_clean_doc_output(${SPHINX_CACHE_DIR}) rocm_clean_doc_output(${BINARY_BUILD_DIR}) rocm_mark_as_doc(sphinx-${BUILDER}) if(PARSE_DEPENDS) add_dependencies(sphinx-${BUILDER} ${PARSE_DEPENDS}) endif() endfunction() rocm-cmake-rocm-5.0.0/test/000077500000000000000000000000001417414007600154535ustar00rootroot00000000000000rocm-cmake-rocm-5.0.0/test/CMakeLists.txt000066400000000000000000000022121417414007600202100ustar00rootroot00000000000000################################################################################ # Copyright (C) 2017 Advanced Micro Devices, Inc. ################################################################################ set(ROCM_CMAKE_GENERATOR "" CACHE STRING "") function(create_test NAME TEST) set(GENERATOR_FLAG) if(ROCM_CMAKE_GENERATOR) set(GENERATOR_FLAG "-DROCM_CMAKE_GENERATOR=${ROCM_CMAKE_GENERATOR}") endif() add_custom_target(${NAME} COMMAND ${CMAKE_COMMAND} ${GENERATOR_FLAG} -P ${CMAKE_CURRENT_SOURCE_DIR}/test.cmake ${TEST} ${CMAKE_CURRENT_BINARY_DIR}/tmp/${NAME}) add_test(NAME ${NAME} COMMAND ${CMAKE_COMMAND} ${GENERATOR_FLAG} -P ${CMAKE_CURRENT_SOURCE_DIR}/test.cmake ${TEST} ${CMAKE_CURRENT_BINARY_DIR}/tmp/${NAME}) endfunction() file(GLOB PASS_TESTS pass/*.cmake) foreach(TEST ${PASS_TESTS}) get_filename_component(NAME ${TEST} NAME_WE) create_test(pass-${NAME} ${TEST}) endforeach() file(GLOB FAIL_TESTS fail/*.cmake) foreach(TEST ${FAIL_TESTS}) get_filename_component(NAME ${TEST} NAME_WE) create_test(fail-${NAME} ${TEST}) set_tests_properties(fail-${NAME} PROPERTIES WILL_FAIL On) endforeach() rocm-cmake-rocm-5.0.0/test/analyze/000077500000000000000000000000001417414007600171165ustar00rootroot00000000000000rocm-cmake-rocm-5.0.0/test/analyze/CMakeLists.txt000077500000000000000000000020031417414007600216540ustar00rootroot00000000000000################################################################################ # Copyright (C) 2017 Advanced Micro Devices, Inc. ################################################################################ cmake_minimum_required (VERSION 3.5) project(simple) find_package(ROCM) include(ROCMInstallTargets) include(ROCMAnalyzers) include(ROCMSetupVersion) rocm_setup_version(VERSION 1.0.0) configure_file(simple2.cpp.in simple2.cpp) add_library(simple simple.cpp ${CMAKE_CURRENT_BINARY_DIR}/simple2.cpp) rocm_install_targets(TARGETS simple INCLUDE include) include(ROCMClangTidy) rocm_enable_clang_tidy( CHECKS * -llvmlibc-* ERRORS * HEADER_FILTER "hpp$" ) include(ROCMCppCheck) rocm_enable_cppcheck( INCONCLUSIVE CHECKS warning FORCE SUPPRESS unmatchedSuppression SOURCES simple.cpp INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/include ADDONS findcasts threadsafety ) rocm_clang_tidy_check(simple) rocm-cmake-rocm-5.0.0/test/analyze/include/000077500000000000000000000000001417414007600205415ustar00rootroot00000000000000rocm-cmake-rocm-5.0.0/test/analyze/include/simple.h000066400000000000000000000004361417414007600222060ustar00rootroot00000000000000/******************************************************************************* * Copyright (C) 2017 Advanced Micro Devices, Inc. ******************************************************************************/ #ifndef GUARD_SIMPLE_H #define GUARD_SIMPLE_H void simple(); #endif rocm-cmake-rocm-5.0.0/test/analyze/simple.cpp000066400000000000000000000003501417414007600211110ustar00rootroot00000000000000/******************************************************************************* * Copyright (C) 2017 Advanced Micro Devices, Inc. ******************************************************************************/ void simple() {} rocm-cmake-rocm-5.0.0/test/analyze/simple2.cpp.in000066400000000000000000000003511417414007600216010ustar00rootroot00000000000000/******************************************************************************* * Copyright (C) 2020 Advanced Micro Devices, Inc. ******************************************************************************/ void simple2() {} rocm-cmake-rocm-5.0.0/test/fail/000077500000000000000000000000001417414007600163665ustar00rootroot00000000000000rocm-cmake-rocm-5.0.0/test/fail/basic-shared.cmake000066400000000000000000000012451417414007600217170ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2020 Advanced Micro Devices, Inc. # ###################################################################################################################### install_dir(${TEST_DIR}/libsimple CMAKE_ARGS -DBUILD_SHARED_LIBS=On -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=On) test_check_package( NAME simple HEADER simple.h TARGET simple) install_dir(${TEST_DIR}/libbasic CMAKE_ARGS -DBUILD_SHARED_LIBS=On -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=On) test_check_package( NAME basic HEADER basic.h TARGET basic CHECK_TARGET simple) rocm-cmake-rocm-5.0.0/test/fail/toolchain-var.cmake000066400000000000000000000006711417414007600221420ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2019 Advanced Micro Devices, Inc. # ###################################################################################################################### if(UNIX) configure_dir(${TEST_DIR}/toolchain-var CMAKE_ARGS -DCHANGE_TOOLCHAIN=On) else() message(FATAL_ERROR "Skipped on windows") endif() rocm-cmake-rocm-5.0.0/test/findpackagecheck/000077500000000000000000000000001417414007600207055ustar00rootroot00000000000000rocm-cmake-rocm-5.0.0/test/findpackagecheck/CMakeLists.txt000066400000000000000000000007571417414007600234560ustar00rootroot00000000000000 cmake_minimum_required (VERSION 3.5) project(findpackagecheck) message(STATUS "PKG: ${PKG}") message(STATUS "PKG_TARGET: ${PKG_TARGET}") message(STATUS "CHECK_TARGET: ${CHECK_TARGET}") find_package(${PKG}) if(NOT TARGET ${CHECK_TARGET}) message(FATAL_ERROR "Target ${CHECK_TARGET} is missing.") endif() configure_file(main.cpp.in main.cpp @ONLY) add_executable(main ${CMAKE_CURRENT_BINARY_DIR}/main.cpp) target_link_libraries(main ${PKG_TARGET}) install(TARGETS main DESTINATION bin) rocm-cmake-rocm-5.0.0/test/findpackagecheck/main.cpp.in000066400000000000000000000000511417414007600227360ustar00rootroot00000000000000 #include <@PKG_HEADER@> int main() { } rocm-cmake-rocm-5.0.0/test/libbasic/000077500000000000000000000000001417414007600172235ustar00rootroot00000000000000rocm-cmake-rocm-5.0.0/test/libbasic/CMakeLists.txt000066400000000000000000000013201417414007600217570ustar00rootroot00000000000000################################################################################ # Copyright (C) 2017 Advanced Micro Devices, Inc. ################################################################################ cmake_minimum_required (VERSION 3.5) project(basic) find_package(ROCM) find_package(simple) include(ROCMInstallTargets) include(ROCMPackageConfigHelpers) include(ROCMSetupVersion) rocm_setup_version(VERSION VERSION 1.0.0) if(NOT PROJECT_VERSION STREQUAL "1.0.0") message(SEND_ERROR "Version not the same") endif() add_library(basic main.cpp) target_link_libraries(basic PRIVATE simple) rocm_install_targets(TARGETS basic INCLUDE include) rocm_export_targets(TARGETS basic STATIC_DEPENDS simple) rocm-cmake-rocm-5.0.0/test/libbasic/include/000077500000000000000000000000001417414007600206465ustar00rootroot00000000000000rocm-cmake-rocm-5.0.0/test/libbasic/include/basic.h000066400000000000000000000004331417414007600221000ustar00rootroot00000000000000/******************************************************************************* * Copyright (C) 2020 Advanced Micro Devices, Inc. ******************************************************************************/ #ifndef GUARD_BASIC_H #define GUARD_BASIC_H void basic(); #endif rocm-cmake-rocm-5.0.0/test/libbasic/main.cpp000066400000000000000000000004251417414007600206540ustar00rootroot00000000000000/******************************************************************************* * Copyright (C) 2017 Advanced Micro Devices, Inc. ******************************************************************************/ #include inline void basic() { simple(); } rocm-cmake-rocm-5.0.0/test/libheaderonly/000077500000000000000000000000001417414007600202745ustar00rootroot00000000000000rocm-cmake-rocm-5.0.0/test/libheaderonly/CMakeLists.txt000066400000000000000000000041751417414007600230430ustar00rootroot00000000000000################################################################################ # Copyright (C) 2017 Advanced Micro Devices, Inc. ################################################################################ cmake_minimum_required (VERSION 3.5) project(headeronly) find_package(ROCM) include(ROCMInstallTargets) include(ROCMPackageConfigHelpers) include(ROCMSetupVersion) include(ROCMInstallSymlinks) include(ROCMCreatePackage) rocm_setup_version(VERSION 1.0.0) if(ROCM_PREFIX) rocm_create_package( NAME headeronly PREFIX ${ROCM_PREFIX} MAINTAINER "Amd amd@amd.com" PTH LDCONFIG HEADER_ONLY) else() rocm_create_package( NAME headeronly MAINTAINER "Amd amd@amd.com" PTH LDCONFIG HEADER_ONLY) endif() set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin) add_library(headeronly INTERFACE) target_include_directories(headeronly INTERFACE $ $) if(ROCM_PREFIX) rocm_install_targets( TARGETS headeronly INCLUDE include PREFIX ${ROCM_PREFIX}) rocm_install( DIRECTORY "include/" DESTINATION headeronly/include/ FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp" PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ ) rocm_export_targets( TARGETS headeronly INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/importtarget.cmake PREFIX ${ROCM_PREFIX}) rocm_install_symlink_subdir(${ROCM_PREFIX}) else() rocm_install_targets( TARGETS headeronly INCLUDE include) rocm_install( DIRECTORY "include/" DESTINATION headeronly/include/ FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp" PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ ) rocm_export_targets( TARGETS headeronly INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/importtarget.cmake) endif() rocm-cmake-rocm-5.0.0/test/libheaderonly/LICENSE000066400000000000000000000004611417414007600213020ustar00rootroot00000000000000This is a placeholder license file for the purposes of testing, and is not the license for this repository or the files contained in this directory. The license for rocm-cmake (including all files in this directory) can be located at "https://github.com/RadeonOpenCompute/rocm-cmake/blob/master/LICENSE".rocm-cmake-rocm-5.0.0/test/libheaderonly/importtarget.cmake000066400000000000000000000004441417414007600240210ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### rocm-cmake-rocm-5.0.0/test/libheaderonly/include/000077500000000000000000000000001417414007600217175ustar00rootroot00000000000000rocm-cmake-rocm-5.0.0/test/libheaderonly/include/headeronly.h000066400000000000000000000001211417414007600242140ustar00rootroot00000000000000#ifndef GUARD_HEADERONLY_H #define GUARD_HEADERONLY_H #include #endifrocm-cmake-rocm-5.0.0/test/libsimple/000077500000000000000000000000001417414007600174335ustar00rootroot00000000000000rocm-cmake-rocm-5.0.0/test/libsimple/CMakeLists.txt000066400000000000000000000027511417414007600222000ustar00rootroot00000000000000################################################################################ # Copyright (C) 2017 Advanced Micro Devices, Inc. ################################################################################ cmake_minimum_required (VERSION 3.5) project(simple) find_package(ROCM) include(ROCMInstallTargets) include(ROCMPackageConfigHelpers) include(ROCMSetupVersion) include(ROCMInstallSymlinks) include(ROCMCreatePackage) rocm_setup_version(VERSION 1.0.0) if(ROCM_PREFIX) rocm_create_package( NAME simple PREFIX ${ROCM_PREFIX} MAINTAINER "Amd amd@amd.com" PTH LDCONFIG) else() rocm_create_package( NAME simple MAINTAINER "Amd amd@amd.com" PTH LDCONFIG) endif() set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin) add_library(simple simple.cpp) rocm_set_soversion(simple 1.1.2) add_executable(simple-main main.cpp) target_link_libraries(simple-main simple) if(ROCM_PREFIX) rocm_install_targets(TARGETS simple simple-main INCLUDE include PREFIX ${ROCM_PREFIX}) rocm_export_targets(TARGETS simple INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/importtarget.cmake PREFIX ${ROCM_PREFIX}) rocm_install_symlink_subdir(${ROCM_PREFIX}) else() rocm_install_targets(TARGETS simple simple-main INCLUDE include) rocm_export_targets(TARGETS simple INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/importtarget.cmake) endif() rocm-cmake-rocm-5.0.0/test/libsimple/LICENSE000066400000000000000000000004611417414007600204410ustar00rootroot00000000000000This is a placeholder license file for the purposes of testing, and is not the license for this repository or the files contained in this directory. The license for rocm-cmake (including all files in this directory) can be located at "https://github.com/RadeonOpenCompute/rocm-cmake/blob/master/LICENSE".rocm-cmake-rocm-5.0.0/test/libsimple/importtarget.cmake000066400000000000000000000004441417414007600231600ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### rocm-cmake-rocm-5.0.0/test/libsimple/include/000077500000000000000000000000001417414007600210565ustar00rootroot00000000000000rocm-cmake-rocm-5.0.0/test/libsimple/include/simple.h000066400000000000000000000004361417414007600225230ustar00rootroot00000000000000/******************************************************************************* * Copyright (C) 2017 Advanced Micro Devices, Inc. ******************************************************************************/ #ifndef GUARD_SIMPLE_H #define GUARD_SIMPLE_H void simple(); #endif rocm-cmake-rocm-5.0.0/test/libsimple/main.cpp000066400000000000000000000000561417414007600210640ustar00rootroot00000000000000 void simple(); int main() { simple(); } rocm-cmake-rocm-5.0.0/test/libsimple/simple.cpp000066400000000000000000000003501417414007600214260ustar00rootroot00000000000000/******************************************************************************* * Copyright (C) 2017 Advanced Micro Devices, Inc. ******************************************************************************/ void simple() {} rocm-cmake-rocm-5.0.0/test/libsimple2/000077500000000000000000000000001417414007600175155ustar00rootroot00000000000000rocm-cmake-rocm-5.0.0/test/libsimple2/CMakeLists.txt000066400000000000000000000023661417414007600222640ustar00rootroot00000000000000################################################################################ # Copyright (C) 2017 Advanced Micro Devices, Inc. ################################################################################ cmake_minimum_required (VERSION 3.5) project(simple2) find_package(ROCM) include(ROCMInstallTargets) include(ROCMPackageConfigHelpers) include(ROCMSetupVersion) include(ROCMInstallSymlinks) include(ROCMCreatePackage) find_package(simple) rocm_setup_version(VERSION 1.0.0) if(ROCM_PREFIX) rocm_create_package( NAME simple2 PREFIX ${ROCM_PREFIX} MAINTAINER "Amd amd@amd.com" LDCONFIG) else() rocm_create_package( NAME simple2 MAINTAINER "Amd amd@amd.com" LDCONFIG) endif() add_library(simple2 simple2.cpp) target_link_libraries(simple2 simple) if(ROCM_PREFIX) rocm_install_targets(TARGETS simple2 INCLUDE include PREFIX ${ROCM_PREFIX}) rocm_export_targets(TARGETS simple2 INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/importtarget.cmake PREFIX ${ROCM_PREFIX} DEPENDS PACKAGE simple) rocm_install_symlink_subdir(${ROCM_PREFIX}) else() rocm_install_targets(TARGETS simple2 INCLUDE include) rocm_export_targets(TARGETS simple2 INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/importtarget.cmake DEPENDS PACKAGE simple) endif() rocm-cmake-rocm-5.0.0/test/libsimple2/LICENSE000066400000000000000000000004611417414007600205230ustar00rootroot00000000000000This is a placeholder license file for the purposes of testing, and is not the license for this repository or the files contained in this directory. The license for rocm-cmake (including all files in this directory) can be located at "https://github.com/RadeonOpenCompute/rocm-cmake/blob/master/LICENSE".rocm-cmake-rocm-5.0.0/test/libsimple2/importtarget.cmake000066400000000000000000000004441417414007600232420ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### rocm-cmake-rocm-5.0.0/test/libsimple2/include/000077500000000000000000000000001417414007600211405ustar00rootroot00000000000000rocm-cmake-rocm-5.0.0/test/libsimple2/include/simple2.h000066400000000000000000000004641417414007600226700ustar00rootroot00000000000000/******************************************************************************* * Copyright (C) 2017 Advanced Micro Devices, Inc. ******************************************************************************/ #ifndef GUARD_SIMPLE_H #define GUARD_SIMPLE_H #include void simple2(); #endif rocm-cmake-rocm-5.0.0/test/libsimple2/simple2.cpp000066400000000000000000000003511417414007600215730ustar00rootroot00000000000000/******************************************************************************* * Copyright (C) 2017 Advanced Micro Devices, Inc. ******************************************************************************/ void simple2() {} rocm-cmake-rocm-5.0.0/test/pass/000077500000000000000000000000001417414007600164215ustar00rootroot00000000000000rocm-cmake-rocm-5.0.0/test/pass/analyze-gh.cmake000066400000000000000000000007521417414007600214660ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2020 Advanced Micro Devices, Inc. # ###################################################################################################################### install_dir(${TEST_DIR}/analyze TARGETS analyze analyze) install_dir( ${TEST_DIR}/analyze CMAKE_ARGS -DCLANG_TIDY_CACHE_SIZE=0 -DROCM_ENABLE_GH_ANNOTATIONS=On TARGETS analyze analyze) rocm-cmake-rocm-5.0.0/test/pass/analyze.cmake000066400000000000000000000007121417414007600210660ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### install_dir(${TEST_DIR}/analyze TARGETS analyze analyze) install_dir( ${TEST_DIR}/analyze CMAKE_ARGS -DCLANG_TIDY_CACHE_SIZE=0 TARGETS analyze analyze) rocm-cmake-rocm-5.0.0/test/pass/basic-shared.cmake000066400000000000000000000012151417414007600217470ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2020 Advanced Micro Devices, Inc. # ###################################################################################################################### install_dir(${TEST_DIR}/libsimple CMAKE_ARGS -DBUILD_SHARED_LIBS=On -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=On) test_check_package( NAME simple HEADER simple.h TARGET simple) install_dir(${TEST_DIR}/libbasic CMAKE_ARGS -DBUILD_SHARED_LIBS=On -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=On) test_check_package( NAME basic HEADER basic.h TARGET basic) rocm-cmake-rocm-5.0.0/test/pass/basic-static.cmake000066400000000000000000000011331417414007600217670ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2020 Advanced Micro Devices, Inc. # ###################################################################################################################### install_dir(${TEST_DIR}/libsimple CMAKE_ARGS -DBUILD_SHARED_LIBS=Off) test_check_package( NAME simple HEADER simple.h TARGET simple) install_dir(${TEST_DIR}/libbasic CMAKE_ARGS -DBUILD_SHARED_LIBS=Off) test_check_package( NAME basic HEADER basic.h TARGET basic CHECK_TARGET simple) rocm-cmake-rocm-5.0.0/test/pass/headeronly.cmake000066400000000000000000000006631417414007600215620ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### install_dir(${TEST_DIR}/libheaderonly TARGETS package) test_check_package( NAME headeronly HEADER headeronly.h TARGET headeronly) rocm-cmake-rocm-5.0.0/test/pass/rocm-join-if-set.cmake000066400000000000000000000016371417414007600225140ustar00rootroot00000000000000use_rocm_cmake() include(ROCMCreatePackage) function(test_rocm_join_if_set EXPECTED INITIAL GLUE) set(me ${INITIAL}) # message("Expected='" ${EXPECTED} "' initial='" ${me} "'") rocm_join_if_set(${GLUE} me ${ARGN}) # message("got '" ${me} "'") test_expect_eq("${me}" "${EXPECTED}") endfunction() test_rocm_join_if_set("hello, there" "hello" ", " "there") test_rocm_join_if_set("there" "" ", " "there") test_rocm_join_if_set("hello, there, how" "hello" ", " "there" "how") test_rocm_join_if_set("1, 2, 3, 4" "1" ", " 2 3 4) test_rocm_join_if_set("1, 2, 3, 4, 0" "1" ", " 2 3 4 0) test_rocm_join_if_set("1, 2, 3, 4, 0, 1" "1" ", " 2 3 4 0 1) test_rocm_join_if_set("1, 2, 3" "1" ", " 2 3 "") test_rocm_join_if_set("1, 2, 3, 4" "1" ", " 2 3 "" 4) test_rocm_join_if_set("0, there" 0 ", " "there") test_rocm_join_if_set("FALSE, there" FALSE ", " "there") test_rocm_join_if_set("false, there" false ", " "there") rocm-cmake-rocm-5.0.0/test/pass/rocm-list-split.cmake000077500000000000000000000011751417414007600224740ustar00rootroot00000000000000use_rocm_cmake() include(ROCMInstallTargets) function(test_rocm_list_split INPUT_LIST ELEMENT) rocm_list_split(INPUT_LIST ${ELEMENT} OUTPUT_LIST) list(LENGTH OUTPUT_LIST LEN) math(EXPR N "${LEN} - 1") foreach(IDX RANGE 0 ${N} 1) list(GET ARGN ${IDX} EXPECTED) list(GET OUTPUT_LIST ${IDX} SUBLIST) test_expect_eq("${${SUBLIST}}" "${EXPECTED}") endforeach() endfunction() test_rocm_list_split("PACKAGE;a;PACKAGE;b" PACKAGE "a" "b") test_rocm_list_split("PACKAGE;b" PACKAGE "b") test_rocm_list_split("b" PACKAGE "b") # TODO # test_rocm_list_split("PACKAGE;a1;a2;PACKAGE;b" PACKAGE "a1;a2" "b") rocm-cmake-rocm-5.0.0/test/pass/simple-build-id.cmake000066400000000000000000000020071417414007600224020ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### find_program(GIT NAMES git) # Try to test without git file(MAKE_DIRECTORY ${TMP_DIR}/repo) execute_process( COMMAND ${GIT} describe --dirty --long --always WORKING_DIRECTORY ${TMP_DIR}/repo OUTPUT_VARIABLE GIT_TAG RESULT_VARIABLE RESULT) if(NOT ${RESULT} EQUAL 0) set(GIT_TAG 0) endif() write_version_cmake( ${TMP_DIR}/repo 1.0 " test_expect_eq(\${CPACK_DEBIAN_PACKAGE_RELEASE} $ENV{CPACK_DEBIAN_PACKAGE_RELEASE}) ") install_dir(${TEST_DIR}/libsimple TARGETS package) test_check_package( NAME simple HEADER simple.h TARGET simple) install_dir(${TEST_DIR}/libbasic) install_dir(${TEST_DIR}/libsimple2 TARGETS package) test_check_package( NAME simple2 HEADER simple2.h TARGET simple2) rocm-cmake-rocm-5.0.0/test/pass/simple-prefix.cmake000066400000000000000000000010101417414007600221770ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### install_dir( ${TEST_DIR}/libsimple CMAKE_ARGS -DROCM_PREFIX=simple TARGETS package) test_expect_file(${PREFIX}/include/simple.h) test_expect_file(${PREFIX}/simple/include/simple.h) install_dir(${TEST_DIR}/libbasic) rocm-cmake-rocm-5.0.0/test/pass/simple-rocmversion-env.cmake000066400000000000000000000025211417414007600240460ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### find_program(GIT NAMES git) set(ENV{ROCM_LIBPATCH_VERSION} "21001") # Try to test without git file(MAKE_DIRECTORY ${TMP_DIR}/repo) execute_process( COMMAND ${GIT} describe --dirty --long --always WORKING_DIRECTORY ${TMP_DIR}/repo OUTPUT_VARIABLE GIT_TAG RESULT_VARIABLE RESULT) if(NOT ${RESULT} EQUAL 0) set(GIT_TAG 0) endif() write_version_cmake( ${TMP_DIR}/repo "4.5.6" " test_expect_eq(\${PROJECT_VERSION_MAJOR} 4) test_expect_eq(\${PROJECT_VERSION_MINOR} 5) test_expect_eq(\${PROJECT_VERSION_PATCH} 6) test_expect_eq(\${PROJECT_VERSION} \${PROJECT_VERSION_MAJOR}.\${PROJECT_VERSION_MINOR}.\${PROJECT_VERSION_PATCH}) test_expect_eq(\${CPACK_PACKAGE_VERSION} \${PROJECT_VERSION}.\$ENV{ROCM_LIBPATCH_VERSION}) ") install_dir(${TEST_DIR}/libsimple TARGETS package) test_check_package( NAME simple HEADER simple.h TARGET simple) install_dir(${TEST_DIR}/libbasic) install_dir(${TEST_DIR}/libsimple2 TARGETS package) test_check_package( NAME simple2 HEADER simple2.h TARGET simple2) rocm-cmake-rocm-5.0.0/test/pass/simple-soversion-env.cmake000066400000000000000000000026201417414007600235270ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### function(test_expect_realpath PATH EXPECTED_PATH) test_exec(COMMAND realpath ${PATH} OUTPUT_VARIABLE REALPATH) string(STRIP "${REALPATH}" REALPATH) test_expect_eq(${REALPATH} ${EXPECTED_PATH}) endfunction() set(ENV{ROCM_LIBPATCH_VERSION} "21001") install_dir(${TEST_DIR}/libsimple CMAKE_ARGS -DBUILD_SHARED_LIBS=On -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=On) if(NOT WIN32 AND NOT APPLE) test_expect_file(${PREFIX}/lib/libsimple.so) test_expect_file(${PREFIX}/lib/libsimple.so.1) test_expect_file(${PREFIX}/lib/libsimple.so.1.1.2.$ENV{ROCM_LIBPATCH_VERSION}) test_expect_realpath(${PREFIX}/lib/libsimple.so ${PREFIX}/lib/libsimple.so.1.1.2.$ENV{ROCM_LIBPATCH_VERSION}) test_expect_realpath(${PREFIX}/lib/libsimple.so.1 ${PREFIX}/lib/libsimple.so.1.1.2.$ENV{ROCM_LIBPATCH_VERSION}) test_exec(COMMAND ldd ${PREFIX}/bin/simple-main OUTPUT_VARIABLE LIBS) test_expect_matches("${LIBS}" "libsimple.so.1 =>") test_expect_not_matches("${LIBS}" "libsimple.so =>") test_expect_not_matches("${LIBS}" "libsimple.so.1.1.2.$ENV{ROCM_LIBPATCH_VERSION} =>") endif() unset(ENV{ROCM_LIBPATCH_VERSION}) rocm-cmake-rocm-5.0.0/test/pass/simple-soversion.cmake000066400000000000000000000023241417414007600227420ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### function(test_expect_realpath PATH EXPECTED_PATH) test_exec(COMMAND realpath ${PATH} OUTPUT_VARIABLE REALPATH) string(STRIP "${REALPATH}" REALPATH) test_expect_eq(${REALPATH} ${EXPECTED_PATH}) endfunction() install_dir(${TEST_DIR}/libsimple CMAKE_ARGS -DBUILD_SHARED_LIBS=On -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=On) if(NOT WIN32 AND NOT APPLE) test_expect_file(${PREFIX}/lib/libsimple.so) test_expect_file(${PREFIX}/lib/libsimple.so.1) test_expect_file(${PREFIX}/lib/libsimple.so.1.1.2) test_expect_realpath(${PREFIX}/lib/libsimple.so ${PREFIX}/lib/libsimple.so.1.1.2) test_expect_realpath(${PREFIX}/lib/libsimple.so.1 ${PREFIX}/lib/libsimple.so.1.1.2) test_exec(COMMAND ldd ${PREFIX}/bin/simple-main OUTPUT_VARIABLE LIBS) test_expect_matches("${LIBS}" "libsimple.so.1 =>") test_expect_not_matches("${LIBS}" "libsimple.so =>") test_expect_not_matches("${LIBS}" "libsimple.so.1.1.2 =>") endif() rocm-cmake-rocm-5.0.0/test/pass/simple.cmake000066400000000000000000000011071417414007600207130ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### install_dir(${TEST_DIR}/libsimple TARGETS package) test_check_package( NAME simple HEADER simple.h TARGET simple) install_dir(${TEST_DIR}/libbasic) install_dir(${TEST_DIR}/libsimple2 TARGETS package) test_check_package( NAME simple2 HEADER simple2.h TARGET simple2) rocm-cmake-rocm-5.0.0/test/pass/version-atag-short.cmake000066400000000000000000000015571417414007600231670ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### find_program(GIT NAMES git) file(MAKE_DIRECTORY ${TMP_DIR}/repo) test_exec(COMMAND ${GIT} init WORKING_DIRECTORY ${TMP_DIR}/repo) write_version_cmake( ${TMP_DIR}/repo 1.0 " test_expect_eq(\${PROJECT_VERSION_MAJOR} 1) test_expect_eq(\${PROJECT_VERSION_MINOR} 0) test_expect_eq(\${PROJECT_VERSION_PATCH} 0) ") test_exec(COMMAND ${GIT} add . WORKING_DIRECTORY ${TMP_DIR}/repo) test_exec(COMMAND ${GIT} commit -am "Init" WORKING_DIRECTORY ${TMP_DIR}/repo) test_exec(COMMAND ${GIT} tag -a 3.0 -m "Tag" WORKING_DIRECTORY ${TMP_DIR}/repo) install_dir(${TMP_DIR}/repo) rocm-cmake-rocm-5.0.0/test/pass/version-atag.cmake000066400000000000000000000015611417414007600220250ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### find_program(GIT NAMES git) file(MAKE_DIRECTORY ${TMP_DIR}/repo) test_exec(COMMAND ${GIT} init WORKING_DIRECTORY ${TMP_DIR}/repo) write_version_cmake( ${TMP_DIR}/repo 1.0 " test_expect_eq(\${PROJECT_VERSION_MAJOR} 1) test_expect_eq(\${PROJECT_VERSION_MINOR} 0) test_expect_eq(\${PROJECT_VERSION_PATCH} 0) ") test_exec(COMMAND ${GIT} add . WORKING_DIRECTORY ${TMP_DIR}/repo) test_exec(COMMAND ${GIT} commit -am "Init" WORKING_DIRECTORY ${TMP_DIR}/repo) test_exec(COMMAND ${GIT} tag -a 3.0.0 -m "Tag" WORKING_DIRECTORY ${TMP_DIR}/repo) install_dir(${TMP_DIR}/repo) rocm-cmake-rocm-5.0.0/test/pass/version-nogit.cmake000066400000000000000000000013041417414007600222240ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### file(MAKE_DIRECTORY ${TMP_DIR}/repo) write_version_cmake( ${TMP_DIR}/repo "1.0 NO_GIT_TAG_VERSION" " test_expect_eq(\${PROJECT_VERSION_MAJOR} 1) test_expect_eq(\${PROJECT_VERSION_MINOR} 0) test_expect_eq(\${PROJECT_VERSION_PATCH} 0) test_expect_eq(\${PROJECT_VERSION} \${PROJECT_VERSION_MAJOR}.\${PROJECT_VERSION_MINOR}.\${PROJECT_VERSION_PATCH}) ") install_dir(${TMP_DIR}/repo) rocm-cmake-rocm-5.0.0/test/pass/version-norepo.cmake000066400000000000000000000017671417414007600224230ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### find_program(GIT NAMES git) # Try to test without git file(MAKE_DIRECTORY ${TMP_DIR}/repo) execute_process( COMMAND ${GIT} describe --dirty --long --always WORKING_DIRECTORY ${TMP_DIR}/repo OUTPUT_VARIABLE GIT_TAG RESULT_VARIABLE RESULT) if(NOT ${RESULT} EQUAL 0) set(GIT_TAG 0) endif() write_version_cmake( ${TMP_DIR}/repo 1.0 " test_expect_eq(\${PROJECT_VERSION_MAJOR} 1) test_expect_eq(\${PROJECT_VERSION_MINOR} 0) test_expect_eq(\${PROJECT_VERSION_PATCH} 0) test_expect_eq(\${PROJECT_VERSION_TWEAK} ${GIT_TAG}) test_expect_eq(\${PROJECT_VERSION} \${PROJECT_VERSION_MAJOR}.\${PROJECT_VERSION_MINOR}.\${PROJECT_VERSION_PATCH}) ") install_dir(${TMP_DIR}/repo) rocm-cmake-rocm-5.0.0/test/pass/version-parent.cmake000066400000000000000000000024321417414007600224000ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### find_program(GIT NAMES git) # Try to test without git file(MAKE_DIRECTORY ${TMP_DIR}/repo) execute_process( COMMAND ${GIT} describe --dirty --long --always WORKING_DIRECTORY ${TMP_DIR}/repo OUTPUT_VARIABLE GIT_TAG RESULT_VARIABLE RESULT) if(NOT ${RESULT} EQUAL 0) set(GIT_TAG 0) endif() execute_process( COMMAND ${GIT} rev-list HEAD WORKING_DIRECTORY ${TMP_DIR}/repo OUTPUT_VARIABLE REVS RESULT_VARIABLE RESULT) separate_arguments(REVS UNIX_COMMAND "${REVS}") list(GET REVS 10 PARENT) string(STRIP "${REVS}" REVS) message("PARENT: ${PARENT}") write_version_cmake( ${TMP_DIR}/repo "1.0 PARENT ${PARENT}" " test_expect_eq(\${PROJECT_VERSION_MAJOR} 1) test_expect_eq(\${PROJECT_VERSION_MINOR} 0) test_expect_eq(\${PROJECT_VERSION_PATCH} 0) test_expect_eq(\${PROJECT_VERSION_TWEAK} ${GIT_TAG}) test_expect_eq(\${PROJECT_VERSION} \${PROJECT_VERSION_MAJOR}.\${PROJECT_VERSION_MINOR}.\${PROJECT_VERSION_PATCH}) ") install_dir(${TMP_DIR}/repo) rocm-cmake-rocm-5.0.0/test/pass/version-patch.cmake000066400000000000000000000017371417414007600222150ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### find_program(GIT NAMES git) file(MAKE_DIRECTORY ${TMP_DIR}/repo) test_exec(COMMAND ${GIT} init WORKING_DIRECTORY ${TMP_DIR}/repo) write_version_cmake( ${TMP_DIR}/repo 1.0.5 " test_expect_eq(\${PROJECT_VERSION_MAJOR} 1) test_expect_eq(\${PROJECT_VERSION_MINOR} 0) test_expect_eq(\${PROJECT_VERSION_PATCH} 5) test_expect_eq(\${PROJECT_VERSION} \${PROJECT_VERSION_MAJOR}.\${PROJECT_VERSION_MINOR}.\${PROJECT_VERSION_PATCH}) test_expect_matches(\${PROJECT_VERSION_TWEAK} ^[0-9a-f]+\$) ") test_exec(COMMAND ${GIT} add . WORKING_DIRECTORY ${TMP_DIR}/repo) test_exec(COMMAND ${GIT} commit -am "Init" WORKING_DIRECTORY ${TMP_DIR}/repo) install_dir(${TMP_DIR}/repo) rocm-cmake-rocm-5.0.0/test/pass/version.cmake000066400000000000000000000017351417414007600211160ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### find_program(GIT NAMES git) file(MAKE_DIRECTORY ${TMP_DIR}/repo) test_exec(COMMAND ${GIT} init WORKING_DIRECTORY ${TMP_DIR}/repo) write_version_cmake( ${TMP_DIR}/repo 1.0 " test_expect_eq(\${PROJECT_VERSION_MAJOR} 1) test_expect_eq(\${PROJECT_VERSION_MINOR} 0) test_expect_eq(\${PROJECT_VERSION_PATCH} 0) test_expect_eq(\${PROJECT_VERSION} \${PROJECT_VERSION_MAJOR}.\${PROJECT_VERSION_MINOR}.\${PROJECT_VERSION_PATCH}) test_expect_matches(\${PROJECT_VERSION_TWEAK} ^[0-9a-f]+\$) ") test_exec(COMMAND ${GIT} add . WORKING_DIRECTORY ${TMP_DIR}/repo) test_exec(COMMAND ${GIT} commit -am "Init" WORKING_DIRECTORY ${TMP_DIR}/repo) install_dir(${TMP_DIR}/repo) rocm-cmake-rocm-5.0.0/test/test.cmake000077500000000000000000000106651417414007600174470ustar00rootroot00000000000000# ###################################################################################################################### # Copyright (C) 2017 Advanced Micro Devices, Inc. # ###################################################################################################################### include(CMakeParseArguments) cmake_policy(SET CMP0011 NEW) set(SCRIPT_CMAKE_ARGS) # cmake-lint: disable=E1120 foreach(IDX RANGE ${CMAKE_ARGC}) list(APPEND SCRIPT_CMAKE_ARGS ${CMAKE_ARGV${IDX}}) endforeach() cmake_parse_arguments(SCRIPT_ARGS "" "" "-P" ${SCRIPT_CMAKE_ARGS}) set(ARGS ${SCRIPT_ARGS_-P}) list(LENGTH ARGS ARGC) string(RANDOM _TEST_RAND) list(GET ARGS 1 TEST) set(TEST_DIR ${CMAKE_CURRENT_LIST_DIR}) list(GET ARGS 2 TMP_DIR_ROOT) set(TMP_DIR ${TMP_DIR_ROOT}-${_TEST_RAND}) file(MAKE_DIRECTORY ${TMP_DIR}) set(PREFIX ${TMP_DIR}/usr) set(BUILDS_DIR ${TMP_DIR}/builds) # cmake-lint: disable=C0103 macro(test_expect_eq X Y) if(NOT "${X}" STREQUAL "${Y}") message(FATAL_ERROR "EXPECT FAILURE: ${X} != ${Y} ${ARGN}") endif() endmacro() macro(test_expect_matches X Y) if("${X}" STREQUAL "" OR NOT "${X}" MATCHES "${Y}") message(FATAL_ERROR "EXPECT FAILURE: ${X} NOT MATCHES ${Y} ${ARGN}") endif() endmacro() macro(test_expect_not_matches X Y) if("${X}" MATCHES "${Y}") message(FATAL_ERROR "EXPECT FAILURE: ${X} MATCHES ${Y} ${ARGN}") endif() endmacro() macro(test_expect_file FILE) if(NOT EXISTS ${FILE}) message(FATAL_ERROR "EXPECT FILE: ${FILE}") endif() endmacro() macro(test_expect_no_file FILE) if(EXISTS ${FILE}) message(FATAL_ERROR "EXPECT NO FILE: ${FILE}") endif() endmacro() macro(test_exec) string(REPLACE ";" " " EXEC_COMMAND "${ARGN}") message("${EXEC_COMMAND}") execute_process(${ARGN} RESULT_VARIABLE test_exec_RESULT) if(NOT test_exec_RESULT EQUAL 0) message(FATAL_ERROR "Process failed: ${ARGN}") endif() endmacro() macro(use_rocm_cmake) list(APPEND CMAKE_MODULE_PATH ${PREFIX}/share/rocm/cmake) endmacro() function(configure_dir DIR) set(options) set(oneValueArgs) set(multiValueArgs CMAKE_ARGS TARGETS) cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) string(RANDOM BUILD_RAND) set(BUILD_DIR ${BUILDS_DIR}/${BUILD_RAND}) if(NOT EXISTS ${BUILD_DIR}) file(MAKE_DIRECTORY ${BUILD_DIR}) endif() if(ROCM_CMAKE_GENERATOR) set(GENERATOR_FLAG -G "${ROCM_CMAKE_GENERATOR}") else() set(GENERATOR_FLAG) endif() test_exec(COMMAND ${CMAKE_COMMAND} -Werror=dev ${GENERATOR_FLAG} -DCMAKE_PREFIX_PATH=${PREFIX} -DCMAKE_INSTALL_PREFIX=${PREFIX} -DROCM_ERROR_TOOLCHAIN_VAR=On ${PARSE_CMAKE_ARGS} ${DIR} WORKING_DIRECTORY ${BUILD_DIR}) foreach(TARGET ${PARSE_TARGETS}) if("${TARGET}" STREQUAL all) test_exec(COMMAND ${CMAKE_COMMAND} --build ${BUILD_DIR}) else() test_exec(COMMAND ${CMAKE_COMMAND} --build ${BUILD_DIR} --target ${TARGET}) endif() endforeach() file(REMOVE_RECURSE ${BUILD_DIR}) endfunction() function(install_dir DIR) set(options) set(oneValueArgs) set(multiValueArgs CMAKE_ARGS TARGETS) cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) configure_dir( ${DIR} TARGETS all ${PARSE_TARGETS} install CMAKE_ARGS ${PARSE_CMAKE_ARGS}) endfunction() function(write_version_cmake DIR VERSION CONTENT) configure_file(${TEST_DIR}/version/CMakeLists.txt ${DIR}/CMakeLists.txt @ONLY) file(COPY ${TEST_DIR}/version/LICENSE DESTINATION ${DIR}) endfunction() function(test_check_package) set(options) set(oneValueArgs NAME HEADER TARGET CHECK_TARGET) set(multiValueArgs) cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) set(HEADER_FLAG) if(PARSE_HEADER) set(HEADER_FLAG -DPKG_HEADER=${PARSE_HEADER}) endif() set(TARGET ${PARSE_NAME}) if(PARSE_TARGET) set(TARGET ${PARSE_TARGET}) endif() set(CHECK_TARGET ${TARGET}) if(PARSE_CHECK_TARGET) set(CHECK_TARGET ${PARSE_CHECK_TARGET}) endif() install_dir(${TEST_DIR}/findpackagecheck CMAKE_ARGS -DPKG=${PARSE_NAME} -DPKG_TARGET=${TARGET} -DCHECK_TARGET=${CHECK_TARGET} ${HEADER_FLAG}) endfunction() install_dir(${TEST_DIR}/../) include(${TEST}) file(REMOVE_RECURSE ${TMP_DIR}) rocm-cmake-rocm-5.0.0/test/toolchain-var/000077500000000000000000000000001417414007600202215ustar00rootroot00000000000000rocm-cmake-rocm-5.0.0/test/toolchain-var/CMakeLists.txt000066400000000000000000000006751417414007600227710ustar00rootroot00000000000000################################################################################ # Copyright (C) 2017 Advanced Micro Devices, Inc. ################################################################################ cmake_minimum_required (VERSION 3.5) find_package(ROCM) project(toolchain-var) enable_language(CXX) if(CHANGE_TOOLCHAIN) set(CMAKE_CXX_COMPILER gcc) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w") endif() add_library(lib INTERFACE) rocm-cmake-rocm-5.0.0/test/version/000077500000000000000000000000001417414007600171405ustar00rootroot00000000000000rocm-cmake-rocm-5.0.0/test/version/CMakeLists.txt000066400000000000000000000016231417414007600217020ustar00rootroot00000000000000################################################################################ # Copyright (C) 2017 Advanced Micro Devices, Inc. ################################################################################ cmake_minimum_required (VERSION 3.5) project(simple) find_package(ROCM) include(ROCMSetupVersion) include(ROCMCreatePackage) rocm_setup_version(VERSION @VERSION@) message("VERSION: @VERSION@") message("PROJECT_VERSION: ${PROJECT_VERSION}") install(CODE "message(\"No install\")") macro(test_expect_eq X Y) if("${X}" STREQUAL "${Y}") else() message(FATAL_ERROR "EXPECT FAILURE: ${X} != ${Y} ${ARGN}") endif() endmacro() macro(test_expect_matches X Y) if(NOT ${X} MATCHES ${Y}) message(FATAL_ERROR "EXPECT FAILURE: ${X} != ${Y} ${ARGN}") endif() endmacro() @CONTENT@ rocm_create_package( NAME simple MAINTAINER "Amd amd@amd.com" PTH LDCONFIG) rocm-cmake-rocm-5.0.0/test/version/LICENSE000066400000000000000000000004611417414007600201460ustar00rootroot00000000000000This is a placeholder license file for the purposes of testing, and is not the license for this repository or the files contained in this directory. The license for rocm-cmake (including all files in this directory) can be located at "https://github.com/RadeonOpenCompute/rocm-cmake/blob/master/LICENSE".