source: mainline/tools/autogen2.sh@ d5e5fd1

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
Line 
1#!/bin/sh
2
3filename="$1"
4struct_name="$2"
5
6members=`cat $filename | sed -n -e "1,/typedef struct $struct_name {/d" -e "/} ${struct_name}_t;/,$$d" -e "s/.* \([^ ]\+\);/\1/p"`
7
8ustruct_name=`echo "$struct_name" | awk '{print toupper($0)}'`
9dmembers=`echo "$members" | awk '{print "DEFINE_MEMBER(" $0 ", " toupper($0) ")" }'`
10
11if [ -z "${CC}" ]; then
12 CC=cc
13fi
14
15if ( ${CC} --version | grep clang > /dev/null ) ; then
16 CFLAGS="${CFLAGS} -no-integrated-as"
17fi
18
19echo "/* Autogenerated file, do not modify. */"
20echo "#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
30void autogen()
31{
32 $dmembers
33}
34
35EOF
Note: See TracBrowser for help on using the repository browser.