Skip to content

Commit

Permalink
search licence in every knows env var
Browse files Browse the repository at this point in the history
  • Loading branch information
a-zakir committed Feb 27, 2024
1 parent 73998a2 commit 55073ca
Showing 1 changed file with 47 additions and 18 deletions.
65 changes: 47 additions & 18 deletions src/cpp/multisolver_interface/environment.cc
Original file line number Diff line number Diff line change
Expand Up @@ -317,29 +317,58 @@ bool LoadXpressDynamicLibrary(std::string& xpresspath) {
return ret;
}

/** init XPRESS environment */
bool initXpressEnv(bool verbose, int xpress_oem_license_key) {
std::string xpresspath;
bool status = LoadXpressDynamicLibrary(xpresspath);
if (!status) {
return false;
int loadLicence(const std::string& lib_path, bool verbose) {
//-----first let xpress find the licence
int code = XPRSinit(nullptr);
if (!code) {
return code;
}

std::string xpress_from_env =
GetXpressVarFromEnvironmentVariables("XPRESS", false);
if (xpress_from_env == "") {
if (verbose) {
std::cout << "Warning: Environment variable XPRESS undefined.\n";
// search for XPAUTH_PATH env var
const auto XPAUTH_PATH = "XPAUTH_PATH";
std::string xpauth_path_env_var =
GetXpressVarFromEnvironmentVariables(XPAUTH_PATH, false);
if (!xpauth_path_env_var.empty()) {
code = XPRSinit(xpauth_path_env_var.c_str());
if (!code) {
return code;
}
if (xpresspath.empty()) {
std::cout << "Error: Environment variable XPRESSDIR undefined.\n";
return false;
} else {
if (verbose) {
std::cout << "Warning: Environment variable " << XPAUTH_PATH
<< " undefined.\n";
}
xpresspath =
(std::filesystem::path(xpresspath).parent_path() / "bin").string();
}

//-- XPRESS env var
const auto XPRESS = "XPRESS";

std::string xpress_env_var =
GetXpressVarFromEnvironmentVariables(XPRESS, false);
if (!xpress_env_var.empty()) {
code = XPRSinit(xpress_env_var.c_str());
if (!code) {
return code;
}
} else {
xpresspath = std::filesystem::path(xpress_from_env).string();
if (verbose) {
std::cout << "Warning: Environment variable " << XPRESS
<< " undefined.\n";
}
}
// --- in xpress bin dir
auto xpress_bin_dir =
(std::filesystem::path(lib_path).parent_path() / "bin").string();
code = XPRSinit(xpress_bin_dir.c_str());
return code;
}

/** init XPRESS environment */
bool initXpressEnv(bool verbose, int xpress_oem_license_key) {
std::string xpresspath;
bool status = LoadXpressDynamicLibrary(xpresspath);
if (!status) {
return false;
}

int code;
Expand All @@ -351,7 +380,7 @@ bool initXpressEnv(bool verbose, int xpress_oem_license_key) {
<< "\n";
}

code = XPRSinit(xpresspath.c_str());
code = loadLicence(xpresspath, false);

if (!code) {
// XPRSbanner informs about Xpress version, options and error messages
Expand Down

0 comments on commit 55073ca

Please sign in to comment.