diff options
| author | ruki <[email protected]> | 2020-11-08 19:18:52 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2020-11-08 19:18:52 +0800 |
| commit | da3c6af9d6584593311313c2ced57c1a39fff5ae (patch) | |
| tree | 9226e6b74b8a7e7f1a68804e3c29d9f6b8f36cff /xmake/rules/utils | |
| parent | ea6afc015b3c3f391761ba13a03c966daedd6db4 (diff) | |
add license checking
Diffstat (limited to 'xmake/rules/utils')
| -rw-r--r-- | xmake/rules/utils/check_licenses/check_licenses.lua | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/xmake/rules/utils/check_licenses/check_licenses.lua b/xmake/rules/utils/check_licenses/check_licenses.lua index 2d356f61a..9e5cf504f 100644 --- a/xmake/rules/utils/check_licenses/check_licenses.lua +++ b/xmake/rules/utils/check_licenses/check_licenses.lua @@ -18,9 +18,23 @@ -- @file check_licenses.lua -- +-- imports +import("core.base.license") + -- check licenses -function _check_licenses_for_package(target_name, target_license, package_name, package_licenses) - -- TODO +function _check_licenses_for_package(target, package) + local target_license = target:license() + local package_license = package:license() + local package_kind = package:has_shared() and "shared" + local ok, errors = license.compatible(target_license, package_license, {library_kind = package_kind}) + if not ok then + errors = errors or "you can use set_license()/set_policy() to modify/disable license" + if target_license then + wprint("license(%s) of target(%s) is not compatible with license(%s) of package(%s)\n%s!", target_license, target:name(), package_license, package:name(), errors) + else + wprint("target(%s) maybe is not compatible with license(%s) of package(%s), \n%s!", target:name(), package_license, package:name(), errors) + end + end end -- check licenses for all dependent packages @@ -28,15 +42,16 @@ end -- @see https://github.com/xmake-io/xmake/issues/1016 -- function _check_licenses_for_packages(target) - local target_license = target:get("license") - if target_license then - for _, pkg in ipairs(target:orderpkgs()) do - _check_licenses_for_package(target:name(), target_license, pkg:name(), pkg:get("license")) + for _, pkg in ipairs(target:orderpkgs()) do + if pkg:license() then + _check_licenses_for_package(target, pkg) end end end -- main entry function main(target) - _check_licenses_for_packages(target) + if target:policy("check.target_package_licenses") then + _check_licenses_for_packages(target) + end end |
