Projekt

Allgemein

Profil

Feature #767 » extract_defines.cmake

Maximilian Seesslen, 24.04.2026 18:12

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

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

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

    
11

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

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

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

    
23

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

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

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

    
31
execute_process(
32
   COMMAND
33
      echo "### Generate"
34
)
35

    
36
execute_process(
37
   COMMAND
38
       echo "${COMMAND_LINE} -dM -E -o ${CMAKE_BINARY_DIR}/generated_defines.h";
39
   OUTPUT_FILE
40
       gen.sh
41
)
42

    
43
#execute_process(
44
#   COMMAND
45
#       echo "cat ${CMAKE_BINARY_DIR}/generated_defines.h | grep CONFIG_BIWAK > config.h"
46
#   OUTPUT_FILE
47
#       filter.sh
48
#)
49

    
50
execute_process(
51
   COMMAND
52
      sh gen.sh
53
)
54

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

    
58
file( READ "${INPUT_FILE}" CONTENTS )
59

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

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

    
66
foreach( line IN LISTS LINES )
67
    if( line MATCHES "CONFIG_BIWAK" )
68
        file( APPEND "${OUTPUT_FILE}" "${line}\n" )
69
    endif()
70
endforeach()
71

    
72
#execute_process(
73
#   COMMAND
74
#      bash filter.sh
75
#)
76

    
77
#execute_process(
78
#   COMMAND
79
#       cat "${CMAKE_BINARY_DIR}/generated_defines.h" | grep CONFIG_BIWAK
80
#   OUTPUT_FILE
81
#       config.h
82
#)
83

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