From e4295acfec08776cd020902a5767fdc7703262c6 Mon Sep 17 00:00:00 2001 From: majcosta <34732933+majcosta@users.noreply.github.com> Date: Wed, 18 Jan 2023 04:32:38 -0300 Subject: [PATCH] simplify the language/executable validation function (#79) * simplify the language/executable validation function removing the 'ALL' corner-case so that the default behavior is to configure all valid languages and applications allows to simplify this function quite a bit * keep the CMakePreset.json options listed for ease of use --- CMakeLists.txt | 4 ++-- cmake/ValidateOptions.cmake | 27 +++++++++++---------------- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7ad1445c..166dd9d5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -107,10 +107,10 @@ bfVFS include(cmake/ValidateOptions.cmake) set(ValidLanguages CHINESE DUTCH ENGLISH FRENCH GERMAN ITALIAN POLISH RUSSIAN) -ValidateOptions("${ValidLanguages}" "Languages" "ENGLISH" "${Languages}" "LangTargets") +ValidateOptions("${ValidLanguages}" "Languages" "${Languages}" "LangTargets") set(ValidApplications JA2 JA2MAPEDITOR JA2UB JA2UBMAPEDITOR) -ValidateOptions("${ValidApplications}" "Applications" "JA2" "${Applications}" "ApplicationTargets") +ValidateOptions("${ValidApplications}" "Applications" "${Applications}" "ApplicationTargets") # Due to widespread preprocessor definition abuse in the codebase, practically diff --git a/cmake/ValidateOptions.cmake b/cmake/ValidateOptions.cmake index 11778f6b..3085695d 100644 --- a/cmake/ValidateOptions.cmake +++ b/cmake/ValidateOptions.cmake @@ -1,20 +1,15 @@ -function(ValidateOptions ValidOptions ChoiceName DefaultChoice Choice RetVal) +function(ValidateOptions ValidOptions ChoiceName Choice RetVal) if(Choice) - if(Choice MATCHES "ALL") - set(${RetVal} ${ValidOptions} PARENT_SCOPE) - message(STATUS "ALL ${ChoiceName} option set, configuring ${ValidOptions}.") - else() - foreach(x IN LISTS Choice) - if(x IN_LIST ValidOptions) - message(STATUS "Configuring for ${x}.") - else() - message(FATAL_ERROR "${x} not supported. The supported ${ChoiceName} are: ${ValidOptions}.") - endif() - set(${RetVal} ${Choice} PARENT_SCOPE) - endforeach() - endif() + foreach(x IN LISTS Choice) + if(NOT x IN_LIST ValidOptions) + message(FATAL_ERROR "${ChoiceName}=\"${x}\" is not supported. Valid options are: ${ValidOptions}.") + endif() + endforeach() else() - set(${RetVal} ${DefaultChoice} PARENT_SCOPE) - message(STATUS "No -D${ChoiceName}= parameter, configuring ${DefaultChoice} by default.") + set(isDefault "by default.") + set(Choice ${ValidOptions}) endif() + message(STATUS "Configuring ${ChoiceName}=\"${Choice}\" ${isDefault}") + + set(${RetVal} ${Choice} PARENT_SCOPE) endfunction()