diff options
| author | ruki <[email protected]> | 2025-12-12 09:54:46 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-12-12 09:54:46 +0800 |
| commit | 7544d22a944cb4702534a8fe54924d74a71d3178 (patch) | |
| tree | 2df690db9f7ead09afde33fd321864c4d56b042a /xmake/modules/utils/binary/extractlib.lua | |
| parent | 2427bd350baa6331c5dfd62b2ab291737c7e5f49 (diff) | |
| parent | e08e654aad4f829fcf1990dae32a14394055d96c (diff) | |
Merge pull request #7120 from xmake-io/ar
Add extractlib support in binutils
Diffstat (limited to 'xmake/modules/utils/binary/extractlib.lua')
| -rw-r--r-- | xmake/modules/utils/binary/extractlib.lua | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/xmake/modules/utils/binary/extractlib.lua b/xmake/modules/utils/binary/extractlib.lua new file mode 100644 index 000000000..818d343bc --- /dev/null +++ b/xmake/modules/utils/binary/extractlib.lua @@ -0,0 +1,51 @@ +--!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, Xmake Open Source Community. +-- +-- @author ruki +-- @file extractlib.lua +-- + +-- imports +import("core.base.binutils") + +-- extract static library to directory +-- +-- @param libraryfile the static library file path (.a or .lib) +-- @param outputdir the output directory to extract object files +-- @param opt the options (optional) +-- - plain: extract all object files to the same directory (default: true) +-- +function main(libraryfile, outputdir, opt) + -- init paths + libraryfile = path.absolute(libraryfile) + outputdir = path.absolute(outputdir) + assert(os.isfile(libraryfile), "%s not found!", libraryfile) + + -- ensure output directory exists + if not os.isdir(outputdir) then + os.mkdir(outputdir) + end + + -- trace + print("extracting static library %s to %s ..", libraryfile, outputdir) + + -- do extraction + binutils.extractlib(libraryfile, outputdir, opt) + + -- trace + cprint("${bright}extraction completed!") +end + |
