forked from lijiext/lammps
72 lines
3.1 KiB
CMake
72 lines
3.1 KiB
CMake
# Utility functions
|
|
function(list_to_bulletpoints result)
|
|
list(REMOVE_AT ARGV 0)
|
|
set(temp "")
|
|
foreach(item ${ARGV})
|
|
set(temp "${temp}* ${item}\n")
|
|
endforeach()
|
|
set(${result} "${temp}" PARENT_SCOPE)
|
|
endfunction(list_to_bulletpoints)
|
|
|
|
function(validate_option name values)
|
|
string(TOLOWER ${${name}} needle_lower)
|
|
string(TOUPPER ${${name}} needle_upper)
|
|
list(FIND ${values} ${needle_lower} IDX_LOWER)
|
|
list(FIND ${values} ${needle_upper} IDX_UPPER)
|
|
if(${IDX_LOWER} LESS 0 AND ${IDX_UPPER} LESS 0)
|
|
list_to_bulletpoints(POSSIBLE_VALUE_LIST ${${values}})
|
|
message(FATAL_ERROR "\n########################################################################\n"
|
|
"Invalid value '${${name}}' for option ${name}\n"
|
|
"\n"
|
|
"Possible values are:\n"
|
|
"${POSSIBLE_VALUE_LIST}"
|
|
"########################################################################")
|
|
endif()
|
|
endfunction(validate_option)
|
|
|
|
function(get_lammps_version version_header variable)
|
|
file(READ ${version_header} line)
|
|
set(MONTHS x Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)
|
|
string(REGEX REPLACE "#define LAMMPS_VERSION \"([0-9]+) ([A-Za-z]+) ([0-9]+)\"" "\\1" day "${line}")
|
|
string(REGEX REPLACE "#define LAMMPS_VERSION \"([0-9]+) ([A-Za-z]+) ([0-9]+)\"" "\\2" month "${line}")
|
|
string(REGEX REPLACE "#define LAMMPS_VERSION \"([0-9]+) ([A-Za-z]+) ([0-9]+)\"" "\\3" year "${line}")
|
|
string(STRIP ${day} day)
|
|
string(STRIP ${month} month)
|
|
string(STRIP ${year} year)
|
|
list(FIND MONTHS "${month}" month)
|
|
string(LENGTH ${day} day_length)
|
|
string(LENGTH ${month} month_length)
|
|
if(day_length EQUAL 1)
|
|
set(day "0${day}")
|
|
endif()
|
|
if(month_length EQUAL 1)
|
|
set(month "0${month}")
|
|
endif()
|
|
set(${variable} "${year}${month}${day}" PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
function(check_for_autogen_files source_dir)
|
|
message(STATUS "Running check for auto-generated files from make-based build system")
|
|
file(GLOB SRC_AUTOGEN_FILES ${source_dir}/style_*.h)
|
|
file(GLOB SRC_AUTOGEN_PACKAGES ${source_dir}/packages_*.h)
|
|
list(APPEND SRC_AUTOGEN_FILES ${SRC_AUTOGEN_PACKAGES} ${source_dir}/lmpinstalledpkgs.h ${source_dir}/lmpgitversion.h)
|
|
foreach(_SRC ${SRC_AUTOGEN_FILES})
|
|
get_filename_component(FILENAME "${_SRC}" NAME)
|
|
if(EXISTS ${source_dir}/${FILENAME})
|
|
message(FATAL_ERROR "\n########################################################################\n"
|
|
"Found header file(s) generated by the make-based build system\n"
|
|
"\n"
|
|
"Please run\n"
|
|
"make -C ${source_dir} purge\n"
|
|
"to remove\n"
|
|
"########################################################################")
|
|
endif()
|
|
endforeach()
|
|
endfunction()
|
|
|
|
macro(pkg_depends PKG1 PKG2)
|
|
if(PKG_${PKG1} AND NOT (PKG_${PKG2} OR BUILD_${PKG2}))
|
|
message(FATAL_ERROR "${PKG1} package needs LAMMPS to be build with ${PKG2}")
|
|
endif()
|
|
endmacro()
|