Skip to content
This repository was archived by the owner on Aug 28, 2024. It is now read-only.

Commit

Permalink
Made adjustments to CMake files to work with Windows
Browse files Browse the repository at this point in the history
  • Loading branch information
daminton committed Aug 21, 2023
1 parent acafd5b commit 2942e28
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 79 deletions.
12 changes: 6 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -55,11 +55,11 @@ ENDIF()
LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules/")

# Define some directories that are important to the build
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)
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(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIB})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIB})
Expand All @@ -75,5 +75,5 @@ ADD_SUBDIRECTORY(${PY})

# Add a distclean target to the Makefile
ADD_CUSTOM_TARGET(distclean
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/distclean.cmake
COMMAND ${CMAKE_COMMAND} -P "${CMAKE_SOURCE_DIR}/distclean.cmake"
)
131 changes: 68 additions & 63 deletions cmake/Modules/FindNETCDF.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -9,48 +9,51 @@

# - Finds the NetCDF libraries

FIND_PATH(NFBIN
NAMES nf-config
HINTS
ENV NETCDF_FORTRAN_HOME
ENV PATH
PATH_SUFFIXES
bin
)
IF (NOT CMAKE_SYSTEM_NAME STREQUAL "Windows")
FIND_PATH(NFBIN
NAMES nf-config
HINTS
ENV NETCDF_FORTRAN_HOME
ENV PATH
PATH_SUFFIXES
bin
)

IF (NFBIN)
SET(CMD "${NFBIN}/nf-config")
LIST(APPEND CMD "--includedir")
MESSAGE(STATUS "Searching for NetCDF-Fortran include directory using ${CMD}")
EXECUTE_PROCESS(COMMAND ${CMD} OUTPUT_VARIABLE NFINCLUDE_DIR ERROR_VARIABLE ERR RESULT_VARIABLE RES OUTPUT_STRIP_TRAILING_WHITESPACE)
IF (NFINCLUDE_DIR)
MESSAGE(STATUS "Found in ${NFINCLUDE_DIR}")
ELSE ()
MESSAGE(STATUS "Cannot execute ${CMD}")
MESSAGE(STATUS "OUTPUT: ${NFINCLUDE_DIR}")
MESSAGE(STATUS "RESULT: ${RES}")
MESSAGE(STATUS "ERROR : ${ERR}")
ENDIF ()
IF (NFBIN)
SET(CMD "${NFBIN}/nf-config")
LIST(APPEND CMD "--includedir")
MESSAGE(STATUS "Searching for NetCDF-Fortran include directory using ${CMD}")
EXECUTE_PROCESS(COMMAND ${CMD} OUTPUT_VARIABLE NFINCLUDE_DIR ERROR_VARIABLE ERR RESULT_VARIABLE RES OUTPUT_STRIP_TRAILING_WHITESPACE)
IF (NFINCLUDE_DIR)
MESSAGE(STATUS "Found in ${NFINCLUDE_DIR}")
ELSE ()
MESSAGE(STATUS "Cannot execute ${CMD}")
MESSAGE(STATUS "OUTPUT: ${NFINCLUDE_DIR}")
MESSAGE(STATUS "RESULT: ${RES}")
MESSAGE(STATUS "ERROR : ${ERR}")
ENDIF ()

