module ('gnu-gcc-c-toolchain', package.seeall) require "general-c-rules" require "general-gnu-gcc-rules" local function c_static_compile (p_targets, p_sources, p_environment) local cmd = "gcc -c " .. p_sources:at (0):full_name () 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 ('C_FLAG')) do cmd = cmd .. " "..itm end return cmd .. " -o " .. p_targets:at (0):full_name () end local function c_shared_compile (p_targets, p_sources, p_environment) local cmd = "gcc -c " .. p_sources:at (0):full_name () 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 -- 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 ("c-static-compile", c_static_compile) tcn:add_builder ("c-shared-compile", c_shared_compile) end function init_module () register_builders () end init_module ()