SuperLU's CMake install is misconfigured
alexchandel opened this issue · comments
SuperLU repeatedly uses CMAKE_INSTALL_PREFIX
to assert its installation location during configuration, and even sets it.
set(CMAKE_INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib")
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
if (NOT CMAKE_INSTALL_PREFIX)
set(CMAKE_INSTALL_PREFIX /usr/local)
endif()
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/superlu.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
This is one of the most grievous CMake sins you can commit.
You must not assume CMAKE_INSTALL_PREFIX
is valid at configuration, nor set it. You must pass relative paths to install()
, because the user must be able to substitute an installation root at installation time. Instead of passing your desired absolute path to install()
, you should invoke installation as cmake --install . --prefix /usr/local
.
I think
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
and
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/superlu.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
are both ok, and can remain.
The other two issues mentioned, should be fixed. I give it a try, see #81.
@alexchandel, can you please check current master if the issue persist or confirm that my commits fixed them?