SET(CMD "${NFBIN}/nf-config")
LIST(APPEND CMD "--prefix")
MESSAGE(STATUS "Searching for NetCDF-Fortran library directory using ${CMD}")
EXECUTE_PROCESS(COMMAND ${CMD} OUTPUT_VARIABLE NFPREFIX_DIR ERROR_VARIABLE ERR RESULT_VARIABLE RES OUTPUT_STRIP_TRAILING_WHITESPACE)
IF (NFPREFIX_DIR)
MESSAGE(STATUS "Found in ${NFPREFIX_DIR}")
ELSE ()
MESSAGE(STATUS "Cannot execute ${CMD}")
MESSAGE(STATUS "OUTPUT: ${NFPREFIX_DIR}")
MESSAGE(STATUS "RESULT: ${RES}")
MESSAGE(STATUS "ERROR : ${ERR}")
ENDIF ()
SET(CMD "${NFBIN}/nf-config")
LIST(APPEND CMD "--prefix")
MESSAGE(STATUS "Searching for NetCDF-Fortran library directory using ${CMD}")
EXECUTE_PROCESS(COMMAND ${CMD} OUTPUT_VARIABLE NFPREFIX_DIR ERROR_VARIABLE ERR RESULT_VARIABLE RES OUTPUT_STRIP_TRAILING_WHITESPACE)
IF (NFPREFIX_DIR)
MESSAGE(STATUS "Found in ${NFPREFIX_DIR}")
ELSE ()
MESSAGE(STATUS "Cannot execute ${CMD}")
MESSAGE(STATUS "OUTPUT: ${NFPREFIX_DIR}")
MESSAGE(STATUS "RESULT: ${RES}")
MESSAGE(STATUS "ERROR : ${ERR}")
ENDIF ()
ENDIF()
ENDIF()

