Commit 06d3235d authored by jan.koester's avatar jan.koester
Browse files

expand var names

parent 4b687611
Loading
Loading
Loading
Loading
+6 −4
Changes for parser.cpp: 6 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -616,7 +616,9 @@ bool Parser::try_parse_assignment(const std::string& line, Makefile& mf) {
            if (name_end > 0 && line[name_end - 1] == ':') name_end--;
        } else if (prev == '+') {
            name_end = eq_pos - 1;
            std::string name = trim(line.substr(0, name_end));
            // GNU make expands the variable name on the LHS, so e.g.
            // "syshdr-$(CONFIG_X86_64) += x" becomes "syshdr-y += x".
            std::string name = expand(trim(line.substr(0, name_end)), mf);
            std::string value = line.substr(eq_pos + 1);
            if (!value.empty() && value[0] == ' ') value = value.substr(1);
            auto it = mf.variables.find(name);
@@ -639,7 +641,7 @@ bool Parser::try_parse_assignment(const std::string& line, Makefile& mf) {
            return true;
        } else if (prev == '?') {
            name_end = eq_pos - 1;
            std::string name = trim(line.substr(0, name_end));
            std::string name = expand(trim(line.substr(0, name_end)), mf);
            std::string value = line.substr(eq_pos + 1);
            if (!value.empty() && value[0] == ' ') value = value.substr(1);
            if (mf.variables.find(name) == mf.variables.end()) {
@@ -649,7 +651,7 @@ bool Parser::try_parse_assignment(const std::string& line, Makefile& mf) {
        } else if (prev == '!') {
            // != shell assignment
            name_end = eq_pos - 1;
            std::string name = trim(line.substr(0, name_end));
            std::string name = expand(trim(line.substr(0, name_end)), mf);
            std::string cmd = trim(line.substr(eq_pos + 1));
            cmd = expand(cmd, mf);
            std::string value = func_shell(cmd);
@@ -661,7 +663,7 @@ bool Parser::try_parse_assignment(const std::string& line, Makefile& mf) {
        }
    }

    std::string name = trim(line.substr(0, name_end));
    std::string name = expand(trim(line.substr(0, name_end)), mf);
    std::string value = line.substr(eq_pos + 1);
    if (!value.empty() && value[0] == ' ') value = value.substr(1);