2024-01-03 00:25:57 +00:00
|
|
|
# Parses a config file for a specific option and appends the new option if it does not exist
|
|
|
|
# If the new option does exist, this function will do nothing.
|
|
|
|
# file_name: The name of the file to parse
|
|
|
|
# old_option_name: The name of the option to find
|
|
|
|
# new_option_name: The name of the option to add
|
|
|
|
function(UpdateConfigOption file_name old_option_name new_option_name)
|
|
|
|
string(APPEND old_option_name "=")
|
|
|
|
string(APPEND new_option_name "=")
|
|
|
|
message(STATUS "Checking " ${file_name} " for " ${old_option_name} " and adding " ${new_option_name} " if it does not exist")
|
2024-01-03 08:36:17 +00:00
|
|
|
if(NOT EXISTS ${file_name})
|
|
|
|
message(STATUS ${file_name} " does not exist. Doing nothing")
|
|
|
|
return()
|
|
|
|
endif()
|
2024-01-03 00:25:57 +00:00
|
|
|
file(READ ${file_name} current_file_contents)
|
|
|
|
string(REPLACE "\\\n" "" current_file_contents ${current_file_contents})
|
|
|
|
string(REPLACE "\n" ";" current_file_contents ${current_file_contents})
|
|
|
|
set(parsed_current_file_contents "")
|
|
|
|
|
|
|
|
# Remove comment lines so they do not interfere with the variable parsing
|
|
|
|
foreach(line ${current_file_contents})
|
|
|
|
string(FIND ${line} "#" is_comment)
|
|
|
|
|
|
|
|
if(NOT ${is_comment} EQUAL 0)
|
|
|
|
string(APPEND parsed_current_file_contents ${line})
|
|
|
|
endif()
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
set(found_new_option -1)
|
|
|
|
set(found_old_option -1)
|
|
|
|
set(current_value -1)
|
|
|
|
|
|
|
|
foreach(line ${current_file_contents})
|
|
|
|
string(FIND ${line} ${old_option_name} old_option_in_file)
|
|
|
|
|
|
|
|
if(${old_option_in_file} EQUAL 0)
|
|
|
|
set(found_old_option 1)
|
|
|
|
set(current_value ${line})
|
|
|
|
endif()
|
|
|
|
|
|
|
|
string(FIND ${line} ${new_option_name} found_new_option_in_file)
|
|
|
|
|
|
|
|
if(${found_new_option_in_file} EQUAL 0)
|
|
|
|
set(found_new_option 1)
|
|
|
|
endif()
|
|
|
|
endforeach(line ${current_file_contents})
|
|
|
|
|
|
|
|
if(${found_old_option} EQUAL 1 AND NOT ${found_new_option} EQUAL 1)
|
|
|
|
string(REPLACE ${old_option_name} ${new_option_name} current_value ${current_value})
|
|
|
|
file(APPEND ${file_name} "\n" ${current_value})
|
|
|
|
endif()
|
|
|
|
endfunction()
|