file(APPEND ${run_cmake} " -G\"${CMAKE_GENERATOR}\" ${cont}")
foreach(_option ${LYX_OPTIONS})
if(${_option}_show_message OR ${ARGV0} STREQUAL "help")
- string(SUBSTRING "${_option} " 0 25 _var)
get_property(_prop CACHE ${_option} PROPERTY STRINGS)
list(FIND LYX_OPTION_STRINGS ${_option} _index)
+ set(_type "BOOL")
if (${_index} GREATER -1)
#message(STATUS "${_option} is of type string")
set(_isset ${${_option}})
+ set(_type "STRING")
elseif(${_option})
set(_isset ON)
else()
set(_isset OFF)
endif()
- string(SUBSTRING "${_isset} " 0 4 _val)
- message(STATUS "${_var}= ${_val} : ${${_option}_description}")
- file(APPEND ${run_cmake} " -D${_option}=${${_option}} ${cont}")
+ string(SUBSTRING "${_option}:${_type} " 0 35 _var)
+ string(SUBSTRING "${_isset} " 0 7 _val)
+ message(STATUS "${_var}= ${_val}: ${${_option}_description}")
+ file(APPEND ${run_cmake} " -D${_option}:${_type}=${${_option}} ${cont}")
endif()
endforeach()
file(APPEND ${run_cmake} "\n")
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
if(NOT _${module}_status)
set(LYX_PY_${module_upper} ${_${module}_location} CACHE STRING
- "Location of Python module ${module}")
+ "Location of Python module ${module}")
endif()
endif()
find_package_handle_standard_args(LYX_PY_${module} DEFAULT_MSG LYX_PY_${module_upper})
endfunction(find_python_module)
+
+macro(setstripped _varname)
+ if(${ARGC} GREATER 1)
+ string(STRIP "${ARGV1}" _v)
+ if (_v MATCHES "^\\[\(.+\)\\]$")
+ set(_v ${CMAKE_MATCH_1})
+ endif()
+ if(USE_POSIX_PACKAGING)
+ string(TOLOWER ${_v} ${_varname})
+ else()
+ set(${_varname} ${_v})
+ endif()
+ else()
+ set(${_varname})
+ endif()
+endmacro(setstripped)
+
+# Determine the version and build-type
+function(determineversionandbuildtype configfile package version dirs date buildtype)
+ file(STRINGS "${configfile}" _config_lines)
+ foreach(_c_l ${_config_lines} )
+ if(_c_l MATCHES "^AC_INIT\\(\([^,]+\),\([^,]+\), *\\[\([^,]+\)\\] *,\(.*\)")
+ # Not using CMAKE_MATCH_ directly is needed, because
+ # its value is now changed inside macro setstripped
+ set(_PB ${CMAKE_MATCH_1})
+ set(_PV ${CMAKE_MATCH_2})
+ set(_PBU ${CMAKE_MATCH_3})
+ setstripped(PACKAGE_BASE ${_PB})
+ setstripped(PACKAGE_VERSION ${_PV})
+ setstripped(PACKAGE_BUGREPORT ${_PBU})
+ set(${package} ${PACKAGE_BASE} ${PACKAGE_VERSION} ${PACKAGE_BUGREPORT} PARENT_SCOPE)
+ if(PACKAGE_VERSION MATCHES "^\([0-9]+\)\\.\([0-9]+\)\(\\.\([0-9]+\)\(\\.\([0-9]+\)\)?\)?-?\([a-z]*[0-9]*\).*$")
+ set(LYX_MAJOR_VERSION ${CMAKE_MATCH_1})
+ set(LYX_MINOR_VERSION ${CMAKE_MATCH_2})
+ set(LYX_RELEASE_LEVEL ${CMAKE_MATCH_4})
+ set(LYX_RELEASE_PATCH ${CMAKE_MATCH_6})
+ set(LYX_BUILD_TYPE ${CMAKE_MATCH_7})
+ set(LYX_DIR_VER "LYX_DIR_${CMAKE_MATCH_1}${CMAKE_MATCH_2}x")
+ set(LYX_USERDIR_VER "LYX_USERDIR_${CMAKE_MATCH_1}${CMAKE_MATCH_2}x")
+ if (NOT LYX_RELEASE_LEVEL)
+ set(LYX_RELEASE_LEVEL 0)
+ endif()
+ if (NOT LYX_RELEASE_PATCH)
+ set(LYX_RELEASE_PATCH 0)
+ endif()
+ set(LYX_VERSION "${LYX_MAJOR_VERSION}.${LYX_MINOR_VERSION}")
+ endif()
+ endif()
+ if(_c_l MATCHES "^AC_SUBST\\( *LYX_DATE *, *\\[\\\"(.*)\\\"\\].*")
+ set(LYX_DATE "${CMAKE_MATCH_1}")
+ endif()
+ endforeach(_c_l)
+ set(${version} ${LYX_VERSION} ${LYX_MAJOR_VERSION} ${LYX_MINOR_VERSION} ${LYX_RELEASE_LEVEL} ${LYX_RELEASE_PATCH} PARENT_SCOPE)
+ set(${dirs} ${LYX_DIR_VER} ${LYX_USERDIR_VER} PARENT_SCOPE)
+ set(${date} ${LYX_DATE} PARENT_SCOPE)
+ if(LYX_BUILD_TYPE MATCHES "^\(dev\)$")
+ set(${buildtype} "development" PARENT_SCOPE)
+ elseif(LYX_BUILD_TYPE MATCHES "^\(alpha|beta|rc|pre\)[0-9]*$")
+ set(${buildtype} "prerelease" PARENT_SCOPE)
+ elseif(LYX_BUILD_TYPE MATCHES "^$")
+ set(${buildtype} "release" PARENT_SCOPE)
+ else()
+ set(${buildtype} "unknown" PARENT_SCOPE)
+ message(FATAL_ERROR "\"${configfile}\": Unable to determine build-type from suffix \"${LYX_BUILD_TYPE}\" in AC_INIT macro")
+ endif()
+endfunction(determineversionandbuildtype)
+
+# determine known cmake cxx_std features but only if not greater than ${max_desired}
+function(lyxgetknowncmakestd max_desired result)
+ set(tmp_list)
+ set(CXX_STD_LIST)
+ math(EXPR max_desired "${max_desired}+1")
+ if (CMAKE_VERSION VERSION_LESS "3.9")
+ list(APPEND tmp_list 98 11 14)
+ else()
+ foreach(_e ${CMAKE_CXX_COMPILE_FEATURES})
+ if (_e MATCHES "^cxx_std_\(.*)")
+ list(APPEND tmp_list ${CMAKE_MATCH_1})
+ endif()
+ endforeach()
+ endif()
+ list(REVERSE tmp_list)
+ # Filter undesired from list
+ foreach(i ${tmp_list})
+ if (i LESS ${max_desired} OR i GREATER 89)
+ list(APPEND CXX_STD_LIST ${i})
+ endif()
+ endforeach()
+ set(${result} ${CXX_STD_LIST} PARENT_SCOPE)
+endfunction()
+