From 01d5ccfc69f1475826fa01a0269cb9a7419d2c73 Mon Sep 17 00:00:00 2001 From: ruki Date: Sun, 21 Feb 2021 16:49:45 +0800 Subject: rename prefix: pkg-config to pkgconfig --- xmake/modules/lib/detect/pkg_config.lua | 187 --------------------- xmake/modules/lib/detect/pkgconfig.lua | 187 +++++++++++++++++++++ .../modules/package/manager/brew/find_package.lua | 8 +- xmake/modules/package/manager/find_package.lua | 2 +- .../package/manager/pacman/find_package.lua | 2 +- .../package/manager/pkg_config/find_package.lua | 64 ------- .../package/manager/pkgconfig/find_package.lua | 64 +++++++ .../package/manager/system/find_package.lua | 4 +- 8 files changed, 259 insertions(+), 259 deletions(-) delete mode 100644 xmake/modules/lib/detect/pkg_config.lua create mode 100644 xmake/modules/lib/detect/pkgconfig.lua delete mode 100644 xmake/modules/package/manager/pkg_config/find_package.lua create mode 100644 xmake/modules/package/manager/pkgconfig/find_package.lua diff --git a/xmake/modules/lib/detect/pkg_config.lua b/xmake/modules/lib/detect/pkg_config.lua deleted file mode 100644 index f9e1e9aeb..000000000 --- a/xmake/modules/lib/detect/pkg_config.lua +++ /dev/null @@ -1,187 +0,0 @@ ---!A cross-platform build utility based on Lua --- --- Licensed under the Apache License, Version 2.0 (the "License"); --- you may not use this file except in compliance with the License. --- You may obtain a copy of the License at --- --- http://www.apache.org/licenses/LICENSE-2.0 --- --- Unless required by applicable law or agreed to in writing, software --- distributed under the License is distributed on an "AS IS" BASIS, --- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. --- See the License for the specific language governing permissions and --- limitations under the License. --- --- Copyright (C) 2015-present, TBOOX Open Source Group. --- --- @author ruki --- @file pkg_config.lua --- - --- imports -import("core.base.global") -import("core.project.target") -import("core.project.config") -import("lib.detect.find_file") -import("lib.detect.find_library") -import("detect.tools.find_pkg_config") - --- get version --- --- @param name the package name --- @param opt the argument options, {configdirs = {"/xxxx/pkgconfig/"}} --- -function version(name, opt) - - -- attempt to add search paths from pkg-config - local pkg_config = find_pkg_config() - if not pkg_config then - return - end - - -- init options - opt = opt or {} - - -- init PKG_CONFIG_PATH - local configdirs_old = os.getenv("PKG_CONFIG_PATH") - local configdirs = table.wrap(opt.configdirs) - if #configdirs > 0 then - os.setenv("PKG_CONFIG_PATH", unpack(configdirs)) - end - - -- get version - local version = try { function() return os.iorunv(pkg_config, {"--modversion", name}) end } - if version then - version = version:trim() - end - - -- restore PKG_CONFIG_PATH - if configdirs_old then - os.setenv("PKG_CONFIG_PATH", configdirs_old) - end - - -- ok? - return version -end - --- get variables --- --- @param name the package name --- @param variables the variables --- @param opt the argument options, {configdirs = {"/xxxx/pkgconfig/"}} --- -function variables(name, variables, opt) - - -- attempt to add search paths from pkg-config - local pkg_config = find_pkg_config() - if not pkg_config then - return - end - - -- init options - opt = opt or {} - - -- init PKG_CONFIG_PATH - local configdirs_old = os.getenv("PKG_CONFIG_PATH") - local configdirs = table.wrap(opt.configdirs) - if #configdirs > 0 then - os.setenv("PKG_CONFIG_PATH", unpack(configdirs)) - end - - -- get variable value - local result = nil - if variables then - for _, variable in ipairs(table.wrap(variables)) do - local value = try { function () return os.iorunv(pkg_config, {"--variable=" .. variable, name}) end } - if value ~= nil then - result = result or {} - result[variable] = value:trim() - end - end - end - - -- restore PKG_CONFIG_PATH - if configdirs_old then - os.setenv("PKG_CONFIG_PATH", configdirs_old) - end - - -- ok? - return result -end - --- get library info --- --- @param name the package name --- @param opt the argument options, {version = true, variables = "includedir", configdirs = {"/xxxx/pkgconfig/"}} --- --- @return {links = {"ssl", "crypto", "z"}, linkdirs = {""}, includedirs = {""}, version = ""} --- --- @code --- --- local libinfo = pkg_config.libinfo("openssl") --- --- @endcode --- -function libinfo(name, opt) - - -- attempt to add search paths from pkg-config - local pkg_config = find_pkg_config() - if not pkg_config then - return - end - - -- init options - opt = opt or {} - - -- init PKG_CONFIG_PATH - local configdirs_old = os.getenv("PKG_CONFIG_PATH") - local configdirs = table.wrap(opt.configdirs) - if #configdirs > 0 then - os.setenv("PKG_CONFIG_PATH", unpack(configdirs)) - end - - -- get libs and cflags - local result = nil - local flags = try { function () return os.iorunv(pkg_config, {"--libs", "--cflags", name}) end } - if flags then - - -- init result - result = {} - for _, flag in ipairs(os.argv(flags)) do - if flag:startswith("-L") and #flag > 2 then - -- get linkdirs - local linkdir = flag:sub(3) - if linkdir and os.isdir(linkdir) then - result.linkdirs = result.linkdirs or {} - table.insert(result.linkdirs, linkdir) - end - elseif flag:startswith("-I") and #flag > 2 then - -- get includedirs - local includedir = flag:sub(3) - if includedir and os.isdir(includedir) then - result.includedirs = result.includedirs or {} - table.insert(result.includedirs, includedir) - end - elseif flag:startswith("-l") and #flag > 2 then - -- get links - local link = flag:sub(3) - result.links = result.links or {} - table.insert(result.links, link) - end - end - end - - -- get version - local version = try { function() return os.iorunv(pkg_config, {"--modversion", name}) end } - if version then - result = result or {} - result.version = version:trim() - end - - -- restore PKG_CONFIG_PATH - if configdirs_old then - os.setenv("PKG_CONFIG_PATH", configdirs_old) - end - return result -end - diff --git a/xmake/modules/lib/detect/pkgconfig.lua b/xmake/modules/lib/detect/pkgconfig.lua new file mode 100644 index 000000000..98f9eae68 --- /dev/null +++ b/xmake/modules/lib/detect/pkgconfig.lua @@ -0,0 +1,187 @@ +--!A cross-platform build utility based on Lua +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- +-- Copyright (C) 2015-present, TBOOX Open Source Group. +-- +-- @author ruki +-- @file pkgconfig.lua +-- + +-- imports +import("core.base.global") +import("core.project.target") +import("core.project.config") +import("lib.detect.find_file") +import("lib.detect.find_library") +import("detect.tools.find_pkg_config") + +-- get version +-- +-- @param name the package name +-- @param opt the argument options, {configdirs = {"/xxxx/pkgconfig/"}} +-- +function version(name, opt) + + -- attempt to add search paths from pkg-config + local pkgconfig = find_pkgconfig() + if not pkgconfig then + return + end + + -- init options + opt = opt or {} + + -- init PKG_CONFIG_PATH + local configdirs_old = os.getenv("PKG_CONFIG_PATH") + local configdirs = table.wrap(opt.configdirs) + if #configdirs > 0 then + os.setenv("PKG_CONFIG_PATH", unpack(configdirs)) + end + + -- get version + local version = try { function() return os.iorunv(pkgconfig, {"--modversion", name}) end } + if version then + version = version:trim() + end + + -- restore PKG_CONFIG_PATH + if configdirs_old then + os.setenv("PKG_CONFIG_PATH", configdirs_old) + end + + -- ok? + return version +end + +-- get variables +-- +-- @param name the package name +-- @param variables the variables +-- @param opt the argument options, {configdirs = {"/xxxx/pkgconfig/"}} +-- +function variables(name, variables, opt) + + -- attempt to add search paths from pkg-config + local pkgconfig = find_pkgconfig() + if not pkgconfig then + return + end + + -- init options + opt = opt or {} + + -- init PKG_CONFIG_PATH + local configdirs_old = os.getenv("PKG_CONFIG_PATH") + local configdirs = table.wrap(opt.configdirs) + if #configdirs > 0 then + os.setenv("PKG_CONFIG_PATH", unpack(configdirs)) + end + + -- get variable value + local result = nil + if variables then + for _, variable in ipairs(table.wrap(variables)) do + local value = try { function () return os.iorunv(pkgconfig, {"--variable=" .. variable, name}) end } + if value ~= nil then + result = result or {} + result[variable] = value:trim() + end + end + end + + -- restore PKG_CONFIG_PATH + if configdirs_old then + os.setenv("PKG_CONFIG_PATH", configdirs_old) + end + + -- ok? + return result +end + +-- get library info +-- +-- @param name the package name +-- @param opt the argument options, {version = true, variables = "includedir", configdirs = {"/xxxx/pkgconfig/"}} +-- +-- @return {links = {"ssl", "crypto", "z"}, linkdirs = {""}, includedirs = {""}, version = ""} +-- +-- @code +-- +-- local libinfo = pkgconfig.libinfo("openssl") +-- +-- @endcode +-- +function libinfo(name, opt) + + -- attempt to add search paths from pkg-config + local pkgconfig = find_pkg_config() + if not pkgconfig then + return + end + + -- init options + opt = opt or {} + + -- init PKG_CONFIG_PATH + local configdirs_old = os.getenv("PKG_CONFIG_PATH") + local configdirs = table.wrap(opt.configdirs) + if #configdirs > 0 then + os.setenv("PKG_CONFIG_PATH", unpack(configdirs)) + end + + -- get libs and cflags + local result = nil + local flags = try { function () return os.iorunv(pkgconfig, {"--libs", "--cflags", name}) end } + if flags then + + -- init result + result = {} + for _, flag in ipairs(os.argv(flags)) do + if flag:startswith("-L") and #flag > 2 then + -- get linkdirs + local linkdir = flag:sub(3) + if linkdir and os.isdir(linkdir) then + result.linkdirs = result.linkdirs or {} + table.insert(result.linkdirs, linkdir) + end + elseif flag:startswith("-I") and #flag > 2 then + -- get includedirs + local includedir = flag:sub(3) + if includedir and os.isdir(includedir) then + result.includedirs = result.includedirs or {} + table.insert(result.includedirs, includedir) + end + elseif flag:startswith("-l") and #flag > 2 then + -- get links + local link = flag:sub(3) + result.links = result.links or {} + table.insert(result.links, link) + end + end + end + + -- get version + local version = try { function() return os.iorunv(pkgconfig, {"--modversion", name}) end } + if version then + result = result or {} + result.version = version:trim() + end + + -- restore PKG_CONFIG_PATH + if configdirs_old then + os.setenv("PKG_CONFIG_PATH", configdirs_old) + end + return result +end + diff --git a/xmake/modules/package/manager/brew/find_package.lua b/xmake/modules/package/manager/brew/find_package.lua index df0737a06..f3677282a 100644 --- a/xmake/modules/package/manager/brew/find_package.lua +++ b/xmake/modules/package/manager/brew/find_package.lua @@ -22,7 +22,7 @@ import("lib.detect.find_tool") import("lib.detect.find_file") import("lib.detect.find_path") -import("lib.detect.pkg_config") +import("lib.detect.pkgconfig") import("core.project.target") import("package.manager.find_package") @@ -79,13 +79,13 @@ function main(name, opt) end if pcfile then opt.configdirs = path.directory(pcfile) - result = find_package("pkg_config::" .. pcname, opt) + result = find_package("pkgconfig::" .. pcname, opt) if not result then -- attempt to get includedir variable from pkg-config/xx.pc - local varinfo = pkg_config.variables(pcname, "includedir", opt) + local varinfo = pkgconfig.variables(pcname, "includedir", opt) if varinfo and varinfo.includedir then result = result or {} - result.version = pkg_config.version(pcname, opt) + result.version = pkgconfig.version(pcname, opt) result.includedirs = varinfo.includedir end end diff --git a/xmake/modules/package/manager/find_package.lua b/xmake/modules/package/manager/find_package.lua index 0f98106aa..f188d92d1 100644 --- a/xmake/modules/package/manager/find_package.lua +++ b/xmake/modules/package/manager/find_package.lua @@ -62,7 +62,7 @@ function _find_package_with_builtin_rule(package_name, opt) end -- find it from pkg-config - table.insert(managers, "pkg_config") + table.insert(managers, "pkgconfig") -- find it from system table.insert(managers, "system") diff --git a/xmake/modules/package/manager/pacman/find_package.lua b/xmake/modules/package/manager/pacman/find_package.lua index b34f8eff0..ba5b58c21 100644 --- a/xmake/modules/package/manager/pacman/find_package.lua +++ b/xmake/modules/package/manager/pacman/find_package.lua @@ -21,7 +21,7 @@ -- imports import("core.base.option") import("lib.detect.find_tool") -import("package.manager.pkg_config.find_package", {alias = "find_package_from_pkgconfig"}) +import("package.manager.pkgconfig.find_package", {alias = "find_package_from_pkgconfig"}) -- find package from the system directories -- diff --git a/xmake/modules/package/manager/pkg_config/find_package.lua b/xmake/modules/package/manager/pkg_config/find_package.lua deleted file mode 100644 index 752307e34..000000000 --- a/xmake/modules/package/manager/pkg_config/find_package.lua +++ /dev/null @@ -1,64 +0,0 @@ ---!A cross-platform build utility based on Lua --- --- Licensed under the Apache License, Version 2.0 (the "License"); --- you may not use this file except in compliance with the License. --- You may obtain a copy of the License at --- --- http://www.apache.org/licenses/LICENSE-2.0 --- --- Unless required by applicable law or agreed to in writing, software --- distributed under the License is distributed on an "AS IS" BASIS, --- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. --- See the License for the specific language governing permissions and --- limitations under the License. --- --- Copyright (C) 2015-present, TBOOX Open Source Group. --- --- @author ruki --- @file find_package.lua --- - --- imports -import("lib.detect.pkg_config") -import("lib.detect.find_library") -import("package.manager.system.find_package", {alias = "find_package_from_system"}) - --- find package from the pkg-config package manager --- --- @param name the package name --- @param opt the options, e.g. {verbose = true, version = "1.12.x") --- -function main(name, opt) - - -- init options - opt = opt or {} - - -- get library info - local libinfo = pkg_config.libinfo(name, opt) - if not libinfo and name:startswith("lib") then - -- libxxx? attempt to find xxx without `lib` prefix - libinfo = pkg_config.libinfo(name:sub(4), opt) - end - if not libinfo then - return - end - - -- no linkdirs in pkg-config? attempt to find it from system directories - if libinfo.links and not libinfo.linkdirs then - local libinfo_sys = find_package_from_system(name, table.join(opt, {links = libinfo.links})) - if libinfo_sys then - libinfo.linkdirs = libinfo_sys.linkdirs - end - end - - -- get result - local result = nil - if libinfo.links or libinfo.includedirs then - result = result or {} - result.includedirs = libinfo.includedirs - result.linkdirs = libinfo.linkdirs - result.links = libinfo.links - result.version = libinfo.version - end - return result -end diff --git a/xmake/modules/package/manager/pkgconfig/find_package.lua b/xmake/modules/package/manager/pkgconfig/find_package.lua new file mode 100644 index 000000000..a7dbf377a --- /dev/null +++ b/xmake/modules/package/manager/pkgconfig/find_package.lua @@ -0,0 +1,64 @@ +--!A cross-platform build utility based on Lua +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- +-- Copyright (C) 2015-present, TBOOX Open Source Group. +-- +-- @author ruki +-- @file find_package.lua +-- + +-- imports +import("lib.detect.pkgconfig") +import("lib.detect.find_library") +import("package.manager.system.find_package", {alias = "find_package_from_system"}) + +-- find package from the pkg-config package manager +-- +-- @param name the package name +-- @param opt the options, e.g. {verbose = true, version = "1.12.x") +-- +function main(name, opt) + + -- init options + opt = opt or {} + + -- get library info + local libinfo = pkgconfig.libinfo(name, opt) + if not libinfo and name:startswith("lib") then + -- libxxx? attempt to find xxx without `lib` prefix + libinfo = pkgconfig.libinfo(name:sub(4), opt) + end + if not libinfo then + return + end + + -- no linkdirs in pkg-config? attempt to find it from system directories + if libinfo.links and not libinfo.linkdirs then + local libinfo_sys = find_package_from_system(name, table.join(opt, {links = libinfo.links})) + if libinfo_sys then + libinfo.linkdirs = libinfo_sys.linkdirs + end + end + + -- get result + local result = nil + if libinfo.links or libinfo.includedirs then + result = result or {} + result.includedirs = libinfo.includedirs + result.linkdirs = libinfo.linkdirs + result.links = libinfo.links + result.version = libinfo.version + end + return result +end diff --git a/xmake/modules/package/manager/system/find_package.lua b/xmake/modules/package/manager/system/find_package.lua index 1298a3e5d..9bb04566d 100644 --- a/xmake/modules/package/manager/system/find_package.lua +++ b/xmake/modules/package/manager/system/find_package.lua @@ -22,7 +22,7 @@ import("lib.detect.find_file") import("lib.detect.find_path") import("lib.detect.find_library") -import("lib.detect.pkg_config") +import("lib.detect.pkgconfig") import("detect.sdks.find_xcode") import("core.project.config") @@ -148,7 +148,7 @@ function main(name, opt) local version = nil local links = table.wrap(opt.links) if #links == 0 then - pkginfo = pkg_config.libinfo(name) + pkginfo = pkgconfig.libinfo(name) if pkginfo then links = table.wrap(pkginfo.links) version = pkginfo.version -- cgit v1.3.1