MESSAGE(STATUS "\nNETCDF_INCLUDE: $ENV{NETCDF_INCLUDE}\nNETCDF_FORTRAN_HOME: $ENV{NETCDF_FORTRAN_HOME}\n")
FIND_PATH(NETCDF_INCLUDE_DIR
NAMES netcdf.mod
HINTS
${NFINCLUDE_DIR}
ENV NETCDF_INCLUDE_DIR
ENV NETCDF_INCLUDE
ENV NETCDF_FORTRAN_HOME
ENV CPATH
PATH_SUFFIXES
Expand All @@ -62,7 +65,7 @@ FIND_PATH(NETCDF_INCLUDE_DIR

MESSAGE(STATUS "NetCDF-Fortran include directory: ${NETCDF_INCLUDE_DIR}")

IF (BUILD_SHARED_LIBS)
IF (BUILD_SHARED_LIBS OR CMAKE_SYSTEM_NAME STREQUAL "Windows")
SET(NETCDFF "netcdff")
ELSE ()
SET(NETCDFF "libnetcdff.a")
Expand Down Expand Up @@ -99,37 +102,39 @@ ELSE ()
)

MESSAGE(STATUS "NetCDF-C Library: ${NETCDF_LIBRARY}")
IF (NOT CMAKE_SYSTEM_NAME STREQUAL "Windows")
FIND_PATH(NCBIN
NAMES nc-config
HINTS
ENV NETCDF_HOME
ENV PATH
PATH_SUFFIXES
bin
)

FIND_PATH(NCBIN
NAMES nc-config
HINTS
ENV NETCDF_HOME
ENV PATH
PATH_SUFFIXES
bin
)

IF (NCBIN) # The nc-config utility is available. Parse its output for unique flags
SET(CMD "${NCBIN}/nc-config")
LIST(APPEND CMD "--libs")
LIST(APPEND CMD "--static")
MESSAGE(STATUS "NetCDF configuration command: ${CMD}")
EXECUTE_PROCESS(COMMAND ${CMD} OUTPUT_VARIABLE EXTRA_FLAGS ERROR_VARIABLE ERR RESULT_VARIABLE RES OUTPUT_STRIP_TRAILING_WHITESPACE)
IF (EXTRA_FLAGS)
SEPARATE_ARGUMENTS(EXTRA_FLAGS NATIVE_COMMAND "${EXTRA_FLAGS}")
LIST(REMOVE_DUPLICATES EXTRA_FLAGS)
LIST(FILTER EXTRA_FLAGS EXCLUDE REGEX "netcdf+")
MESSAGE(STATUS "Extra library flags: ${EXTRA_FLAGS}")
IF (NCBIN) # The nc-config utility is available. Parse its output for unique flags
SET(CMD "${NCBIN}/nc-config")
LIST(APPEND CMD "--libs")
LIST(APPEND CMD "--static")
MESSAGE(STATUS "NetCDF configuration command: ${CMD}")
EXECUTE_PROCESS(COMMAND ${CMD} OUTPUT_VARIABLE EXTRA_FLAGS ERROR_VARIABLE ERR RESULT_VARIABLE RES OUTPUT_STRIP_TRAILING_WHITESPACE)
IF (EXTRA_FLAGS)
SEPARATE_ARGUMENTS(EXTRA_FLAGS NATIVE_COMMAND "${EXTRA_FLAGS}")
LIST(REMOVE_DUPLICATES EXTRA_FLAGS)
LIST(FILTER EXTRA_FLAGS EXCLUDE REGEX "netcdf+")
MESSAGE(STATUS "Extra library flags: ${EXTRA_FLAGS}")
ELSE ()
MESSAGE(STATUS "Cannot execute ${CMD}")
MESSAGE(STATUS "OUTPUT: ${EXTRA_FLAGS}")
MESSAGE(STATUS "RESUL : ${RES}")
MESSAGE(STATUS "ERROR : ${ERR}")
MESSAGE(FATAL_ERROR "Cannot configure NetCDF for static")
ENDIF ()
ELSE ()
MESSAGE(STATUS "Cannot execute ${CMD}")
MESSAGE(STATUS "OUTPUT: ${EXTRA_FLAGS}")
MESSAGE(STATUS "RESUL : ${RES}")
MESSAGE(STATUS "ERROR : ${ERR}")
MESSAGE(FATAL_ERROR "Cannot configure NetCDF for static")
MESSAGE(FATAL_ERROR "Cannot find nc-config")
ENDIF ()
ELSE ()
MESSAGE(FATAL_ERROR "Cannot find nc-config")
ENDIF ()
ENDIF()

IF (DEFINED ENV{LIBS})
STRING(STRIP "$ENV{LIBS}" LIBS)
SEPARATE_ARGUMENTS(LIBS NATIVE_COMMAND "$LIBS")
Expand Down
31 changes: 21 additions & 10 deletions cmake/Modules/FindOpenMP_Fortran.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -26,17 +26,28 @@
INCLUDE (FindPackageHandleStandardArgs)

IF (COMPILER_OPTIONS STREQUAL "Intel")
IF (USE_SIMD)
SET (OpenMP_Fortran_FLAG_CANDIDATES
"-qopenmp" # Intel
"/Qopenmp" # Intel Windows
)
MESSAGE(STATUS "CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}")
IF (CMAKE_SYSTEM_NAME STREQUAL "Windows")
IF (USE_SIMD)
SET (OpenMP_Fortran_FLAG_CANDIDATES
"/Qopenmp" # Intel Windows
)
ELSE ()
SET (OpenMP_Fortran_FLAG_CANDIDATES
"/Qopenmp-simd-" # Intel Windows
)
ENDIF (USE_SIMD)
ELSE ()
SET (OpenMP_Fortran_FLAG_CANDIDATES
"-qopenmp -qno-openmp-simd" # Intel
"/Qopenmp-simd-" # Intel Windows
)
ENDIF (USE_SIMD)
IF (USE_SIMD)
SET (OpenMP_Fortran_FLAG_CANDIDATES
"-qopenmp" # Intel
)
ELSE ()
SET (OpenMP_Fortran_FLAG_CANDIDATES
"-qopenmp -qno-openmp-simd" # Intel
)
ENDIF (USE_SIMD)
ENDIF ()
ELSEIF (COMPILER_OPTIONS STREQUAL "GNU")
IF (USE_SIMD)
SET (OpenMP_Fortran_FLAG_CANDIDATES
Expand Down

0 comments on commit 2942e28

Please sign in to comment.