target("xmake") set_kind("static") -- add deps add_deps("sv", "lz4") if namespace then add_deps("tbox::tbox") else add_deps("tbox") end if is_config("runtime", "luajit") then add_deps("luajit") else add_deps("lua") end if has_config("lua_cjson") then add_deps("lua-cjson") end if is_plat("windows") and has_config("pdcurses") then add_deps("pdcurses") end -- add definitions add_defines("__tb_prefix__=\"xmake\"") if is_mode("debug") then add_defines("__tb_debug__", {public = true}) end -- set the auto-generated config.h set_configdir("$(builddir)/$(plat)/$(arch)/$(mode)") add_configfiles("xmake.config.h.in") -- add includes directory add_includedirs("..", {interface = true}) add_includedirs("$(builddir)/$(plat)/$(arch)/$(mode)", {public = true}) add_includedirs("../xxhash") add_includedirs("$(projectdir)/../xmake/scripts/module") -- add header files add_headerfiles("../(xmake/*.h)") add_headerfiles("../(xmake/prefix/*.h)") add_headerfiles("$(builddir)/$(plat)/$(arch)/$(mode)/xmake.config.h", {prefixdir = "xmake"}) -- add the common source files add_files("**.c|winos/*.c") if is_plat("windows", "msys", "mingw", "cygwin") then add_files("winos/*.c") end -- add options add_options("readline") if is_plat("windows") then add_options("pdcurses") else add_options("curses") end -- add definitions if is_plat("windows") then add_defines("UNICODE", "_UNICODE") end -- embed all script files add_rules("utils.bin2obj", {extensions = ".xmz"}) on_config(function (target) import("utils.archive.archive") if has_config("embed") then local archivefile = path.join(target:autogendir(), "bin2obj", "xmake.xmz") print("archiving %s ..", archivefile) os.tryrm(archivefile) local rootdir = path.normalize(path.join(os.projectdir(), "..", "xmake")) archive(archivefile, rootdir, {recurse = true, curdir = rootdir}) target:add("files", archivefile) target:add("defines", "XM_EMBED_ENABLE=1") end end)