Introducing
Your new presentation assistant.
Refine, enhance, and tailor your content, source relevant images, and edit visuals quicker than ever before.
Trending searches
1 m4_divert(-1)
2
3 ### NOTE: essuming using --prefix-builtins (-P), to seperate from functions such as substr which are common to m4 and std.
4
5
6 ### --- log message structure - developer point of view ---
7 YAFL_LOG( <level>, "module", <params>... )
8
9 <level> - either: DEBUG, ERROR, WARNNG, INFO
10 e.g.: YAFL_LOG( DEBUG, "DFM", var1, "text1", "text2", var2, ... )
11
12 ### --- log message structure - compiler point of view (the result of the processing ---
13 yafl::log::Msg{ <file-id>, __LINE__, <debug-level>,std::this_thread::get_id(),<module>,...}
14 <file-id> - as defined when calling m4. currently: # m4 yaflpp.m4 -DCOMPILED_FILE=$(md5sum <file> head -c8) <file>
15 <debug-level> - see values in the definitions below for debug values
16 <module> - computed as any other string
17
18 0x269aab6c,__LINE__,0xcdcd0000,std::this_thread::get_id(),0xbeef000 ,var1,0xbeef0001,0xbeef0002,var2,var3,0xbeef0005,var4
23 ##### CONSTANTS #####
24
25 ### -- TRUE, FALSE --
26 m4_define(YAFL_TRUE, 1)
27 m4_define(YAFL_FALSE, 0)
28
29 ### -- log levels --
30 m4_define(YAFL_DEBUG, 0x00000000ababab00)
31 m4_define(YAFL_ERROR, 0x00000000ababab01)
32 m4_define(YAFL_WARNING, 0x00000000ababab02)
33 m4_define(YAFL_INFO, 0x00000000ababab03)
34
35 ### -- marks --
36 m4_define(END_OF_RECORD, 0xcdcdcdcdcdcdcdcd)
37
38
39 ### -- THE_HEX --
40 m4_define(THE_HEX,0)
41
42 ### -- area CODES --
43 m4_define( ORIG_AREA, 10)
44 m4_define( CODE_AREA, 10)
45 m4_define( MAPP_AREA, 20)
46 m4_define( NULL_AREA, -1)
47
101 ### -- _map1 --
102 ### map1 stand for: _map one_ pair
103 ### maps a number to a string.
104 ### outputs the map to the _mapp_area
105 ### and the number to the code_area
106 ### e.g.:
107 ### _map1( 0x4534, "my name is ran" )
108 ### => map-area: 0xbeef4534 - "my name is ran"
109 ### => code-area: 0xbeef4534
110
111 m4_define( _map1,
112 [*m4_ifelse(
113 m4_regexp($2,".*"), 0,
114 [*_map_area_dnl('_beef($1)':$2)*][*_map_comma*]
115 [*_code_area_dnl(_beef($1))*]
116 [*m4_define([*THE_HEX*],_next_hex($1))*],m4_dnl
117 [*_code_area_dnl($2)*]
118 )*]m4_dnl
119 )m4_dnl
120
add_custom_command(
OUTPUT ${generator_sh_file}
COMMAND
${CMAKE_COMMAND}
-DGENERATOR_IN_FILE=${YAFL_SOURCE_DIR}/m4/generate_code_and_map.sh.in
-DGENERATOR_OUT_FILE=${generator_sh_file}
-DSOURCE_FILE=${source_file}
-DTARGET_FILE=${target_file}
-DMAP_TARGET_FILE=${map_target_file}
-DYAFL_PREPROCESSOR_DIR=${YAFL_SOURCE_DIR}/m4/
-P ${YAFL_SOURCE_DIR}/custom.build/configure_generator.cmake
DEPENDS ${source_file}
)
add_custom_command(
OUTPUT ${target_file}
COMMAND ${generator_sh_file}
MAIN_DEPENDENCY ${generator_sh_file}
DEPENDS ${source_file}
)
[12:56]ran@ran-betalfa-2017/gcc>make logger_inc
Scanning dependencies of target generator-logger_inc-log.h
[ 33%] Generating log.h.gen.sh
[ 66%] Generating log.h
[ 66%] Built target generator-logger_inc-log.h
Scanning dependencies of target generator-logger_inc-m4log_defs.h
[100%] Generating m4log_defs.h.gen.sh
[100%] Generating m4log_defs.h
[100%] Built target generator-logger_inc-m4log_defs.h
Scanning dependencies of target logger_inc
[100%] Built target logger_inc
#!/bin/bash
# expecting the following variables to be set by the caller to cmake-configure
# SOURCE_FILE == ${SOURCE_FILE}
# TARGET_FILE == ${TARGET_FILE}
# MAP_TARGET_FILE == ${MAP_TARGET_FILE}
# YAFL_PREPROCESSOR_DIR == ${YAFL_PREPROCESSOR_DIR}
fileId=$(md5sum ${SOURCE_FILE} head -c16)
echo -n "'0x$fileId':[\"${SOURCE_FILE}\",{" >${MAP_TARGET_FILE}
varForWait=$(\
/bin/m4 \
--prefix-builtins \
-DCOMPILED_FILE=$fileId \
${YAFL_PREPROCESSOR_DIR}/yaflpp.m4 \
${YAFL_PREPROCESSOR_DIR}/modules.m4 \
${SOURCE_FILE} \
\
1>/dev/null tee \
>(${YAFL_PREPROCESSOR_DIR}/code_area.sed >${TARGET_FILE}) \
>(${YAFL_PREPROCESSOR_DIR}/map_area.sed >>${MAP_TARGET_FILE}))
wait
echo "}]," >>${MAP_TARGET_FILE}