diff --git a/CHANGES/v2.3.md b/CHANGES/v2.3.md index e079126cff7024ad79980069c64b18562ade2ec4..d6e37d2177247d90f202d4348601c9b91849549e 100644 --- a/CHANGES/v2.3.md +++ b/CHANGES/v2.3.md @@ -265,6 +265,7 @@ For users: For developers: - Small fix in LDFLAGS when enabling coverage. - Fixed order of flags in tests for static linking done by configure (see \issue{407}). +- Fixed the way paths are hardcoded so as to facilitate conda packaging (see \issue{416}). */ diff --git a/src/config/Config.inc.in b/src/config/Config.inc.in index 6ffce32155c2a9f1d8a9851ae7095d8a2ee22d6b..91cac0d3ffe4422466dbdfa15520890276ebbbf5 100644 --- a/src/config/Config.inc.in +++ b/src/config/Config.inc.in @@ -28,8 +28,16 @@ namespace PLMD { namespace config { +// This is a fix to allow conda to correctly replace paths in binary files. +// These functions should not be static or they will be optimized away! +const char* plumed_root(){return "@PLUMED_ROOT@";} +const char* plumed_soext(){return "@SOEXT@";} +const char* plumed_htmldir(){return "@htmldir@";} +const char* plumed_includedir(){return "@includedir@";} +const char* plumed_program_name(){return "@program_name@";} + std::string getSoExt() { - return "@SOEXT@"; + return plumed_soext(); } bool isInstalled() { @@ -40,7 +48,7 @@ std::string getPlumedRoot() { char *env = std::getenv("PLUMED_ROOT"); std::string ss; if( env == NULL) { - ss="@PLUMED_ROOT@"; + ss=plumed_root(); } else { ss=std::string( env ); } @@ -52,7 +60,7 @@ std::string getPlumedHtmldir() { char *env = std::getenv("PLUMED_HTMLDIR"); std::string ss; if( env == NULL) { - ss="@htmldir@"; + ss=plumed_htmldir(); } else { ss=std::string( env ); } @@ -64,7 +72,7 @@ std::string getPlumedIncludedir() { char *env = std::getenv("PLUMED_INCLUDEDIR"); std::string ss; if( env == NULL) { - ss="@includedir@"; + ss=plumed_includedir(); } else { ss=std::string( env ); } @@ -76,7 +84,7 @@ std::string getPlumedProgramName() { char *env = std::getenv("PLUMED_PROGRAM_NAME"); std::string ss; if( env == NULL) { - ss="@program_name@"; + ss=plumed_program_name(); } else { ss=std::string( env ); }