mirror of
https://github.com/verilator/verilator.git
synced 2025-04-25 10:06:54 +00:00
Internals: Use common wrapper for setenv
This commit is contained in:
parent
45e8ed6b49
commit
202a8bc3bb
@ -303,19 +303,28 @@ void V3Options::unlinkRegexp(const string& dir, const string& regexp) {
|
|||||||
//######################################################################
|
//######################################################################
|
||||||
// Environment
|
// Environment
|
||||||
|
|
||||||
string V3Options::getenvStr(const char* envvar, const char* defaultValue) {
|
string V3Options::getenvStr(const string& envvar, const string& defaultValue) {
|
||||||
if (const char* envvalue = getenv(envvar)) {
|
if (const char* envvalue = getenv(envvar.c_str())) {
|
||||||
return envvalue;
|
return envvalue;
|
||||||
} else {
|
} else {
|
||||||
return defaultValue;
|
return defaultValue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void V3Options::setenvStr(const string& envvar, const string& value, const string& why) {
|
||||||
|
if (why != "") {
|
||||||
|
UINFO(1,"export "<<envvar<<"="<<value<<" # "<<why<<endl);
|
||||||
|
} else {
|
||||||
|
UINFO(1,"export "<<envvar<<"="<<value<<endl);
|
||||||
|
}
|
||||||
|
setenv(envvar.c_str(),value.c_str(),true);
|
||||||
|
}
|
||||||
|
|
||||||
string V3Options::getenvSYSTEMC() {
|
string V3Options::getenvSYSTEMC() {
|
||||||
string var = getenvStr("SYSTEMC","");
|
string var = getenvStr("SYSTEMC","");
|
||||||
if (var == "" && string(DEFENV_SYSTEMC) != "") {
|
if (var == "" && string(DEFENV_SYSTEMC) != "") {
|
||||||
var = DEFENV_SYSTEMC;
|
var = DEFENV_SYSTEMC;
|
||||||
UINFO(1,"export SYSTEMC="<<var<<" # Hardcoded at build time"<<endl);
|
setenvStr("SYSTEMC", var, "Hardcoded at build time");
|
||||||
setenv("SYSTEMC", var.c_str(), false);
|
|
||||||
}
|
}
|
||||||
// Only correct or check it if we really need the value
|
// Only correct or check it if we really need the value
|
||||||
if ((v3Global.opt.systemPerl() || v3Global.opt.systemC())
|
if ((v3Global.opt.systemPerl() || v3Global.opt.systemC())
|
||||||
@ -327,12 +336,12 @@ string V3Options::getenvSYSTEMC() {
|
|||||||
}
|
}
|
||||||
return var;
|
return var;
|
||||||
}
|
}
|
||||||
|
|
||||||
string V3Options::getenvSYSTEMC_ARCH() {
|
string V3Options::getenvSYSTEMC_ARCH() {
|
||||||
string var = getenvStr("SYSTEMC_ARCH","");
|
string var = getenvStr("SYSTEMC_ARCH","");
|
||||||
if (var == "" && string(DEFENV_SYSTEMC_ARCH) != "") {
|
if (var == "" && string(DEFENV_SYSTEMC_ARCH) != "") {
|
||||||
var = DEFENV_SYSTEMC_ARCH;
|
var = DEFENV_SYSTEMC_ARCH;
|
||||||
UINFO(1,"export SYSTEMC_ARCH="<<var<<" # Hardcoded at build time"<<endl);
|
setenvStr("SYSTEMC_ARCH", var, "Hardcoded at build time");
|
||||||
setenv("SYSTEMC_ARCH", var.c_str(), false);
|
|
||||||
}
|
}
|
||||||
if (var == "") {
|
if (var == "") {
|
||||||
struct utsname uts;
|
struct utsname uts;
|
||||||
@ -341,17 +350,16 @@ string V3Options::getenvSYSTEMC_ARCH() {
|
|||||||
if (wildmatch(sysname.c_str(), "*solaris*")) { var = "gccsparcOS5"; }
|
if (wildmatch(sysname.c_str(), "*solaris*")) { var = "gccsparcOS5"; }
|
||||||
else if (wildmatch(sysname.c_str(), "*cygwin*")) { var ="cygwin"; }
|
else if (wildmatch(sysname.c_str(), "*cygwin*")) { var ="cygwin"; }
|
||||||
else { var = "linux"; }
|
else { var = "linux"; }
|
||||||
UINFO(1,"export SYSTEMC_ARCH="<<var<<" # From sysname '"<<sysname<<"'"<<endl);
|
setenvStr("SYSTEMC_ARCH", var,"From sysname '"+sysname+"'");
|
||||||
setenv("SYSTEMC_ARCH", var.c_str(), false);
|
|
||||||
}
|
}
|
||||||
return var;
|
return var;
|
||||||
}
|
}
|
||||||
|
|
||||||
string V3Options::getenvSYSTEMPERL() {
|
string V3Options::getenvSYSTEMPERL() {
|
||||||
string var = getenvStr("SYSTEMPERL","");
|
string var = getenvStr("SYSTEMPERL","");
|
||||||
if (var == "" && string(DEFENV_SYSTEMPERL) != "") {
|
if (var == "" && string(DEFENV_SYSTEMPERL) != "") {
|
||||||
var = DEFENV_SYSTEMPERL;
|
var = DEFENV_SYSTEMPERL;
|
||||||
UINFO(1,"export SYSTEMPERL="<<var<<" # Hardcoded at build time"<<endl);
|
setenvStr("SYSTEMC_PERL", var, "Hardcoded at build time");
|
||||||
setenv("SYSTEMC_PERL", var.c_str(), false);
|
|
||||||
}
|
}
|
||||||
// Only correct or check it if we really need the value
|
// Only correct or check it if we really need the value
|
||||||
if ((v3Global.opt.systemPerl() || v3Global.opt.trace()) && !v3Global.opt.lintOnly()) {
|
if ((v3Global.opt.systemPerl() || v3Global.opt.trace()) && !v3Global.opt.lintOnly()) {
|
||||||
@ -359,8 +367,7 @@ string V3Options::getenvSYSTEMPERL() {
|
|||||||
string testdir = V3Options::getenvW() + "/hw/utils/perltools/SystemC"; // Hack for internal testing
|
string testdir = V3Options::getenvW() + "/hw/utils/perltools/SystemC"; // Hack for internal testing
|
||||||
if (V3Options::fileStatDir(testdir)) {
|
if (V3Options::fileStatDir(testdir)) {
|
||||||
var = testdir;
|
var = testdir;
|
||||||
UINFO(1,"export SYSTEMPERL="<<var<<endl);
|
setenvStr ("SYSTEMPERL", var, "From W");
|
||||||
setenv ("SYSTEMPERL", var.c_str(), false);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (var == "") {
|
if (var == "") {
|
||||||
@ -374,12 +381,12 @@ string V3Options::getenvSYSTEMPERL() {
|
|||||||
}
|
}
|
||||||
return var;
|
return var;
|
||||||
}
|
}
|
||||||
|
|
||||||
string V3Options::getenvVERILATOR_ROOT() {
|
string V3Options::getenvVERILATOR_ROOT() {
|
||||||
string var = getenvStr("VERILATOR_ROOT","");
|
string var = getenvStr("VERILATOR_ROOT","");
|
||||||
if (var == "" && string(DEFENV_VERILATOR_ROOT) != "") {
|
if (var == "" && string(DEFENV_VERILATOR_ROOT) != "") {
|
||||||
var = DEFENV_VERILATOR_ROOT;
|
var = DEFENV_VERILATOR_ROOT;
|
||||||
UINFO(1,"export VERILATOR_ROOT="<<var<<" # Hardcoded at build time"<<endl);
|
setenvStr("VERILATOR_ROOT", var.c_str(), "Hardcoded at build time");
|
||||||
setenv("VERILATOR_ROOT", var.c_str(), false);
|
|
||||||
}
|
}
|
||||||
if (var == "") {
|
if (var == "") {
|
||||||
v3fatal("$VERILATOR_ROOT needs to be in environment\n");
|
v3fatal("$VERILATOR_ROOT needs to be in environment\n");
|
||||||
|
@ -168,7 +168,8 @@ class V3Options {
|
|||||||
void coverage(bool flag) { m_coverageLine = m_coverageToggle = m_coverageUser = flag; }
|
void coverage(bool flag) { m_coverageLine = m_coverageToggle = m_coverageUser = flag; }
|
||||||
bool onoff(const char* sw, const char* arg, bool& flag);
|
bool onoff(const char* sw, const char* arg, bool& flag);
|
||||||
static bool wildmatchi(const char* s, const char* p);
|
static bool wildmatchi(const char* s, const char* p);
|
||||||
static string getenvStr(const char* envvar, const char* defaultValue);
|
static string getenvStr(const string& envvar, const string& defaultValue);
|
||||||
|
static void setenvStr(const string& envvar, const string& value, const string& why);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// CREATORS
|
// CREATORS
|
||||||
|
Loading…
Reference in New Issue
Block a user