|
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()
|