summaryrefslogtreecommitdiff
path: root/xmake/rules/utils/bin2obj/xmake.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2025-12-07 23:00:26 +0800
committerruki <[email protected]>2025-12-07 23:00:26 +0800
commit0187b34737611b7b194761ef1a241dd4ac6eee05 (patch)
treea5b7017281430fc19b51b58d683bc795218b1a60 /xmake/rules/utils/bin2obj/xmake.lua
parent4e4b28eb4cad79cc4df5fca887b4f4b709f2b211 (diff)
add bin2obj support for glsl/hlsl2spv
Diffstat (limited to 'xmake/rules/utils/bin2obj/xmake.lua')
-rw-r--r--xmake/rules/utils/bin2obj/xmake.lua66
1 files changed, 5 insertions, 61 deletions
diff --git a/xmake/rules/utils/bin2obj/xmake.lua b/xmake/rules/utils/bin2obj/xmake.lua
index 69fd9e717..760b9d536 100644
--- a/xmake/rules/utils/bin2obj/xmake.lua
+++ b/xmake/rules/utils/bin2obj/xmake.lua
@@ -22,74 +22,18 @@ rule("utils.bin2obj")
set_extensions(".bin")
add_orders("utils.bin2obj", "c++.build.modules.builder")
on_buildcmd_file(function (target, batchcmds, sourcefile_bin, opt)
-
- -- get format (default: auto-detect from platform)
- local format = target:extraconf("rules", "utils.bin2obj", "format")
- if not format then
- if target:is_plat("windows", "mingw", "msys", "cygwin") then
- format = "coff"
- elseif target:is_plat("macosx", "iphoneos", "watchos", "appletvos") then
- format = "macho"
- else
- format = "elf"
- end
- end
-
- -- get object file (use .obj for COFF, .o for others)
- local objext = (format == "coff") and ".obj" or ".o"
- local objectfile = path.join(target:objectdir(), path.basename(sourcefile_bin) .. objext)
- table.insert(target:objectfiles(), objectfile)
-
- -- add commands
- batchcmds:show_progress(opt.progress, "${color.build.object}generating.bin2obj %s", sourcefile_bin)
- batchcmds:mkdir(path.directory(objectfile))
-
- -- get symbol prefix (default: _binary_)
- local symbol_prefix = target:extraconf("rules", "utils.bin2obj", "symbol_prefix") or "_binary_"
+ import("rules.utils.bin2obj.utils", {alias = "bin2obj_utils", rootdir = os.programdir()})
-- get zeroend (default: false)
-- check file-level config first, then rule-level config
local fileconfig = target:fileconfig(sourcefile_bin)
local zeroend = (fileconfig and fileconfig.zeroend) or target:extraconf("rules", "utils.bin2obj", "zeroend") or false
- -- get architecture
- local arch = target:arch()
-
- -- get platform
- local plat = target:plat()
-
- -- get target_minver and xcode_sdkver from xcode toolchain (if available)
- local target_minver = nil
- local xcode_sdkver = nil
- if format == "macho" then
- local toolchain = target:toolchain("xcode")
- if toolchain then
- target_minver = toolchain:config("target_minver")
- xcode_sdkver = toolchain:config("xcode_sdkver")
- end
- end
-
-- convert binary file to object file
- local argv = {
- "-i", path(sourcefile_bin),
- "-o", path(objectfile),
- "-f", format,
- "-a", arch,
- "-p", plat
- }
- if symbol_prefix ~= "_binary_" then
- table.insert(argv, "--symbol_prefix=" .. symbol_prefix)
- end
- if target_minver then
- table.insert(argv, "--target_minver=" .. target_minver)
- end
- if xcode_sdkver then
- table.insert(argv, "--xcode_sdkver=" .. xcode_sdkver)
- end
- if zeroend then
- table.insert(argv, "--zeroend")
- end
- batchcmds:vlua("utils.binary.bin2obj", argv)
+ local objectfile = bin2obj_utils.generate_objectfile(target, batchcmds, sourcefile_bin, {
+ progress = opt.progress,
+ zeroend = zeroend
+ })
-- add deps
batchcmds:add_depfiles(sourcefile_bin)