function (findSrc varName version varDir ) if(EXISTS ${CMAKE_SOURCE_DIR}/libsrc/${varName}) message("setting source for ${varName} to be in libsrc") set( ${varDir} "${CMAKE_SOURCE_DIR}/libsrc/${varName}" PARENT_SCOPE) set( ${varCacheName} "${CMAKE_SOURCE_DIR}/libsrc/${varName}" CACHE STRING "" FORCE ) else() set(searchName ${varName}_v${${version}}) message("searching for source for ${searchName} in ${CRTM_BASE}") string( TOLOWER ${varName} varNameLower ) find_path( TMP_DIR NAMES ${searchName} HINTS ${CMAKE_SOURCE_DIR}/../libs ${CRTM_BASE}/${version} ${CRTM_BASE}/${varName} ${CRTM_BASE}/${varName}/${version} ${CRTM_BASE}/${varNameLower} ${CRTM_BASE}/${varNameLower}/${version} ${COREPATH}/sorc $ENV{${varDir}}/libsrc $ENV{${varDir}}/lib/sorc $ENV{CORPATH}/lib/sorc ${CMAKE_SOURCE_DIR}/libsrc/${varName} ) if( NOT TMP_DIR ) message("didn't find directory") set(secondSearchName v${${version}}) find_path( TMP2_DIR NAMES ${secondSearchName} HINTS ${CRTM_BASE}/${varName} ) endif() set( varCacheName "${varDir}_SRC" ) file(GLOB f_FILES "${TMP_DIR}/${varName}_v${${version}}/*.f*" "${TMP_DIR}/${varName}_v${${version}}/*.F*") if( f_FILES ) set( ${varDir} "${TMP_DIR}/${varName}_v${${version}}" PARENT_SCOPE) set( ${varCacheName} "${TMP_DIR}/${varName}_v${${version}}" CACHE STRING "" FORCE ) else() file(GLOB f_FILES "${TMP_DIR}/${varName}_v${${version}}/src/*.f*" "${TMP_DIR}/${varName}_v${${version}}/src/*.F*") if( f_FILES ) set( ${varDir} "${TMP_DIR}/${varName}_v${${version}}/src" PARENT_SCOPE) set( ${varCacheName} "${TMP_DIR}/${varName}_v${${version}}/src" CACHE STRING "" FORCE ) else() file(GLOB f_FILES "${TMP_DIR}/${varName}_v${${version}}/libsrc/*.f*" "${TMP_DIR}/${varName}_v${${version}}/src/*.F*") if( f_FILES ) set( ${varDir} "${TMP_DIR}/${varName}_v${${version}}/libsrc" PARENT_SCOPE) set( ${varCacheName} "${TMP_DIR}/${varName}_v${${version}}/libsrc" CACHE STRING "" FORCE ) else() file(GLOB f_FILES "${TMP_DIR}/${varName}_v${${version}}/sorc/*.f*" "${TMP_DIR}/${varName}_v${${version}}/sorc/*.F*") if( f_FILES ) set( ${varDir} "${TMP_DIR}/${varName}_v${${version}}/sorc" PARENT_SCOPE) set( ${varCacheName} "${TMP_DIR}/${varName}_v${${version}}/sorc" CACHE STRING "" FORCE ) else() file(GLOB f_FILES "${TMP_DIR}/${varName}_v${${version}}/sorc/libsrc/*.f*" "${TMP_DIR}/${varName}_v${${version}}/sorc/libsrc/*.F*") if( f_FILES ) set( ${varDir} "${TMP_DIR}/${varName}_v${${version}}/sorc/libsrc" PARENT_SCOPE) set( ${varCacheName} "${TMP_DIR}/${varName}_v${${version}}/sorc/libsrc" CACHE STRING "" FORCE ) else() file(GLOB f_FILES "${TMP2_DIR}/v${${version}}/src/*.f*" "${TMP_DIR}/v${${version}}/src/*.F*") if( f_FILES ) set( ${varDir} "${TMP2_DIR}/v${${version}}/src" PARENT_SCOPE) set( ${varCacheName} "${TMP2_DIR}/v${${version}}/src" CACHE STRING "" FORCE ) endif() endif() endif() endif() endif() endif() if( NOT f_FILES ) # look for source that is of a different version message("WARNING: Did not find ${${version}} of ${varName}, looking for alternates") findOtherVersion( TMP_DIR ${varName} srcPath ${version} ) file(GLOB f_FILES "${srcPath}/*.f*" "${srcPath}/*.F*") if( f_FILES ) set( ${varDir} "${srcPath}" PARENT_SCOPE) set( ${varCacheName} "${srcPath}" CACHE STRING "" FORCE ) else() file(GLOB f_FILES "${srcPath}/src/*.f*" "${srcPath}/src/*.F*") if( f_FILES ) set( ${varDir} "${srcPath}/src" PARENT_SCOPE) set( ${varCacheName} "${srcPath}/src" CACHE STRING "" FORCE ) else() file(GLOB f_FILES "${srcPath}/libsrc/*.f*" "${srcPath}/src/*.F*") if( f_FILES ) set( ${varDir} "${srcPath}/libsrc" PARENT_SCOPE) set( ${varCacheName} "${srcPath}/libsrc" CACHE STRING "" FORCE ) else() file(GLOB f_FILES "${srcPath}/sorc/*.f*" "${srcPath}/sorc/*.F*") if( f_FILES ) set( ${varDir} "${srcPath}/sorc" PARENT_SCOPE) set( ${varCacheName} "${srcPath}/sorc" CACHE STRING "" FORCE ) else() file(GLOB f_FILES "${srcPath}/sorc/libsrc/*.f*" "${srcPath}/sorc/libsrc/*.F*") if( f_FILES ) set( ${varDir} "${srcPath}/sorc/libsrc" PARENT_SCOPE) set( ${varCacheName} "${srcPath}/sorc/libsrc" CACHE STRING "" FORCE ) endif() endif() endif() endif() endif() endif() endif() endfunction() function (findInc incName version incFile ) cmake_policy(SET CMP0011 NEW) cmake_policy(SET CMP0009 NEW) STRING(COMPARE EQUAL ${incFile} "CRTMINC" USECRTMBASE ) if(( USECRTMBASE ) AND ( CRTM_BASE )) execute_process(COMMAND find ${CRTM_BASE} -iname ${incName}_module.mod RESULT_VARIABLE res OUTPUT_VARIABLE INCFILES) # file(GLOB_RECURSE INCFILES ${CRTM_BASE}/*${CRTM_VER}*/*mod ) # file(GLOB_RECURSE INCFILES2 ${CRTM_BASE}/crtm/*${CRTM_VER}*/*/*mod ) # list(APPEND INCFILES ${INCFILES2} ) else() if(crayComp) if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel") execute_process(COMMAND find ${COREPATH}/${incName}/v${${version}}/intel -iname ${incName}_module.mod RESULT_VARIABLE res OUTPUT_VARIABLE INCFILES) else() execute_process(COMMAND find ${COREPATH}/${incName}/v${${version}}/cray -iname ${incName}_module.mod RESULT_VARIABLE res OUTPUT_VARIABLE INCFILES) endif() else() execute_process(COMMAND find ${COREPATH}/${incName} -iname ${incName}_module.mod RESULT_VARIABLE res OUTPUT_VARIABLE INCFILES) endif() if( NOT (INCFILES) ) execute_process(COMMAND find ${COREPATH}/sorc -iname ${incName}_module.mod RESULT_VARIABLE res OUTPUT_VARIABLE INCFILES) endif() endif() # message("incfiles are ${INCFILES}") if( INCFILES ) string(REGEX REPLACE "\n" ";" INCFILES ${INCFILES} ) endif() foreach( INC_FILE in ${INCFILES} ) string(REGEX MATCH ${${version}} MATCHFOUND ${INC_FILE} ) # message("matchfound is ${MATCHFOUND}, version is ${${version}} for ${INC_FILE}") if( MATCHFOUND ) message("found ${INC_FILE}") string(REGEX REPLACE "${incName}_module.mod" "" INCPATH ${INC_FILE} ) set( ${incFile} ${INCPATH} PARENT_SCOPE ) return() endif() endforeach() file(GLOB_RECURSE INCFILES ${COREPATH}/${incName}_module.mod ) list(LENGTH INCFILES numFiles) if(numFiles EQUAL 1) get_filename_component( INCPATH ${INCFILES} DIRECTORY ) else() foreach( INC_FILE in ${INCFILES} ) get_filename_component( INCPATH ${INC_FILE} DIRECTORY ) # message("WARNING: Did not find explicit version ${${version}} of ${incName} module, using un-versioned path") # set( ${incFile} ${INCPATH} PARENT_SCOPE ) # return() endforeach() endif() set( ${incFile} ${INCPATH} PARENT_SCOPE ) endfunction() function (findOtherVersion rootPath srcName srcPath newVer ) file(GLOB SRCDIRS ${${rootPath}}/${srcName}* ) foreach( SRC_DIR in ${SRCDIRS} ) string(REGEX MATCH ${srcName} MATCHFOUND ${SRC_DIR} ) if( MATCHFOUND ) set( ${srcPath} ${SRC_DIR} PARENT_SCOPE ) string(REGEX MATCH "[0-9].[0-9].[0-9]" ALTVER ${SRC_DIR} ) message("Found ${ALTVER} of ${srcName}. Proceeding with Alternative") set( ${newVer} ${ALTVER} PARENT_SCOPE ) return() endif() endforeach() endfunction()