Last change
on this file since d5e5fd1 was d5e5fd1, checked in by Jiří Zárevúcky <zarevucky.jiri@…>, 7 years ago |
autogen2
|
-
Property mode
set to
100755
|
File size:
963 bytes
|
Rev | Line | |
---|
[d5e5fd1] | 1 | #!/bin/sh
|
---|
| 2 |
|
---|
| 3 | filename="$1"
|
---|
| 4 | struct_name="$2"
|
---|
| 5 |
|
---|
| 6 | members=`cat $filename | sed -n -e "1,/typedef struct $struct_name {/d" -e "/} ${struct_name}_t;/,$$d" -e "s/.* \([^ ]\+\);/\1/p"`
|
---|
| 7 |
|
---|
| 8 | ustruct_name=`echo "$struct_name" | awk '{print toupper($0)}'`
|
---|
| 9 | dmembers=`echo "$members" | awk '{print "DEFINE_MEMBER(" $0 ", " toupper($0) ")" }'`
|
---|
| 10 |
|
---|
| 11 | if [ -z "${CC}" ]; then
|
---|
| 12 | CC=cc
|
---|
| 13 | fi
|
---|
| 14 |
|
---|
| 15 | if ( ${CC} --version | grep clang > /dev/null ) ; then
|
---|
| 16 | CFLAGS="${CFLAGS} -no-integrated-as"
|
---|
| 17 | fi
|
---|
| 18 |
|
---|
| 19 | echo "/* Autogenerated file, do not modify. */"
|
---|
| 20 | echo "#pragma once"
|
---|
| 21 |
|
---|
| 22 | ( ${CC} ${CFLAGS} -w -S -x c - -o - | sed -n 's/^.* #define \([^ ]\+\) [^0-9]*\([0-9]\+\) .*/#define \1 \2/p' ) <<- EOF
|
---|
| 23 |
|
---|
| 24 | #include "$filename"
|
---|
| 25 |
|
---|
| 26 | #define DEFINE_MEMBER(lc, uc) \
|
---|
| 27 | asm volatile ("/* #define ${ustruct_name}_OFFSET_"#uc" %0 */" :: "i" (__builtin_offsetof(struct $struct_name, lc))); \
|
---|
| 28 | asm volatile ("/* #define ${ustruct_name}_SIZE_"#uc" %0 */" :: "i" (sizeof((struct $struct_name){}.lc)));
|
---|
| 29 |
|
---|
| 30 | void autogen()
|
---|
| 31 | {
|
---|
| 32 | $dmembers
|
---|
| 33 | }
|
---|
| 34 |
|
---|
| 35 | EOF
|
---|
Note:
See
TracBrowser
for help on using the repository browser.