module ('gnu-gcc-cxx-toolchain', package.seeall) require "general-cxx-rules" require "general-gnu-gcc-rules" local function cxx_static_compile (p_targets, p_sources, p_environment) local cmd = "g++ -c " .. p_sources:at (0):full_name () for _, itm in ipairs (p_environment:items ('CXX_PATH')) do for _, pth in ipairs (dmt.resolve_possible_paths (itm)) do cmd = cmd .. " -I" .. pth end end -- C_PATH is also valid for C++ for _, itm in ipairs (p_environment:items ('C_PATH')) do for _, pth in ipairs (dmt.resolve_possible_paths (itm)) do cmd = cmd .. " -I" .. pth end end for _, itm in ipairs (p_environment:items ('CXX_FLAG')) do cmd = cmd .. " "..itm end -- C_FLAG is also valid for C++ for _, itm in ipairs (p_environment:items ('C_FLAG')) do cmd = cmd .. " "..itm end return cmd .. " -o " .. p_targets:at (0):full_name () end local function cxx_shared_compile (p_targets, p_sources, p_environment) local cmd = "g++ -c " .. p_sources:at (0):full_name () for _, itm in ipairs (p_environment:items ('CXX_PATH')) do for _, pth in ipairs (dmt.resolve_possible_paths (itm)) do cmd = cmd .. " -I" .. pth end end -- C_PATH is also valid for C++ for _, itm in ipairs (p_environment:items ('C_PATH')) do for _, pth in ipairs (dmt.resolve_possible_paths (itm)) do cmd = cmd .. " -I" .. pth end end for _, itm in ipairs (p_environment:items ('CXX_FLAG')) do cmd = cmd .. " "..itm end -- C_FLAG is also valid for C++ for _, itm in ipairs (p_environment:items ('C_FLAG')) do cmd = cmd .. " "..itm end return cmd .. " -fPIC -o " .. p_targets:at (0):full_name () end local function register_builders () local tcn = dmt.tool_chain ("gnu-gcc") tcn:add_builder ("cxx-static-compile", cxx_static_compile) tcn:add_builder ("cxx-shared-compile", cxx_shared_compile) end function init_module () register_builders () end init_module ()