From 3840468e36bc24ea7092cc3762c06e880dbdaed6 Mon Sep 17 00:00:00 2001
From: Marius Greuel <greuelm@mgtek.com>
Date: Sun, 26 Dec 2021 16:46:15 +0100
Subject: [PATCH] Improve CMake project to filter conditional sections

---
 src/CMakeLists.txt | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 7860d281..6dfebd28 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -329,8 +329,22 @@ message(STATUS "----------------------")
 # Configure files
 # =====================================
 
+macro(configure_option option)
+    if(${${option}})
+        string(REGEX REPLACE "(.*)@${option}_BEGIN@(.*)@${option}_END@(.*)" "\\1\\2\\3" conf_file "${conf_file}")
+    else()
+        string(REGEX REPLACE "(.*)@${option}_BEGIN@(.*)@${option}_END@(.*)" "\\1\\3" conf_file "${conf_file}")
+    endif()
+endmacro()
+
+file(READ avrdude.conf.in conf_file)
+configure_option(HAVE_PARPORT)
+configure_option(HAVE_LINUXGPIO)
+configure_option(HAVE_LINUXSPI)
+file(WRITE "${PROJECT_BINARY_DIR}/avrdude.conf.in" "${conf_file}")
+
 configure_file(cmake_config.h.in ac_cfg.h)
-configure_file(avrdude.conf.in avrdude.conf)
+configure_file("${PROJECT_BINARY_DIR}/avrdude.conf.in" avrdude.conf)
 configure_file(avrdude.spec.in avrdude.spec)
 if(WIN32)
     configure_file(windows.rc.in windows.rc)