source: rtems-libbsd/freebsd-userspace/from-freebsd.sh @ 1b13f69

4.1155-freebsd-126-freebsd-12freebsd-9.3
Last change on this file since 1b13f69 was 1b13f69, checked in by Joel Sherrill <joel.sherrill@…>, on 07/11/12 at 18:23:45

FreeBSD user space support - First additions

This requires a full checkout of the FreeBSD 8.2 source code.
The checkout we have been using is missing at least the libc,
include, and sys directories. The script to copy files in is
crude.

This eventually needs to separate the manually written .h files
out and add the RTEMS specific network initialization support
with functionality to program the IP addresses and gateways as
the old stack did.

  • Property mode set to 100755
File size: 4.7 KB
Line 
1#! /bin/bash
2#
3#  Temporary hack of a script to get FreeBSD user space header
4#  files and network libc source code into this tree.
5#
6#  NOTE: libc and include are NOT in the FreeBSD checkout used for the
7#        USB and TCP/IP stacks. This has to be addressed.
8#
9#  This probably could be integrated into the main Python script.
10#  But so far, there are no real transformations needed and the
11#  script just performs two tasks:
12#
13#  + copies source files from FreeBSD libc and include files into this tree
14#  + generates "wrapper" header files for the public network .h files
15#
16src=/home/joel/newbsd/git/freebsd-8.2
17dest=/home/joel/newbsd/git/rtems-libbsd/freebsd-userspace
18
19progname=${0##*/}        # fast basename hack for ksh, bash
20
21USAGE=\
22"usage: $progname [ -opts ]
23        -v         -- verbose
24        -f DIR     -- FreeBSD directory
25        -r DIR     -- rtems-libbsd top directory
26"
27
28check_status()
29{
30  if [ $1 -ne 0 ] ; then
31    shift
32    echo "$USAGE" >&2
33    echo >&2
34    echo "FAILED: " "$*" >&2
35    exit 1
36  fi
37}
38
39usage()
40{
41  echo "$USAGE" >&2
42  exit 1
43}
44
45#
46# process the options
47#
48# defaults for getopt vars
49#
50
51src=NOTSET
52dest=NOTSET
53verbose="no"
54
55while getopts "vf:r:" OPT
56do
57 case "$OPT" in
58   v) verbose="yes";;
59   f) src="$OPTARG";;
60   r) dest="$OPTARG";;
61   *) usage;;
62  esac
63done
64
65# Check arguments specified
66test ${src} != "NOTSET"
67check_status $? "FreeBSD source directory not specified"
68
69test ${dest} != "NOTSET"
70check_status $? "rtems-libbsd source directory not specified"
71
72# Check that they are directories
73test -d ${src}
74check_status $? "FreeBSD source directory is not a directory"
75
76test -d ${dest}
77check_status $? "rtems-libbsd source directory is not a directory"
78
79# Check that they appear to be the right directories
80test -d ${src}/include
81check_status $? "FreeBSD source directory does not have include directory"
82
83test -d ${src}/lib/libc
84check_status $? "FreeBSD source directory does not have libc directory"
85
86test -d ${dest}/freebsd-userspace
87check_status $? "rtems-libbsd source directory does not have freebsd-userspace directory"
88
89dest=${dest}/freebsd-userspace
90
91# source files to simply copy
92while read f
93do
94  d=`dirname $f`
95  test -d ${dest}/${d} || mkdir -p ${dest}/${d}
96  test -r ${src}/${f}
97  check_status $? "${src}/${f} is not present"
98
99  test ${verbose} = "yes" && echo "Simple copy $f"
100  cp ${src}/${f} ${dest}/${d}
101done <<EOF
102include/db.h
103include/ifaddrs.h
104include/netdb.h
105include/nsswitch.h
106include/resolv.h
107include/arpa/nameser_compat.h
108include/arpa/inet.h
109sys/net/ethernet.h
110sys/sys/syslog.h
111lib/libc/include/libc_private.h
112lib/libc/include/namespace.h
113lib/libc/include/nss_tls.h
114lib/libc/include/reentrant.h
115lib/libc/include/resolv_mt.h
116lib/libc/include/un-namespace.h
117lib/libc/inet/inet_addr.c
118lib/libc/inet/inet_cidr_ntop.c
119lib/libc/inet/inet_cidr_pton.c
120lib/libc/inet/inet_lnaof.c
121lib/libc/inet/inet_makeaddr.c
122lib/libc/inet/inet_neta.c
123lib/libc/inet/inet_net_ntop.c
124lib/libc/inet/inet_netof.c
125lib/libc/inet/inet_net_pton.c
126lib/libc/inet/inet_network.c
127lib/libc/inet/inet_ntoa.c
128lib/libc/inet/inet_ntop.c
129lib/libc/inet/inet_pton.c
130lib/libc/inet/nsap_addr.c
131lib/libc/net/netdb_private.h
132lib/libc/net/res_config.h
133EOF
134
135# disable BIND_4_COMPAT since it trips a weird endian issue in nameser_compat.h
136sed -e 's/#define BIND_4_COMPAT/\/* #define BIND_4_COMPAT *\//' \
137  <${src}/include/arpa/nameser.h \
138  >${dest}/include/arpa/nameser.h
139
140# source files to prepend "include of local/port_before.h"
141while read f
142do
143  d=`dirname $f`
144  test -d ${dest}/${d} || mkdir -p ${dest}/${d}
145  test -r ${src}/${f}
146  check_status $? "${src}/${f} is not present"
147
148  test ${verbose} = "yes" && echo "Copy with prepend $f"
149   
150  ( echo "#include \"port_before.h\""; echo ; cat ${src}/${f} ) >${dest}/${f}
151done <<EOF
152lib/libc/net/base64.c
153lib/libc/net/ether_addr.c
154lib/libc/net/gethostbydns.c
155lib/libc/net/gethostbyht.c
156lib/libc/net/gethostbynis.c
157lib/libc/net/gethostnamadr.c
158lib/libc/net/getifaddrs.c
159lib/libc/net/getifmaddrs.c
160lib/libc/net/getnameinfo.c
161lib/libc/net/getnetbydns.c
162lib/libc/net/getnetbyht.c
163lib/libc/net/getnetbynis.c
164lib/libc/net/getnetnamadr.c
165lib/libc/net/getproto.c
166lib/libc/net/getprotoent.c
167lib/libc/net/getprotoname.c
168lib/libc/net/getservent.c
169EOF
170
171
172# files to "include with freebsd"
173while read f
174do
175  d=`dirname $f`
176  test -d include/${d}/${d} || mkdir -p include/${d}/${d}
177
178  test ${verbose} = "yes" && echo "Generate wrapper $f"
179  echo "#include <freebsd/${f}>" > include/${f}
180done <<EOF
181net/if.h
182net/if_dl.h
183net/if_types.h
184net/in.h
185net/route.h
186netinet/in.h
187sys/socket.h
188sys/sysctl.h
189EOF
190
191
192# empty files
193while read f
194do
195  test ${verbose} = "yes" && echo "Generate empty file $f"
196  echo "/* empty file */" > ${f}
197done <<EOF
198local/pthread_np.h
199local/sys/_pthreadtypes.h
200EOF
201
202
203# Fix syslog.h issues...
204echo "#include <sys/syslog.h>" > local/syslog.h
205
Note: See TracBrowser for help on using the repository browser.