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

Commit

Permalink
Rearranged the CMake build process to first build source code into a …
Browse files Browse the repository at this point in the history
…library and link the driver executable to the library.
  • Loading branch information
MintoDA1 authored and MintoDA1 committed Aug 4, 2023
1 parent dddeddc commit 2b3d7c0
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 32 deletions.
13 changes: 6 additions & 7 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
CMAKE_MINIMUM_REQUIRED(VERSION 3.20.1)
# Get version stored in text file
FILE(READ "version.txt" VERSION)
PROJECT(Swiftest VERSION ${VERSION} LANGUAGES Fortran)
PROJECT(swiftest VERSION ${VERSION} LANGUAGES Fortran)

INCLUDE(CTest)

Expand Down Expand Up @@ -58,15 +58,14 @@ INCLUDE_DIRECTORIES($ENV{NETCDF_FORTRAN_HOME}/include;$ENV{NETCDF_HOME}/include)
# Define the actual files and folders that make up the build
############################################################

# Define the executable name
SET(SWIFTEST_DRIVER swiftest_driver)


# Define some directories
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(TEST ${CMAKE_SOURCE_DIR}/test)
#SET(TEST ${CMAKE_SOURCE_DIR}/test)
SET(PY ${CMAKE_SOURCE_DIR}/python/swiftest)

FUNCTION(REPLACE_VERSION IN_FILE LANGUAGE)
Expand Down Expand Up @@ -106,9 +105,9 @@ SET(CMAKE_Fortran_MODULE_DIRECTORY ${MOD})
# The source for the SWIFTEST binary and have it placed in the bin folder
ADD_SUBDIRECTORY(${SRC} ${BIN})

# Set up test directory
ENABLE_TESTING()
ADD_SUBDIRECTORY(${TEST})
# # Set up test directory
# ENABLE_TESTING()
# ADD_SUBDIRECTORY(${TEST})

# Add a distclean target to the Makefile
ADD_CUSTOM_TARGET(distclean
Expand Down
62 changes: 37 additions & 25 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ SET(FAST_MATH_FILES
${SRC}/symba/symba_util.f90
${SRC}/walltime/walltime_implementations.f90
${SRC}/whm/whm_util.f90
${SRC}/swiftest/swiftest_driver.f90

)

SET(COARRAY_FILES
Expand All @@ -92,47 +92,43 @@ SET(COARRAY_FILES
${SRC}/rmvs/rmvs_coarray.f90
)

IF(USE_COARRAY)
set(SWIFTEST_src ${COARRAY_FILES} ${FAST_MATH_FILES} ${STRICT_MATH_FILES})
ELSE()
set(SWIFTEST_src ${FAST_MATH_FILES} ${STRICT_MATH_FILES})
ENDIF(USE_COARRAY)
SET(DRIVER_src ${SRC}/swiftest/swiftest_driver.f90)

# Define the executable in terms of the source files
ADD_EXECUTABLE(${SWIFTEST_DRIVER} ${SWIFTEST_src})
# Combine all source files (includ)
set(SWIFTEST_src ${FAST_MATH_FILES} ${STRICT_MATH_FILES})
IF(USE_COARRAY)
set(SWIFTEST_src ${SWIFTEST_src} ${COARRAY_FILES} )
ENDIF ()

# Turn preprocessor on for all files
SET_SOURCE_FILES_PROPERTIES(${SWIFTEST_src} PROPERTIES Fortran_PREPROCESS ON)
SET_SOURCE_FILES_PROPERTIES(${SWIFTEST_src} ${DRIVER_src} PROPERTIES Fortran_PREPROCESS ON)

# Create a library from the source files, except the driver
ADD_LIBRARY(swiftest ${SWIFTEST_src})

# Define the executable name
SET(SWIFTEST_DRIVER swiftest_driver)
ADD_EXECUTABLE(${SWIFTEST_DRIVER} ${DRIVER_src})

#####################################################
# Add the needed libraries and special compiler flags
#####################################################

TARGET_LINK_LIBRARIES(${SWIFTEST_DRIVER} PRIVATE ${NETCDF_FORTRAN_LIBRARIES} ${NETCDF_LIBRARIES} $ENV{LIBS})
TARGET_LINK_LIBRARIES(${SWIFTEST_DRIVER} PRIVATE swiftest ${NETCDF_FORTRAN_LIBRARIES} ${NETCDF_LIBRARIES} $ENV{LIBS})

IF(USE_OPENMP)
SET_PROPERTY(TARGET ${SWIFTEST_DRIVER} APPEND_STRING PROPERTY COMPILE_FLAGS "${OpenMP_Fortran_FLAGS} ")
SET_PROPERTY(TARGET ${SWIFTEST_DRIVER} APPEND_STRING PROPERTY LINK_FLAGS "${OpenMP_Fortran_FLAGS} ")
SET_PROPERTY(TARGET swiftest ${SWIFTEST_DRIVER} APPEND_STRING PROPERTY COMPILE_FLAGS "${OpenMP_Fortran_FLAGS} ")
SET_PROPERTY(TARGET swiftest ${SWIFTEST_DRIVER} APPEND_STRING PROPERTY LINK_FLAGS "${OpenMP_Fortran_FLAGS} ")
ENDIF(USE_OPENMP)

IF(USE_COARRAY)
TARGET_COMPILE_DEFINITIONS(swiftest PRIVATE -DCOARRAY)
TARGET_COMPILE_DEFINITIONS(${SWIFTEST_DRIVER} PRIVATE -DCOARRAY)
SET_PROPERTY(TARGET ${SWIFTEST_DRIVER} APPEND_STRING PROPERTY COMPILE_FLAGS "${Coarray_Fortran_FLAGS} ")
SET_PROPERTY(TARGET ${SWIFTEST_DRIVER} APPEND_STRING PROPERTY LINK_FLAGS "${Coarray_Fortran_FLAGS} ")
SET_PROPERTY(TARGET swiftest ${SWIFTEST_DRIVER} APPEND_STRING PROPERTY COMPILE_FLAGS "${Coarray_Fortran_FLAGS} ")
SET_PROPERTY(TARGET swiftest ${SWIFTEST_DRIVER} APPEND_STRING PROPERTY LINK_FLAGS "${Coarray_Fortran_FLAGS} ")
ENDIF(USE_COARRAY)


#####################################
# Tell how to install this executable
#####################################

IF(WIN32)
SET(CMAKE_INSTALL_PREFIX "C:\\Program Files")
ELSE()
SET(CMAKE_INSTALL_PREFIX /usr/local)
ENDIF(WIN32)
INSTALL(TARGETS ${SWIFTEST_DRIVER} RUNTIME DESTINATION bin)


#Set strict vs fast math flags
STRING(TOUPPER "${CMAKE_BUILD_TYPE}" BT)
Expand Down Expand Up @@ -169,3 +165,19 @@ end program TestDoConcurrentLoc
ENDIF (USE_OPENMP)


#####################################
# Tell how to install this executable
#####################################
IF(WIN32)
SET(CMAKE_INSTALL_PREFIX "C:\\Program Files")
ELSE()
SET(CMAKE_INSTALL_PREFIX /usr/local)
ENDIF(WIN32)
INSTALL(TARGETS swiftest ${SWIFTEST_DRIVER}
LIBRARY DESTINATION ${LIB}
ARCHIVE DESTINATION ${LIB}
RUNTIME DESTINATION ${BIN}
)



0 comments on commit 2b3d7c0

Please sign in to comment.