From 9d0edabb778b3a0e187222ab806780396e7ccb4f Mon Sep 17 00:00:00 2001 From: Izaak Beekman Date: Mon, 21 Jan 2019 15:38:25 -0500 Subject: [PATCH] Fix setting/detecting Fortran name-mangling - PSBLAS is setting LowerUnderscore on windows without this --- CMakeLists.txt | 5 +++-- cmake/CapitalizeString.cmake | 7 +++++++ 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 cmake/CapitalizeString.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 61b9ceceb..036c0f19c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,7 @@ # Set oldest allowable CMake version #----------------------------------- cmake_minimum_required(VERSION 3.10) -cmake_policy(VERSION 3.10.0...3.12.4) +cmake_policy(VERSION 3.11.1...3.13.3) set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") @@ -70,8 +70,9 @@ endif() #------------------------------------ # Fortran name mangling introspection #------------------------------------ +include("${CMAKE_CURRENT_LIST_DIR}/cmake/CapitalizeString.cmake") include(FortranCInterface) -string(TOUPPER ${FortranCInterface_GLOBAL__CASE} fc_case) +CapitalizeString(${FortranCInterface_GLOBAL__CASE} fc_case) message(STATUS "Name mangling capitalization: ${fc_case}") message(STATUS "Name mangling fortran global suffix underscore: ${FortranCInterface_GLOBAL__SUFFIX}") if(FortranCInterface_GLOBAL__SUFFIX STREQUAL "") diff --git a/cmake/CapitalizeString.cmake b/cmake/CapitalizeString.cmake new file mode 100644 index 000000000..ae50b4745 --- /dev/null +++ b/cmake/CapitalizeString.cmake @@ -0,0 +1,7 @@ +function(CapitalizeString string output_variable) + string(TOUPPER "${string}" _upper_string) + string(TOLOWER "${string}" _lower_string) + string(SUBSTRING "${_upper_string}" 0 1 _start) + string(SUBSTRING "${_lower_string}" 1 -1 _end) + set(${output_variable} "${_start}${_end}" PARENT_SCOPE) +endfunction()