From f276bcd65030bcacabfab60ce1abd5c3f8d3950f Mon Sep 17 00:00:00 2001 From: David Minton Date: Tue, 22 Aug 2023 09:12:17 -0400 Subject: [PATCH] Made adjustments to CMake files to handle WIndows style paths better --- CMakeLists.txt | 21 +++++++++++++++------ cmake/Modules/FindNETCDF.cmake | 16 ++++++++-------- src/CMakeLists.txt | 3 ++- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4baee4020..c264fc1f3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,6 +37,7 @@ IF (NOT SKBUILD) OUTPUT_VARIABLE SKBLD_DIR OUTPUT_STRIP_TRAILING_WHITESPACE ) + FILE(TO_CMAKE_PATH ${SKBLD_DIR} SKBLD_DIR) LIST(APPEND CMAKE_MODULE_PATH "${SKBLD_DIR}/resources/cmake") MESSAGE(STATUS "Looking in ${SKBLD_DIR}/resources/cmake for CMake modules") ENDIF() @@ -52,14 +53,22 @@ ELSE() ENDIF() # Add our local modules to the module path -LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules/") +FILE(TO_CMAKE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules" LOCAL_MODULE_PATH) +LIST(APPEND CMAKE_MODULE_PATH ${LOCAL_MODULE_PATH}) # Define some directories that are important to the build -SET(SRC "${CMAKE_SOURCE_DIR}/src" CACHE FILEPATH "Location of source files") -SET(LIB "${CMAKE_SOURCE_DIR}/lib" CACHE FILEPATH "Library file location") -SET(BIN "${CMAKE_SOURCE_DIR}/bin" CACHE FILEPATH "Binary file location") -SET(MOD "${CMAKE_SOURCE_DIR}/include" CACHE FILEPATH "Include directory") -SET(PY "${CMAKE_SOURCE_DIR}/swiftest" CACHE FILEPATH "Python source directory") +SET(SRC "${CMAKE_SOURCE_DIR}/src") +SET(LIB "${CMAKE_SOURCE_DIR}/lib") +SET(BIN "${CMAKE_SOURCE_DIR}/bin") +SET(MOD "${CMAKE_SOURCE_DIR}/include") +SET(PY "${CMAKE_SOURCE_DIR}/swiftest") + +# Make sure paths are correct for Unix or Windows style +FILE(TO_CMAKE_PATH ${SRC} SRC) +FILE(TO_CMAKE_PATH ${LIB} LIB) +FILE(TO_CMAKE_PATH ${BIN} BIN) +FILE(TO_CMAKE_PATH ${MOD} MOD) +FILE(TO_CMAKE_PATH ${PY} PY) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIB}) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIB}) diff --git a/cmake/Modules/FindNETCDF.cmake b/cmake/Modules/FindNETCDF.cmake index d1987e8b1..c93c81e75 100644 --- a/cmake/Modules/FindNETCDF.cmake +++ b/cmake/Modules/FindNETCDF.cmake @@ -65,12 +65,17 @@ FIND_PATH(NETCDF_INCLUDE_DIR MESSAGE(STATUS "NetCDF-Fortran include directory: ${NETCDF_INCLUDE_DIR}") -IF (BUILD_SHARED_LIBS OR CMAKE_SYSTEM_NAME STREQUAL "Windows") +IF (BUILD_SHARED_LIBS) SET(NETCDFF "netcdff") SET(NETCDF "netcdf") ELSE () - SET(NETCDFF "libnetcdff.a") - SET(NETCDF "libnetcdf.a") + IF (CMAKE_SYSTEM_NAME STREQUAL "Windows") + SET(NETCDFF "netcdff.lib") + SET(NETCDF "netcdf.lib") + ELSE () + SET(NETCDFF "libnetcdff.a") + SET(NETCDF "libnetcdf.a") + ENDIF() ENDIF() FIND_LIBRARY(NETCDF_FORTRAN_LIBRARY @@ -134,11 +139,6 @@ ELSE () ELSE () MESSAGE(FATAL_ERROR "Cannot find nc-config") ENDIF () - ELSE () - FIND_PACKAGE(NETCDF CONFIG QUIET) - IF (NETCDF_FOUND) - set(NETCDF_LIBRARY "${netCDF_LIBRARIES}") - ENDIF() ENDIF() IF (DEFINED ENV{LIBS}) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7fc8f60dd..403336a8f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -173,7 +173,7 @@ ENDIF(USE_COARRAY) # Check to see if the compiler allows for local-spec in do concurrent statements. Set a preprocessor variable if it does IF (USE_OPENMP) - SET(TESTFILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}") + SET(TESTFILE "${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}") SET(TESTFILE "${TESTFILE}/CMakeTmp/testFortranDoConcurrentLoc.f90") FILE(WRITE "${TESTFILE}" " @@ -198,6 +198,7 @@ ENDIF (USE_OPENMP) ##################################### IF(WIN32) SET(CMAKE_INSTALL_PREFIX "C:\\Program Files") + FILE(TO_CMAKE_PATH ${CMAKE_INSTALL_PREFIX} CMAKE_INSTALL_PREFIX) ELSE() SET(CMAKE_INSTALL_PREFIX /usr/local) ENDIF(WIN32)