Better support for MSVC/Windows in CMake
This commit is contained in:
parent
5dde4e65d3
commit
e45e7c341c
|
@ -33,6 +33,20 @@ set(NO_LAPACK 1)
|
||||||
set(NO_LAPACKE 1)
|
set(NO_LAPACKE 1)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(MSVC AND MSVC_STATIC_CRT)
|
||||||
|
set(CompilerFlags
|
||||||
|
CMAKE_CXX_FLAGS
|
||||||
|
CMAKE_CXX_FLAGS_DEBUG
|
||||||
|
CMAKE_CXX_FLAGS_RELEASE
|
||||||
|
CMAKE_C_FLAGS
|
||||||
|
CMAKE_C_FLAGS_DEBUG
|
||||||
|
CMAKE_C_FLAGS_RELEASE
|
||||||
|
)
|
||||||
|
foreach(CompilerFlag ${CompilerFlags})
|
||||||
|
string(REPLACE "/MD" "/MT" ${CompilerFlag} "${${CompilerFlag}}")
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
|
||||||
if(CMAKE_CONFIGURATION_TYPES) # multiconfig generator?
|
if(CMAKE_CONFIGURATION_TYPES) # multiconfig generator?
|
||||||
set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "" FORCE)
|
set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "" FORCE)
|
||||||
set(CMAKE_BUILD_TYPE
|
set(CMAKE_BUILD_TYPE
|
||||||
|
@ -173,23 +187,26 @@ endforeach()
|
||||||
enable_testing()
|
enable_testing()
|
||||||
add_subdirectory(utest)
|
add_subdirectory(utest)
|
||||||
|
|
||||||
if (NOT MSVC)
|
add_library(${OpenBLAS_LIBNAME}_static STATIC ${LA_SOURCES} ${LAPACKE_SOURCES} ${TARGET_OBJS})
|
||||||
#only build shared library for MSVC
|
set_target_properties(${OpenBLAS_LIBNAME}_static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
|
||||||
|
|
||||||
add_library(${OpenBLAS_LIBNAME}_static STATIC ${LA_SOURCES} ${LAPACKE_SOURCES} ${TARGET_OBJS})
|
if (MSVC)
|
||||||
|
set_target_properties(${OpenBLAS_LIBNAME}_static PROPERTIES OUTPUT_NAME ${OpenBLAS_LIBNAME}_static)
|
||||||
|
else()
|
||||||
set_target_properties(${OpenBLAS_LIBNAME}_static PROPERTIES OUTPUT_NAME ${OpenBLAS_LIBNAME})
|
set_target_properties(${OpenBLAS_LIBNAME}_static PROPERTIES OUTPUT_NAME ${OpenBLAS_LIBNAME})
|
||||||
set_target_properties(${OpenBLAS_LIBNAME}_static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
|
endif()
|
||||||
|
|
||||||
|
if (NOT MSVC)
|
||||||
if(SMP)
|
if(SMP)
|
||||||
target_link_libraries(${OpenBLAS_LIBNAME} pthread)
|
target_link_libraries(${OpenBLAS_LIBNAME} pthread)
|
||||||
target_link_libraries(${OpenBLAS_LIBNAME}_static pthread)
|
target_link_libraries(${OpenBLAS_LIBNAME}_static pthread)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
#build test and ctest
|
#build test and ctest
|
||||||
add_subdirectory(test)
|
add_subdirectory(test)
|
||||||
if(NOT NO_CBLAS)
|
if(NOT NO_CBLAS)
|
||||||
add_subdirectory(ctest)
|
add_subdirectory(ctest)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set_target_properties(${OpenBLAS_LIBNAME} PROPERTIES
|
set_target_properties(${OpenBLAS_LIBNAME} PROPERTIES
|
||||||
|
@ -247,27 +264,23 @@ install(TARGETS ${OpenBLAS_LIBNAME}
|
||||||
|
|
||||||
message(STATUS "Generating f77blas.h in ${CMAKE_INSTALL_INCLUDEDIR}")
|
message(STATUS "Generating f77blas.h in ${CMAKE_INSTALL_INCLUDEDIR}")
|
||||||
|
|
||||||
ADD_CUSTOM_TARGET(genf77blas
|
set(F77BLAS_H ${CMAKE_BINARY_DIR}/generated/f77blas.h)
|
||||||
ALL
|
file(WRITE ${F77BLAS_H} "#ifndef OPENBLAS_F77BLAS_H\n")
|
||||||
COMMAND ${AWK} 'BEGIN{print \"\#ifndef OPENBLAS_F77BLAS_H\" \; print \"\#define OPENBLAS_F77BLAS_H\" \; print \"\#include \\"openblas_config.h\\" \"}; NF {print}; END{print \"\#endif\"}' ${CMAKE_CURRENT_SOURCE_DIR}/common_interface.h > ${CMAKE_BINARY_DIR}/f77blas.h
|
file(APPEND ${F77BLAS_H} "#define OPENBLAS_F77BLAS_H\n")
|
||||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/config.h
|
file(APPEND ${F77BLAS_H} "#include \"openblas_config.h\"\n")
|
||||||
)
|
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/common_interface.h COMMON_INTERFACE_H_CONTENTS)
|
||||||
add_dependencies(genf77blas ${OpenBLAS_LIBNAME})
|
file(APPEND ${F77BLAS_H} "${COMMON_INTERFACE_H_CONTENTS}\n")
|
||||||
|
file(APPEND ${F77BLAS_H} "#endif")
|
||||||
install (FILES ${CMAKE_BINARY_DIR}/f77blas.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
install (FILES ${F77BLAS_H} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
|
|
||||||
if(NOT NO_CBLAS)
|
if(NOT NO_CBLAS)
|
||||||
message (STATUS "Generating cblas.h in ${CMAKE_INSTALL_INCLUDEDIR}")
|
message (STATUS "Generating cblas.h in ${CMAKE_INSTALL_INCLUDEDIR}")
|
||||||
|
|
||||||
ADD_CUSTOM_TARGET(gencblas
|
set(CBLAS_H ${CMAKE_BINARY_DIR}/generated/cblas.h)
|
||||||
ALL
|
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/cblas.h CBLAS_H_CONTENTS)
|
||||||
COMMAND ${SED} 's/common/openblas_config/g' ${CMAKE_CURRENT_SOURCE_DIR}/cblas.h > "${CMAKE_BINARY_DIR}/cblas.tmp"
|
string(REPLACE "common" "openblas_config" CBLAS_H_CONTENTS_NEW "${CBLAS_H_CONTENTS}")
|
||||||
COMMAND cp "${CMAKE_BINARY_DIR}/cblas.tmp" "${CMAKE_BINARY_DIR}/cblas.h"
|
file(WRITE ${CBLAS_H} "${CBLAS_H_CONTENTS_NEW}")
|
||||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/cblas.h
|
install (FILES ${CBLAS_H} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
)
|
|
||||||
add_dependencies(gencblas ${OpenBLAS_LIBNAME})
|
|
||||||
|
|
||||||
install (FILES ${CMAKE_BINARY_DIR}/cblas.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT NO_LAPACKE)
|
if(NOT NO_LAPACKE)
|
||||||
|
@ -282,9 +295,7 @@ if(NOT NO_LAPACKE)
|
||||||
install (FILES ${CMAKE_BINARY_DIR}/lapacke_mangling.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
install (FILES ${CMAKE_BINARY_DIR}/lapacke_mangling.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT MSVC)
|
install (TARGETS ${OpenBLAS_LIBNAME}_static DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
install (TARGETS ${OpenBLAS_LIBNAME}_static DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
include(FindPkgConfig QUIET)
|
include(FindPkgConfig QUIET)
|
||||||
if(PKG_CONFIG_FOUND)
|
if(PKG_CONFIG_FOUND)
|
||||||
|
|
Loading…
Reference in New Issue