summaryrefslogtreecommitdiff
path: root/xmake/rules/utils
diff options
context:
space:
mode:
authorruki <[email protected]>2020-11-08 19:18:52 +0800
committerruki <[email protected]>2020-11-08 19:18:52 +0800
commitda3c6af9d6584593311313c2ced57c1a39fff5ae (patch)
tree9226e6b74b8a7e7f1a68804e3c29d9f6b8f36cff /xmake/rules/utils
parentea6afc015b3c3f391761ba13a03c966daedd6db4 (diff)
add license checking
Diffstat (limited to 'xmake/rules/utils')
-rw-r--r--xmake/rules/utils/check_licenses/check_licenses.lua29
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