SET(CMAKE_Fortran_MODULE_DIRECTORY ${PROJECT_BINARY_DIR}/fmodules CACHE PATH "Directory for Fortran modules") # --------------------------------------------------------------------- # # -- Compilation Scattered2DDataInterpolator with external libraries -- # # NETCDF, CSA , NN # --------------------------------------------------------------------- # MESSAGE(STATUS "Elmer/Ice package: Looking for [NN] & [CSA] libraries") #FIND_PACKAGE(NETCDF) #FIND_PACKAGE(PHDF5) IF(NETCDF_FOUND) SET(WITH_NN TRUE) SET(WITH_CSA TRUE) FIND_PACKAGE(NN) FIND_PACKAGE(CSA) IF(CSA_FOUND AND NN_FOUND) SET(HAVE_NN TRUE) SET(HAVE_CSA TRUE) MARK_AS_ADVANCED(HAVE_NN HAVE_CSA) MESSAGE(STATUS " NN & CSA: " "${NN_FOUND} & ${CSA_FOUND}") MESSAGE(STATUS " NN_INC: " "${NN_INCLUDE_DIR}") MESSAGE(STATUS " NN_LIB: " "${NN_LIBRARY}") MESSAGE(STATUS " CSA_INC: " "${CSA_INCLUDE_DIR}") MESSAGE(STATUS " CSA_LIB: " "${CSA_LIBRARY}") MESSAGE(STATUS "Compile Scattered2DDataInterpolator") INCLUDE_DIRECTORIES("${PROJECT_BINARY_DIR}") ELSE() MESSAGE(STATUS "Library not found: >NN_FOUND< = ${NN_FOUND} and/or >CSA_FOUND< = ${CSA_FOUND}") MESSAGE(WARNING " \n Missing: >NN_INCLUDE_DIR< , >NN_LIBRARY< , >CSA_INCLUDE_DIR< , >CSA_LIBRARY< \n to compile ScatteredDatainterpolator") RETURN() ENDIF() ELSE() MESSAGE(WARNING " \n Missing: >NETCDF_INCLUDE_DIR< , >NETCDF_LIBRARY< ,>NETCDFF_LIBRARY<,\n >NN_INCLUDE_DIR< , >NN_LIBRARY< , >CSA_INCLUDE_DIR< , >CSA_LIBRARY< \n to compile ScatteredDatainterpolator") RETURN() ENDIF(NETCDF_FOUND) MESSAGE(STATUS "------------------------------------------------") #-- STEP1: csa_interpolate_points.o SET(FNAME csa_interpolate_points.c) GET_FILENAME_COMPONENT(BASENAME ${FNAME} NAME_WE) SET(CMAKE_C_COMPILER ${MPI_C_COMPILER}) INCLUDE_DIRECTORIES(${CSA_INCLUDE_DIR}) ADD_LIBRARY(${BASENAME} OBJECT ${FNAME}) SET_TARGET_PROPERTIES(${BASENAME} PROPERTIES PREFIX "") #-- STEP2: Scattered2D_FInterface.o SET(FNAME2 Scattered2D_FInterface.F90) GET_FILENAME_COMPONENT(BASENAME2 ${FNAME2} NAME_WE) ADD_LIBRARY(${BASENAME2} OBJECT ${FNAME2}) SET_TARGET_PROPERTIES(${BASENAME2} PROPERTIES PREFIX "") SET_TARGET_PROPERTIES(${BASENAME2} PROPERTIES LINKER_LANGUAGE Fortran) #-- STEP3: Scattered2DDataInterpolator SET(FNAME3 Scattered2DDataInterpolator.F90) GET_FILENAME_COMPONENT(BASENAME3 ${FNAME3} NAME_WE) #-- NN & CSA ADD_LIBRARY(nn STATIC IMPORTED) SET_PROPERTY(TARGET nn PROPERTY IMPORTED_LOCATION ${NN_LIBRARY}) ADD_LIBRARY(csa STATIC IMPORTED) SET_PROPERTY(TARGET csa PROPERTY IMPORTED_LOCATION ${CSA_LIBRARY}) #-- Netcdf & NETCDFF INCLUDE_DIRECTORIES(${NETCDF_INCLUDE_DIR}) #-- Scattered2DDataInterpolator ADD_LIBRARY(${BASENAME3} SHARED $ $ ${FNAME3}) TARGET_LINK_LIBRARIES(${BASENAME3} Elmer::MPI_Fortran) IF(PHDF5_FOUND) INCLUDE_DIRECTORIES(${PHDF5_INCLUDE_DIR}) TARGET_LINK_LIBRARIES(${BASENAME3} csa nn ${NETCDF_LIBRARIES} ${PHDF5_LIBRARIES} elmersolver) ELSE() TARGET_LINK_LIBRARIES(${BASENAME3} csa nn ${NETCDF_LIBRARIES} elmersolver) ENDIF(PHDF5_FOUND) #-- Library object SET_TARGET_PROPERTIES(${BASENAME3} PROPERTIES PREFIX "") SET_TARGET_PROPERTIES(${BASENAME3} PROPERTIES LINKER_LANGUAGE Fortran) #-- Install INSTALL(TARGETS ${BASENAME3} LIBRARY DESTINATION "share/elmersolver/lib" RUNTIME DESTINATION "share/elmersolver/lib")