diff --git a/CMakeLists.txt b/CMakeLists.txt index 20ce04bcfe..d34c291718 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,22 +63,28 @@ find_package(Armadillo 2.4.0 REQUIRED) # system (where size_t will be 64 bits), suggest to the user that they should # compile Armadillo with 64-bit words. if(CMAKE_SIZEOF_VOID_P EQUAL 8) - # We are on a 64-bit system. Does Armadillo have ARMA_64BIT_WORD enabled? - file(READ "${ARMADILLO_INCLUDE_DIRS}/armadillo_bits/config.hpp" ARMA_CONFIG) - string(REGEX MATCH - "[\r\n][ ]*#define ARMA_64BIT_WORD" - ARMA_HAS_64BIT_WORD_PRE - "${ARMA_CONFIG}") + # Can we open the configuration file? If not, issue a warning. + if(NOT EXISTS "${ARMADILLO_INCLUDE_DIRS}/armadillo_bits/config.hpp") + message(WARNING "Armadillo configuration file " + "(${ARMADILLO_INCLUDE_DIRS}/armadillo_bits/config.hpp) does not exist!") + else(NOT EXISTS "${ARMADILLO_INCLUDE_DIRS}/armadillo_bits/config.hpp") + # We are on a 64-bit system. Does Armadillo have ARMA_64BIT_WORD enabled? + file(READ "${ARMADILLO_INCLUDE_DIRS}/armadillo_bits/config.hpp" ARMA_CONFIG) + string(REGEX MATCH + "[\r\n][ ]*#define ARMA_64BIT_WORD" + ARMA_HAS_64BIT_WORD_PRE + "${ARMA_CONFIG}") - string(LENGTH "${ARMA_HAS_64BIT_WORD_PRE}" ARMA_HAS_64BIT_WORD) + string(LENGTH "${ARMA_HAS_64BIT_WORD_PRE}" ARMA_HAS_64BIT_WORD) - if(ARMA_HAS_64BIT_WORD EQUAL 0) - message(WARNING "This is a 64-bit system, but Armadillo was compiled " - "without 64-bit index support. Consider recompiling Armadillo with " - "ARMA_64BIT_WORD to enable 64-bit indices (large matrix support). " - "MLPACK will still work without ARMA_64BIT_WORD defined, but will not " - "scale to matrices with more than 4 billion elements.") - endif(ARMA_HAS_64BIT_WORD EQUAL 0) + if(ARMA_HAS_64BIT_WORD EQUAL 0) + message(WARNING "This is a 64-bit system, but Armadillo was compiled " + "without 64-bit index support. Consider recompiling Armadillo with " + "ARMA_64BIT_WORD to enable 64-bit indices (large matrix support). " + "MLPACK will still work without ARMA_64BIT_WORD defined, but will not " + "scale to matrices with more than 4 billion elements.") + endif(ARMA_HAS_64BIT_WORD EQUAL 0) + endif(NOT EXISTS "${ARMADILLO_INCLUDE_DIRS}/armadillo_bits/config.hpp") endif(CMAKE_SIZEOF_VOID_P EQUAL 8) # On Windows, Armadillo should be using LAPACK and BLAS but we still need to