message( "### 2 ${CMAKE_BINARY_DIR} / ${COMMANDS}" )
# file(READ "${CMAKE_BINARY_DIR}/compile_commands.json" CCJSON)
file(READ "${COMMANDS}" CCJSON)

# Datei, für die wir die Defines extrahieren wollen
#set(SOURCE_FILE "${CMAKE_SOURCE_DIR}/src/foo.cpp")
#set(SOURCE_FILE "${CMAKE_SOURCE_DIR}/src/foo.cpp")

message( "### Looking for ${SOURCE_FILE}")


# Kommandozeile extrahieren
# string(REGEX MATCH "\"file\": \"${SOURCE_FILE}\",[^}]*" ENTRY "${CCJSON}")
string(REGEX MATCH "\"file\": \"${SOURCE_FILE}\".*}," ENTRY "${CCJSON}")
message( "### 2.1 ${ENTRY}")

string(REGEX MATCH "\"command\": \"([^\"]*)\"" _ "${ENTRY}")
set(COMMAND_LINE "${CMAKE_MATCH_1}")

message( "### 2.1 ${CCJSON}")
message( "### 3 ${COMMAND_LINE}")


string(REGEX REPLACE "-o .* " " " COMMAND_LINE ${COMMAND_LINE})

message( "### 3.1 ${COMMAND_LINE}")

# Nur Defines extrahieren
 #string(REGEX MATCHALL "-D[^ ]+" DEFINES "${COMMAND_LINE}")

execute_process(
   COMMAND
      echo "### Generate"
)

execute_process(
   COMMAND
       echo "${COMMAND_LINE} -dM -E -o ${CMAKE_BINARY_DIR}/generated_defines.h";
   OUTPUT_FILE
       gen.sh
)

#execute_process(
#   COMMAND
#       echo "cat ${CMAKE_BINARY_DIR}/generated_defines.h | grep CONFIG_BIWAK > config.h"
#   OUTPUT_FILE
#       filter.sh
#)

execute_process(
   COMMAND
      sh gen.sh
)

set(INPUT_FILE  "${CMAKE_BINARY_DIR}/generated_defines.h")
set(OUTPUT_FILE "${CMAKE_BINARY_DIR}/config.h")

file( READ "${INPUT_FILE}" CONTENTS )

# Datei in einzelne Zeilen aufteilen
string( REPLACE "\n" ";" LINES "${CONTENTS}" )

# Ausgabe-Datei leeren
file( WRITE "${OUTPUT_FILE}" "// Auto-generated\n" )

foreach( line IN LISTS LINES )
    if( line MATCHES "CONFIG_BIWAK" )
        file( APPEND "${OUTPUT_FILE}" "${line}\n" )
    endif()
endforeach()

#execute_process(
#   COMMAND
#      bash filter.sh
#)

#execute_process(
#   COMMAND
#       cat "${CMAKE_BINARY_DIR}/generated_defines.h" | grep CONFIG_BIWAK
#   OUTPUT_FILE
#       config.h
#)

# Header erzeugen
#file(WRITE "${CMAKE_BINARY_DIR}/generated_defines.h" "// Auto-generated\n")
#foreach(D ${DEFINES})
#    string(SUBSTRING "${D}" 2 -1 CLEAN) # "-DXYZ" → "XYZ"
#    file(APPEND "${CMAKE_BINARY_DIR}/generated_defines.h" "#define ${CLEAN}\n")
#endforeach()
