diff options
| author | ruki <[email protected]> | 2020-04-07 23:49:05 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2020-04-07 16:54:34 +0800 |
| commit | 088df3a0bbe2bd99b5d60a5a1f5fb54d4be1673d (patch) | |
| tree | 316d3c3aeaeccd20e8ace1435a7badaf76069a48 | |
| parent | 20b25b2a16d0282b0496f23d0f0e1ba8842b9205 (diff) | |
support m32 for autoconf and make
| -rw-r--r-- | xmake/modules/package/tools/autoconf.lua | 19 | ||||
| -rw-r--r-- | xmake/modules/package/tools/cmake.lua | 3 | ||||
| -rw-r--r-- | xmake/modules/package/tools/make.lua | 18 | ||||
| -rw-r--r-- | xmake/modules/private/action/trybuild/autotools.lua | 21 |
4 files changed, 52 insertions, 9 deletions
diff --git a/xmake/modules/package/tools/autoconf.lua b/xmake/modules/package/tools/autoconf.lua index f67032d7c..5a28633df 100644 --- a/xmake/modules/package/tools/autoconf.lua +++ b/xmake/modules/package/tools/autoconf.lua @@ -19,6 +19,7 @@ -- -- imports +import("core.base.option") import("core.project.config") -- get configs @@ -77,9 +78,18 @@ function buildenvs(package) if package:is_plat(os.subhost()) then local cflags = table.join(table.wrap(package:config("cxflags")), package:config("cflags")) local cxxflags = table.join(table.wrap(package:config("cxflags")), package:config("cxxflags")) + local asflags = table.copy(table.wrap(package:config("asflags"))) + local ldflags = table.copy(table.wrap(package:config("ldflags"))) + if package:is_plat("linux") and package:is_arch("i386") then + table.insert(cflags, "-m32") + table.insert(cxxflags, "-m32") + table.insert(asflags, "-m32") + table.insert(ldflags, "-m32") + end envs.CFLAGS = table.concat(cflags, ' ') envs.CXXFLAGS = table.concat(cxxflags, ' ') - envs.ASFLAGS = table.concat(table.wrap(package:config("asflags")), ' ') + envs.ASFLAGS = table.concat(asflags, ' ') + envs.LDFLAGS = table.concat(ldflags, ' ') else local cflags = table.join(table.wrap(package:build_getenv("cxflags")), package:build_getenv("cflags")) local cxxflags = table.join(table.wrap(package:build_getenv("cxflags")), package:build_getenv("cxxflags")) @@ -166,7 +176,12 @@ function install(package, configs, opt) configure(package, configs, opt) -- do make and install - os.vrun("make -j4") + local njob = tostring(math.ceil(os.cpuinfo().ncpu * 3 / 2)) + local argv = {"-j" .. njob} + if option.get("verbose") then + table.insert(argv, "V=1") + end + os.vrunv("make", argv) os.vrun("make install") end diff --git a/xmake/modules/package/tools/cmake.lua b/xmake/modules/package/tools/cmake.lua index 4a790ede8..313d15396 100644 --- a/xmake/modules/package/tools/cmake.lua +++ b/xmake/modules/package/tools/cmake.lua @@ -130,7 +130,8 @@ function install(package, configs, opt) os.cp("**.exp", package:installdir("lib")) end else - argv = {"-j4"} + local njob = tostring(math.ceil(os.cpuinfo().ncpu * 3 / 2)) + argv = {"-j" .. njob} if option.get("verbose") then table.insert(argv, "VERBOSE=1") end diff --git a/xmake/modules/package/tools/make.lua b/xmake/modules/package/tools/make.lua index 5e8d494c3..5a9f06be5 100644 --- a/xmake/modules/package/tools/make.lua +++ b/xmake/modules/package/tools/make.lua @@ -19,6 +19,7 @@ -- -- imports +import("core.base.option") import("core.project.config") -- get the build environments @@ -27,9 +28,18 @@ function buildenvs(package) if package:is_plat(os.host()) then local cflags = table.join(table.wrap(package:config("cxflags")), package:config("cflags")) local cxxflags = table.join(table.wrap(package:config("cxflags")), package:config("cxxflags")) + local asflags = table.copy(table.wrap(package:config("asflags"))) + local ldflags = table.copy(table.wrap(package:config("ldflags"))) + if package:is_plat("linux") and package:is_arch("i386") then + table.insert(cflags, "-m32") + table.insert(cxxflags, "-m32") + table.insert(asflags, "-m32") + table.insert(ldflags, "-m32") + end envs.CFLAGS = table.concat(cflags, ' ') envs.CXXFLAGS = table.concat(cxxflags, ' ') - envs.ASFLAGS = table.concat(table.wrap(package:config("asflags")), ' ') + envs.ASFLAGS = table.concat(asflags, ' ') + envs.LDFLAGS = table.concat(ldflags, ' ') else local cflags = table.join(table.wrap(package:build_getenv("cxflags")), package:build_getenv("cflags")) local cxxflags = table.join(table.wrap(package:build_getenv("cxflags")), package:build_getenv("cxxflags")) @@ -71,7 +81,11 @@ function build(package, configs, opt) opt = opt or {} -- pass configurations - local argv = {"-j4"} + local njob = tostring(math.ceil(os.cpuinfo().ncpu * 3 / 2)) + local argv = {"-j" .. njob} + if option.get("verbose") then + table.insert(argv, "VERBOSE=1") + end for name, value in pairs(configs) do value = tostring(value):trim() if value ~= "" then diff --git a/xmake/modules/private/action/trybuild/autotools.lua b/xmake/modules/private/action/trybuild/autotools.lua index 379007d3c..512ee53df 100644 --- a/xmake/modules/private/action/trybuild/autotools.lua +++ b/xmake/modules/private/action/trybuild/autotools.lua @@ -51,11 +51,20 @@ end function _get_buildenvs() local envs = {} if is_plat(os.subhost()) then - local cflags = table.join(table.wrap(config.get("cxflags")), config.get("cflags")) - local cxxflags = table.join(table.wrap(config.get("cxflags")), config.get("cxxflags")) + local cflags = table.join(table.wrap(package:config("cxflags")), package:config("cflags")) + local cxxflags = table.join(table.wrap(package:config("cxflags")), package:config("cxxflags")) + local asflags = table.copy(table.wrap(package:config("asflags"))) + local ldflags = table.copy(table.wrap(package:config("ldflags"))) + if package:is_plat("linux") and package:is_arch("i386") then + table.insert(cflags, "-m32") + table.insert(cxxflags, "-m32") + table.insert(asflags, "-m32") + table.insert(ldflags, "-m32") + end envs.CFLAGS = table.concat(cflags, ' ') envs.CXXFLAGS = table.concat(cxxflags, ' ') - envs.ASFLAGS = table.concat(table.wrap(config.get("asflags")), ' ') + envs.ASFLAGS = table.concat(asflags, ' ') + envs.LDFLAGS = table.concat(ldflags, ' ') else local cflags = table.join(table.wrap(_get_buildenv("cxflags")), _get_buildenv("cflags")) local cxxflags = table.join(table.wrap(_get_buildenv("cxflags")), _get_buildenv("cxxflags")) @@ -199,7 +208,11 @@ function build() end -- do build - os.vexec("make -j" .. option.get("jobs")) + local argv = {"-j" .. option.get("jobs")} + if option.get("verbose") then + table.insert(argv, "V=1") + end + os.vexecv("make", argv) os.vexec("make install") cprint("output to ${bright}%s", artifacts_dir) cprint("${color.success}build ok!") |
