DATA_DIR override with environment variable (#333)

This commit is contained in:
Gwenhael Goavec-Merou
2023-04-17 20:55:10 +02:00
parent 1bdb117b74
commit cd8a143164
7 changed files with 85 additions and 7 deletions
+4 -4
View File
@@ -9,6 +9,7 @@
#include <string>
#include "common.hpp"
#include "jtag.hpp"
#include "device.hpp"
#include "epcq.hpp"
@@ -181,12 +182,11 @@ bool Altera::load_bridge()
return false;
}
// DATA_DIR is defined at compile time.
bitname = DATA_DIR "/openFPGALoader/spiOverJtag_";
bitname = get_shell_env_var("OPENFPGALOADER_SOJ_DIR", DATA_DIR "/openFPGALoader");
#ifdef HAS_ZLIB
bitname += _device_package + ".rbf.gz";
bitname += "/spiOverJtag_" + _device_package + ".rbf.gz";
#else
bitname += _device_package + ".rbf";
bitname += "/spiOverJtag_" + _device_package + ".rbf";
#endif
}
+21
View File
@@ -0,0 +1,21 @@
// SPDX-License-Identifier: Apache-2.0
/*
* Copyright (C) 2023 Gwenhael Goavec-Merou <[email protected]>
*/
#include "common.hpp"
#include <string>
#include <cstdlib>
/*!
* \brief return shell environment variable value
* \param[in] key: variable name
* \return variable value or ""
*/
const std::string get_shell_env_var(const char* key,
const char *def_val) noexcept {
const char* ret = std::getenv(key);
return std::string(ret ? ret : def_val);
}
+20
View File
@@ -0,0 +1,20 @@
// SPDX-License-Identifier: Apache-2.0
/*
* Copyright (C) 2023 Gwenhael Goavec-Merou <[email protected]>
*/
#ifndef SRC_COMMON_HPP_
#define SRC_COMMON_HPP_
#include <string>
/*!
* \brief return shell environment variable value
* \param[in] key: variable name
* \param[in] def_val: value to return when not found
* \return variable value or def_val
*/
const std::string get_shell_env_var(const char* key,
const char *def_val="") noexcept;
#endif // SRC_COMMON_HPP_
+3 -3
View File
@@ -13,6 +13,7 @@
#include "jtag.hpp"
#include "bitparser.hpp"
#include "common.hpp"
#include "configBitstreamParser.hpp"
#include "jedParser.hpp"
#include "mcsParser.hpp"
@@ -468,9 +469,8 @@ bool Xilinx::load_bridge()
return false;
}
// DATA_DIR is defined at compile time.
bitname = DATA_DIR "/openFPGALoader/spiOverJtag_";
bitname += _device_package + ".bit.gz";
bitname = get_shell_env_var("OPENFPGALOADER_SOJ_DIR", DATA_DIR "/openFPGALoader");
bitname += "/spiOverJtag_" + _device_package + ".bit.gz";
}
#if defined (_WIN64) || defined (_WIN32)