source: rtems-libbsd/freebsd-to-rtems.py @ b7923cd

4.1155-freebsd-126-freebsd-12freebsd-9.3
Last change on this file since b7923cd was b7923cd, checked in by Joel Sherrill <joel.sherrill@…>, on 09/05/12 at 17:58:09

freebsd-to-rtems.py: Multiple fixes and supporting modifications

+ SED_PATTERN was broken when IPV6 enabled. The sed produced a

zero length rtems-bsd-config.h.

+ "make install" without all did not produce GENERATED_FILES
+ Install .h files in contrib/altq. Needed by new libc commands

being added shortly.

+ Do not copy <sys/uio.h> and <sys/_iovec.h> from FreeBSD. They

are provided by RTEMS now.

+ net/if_stf.c appears to be strictly IPV6 functionality. Make building

it conditional on IPV6.

  • Property mode set to 100755
File size: 55.2 KB
Line 
1#! /usr/bin/python
2#
3#  Copyright (c) 2009-2012 embedded brains GmbH.  All rights reserved.
4#
5#   embedded brains GmbH
6#   Obere Lagerstr. 30
7#   82178 Puchheim
8#   Germany
9#   <info@embedded-brains.de>
10#
11#  Copyright (c) 2012 OAR Corporation. All rights reserved.
12#
13#  Redistribution and use in source and binary forms, with or without
14#  modification, are permitted provided that the following conditions
15#  are met:
16#  1. Redistributions of source code must retain the above copyright
17#     notice, this list of conditions and the following disclaimer.
18#  2. Redistributions in binary form must reproduce the above copyright
19#     notice, this list of conditions and the following disclaimer in the
20#     documentation and/or other materials provided with the distribution.
21#
22#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23#  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25#  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26#  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28#  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29#  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30#  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31#  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32#  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33
34# FreeBSD: http://svn.freebsd.org/base/releng/8.2/sys (revision 222485)
35
36import shutil
37import os
38import re
39import sys
40import getopt
41import filecmp
42import difflib
43
44RTEMS_DIR = "not_set"
45FreeBSD_DIR = "not_set"
46isVerbose = False
47isForward = True
48isDryRun = False
49isDiffMode = False
50isEarlyExit = False
51isOnlyMakefile = False
52tempFile = "/tmp/tmp_FBRT"
53filesProcessed = 0
54
55# currently these all use the MIPS in_cksum method
56CPUsNeedingGenericIncksum = [
57        "avr",
58        "bfin",
59        "h8300",
60        "lm32",
61        "m32c",
62        "m32r",
63        "m68k",
64        "nios2",
65        "sh",
66        "sparc",
67        "v850",
68]
69
70# currently these all use the MIPS in_cksum method
71CPUsSharingPCICodeFromX86 = [
72        'arm',
73        'avr',
74        'bfin',
75        'h8300',
76        'lm32',
77        'm32c',
78        'm32r',
79        'm68k',
80        'mips',
81        'nios2',
82        'powerpc',
83        'sh',
84        'sparc',
85        'sparc64',
86        'v850',
87]
88
89def usage():
90  print "freebsd-to-rtems.py [args]"
91  print "  -?|-h|--help     print this and exit"
92  print "  -d|--dry-run     run program but no modifications"
93  print "  -D|--diff        provide diff of files between trees"
94  print "  -e|--early-exit  evaluate arguments, print results, and exit"
95  print "  -m|--makefile    just generate Makefile"
96  print "  -R|--reverse     default FreeBSD -> RTEMS, reverse that"
97  print "  -r|--rtems       RTEMS Libbsd directory"
98  print "  -f|--freebsd     FreeBSD SVN directory"
99  print "  -v|--verbose     enable verbose output mode"
100
101# Parse the arguments
102def parseArguments():
103  global RTEMS_DIR, FreeBSD_DIR
104  global isVerbose, isForward, isDryRun, isEarlyExit
105  global isOnlyMakefile, isDiffMode
106  try:
107    opts, args = getopt.getopt(sys.argv[1:], "?hdDemRr:f:v",
108                 ["help",
109                  "help",
110                  "dry-run"
111                  "diff"
112                  "early-exit"
113                  "makefile"
114                  "reverse"
115                  "rtems="
116                  "freebsd="
117                  "verbose"
118                 ]
119                )
120  except getopt.GetoptError, err:
121    # print help information and exit:
122    print str(err) # will print something like "option -a not recognized"
123    usage()
124    sys.exit(2)
125  for o, a in opts:
126    if o in ("-v", "--verbose"):
127      isVerbose = True
128    elif o in ("-h", "--help", "-?"):
129      usage()
130      sys.exit()
131    elif o in ("-d", "--dry-run"):
132      isDryRun = True
133    elif o in ("-D", "--diff"):
134      isDiffMode = True
135    elif o in ("-e", "--early-exit"):
136      isEarlyExit = True
137    elif o in ("-m", "--makefile"):
138      isOnlyMakefile = True
139    elif o in ("-R", "--reverse"):
140      isForward = False
141    elif o in ("-r", "--rtems"):
142      RTEMS_DIR = a
143    elif o in ("-f", "--freebsd"):
144      FreeBSD_DIR = a
145    else:
146       assert False, "unhandled option"
147
148parseArguments()
149print "Verbose:                " + ("no", "yes")[isVerbose]
150print "Dry Run:                " + ("no", "yes")[isDryRun]
151print "Diff Mode Enabled:      " + ("no", "yes")[isDiffMode]
152print "Only Generate Makefile: " + ("no", "yes")[isOnlyMakefile]
153print "RTEMS Libbsd Directory: " + RTEMS_DIR
154print "FreeBSD SVN Directory:  " + FreeBSD_DIR
155print "Direction:              " + ("reverse", "forward")[isForward]
156
157# Check directory argument was set and exist
158def wasDirectorySet(desc, path):
159    if path == "not_set":
160        print desc + " Directory was not specified on command line"
161        sys.exit(2)
162
163    if os.path.isdir( path ) != True:
164        print desc + " Directory (" + path + ") does not exist"
165        sys.exit(2)
166
167# Were RTEMS and FreeBSD directories specified
168wasDirectorySet( "RTEMS", RTEMS_DIR )
169wasDirectorySet( "FreeBSD", FreeBSD_DIR )
170 
171# Are we generating or reverting?
172if isForward == True:
173    print "Forward from FreeBSD SVN into ", RTEMS_DIR
174else:
175    print "Reverting from ", RTEMS_DIR
176    if isOnlyMakefile == True:
177        print "Only Makefile Mode and Reverse are contradictory"
178        sys.exit(2)
179
180if isEarlyExit == True:
181    print "Early exit at user request"
182    sys.exit(0)
183 
184# Prefix added to FreeBSD files as they are copied into the RTEMS
185# build tree.
186PREFIX = 'freebsd'
187
188def mapContribPath(path):
189        m = re.match('(.*)(' + PREFIX + '/)(contrib/\\w+/)(.*)', path)
190        if m:
191                path = m.group(1) + m.group(3) + m.group(2) + m.group(4)
192        return path
193
194# Move target dependent files under a machine directory
195def mapCPUDependentPath(path):
196        return path.replace("include/", "include/freebsd/machine/")
197
198# compare and process file only if different
199#  + copy or diff depending on execution mode
200def processIfDifferent(new, old, src):
201  global filesProcessed
202  global isVerbose, isDryRun, isEarlyExit
203  if not os.path.exists(old) or \
204     filecmp.cmp(new, old, shallow=False) == False:
205    filesProcessed += 1
206    if isDiffMode == False:
207      if isVerbose == True:
208        print "Move " + src + " to " + old
209      if isDryRun == False:
210        shutil.move(new, old)
211    else:
212      #print "Diff " + src
213      old_contents = open(old).readlines()
214      new_contents = open(new).readlines()
215      for line in difflib.unified_diff( \
216          old_contents, new_contents, fromfile=src, tofile=new, n=5):
217        sys.stdout.write(line)
218
219# fix include paths inside a C or .h file
220def fixIncludes(data):
221        data = re.sub('#([ \t]*)include <', '#\\1include <' + PREFIX + '/', data)
222        data = re.sub('#include <' + PREFIX + '/rtems', '#include <rtems', data)
223        data = re.sub('#include <' + PREFIX + '/bsp', '#include <bsp', data)
224        data = re.sub('#include "([^"]*)"', '#include <' + PREFIX + '/local/\\1>', data)
225        data = re.sub('_H_', '_HH_', data)
226        return data
227
228# revert fixing the include paths inside a C or .h file
229def revertFixIncludes(data):
230        data = re.sub('_HH_', '_H_', data)
231        data = re.sub('#include <' + PREFIX + '/local/([^>]*)>', '#include "\\1"', data)
232        data = re.sub('#([ \t]*)include <' + PREFIX + '/', '#\\1include <', data)
233        return data
234
235class Converter(object):
236        def convert(self, src):
237                return open(src).read()
238
239        def isConvertible(self):
240                return True
241
242class NoConverter(Converter):
243        def convert(self, src):
244                raise
245
246        def isConvertible(self):
247                return False
248
249class EmptyConverter(Converter):
250        def convert(self, src):
251                return '/* EMPTY */\n'
252
253class FromFreeBSDToRTEMSHeaderConverter(Converter):
254        def convert(self, src):
255                data = super(FromFreeBSDToRTEMSHeaderConverter, self).convert(src)
256                return fixIncludes(data)
257
258class FromRTEMSToFreeBSDHeaderConverter(Converter):
259        def convert(self, src):
260                data = super(FromRTEMSToFreeBSDHeaderConverter, self).convert(src)
261                return revertFixIncludes(data)
262
263class FromFreeBSDToRTEMSSourceConverter(Converter):
264        def convert(self, src):
265                data = super(FromFreeBSDToRTEMSSourceConverter, self).convert(src)
266                data = fixIncludes(data)
267                data = '#include <' + PREFIX + '/machine/rtems-bsd-config.h>\n\n' + data
268                return data
269
270class FromRTEMSToFreeBSDSourceConverter(Converter):
271        def convert(self, src):
272                data = super(FromRTEMSToFreeBSDSourceConverter, self).convert(src)
273                data = re.sub('#include <' + PREFIX + '/machine/rtems-bsd-config.h>\n\n', '', data)
274                data = revertFixIncludes(data)
275                return data
276
277class PathComposer(object):
278        def composeFreeBSDPath(self, path):
279                return FreeBSD_DIR + '/' + path
280
281        def composeRTEMSPath(self, path, prefix):
282                path = prefix + PREFIX + '/' + path
283                path = mapContribPath(path)
284                return path
285
286class RTEMSPathComposer(object):
287        def composeFreeBSDPath(self, path):
288                return path
289
290        def composeRTEMSPath(self, path, prefix):
291                path = prefix + 'rtemsbsd/' + path
292                return path
293
294class CPUDependentPathComposer(PathComposer):
295        def composeRTEMSPath(self, path, prefix):
296                path = super(CPUDependentPathComposer, self).composeRTEMSPath(path, prefix)
297                path = mapCPUDependentPath(path)
298                return path
299
300class File(object):
301        def __init__(self, path, pathComposer, fromFreeBSDToRTEMSConverter, fromRTEMSToFreeBSDConverter):
302                self.path = path
303                self.pathComposer = pathComposer
304                self.fromFreeBSDToRTEMSConverter = fromFreeBSDToRTEMSConverter
305                self.fromRTEMSToFreeBSDConverter = fromRTEMSToFreeBSDConverter
306
307        def copy(self, dst, src, converter):
308                if converter.isConvertible():
309                        global tempFile
310                        try:
311                                if isDryRun == False:
312                                        os.makedirs(os.path.dirname(dst))
313                        except OSError:
314                                pass
315                        data = converter.convert(src)
316                        out = open(tempFile, 'w')
317                        out.write(data)
318                        out.close()
319                        processIfDifferent(tempFile, dst, src)
320
321        def copyFromFreeBSDToRTEMS(self):
322                src = self.pathComposer.composeFreeBSDPath(self.path)
323                dst = self.pathComposer.composeRTEMSPath(self.path, RTEMS_DIR + '/')
324                self.copy(dst, src, self.fromFreeBSDToRTEMSConverter)
325
326        def copyFromRTEMSToFreeBSD(self):
327                src = self.pathComposer.composeRTEMSPath(self.path, RTEMS_DIR + '/')
328                dst = self.pathComposer.composeFreeBSDPath(self.path)
329                self.copy(dst, src, self.fromRTEMSToFreeBSDConverter)
330
331        def getMakefileFragment(self):
332                return self.pathComposer.composeRTEMSPath(self.path, '')
333
334# Remove the output directory
335def deleteOutputDirectory():
336        try:
337                if isVerbose == True:
338                        print "Delete Directory - " + RTEMS_DIR + "/freebsd"
339                if isVerbose == True:
340                        print "Delete Directory - " + RTEMS_DIR + "/contrib"
341                if isDryRun == True:
342                        return
343                shutil.rmtree(RTEMS_DIR + "/freebsd" )
344                shutil.rmtree(RTEMS_DIR + "/contrib" )
345        except OSError:
346            pass
347
348# Module Manager - Collection of Modules
349class ModuleManager:
350        def __init__(self):
351                self.modules = []
352
353        def addModule(self, module):
354                self.modules.append(module)
355
356        def copyFromFreeBSDToRTEMS(self):
357                for m in self.modules:
358                        m.copyFromFreeBSDToRTEMS()
359
360        def copyFromRTEMSToFreeBSD(self):
361                for m in self.modules:
362                        m.copyFromRTEMSToFreeBSD()
363
364        def createMakefile(self):
365                global tempFile
366                data = 'include config.inc\n' \
367                        '\n' \
368                        'include $(RTEMS_MAKEFILE_PATH)/Makefile.inc\n' \
369                        'include $(RTEMS_CUSTOM)\n' \
370                        'include $(PROJECT_ROOT)/make/leaf.cfg\n' \
371                        '\n' \
372                        'CFLAGS += -ffreestanding \n' \
373                        'CFLAGS += -I . \n' \
374                        'CFLAGS += -I rtemsbsd \n' \
375                        'CFLAGS += -I rtemsbsd/$(RTEMS_CPU)/include \n' \
376                        'CFLAGS += -I freebsd/$(RTEMS_CPU)/include \n' \
377                        'CFLAGS += -I contrib/altq \n' \
378                        'CFLAGS += -I contrib/pf \n' \
379                        'CFLAGS += -I copied/rtemsbsd/$(RTEMS_CPU)/include \n' \
380                        'CFLAGS += -w \n' \
381                        'CFLAGS += -std=gnu99\n' \
382                        'CFLAGS += -MT $@ -MD -MP -MF $(basename $@).d\n' \
383                        'NEED_DUMMY_PIC_IRQ=yes\n' \
384                        '\n' \
385                        '# do nothing default so sed on rtems-bsd-config.h always works.\n' \
386                        'SED_PATTERN += -e \'s/^//\'\n' \
387                        'GENERATED_FILES = rtemsbsd/freebsd/machine/rtems-bsd-config.h\n' \
388                        '\n'
389                data += 'C_FILES =\n'
390                for m in self.modules:
391                        if m.conditionalOn != "none":
392                                data += 'ifneq ($(' + m.conditionalOn + '),yes)\n'
393
394                        for file in m.sourceFiles:
395                                data += 'C_FILES += ' + file.getMakefileFragment() + '\n'
396                        for cpu, files in sorted(m.cpuDependentSourceFiles.items()):
397                                data += 'ifeq ($(RTEMS_CPU), ' + cpu + ')\n'
398                                for file in files:
399                                        data += 'C_FILES += ' + file.getMakefileFragment() + '\n'
400                                if cpu in ("arm", "i386", "lm32", "mips", "powerpc", "sparc"):
401                                        data += 'NEED_DUMMY_PIC_IRQ=no\n'
402                                data += 'endif\n'
403                        if m.conditionalOn != "none":
404                                data += 'else\n'
405                                data += 'SED_PATTERN += -e \'' + m.cppPattern +'\'\n'
406                                data += 'endif # ' + m.conditionalOn +'\n'
407                for cpu in CPUsNeedingGenericIncksum:
408                        data += 'ifeq ($(RTEMS_CPU), ' + cpu + ')\n' \
409                                'GENERATED_FILES += copied/rtemsbsd/' + cpu + '/' + cpu + '/in_cksum.c\n' \
410                                'GENERATED_FILES += copied/rtemsbsd/' + cpu + '/include/freebsd/machine/in_cksum.h\n' \
411                                'GENERATED_FILES += copied/rtemsbsd/' + cpu + '/' + cpu + '/in_cksum.c\n' \
412                                'C_FILES += copied/rtemsbsd/' + cpu + '/' + cpu + '/in_cksum.c\n' \
413                                'endif\n'
414                for cpu in CPUsSharingPCICodeFromX86:
415                        data += 'ifeq ($(RTEMS_CPU), ' + cpu + ')\n' \
416                                'GENERATED_FILES += copied/rtemsbsd/' + cpu + '/include/freebsd/machine/legacyvar.h\n' \
417                                'GENERATED_FILES += copied/rtemsbsd/' + cpu + '/include/freebsd/machine/pci_cfgreg.h\n' \
418                                'GENERATED_FILES += copied/freebsd/' + cpu + '/pci/pci_bus.c\n' \
419                                'GENERATED_FILES += copied/freebsd/' + cpu + '/' + cpu + '/legacy.c\n' \
420                                'C_FILES += copied/freebsd/' + cpu + '/pci/pci_bus.c\n' \
421                                'C_FILES += copied/freebsd/' + cpu + '/' + cpu + '/legacy.c\n' \
422                                'endif\n'
423                data += '\n' \
424                        'ifeq ($(NEED_DUMMY_PIC_IRQ),yes)\n' \
425                        'CFLAGS += -I rtems-dummy-pic-irq/include\n' \
426                        'endif\n' \
427                        'C_O_FILES = $(C_FILES:%.c=%.o)\n' \
428                        'C_D_FILES = $(C_FILES:%.c=%.d)\n' \
429                        '\n' \
430                        'LIB = libbsd.a\n' \
431                        '\n' \
432                        'all: $(LIB) lib_user\n' \
433                        '\n' \
434                        '$(LIB): $(GENERATED_FILES) $(C_O_FILES)\n' \
435                        '\t$(AR) rcu $@ $^\n' \
436                        '\n' \
437                        'lib_user: $(LIB) install_bsd\n' \
438                        '\t$(MAKE) -C freebsd-userspace\n' \
439                        '\n' \
440                        '# The following targets use the MIPS Generic in_cksum routine\n'
441                data += 'rtemsbsd/freebsd/machine/rtems-bsd-config.h: rtemsbsd/freebsd/machine/rtems-bsd-config.h.in\n'
442                data += '\tsed $(SED_PATTERN) <$< >$@\n'
443                data += '\n'
444                for cpu in CPUsNeedingGenericIncksum:
445                        dDir = 'copied/rtemsbsd/' + cpu + '/' + cpu + '/'
446                        sDir = 'freebsd/mips/mips/'
447                        data += dDir + 'in_cksum.c: ' + sDir + 'in_cksum.c\n' \
448                                '\ttest -d ' + dDir + ' || mkdir -p ' + dDir + '\n' \
449                                '\tcp $< $@\n' \
450                                '\n'
451                        dDir = 'copied/rtemsbsd/' + cpu + '/include/freebsd/machine/'
452                        sDir = 'freebsd/mips/include/freebsd/machine/'
453                        data += dDir + 'in_cksum.h: ' + sDir + 'in_cksum.h\n' \
454                                '\ttest -d ' + dDir + ' || mkdir -p ' + dDir + '\n' \
455                                '\tcp $< $@\n' \
456                                '\n' \
457
458                for cpu in CPUsSharingPCICodeFromX86:
459                        dDir = 'copied/rtemsbsd/' + cpu + '/include/freebsd/machine/'
460                        sDir = 'freebsd/i386/include/freebsd/machine/'
461                        data += dDir + 'legacyvar.h: ' + sDir + 'legacyvar.h\n' \
462                                '\ttest -d ' + dDir + ' || mkdir -p ' + dDir + '\n' \
463                                '\tcp $< $@\n' \
464                                '\n' + \
465                                dDir + 'pci_cfgreg.h: ' + sDir + 'pci_cfgreg.h\n' \
466                                '\ttest -d ' + dDir + ' || mkdir -p ' + dDir + '\n' \
467                                '\tcp $< $@\n' \
468                                '\n'
469                        dDir = 'copied/freebsd/' + cpu + '/pci/'
470                        sDir = 'freebsd/i386/pci/'
471                        data += dDir + 'pci_bus.c: ' + sDir + 'pci_bus.c\n' \
472                                '\ttest -d ' + dDir + ' || mkdir -p ' + dDir + '\n' \
473                                '\tcp $< $@\n' \
474                                '\n'
475                        dDir = 'copied/freebsd/' + cpu + '/' + cpu + '/'
476                        sDir = 'freebsd/i386/i386/'
477                        data += dDir + 'legacy.c: ' + sDir + 'legacy.c\n' \
478                                '\ttest -d ' + dDir + ' || mkdir -p ' + dDir + '\n' \
479                                '\tcp $< $@\n' \
480                                '\n'
481
482                data += 'CPU_SED  = sed\n' \
483                        'CPU_SED += -e \'/arm/d\'\n' \
484                        'CPU_SED += -e \'/i386/d\'\n' \
485                        'CPU_SED += -e \'/powerpc/d\'\n' \
486                        'CPU_SED += -e \'/mips/d\'\n' \
487                        'CPU_SED += -e \'/sparc64/d\'\n' \
488                        '\n' \
489                        'install: $(LIB) install_bsd lib_user install_user\n' \
490                        '\n' \
491                        'install_bsd: $(LIB)\n' \
492                        '\tinstall -d $(INSTALL_BASE)/include\n' \
493                        '\tinstall -c -m 644 $(LIB) $(INSTALL_BASE)\n' \
494                        '\tcd rtemsbsd; for i in `find freebsd -name \'*.h\'` ; do \\\n' \
495                        '\t  install -c -m 644 -D "$$i" "$(INSTALL_BASE)/include/$$i" ; done\n' \
496                        '\tcd contrib/altq; for i in `find freebsd -name \'*.h\'` ; do \\\n' \
497                        '\t  install -c -m 644 -D "$$i" "$(INSTALL_BASE)/include/$$i" ; done\n' \
498                        '\tfor i in `find freebsd -name \'*.h\' | $(CPU_SED)` ; do \\\n' \
499                        '\t  install -c -m 644 -D "$$i" "$(INSTALL_BASE)/include/$$i" ; done\n' \
500                        '\t-cd freebsd/$(RTEMS_CPU)/include && for i in `find . -name \'*.h\'` ; do \\\n' \
501                        '\t  install -c -m 644 -D "$$i" "$(INSTALL_BASE)/include/$$i" ; done\n' \
502                        '\t-cd rtemsbsd/$(RTEMS_CPU)/include && \\\n' \
503                        '\t  for i in `find . -name \'*.h\' | $(CPU_SED)` ; do \\\n' \
504                        '\t    install -c -m 644 -D "$$i" "$(INSTALL_BASE)/include/$$i" ; done\n' \
505                        '\t-cd copied/rtemsbsd/$(RTEMS_CPU)/include && for i in `find . -name \'*.h\'` ; do \\\n' \
506                        '\t  install -c -m 644 -D "$$i" "$(INSTALL_BASE)/include/$$i" ; done\n' \
507                        '\n' \
508                        'install_user:\n' \
509                        '\t$(MAKE) -C freebsd-userspace install\n' \
510                        '\n' \
511                        'clean:\n' \
512                        '\trm -f -r $(PROJECT_INCLUDE)/rtems/freebsd\n' \
513                        '\trm -f $(LIB) $(C_O_FILES) $(C_D_FILES) $(GENERATED_FILES)\n' \
514                        '\trm -f libbsd.html\n' \
515                        '\trm -rf copied\n' \
516                        '\t$(MAKE) -C freebsd-userspace clean\n' \
517                        '\n' \
518                        '-include $(C_D_FILES)\n' \
519                        '\n' \
520                        'doc: libbsd.html\n' \
521                        '\n' \
522                        'libbsd.html: libbsd.txt\n' \
523                        '\tasciidoc -o libbsd.html libbsd.txt\n'
524 
525                out = open(tempFile, 'w')
526                out.write(data)
527                out.close()
528                makefile = RTEMS_DIR + '/Makefile'
529                processIfDifferent(tempFile, makefile, "Makefile")
530
531def assertHeaderFile(path):
532        if path[-2] != '.' or path[-1] != 'h':
533                print "*** " + path + " does not end in .h"
534                print "*** Move it to a C source file list"
535                sys.exit(2)
536
537def assertSourceFile(path):
538        if path[-2] != '.' or (path[-1] != 'c' and path[-1] != 'S'):
539                print "*** " + path + " does not end in .c"
540                print "*** Move it to a header file list"
541                sys.exit(2)
542
543# Module - logical group of related files we can perform actions on
544class Module:
545        def __init__(self, name):
546                self.name = name
547                self.conditionalOn = "none"
548                self.cppPattern = "s///"
549                self.headerFiles = []
550                self.sourceFiles = []
551                self.cpuDependentSourceFiles = {}
552                self.dependencies = []
553
554        def copyFromFreeBSDToRTEMS(self):
555                for file in self.headerFiles:
556                        file.copyFromFreeBSDToRTEMS()
557                for file in self.sourceFiles:
558                        file.copyFromFreeBSDToRTEMS()
559                for cpu, files in self.cpuDependentSourceFiles.items():
560                        for file in files:
561                                file.copyFromFreeBSDToRTEMS()
562
563        def copyFromRTEMSToFreeBSD(self):
564                for file in self.headerFiles:
565                        file.copyFromRTEMSToFreeBSD()
566                for file in self.sourceFiles:
567                        file.copyFromRTEMSToFreeBSD()
568                for cpu, files in self.cpuDependentSourceFiles.items():
569                        for file in files:
570                                file.copyFromRTEMSToFreeBSD()
571
572        def addFiles(self, currentFiles, newFiles, pathComposer, fromFreeBSDToRTEMSConverter, fromRTEMSToFreeBSDConverter, assertFile):
573                for file in newFiles:
574                        assertFile(file)
575                        currentFiles.append(File(file, pathComposer, fromFreeBSDToRTEMSConverter, fromRTEMSToFreeBSDConverter))
576                return currentFiles
577
578        def addHeaderFiles(self, files):
579                self.headerFiles = self.addFiles(self.headerFiles, files, PathComposer(), FromFreeBSDToRTEMSHeaderConverter(), FromRTEMSToFreeBSDHeaderConverter(), assertHeaderFile)
580
581        def addEmptyHeaderFiles(self, files):
582                self.headerFiles = self.addFiles(self.headerFiles, files, PathComposer(), EmptyConverter(), NoConverter(), assertHeaderFile)
583
584        def addRTEMSHeaderFiles(self, files):
585                self.headerFiles = self.addFiles(self.headerFiles, files, RTEMSPathComposer(), NoConverter(), NoConverter(), assertHeaderFile)
586
587        def addCPUDependentHeaderFiles(self, files):
588                self.headerFiles = self.addFiles(self.headerFiles, files, CPUDependentPathComposer(), FromFreeBSDToRTEMSHeaderConverter(), FromRTEMSToFreeBSDHeaderConverter(), assertHeaderFile)
589
590        def addSourceFiles(self, files):
591                self.sourceFiles = self.addFiles(self.sourceFiles, files, PathComposer(), FromFreeBSDToRTEMSSourceConverter(), FromRTEMSToFreeBSDSourceConverter(), assertSourceFile)
592
593        def addRTEMSSourceFiles(self, files):
594                self.sourceFiles = self.addFiles(self.sourceFiles, files, RTEMSPathComposer(), NoConverter(), NoConverter(), assertSourceFile)
595
596        def addCPUDependentSourceFiles(self, cpu, files):
597                if not self.cpuDependentSourceFiles.has_key(cpu):
598                        self.cpuDependentSourceFiles [cpu] = []
599                self.cpuDependentSourceFiles [cpu] = self.addFiles(self.cpuDependentSourceFiles [cpu], files, CPUDependentPathComposer(), FromFreeBSDToRTEMSSourceConverter(), FromRTEMSToFreeBSDSourceConverter(), assertSourceFile)
600
601        def addDependency(self, dep):
602                self.dependencies.append(dep)
603
604# Create Module Manager and supporting Modules
605#  - initialize each module with set of files associated
606mm = ModuleManager()
607
608rtems = Module('rtems')
609rtems.addRTEMSHeaderFiles(
610        [
611                'rtems/machine/atomic.h',
612                'rtems/machine/_bus.h',
613                'rtems/machine/bus.h',
614                'rtems/machine/bus_dma.h',
615                'rtems/machine/rtems-bsd-config.h',
616                'rtems/machine/clock.h',
617                'rtems/machine/endian.h',
618                'rtems/macpue/_limits.h',
619                'rtems/machine/_align.h',
620                'rtems/machine/mutex.h',
621                'rtems/machine/param.h',
622                'rtems/machine/pcpu.h',
623                'rtems/machine/pmap.h',
624                'rtems/machine/proc.h',
625                'rtems/machine/resource.h',
626                'rtems/machine/runq.h',
627                'rtems/machine/signal.h',
628                'rtems/machine/stdarg.h',
629                'rtems/machine/_stdint.h',
630                'rtems/machine/_types.h',
631                'rtems/machine/ucontext.h',
632                'rtems/machine/cpu.h',
633                'rtems/machine/rtems-bsd-symbols.h',
634                'rtems/machine/rtems-bsd-cache.h',
635                'rtems/machine/rtems-bsd-sysinit.h',
636                'rtems/machine/rtems-bsd-select.h',
637                'rtems/machine/rtems-bsd-taskqueue.h',
638                'rtems/machine/rtems-bsd-bus-dma.h',
639                'rtems/machine/rtems-bsd-bus-devicet.h',
640                'bsd.h',
641        ]
642)
643rtems.addRTEMSSourceFiles(
644        [
645                'dev/usb/controller/ohci_lpc24xx.c',
646                'dev/usb/controller/ohci_lpc32xx.c',
647                'dev/usb/controller/ehci_mpc83xx.c',
648                'src/rtems-bsd-thread0-ucred.c',
649                'src/rtems-bsd-cam.c',
650                'src/rtems-bsd-nexus.c',
651                'src/rtems-bsd-autoconf.c',
652                'src/rtems-bsd-delay.c',
653                'src/rtems-bsd-mutex.c',
654                'src/rtems-bsd-thread.c',
655                'src/rtems-bsd-condvar.c',
656                'src/rtems-bsd-lock.c',
657                'src/rtems-bsd-log.c',
658                'src/rtems-bsd-sx.c',
659                'src/rtems-bsd-rwlock.c',
660                'src/rtems-bsd-generic.c',
661                'src/rtems-bsd-page.c',
662                'src/rtems-bsd-panic.c',
663                'src/rtems-bsd-synch.c',
664                'src/rtems-bsd-signal.c',
665                'src/rtems-bsd-init.c',
666                'src/rtems-bsd-init-with-irq.c',
667                'src/rtems-bsd-assert.c',
668                'src/rtems-bsd-jail.c',
669                'src/rtems-bsd-shell.c',
670                'src/rtems-bsd-syscalls.c',
671                'src/rtems-bsd-smp.c',
672                #'src/rtems-bsd-socket.c',
673                #'src/rtems-bsd-mbuf.c',
674                'src/rtems-bsd-malloc.c',
675                'src/rtems-bsd-support.c',
676                'src/rtems-bsd-bus-dma.c',
677                'src/rtems-bsd-bus-dma-mbuf.c',
678                'src/rtems-bsd-sysctl.c',
679                'src/rtems-bsd-sysctlbyname.c',
680                'src/rtems-bsd-sysctlnametomib.c',
681                'src/rtems-bsd-taskqueue.c',
682                'src/rtems-bsd-timesupport.c',
683                'src/rtems-bsd-newproc.c',
684                'src/rtems-bsd-vm_glue.c',
685                'src/rtems-bsd-copyinout.c',
686                'src/rtems-bsd-descrip.c',
687                'src/rtems-bsd-conf.c',
688                'src/rtems-bsd-subr_param.c',
689                'src/rtems-bsd-pci_cfgreg.c',
690                'src/rtems-bsd-pci_bus.c',
691        ]
692)
693rtems.addEmptyHeaderFiles(
694        [
695                'cam/cam_queue.h',
696                'ddb/db_sym.h',
697                'ddb/ddb.h',
698                'machine/elf.h',
699                'machine/sf_buf.h',
700                'machine/smp.h',
701                'machine/vm.h',
702                #'machine/vmparam.h',
703                'local/linker_if.h',
704                'local/opt_bce.h',
705                'local/opt_ntp.h',
706                'security/audit/audit.h',
707                'sys/bio.h',
708                'sys/copyright.h',
709                'sys/cpuset.h',
710                'sys/exec.h',
711                'sys/fail.h',
712                'sys/limits.h',
713                'sys/sleepqueue.h',
714                'sys/namei.h',
715                'sys/_pthreadtypes.h',
716                #'sys/resourcevar.h',
717                'sys/sched.h',
718                'sys/select.h',
719                'sys/syscallsubr.h',
720                'sys/sysent.h',
721                'sys/syslimits.h',
722                'sys/sysproto.h',
723                'sys/stat.h',
724                #'sys/time.h',
725                'time.h',
726                'sys/timespec.h',
727                'sys/_timeval.h',
728                #'sys/vmmeter.h',
729                #'sys/vnode.h',
730                'vm/pmap.h',
731                #'vm/uma_int.h',
732                #'vm/uma_dbg.h',
733                #'vm/vm_extern.h',
734                'vm/vm_map.h',
735                #'vm/vm_object.h',
736                #'vm/vm_page.h',
737                'vm/vm_param.h',
738                #'vm/vm_kern.h',
739                'geom/geom_disk.h',
740                #'sys/kdb.h',
741                #'libkern/jenkins.h',
742                'machine/pcb.h',
743                #'net80211/ieee80211_freebsd.h',
744                'netgraph/ng_ipfw.h',
745                #'sys/sf_buf.h',
746        ]
747)
748
749local = Module('local')
750# RTEMS has its own local/pmap.h
751local.addHeaderFiles(
752        [
753                'local/bus_if.h',
754                'local/device_if.h',
755                'local/opt_bus.h',
756                'local/opt_cam.h',
757                'local/opt_compat.h',
758                'local/opt_ddb.h',
759                'local/opt_hwpmc_hooks.h',
760                'local/opt_init_path.h',
761                'local/opt_ktrace.h',
762                'local/opt_printf.h',
763                'local/opt_scsi.h',
764                'local/opt_usb.h',
765                'local/opt_inet.h',
766                'local/opt_inet6.h',
767                'local/opt_altq.h',
768                'local/opt_atalk.h',
769                'local/opt_bootp.h',
770                'local/opt_bpf.h',
771                'local/opt_bus.h',
772                'local/opt_cam.h',
773                'local/opt_carp.h',
774                'local/opt_compat.h',
775                'local/opt_config.h',
776                'local/opt_cpu.h',
777                'local/opt_ddb.h',
778                'local/opt_device_polling.h',
779                'local/opt_ef.h',
780                'local/opt_enc.h',
781                'local/opt_hwpmc_hooks.h',
782                'local/opt_inet6.h',
783                'local/opt_inet.h',
784                'local/opt_init_path.h',
785                'local/opt_ipdivert.h',
786                'local/opt_ipdn.h',
787                'local/opt_ipfw.h',
788                'local/opt_ipsec.h',
789                'local/opt_ipstealth.h',
790                'local/opt_ipx.h',
791                'local/opt_kdb.h',
792                'local/opt_kdtrace.h',
793                'local/opt_ktrace.h',
794                'local/opt_mbuf_profiling.h',
795                'local/opt_mbuf_stress_test.h',
796                'local/opt_mpath.h',
797                'local/opt_mrouting.h',
798                'local/opt_natm.h',
799                'local/opt_netgraph.h',
800                'local/opt_param.h',
801                'local/opt_posix.h',
802                'local/opt_pf.h',
803                'local/opt_printf.h',
804                'local/opt_route.h',
805                'local/opt_scsi.h',
806                'local/opt_sctp.h',
807                'local/opt_tcpdebug.h',
808                'local/opt_tdma.h',
809                'local/opt_usb.h',
810                'local/opt_vlan.h',
811                'local/opt_wlan.h',
812                'local/opt_zero.h',
813                'local/usbdevs_data.h',
814                'local/usbdevs.h',
815                'local/usb_if.h',
816                'local/vnode_if.h',
817                'local/vnode_if_newproto.h',
818                'local/vnode_if_typedef.h',
819                'local/cryptodev_if.h',
820                'local/miibus_if.h',
821                'local/miidevs.h',
822                'local/pci_if.h',
823                'local/pcib_if.h',
824        ]
825)
826local.addSourceFiles(
827        [
828                'local/usb_if.c',
829                'local/bus_if.c',
830                'local/device_if.c',
831                'local/cryptodev_if.c',
832                'local/miibus_if.c',
833                'local/pci_if.c',
834                'local/pcib_if.c',
835        ]
836)
837
838devUsb = Module('dev_usb')
839devUsb.addHeaderFiles(
840        [
841                'dev/usb/ufm_ioctl.h',
842                'dev/usb/usb_busdma.h',
843                'dev/usb/usb_bus.h',
844                'dev/usb/usb_cdc.h',
845                'dev/usb/usb_controller.h',
846                'dev/usb/usb_core.h',
847                'dev/usb/usb_debug.h',
848                'dev/usb/usb_dev.h',
849                'dev/usb/usb_device.h',
850                'dev/usb/usbdi.h',
851                'dev/usb/usbdi_util.h',
852                'dev/usb/usb_dynamic.h',
853                'dev/usb/usb_endian.h',
854                'dev/usb/usb_freebsd.h',
855                'dev/usb/usb_generic.h',
856                'dev/usb/usb.h',
857                'dev/usb/usbhid.h',
858                'dev/usb/usb_hub.h',
859                'dev/usb/usb_ioctl.h',
860                'dev/usb/usb_mbuf.h',
861                'dev/usb/usb_msctest.h',
862                'dev/usb/usb_process.h',
863                'dev/usb/usb_request.h',
864                'dev/usb/usb_transfer.h',
865                'dev/usb/usb_util.h',
866        ]
867)
868devUsb.addSourceFiles(
869        [
870                'dev/usb/usb_busdma.c',
871                'dev/usb/usb_core.c',
872                'dev/usb/usb_debug.c',
873                'dev/usb/usb_dev.c',
874                'dev/usb/usb_device.c',
875                'dev/usb/usb_dynamic.c',
876                'dev/usb/usb_error.c',
877                'dev/usb/usb_generic.c',
878                'dev/usb/usb_handle_request.c',
879                'dev/usb/usb_hid.c',
880                'dev/usb/usb_hub.c',
881                'dev/usb/usb_lookup.c',
882                'dev/usb/usb_mbuf.c',
883                'dev/usb/usb_msctest.c',
884                'dev/usb/usb_parse.c',
885                'dev/usb/usb_process.c',
886                'dev/usb/usb_request.c',
887                'dev/usb/usb_transfer.c',
888                'dev/usb/usb_util.c',
889        ]
890)
891
892devUsbAddOn = Module('dev_usb_add_on')
893devUsbAddOn.addHeaderFiles(
894        [
895                'dev/usb/usb_pci.h',
896                'dev/usb/usb_compat_linux.h',
897        ]
898)
899devUsbAddOn.addSourceFiles(
900        [
901                'dev/usb/usb_compat_linux.c',
902        ]
903)
904
905devUsbBluetooth = Module('dev_usb_bluetooth')
906devUsbBluetooth.addDependency(devUsb)
907devUsbBluetooth.addHeaderFiles(
908        [
909                'dev/usb/bluetooth/ng_ubt_var.h',
910        ]
911)
912devUsbBluetooth.addSourceFiles(
913        [
914                'dev/usb/bluetooth/ng_ubt.c',
915                'dev/usb/bluetooth/ubtbcmfw.c',
916        ]
917)
918
919devUsbController = Module('dev_usb_controller')
920devUsbController.addDependency(devUsb)
921devUsbController.addHeaderFiles(
922        [
923                'dev/usb/controller/ohci.h',
924                'dev/usb/controller/ohcireg.h',
925                'dev/usb/controller/ehci.h',
926                'dev/usb/controller/ehcireg.h',
927        ]
928)
929devUsbController.addSourceFiles(
930        [
931                'dev/usb/controller/ohci.c',
932                'dev/usb/controller/ehci.c',
933                'dev/usb/controller/usb_controller.c',
934        ]
935)
936
937devUsbControllerAddOn = Module('dev_usb_controller_add_on')
938devUsbControllerAddOn.addDependency(devUsb)
939devUsbControllerAddOn.addHeaderFiles(
940        [
941                'dev/usb/controller/at91dci.h',
942                'dev/usb/controller/atmegadci.h',
943                'dev/usb/controller/musb_otg.h',
944                'dev/usb/controller/uss820dci.h',
945        ]
946)
947devUsbControllerAddOn.addSourceFiles(
948        [
949                'dev/usb/controller/at91dci_atmelarm.c',
950                'dev/usb/controller/at91dci.c',
951                'dev/usb/controller/atmegadci_atmelarm.c',
952                'dev/usb/controller/atmegadci.c',
953                'dev/usb/controller/ehci_ixp4xx.c',
954                'dev/usb/controller/ehci_pci.c',
955                'dev/usb/controller/musb_otg.c',
956                'dev/usb/controller/ehci_mbus.c',
957                'dev/usb/controller/musb_otg_atmelarm.c',
958                'dev/usb/controller/ohci_atmelarm.c',
959                'dev/usb/controller/ohci_pci.c',
960                'dev/usb/controller/uhci_pci.c',
961                'dev/usb/controller/uss820dci_atmelarm.c',
962                'dev/usb/controller/uss820dci.c',
963        ]
964)
965
966devUsbInput = Module('dev_usb_input')
967devUsbInput.addDependency(devUsb)
968devUsbInput.addHeaderFiles(
969        [
970                'dev/usb/input/usb_rdesc.h',
971        ]
972)
973devUsbInput.addSourceFiles(
974        [
975                'dev/usb/input/uhid.c',
976                'dev/usb/input/ukbd.c',
977        ]
978)
979
980devUsbInputMouse = Module('dev_usb_mouse')
981devUsbInputMouse.addDependency(devUsb)
982devUsbInputMouse.addHeaderFiles(
983        [
984                'sys/tty.h',
985                'sys/mouse.h',
986                'sys/ttyqueue.h',
987                'sys/ttydefaults.h',
988                'sys/ttydisc.h',
989                'sys/ttydevsw.h',
990                'sys/ttyhook.h',
991        ]
992)
993devUsbInputMouse.addSourceFiles(
994        [
995                'dev/usb/input/ums.c',
996        ]
997)
998
999devUsbMisc = Module('dev_usb_misc')
1000devUsbMisc.addDependency(devUsb)
1001devUsbMisc.addHeaderFiles(
1002        [
1003                'dev/usb/misc/udbp.h',
1004        ]
1005)
1006devUsbMisc.addSourceFiles(
1007        [
1008                'dev/usb/misc/udbp.c',
1009                'dev/usb/misc/ufm.c',
1010        ]
1011)
1012
1013devUsbNet = Module('dev_usb_net')
1014devUsbNet.addDependency(devUsb)
1015devUsbNet.addHeaderFiles(
1016        [
1017                'dev/mii/mii.h',
1018                'dev/mii/miivar.h',
1019                'net/bpf.h',
1020                'net/ethernet.h',
1021                'net/if_arp.h',
1022                'net/if_dl.h',
1023                'net/if.h',
1024                'net/if_media.h',
1025                'net/if_types.h',
1026                'net/if_var.h',
1027                'net/vnet.h',
1028                'dev/usb/net/if_cdcereg.h',
1029                'dev/usb/net/usb_ethernet.h',
1030        ]
1031)
1032devUsbNet.addSourceFiles(
1033        [
1034                'dev/usb/net/if_cdce.c',
1035                'dev/usb/net/usb_ethernet.c',
1036        ]
1037)
1038
1039devUsbQuirk = Module('dev_usb_quirk')
1040devUsbQuirk.addDependency(devUsb)
1041devUsbQuirk.addHeaderFiles(
1042        [
1043                'dev/usb/quirk/usb_quirk.h',
1044        ]
1045)
1046devUsbQuirk.addSourceFiles(
1047        [
1048                'dev/usb/quirk/usb_quirk.c',
1049        ]
1050)
1051
1052devUsbSerial = Module('dev_usb_serial')
1053devUsbSerial.addDependency(devUsb)
1054devUsbSerial.addHeaderFiles(
1055        [
1056                'dev/usb/serial/uftdi_reg.h',
1057                'dev/usb/serial/usb_serial.h',
1058        ]
1059)
1060devUsbSerial.addSourceFiles(
1061        [
1062                'dev/usb/serial/u3g.c',
1063                'dev/usb/serial/uark.c',
1064                'dev/usb/serial/ubsa.c',
1065                'dev/usb/serial/ubser.c',
1066                'dev/usb/serial/uchcom.c',
1067                'dev/usb/serial/ucycom.c',
1068                'dev/usb/serial/ufoma.c',
1069                'dev/usb/serial/uftdi.c',
1070                'dev/usb/serial/ugensa.c',
1071                'dev/usb/serial/uipaq.c',
1072                'dev/usb/serial/ulpt.c',
1073                'dev/usb/serial/umct.c',
1074                'dev/usb/serial/umodem.c',
1075                'dev/usb/serial/umoscom.c',
1076                'dev/usb/serial/uplcom.c',
1077                'dev/usb/serial/usb_serial.c',
1078                'dev/usb/serial/uslcom.c',
1079                'dev/usb/serial/uvisor.c',
1080                'dev/usb/serial/uvscom.c',
1081        ]
1082)
1083
1084devUsbStorage = Module('dev_usb_storage')
1085devUsbStorage.addDependency(devUsb)
1086devUsbStorage.addSourceFiles(
1087        [
1088                'dev/usb/storage/umass.c',
1089        ]
1090)
1091
1092devUsbStorageAddOn = Module('dev_usb_storage_add_on')
1093devUsbStorageAddOn.addDependency(devUsb)
1094devUsbStorageAddOn.addHeaderFiles(
1095        [
1096                'dev/usb/storage/rio500_usb.h',
1097        ]
1098)
1099devUsbStorageAddOn.addSourceFiles(
1100        [
1101                'dev/usb/storage/urio.c',
1102                'dev/usb/storage/ustorage_fs.c',
1103        ]
1104)
1105
1106devUsbTemplate = Module('dev_usb_template')
1107devUsbTemplate.addDependency(devUsb)
1108devUsbTemplate.addHeaderFiles(
1109        [
1110                'dev/usb/template/usb_template.h',
1111        ]
1112)
1113devUsbTemplate.addSourceFiles(
1114        [
1115                'dev/usb/template/usb_template.c',
1116                'dev/usb/template/usb_template_cdce.c',
1117                'dev/usb/template/usb_template_msc.c',
1118                'dev/usb/template/usb_template_mtp.c',
1119        ]
1120)
1121
1122devUsbWlan = Module('dev_usb_wlan')
1123devUsbWlan.addDependency(devUsb)
1124devUsbWlan.addHeaderFiles(
1125        [
1126                'dev/usb/wlan/if_rumfw.h',
1127                'dev/usb/wlan/if_rumreg.h',
1128                'dev/usb/wlan/if_rumvar.h',
1129                'dev/usb/wlan/if_uathreg.h',
1130                'dev/usb/wlan/if_uathvar.h',
1131                'dev/usb/wlan/if_upgtvar.h',
1132                'dev/usb/wlan/if_uralreg.h',
1133                'dev/usb/wlan/if_uralvar.h',
1134                'dev/usb/wlan/if_zydfw.h',
1135                'dev/usb/wlan/if_zydreg.h',
1136        ]
1137)
1138devUsbWlan.addSourceFiles(
1139        [
1140                'dev/usb/wlan/if_rum.c',
1141                'dev/usb/wlan/if_uath.c',
1142                'dev/usb/wlan/if_upgt.c',
1143                'dev/usb/wlan/if_ural.c',
1144                'dev/usb/wlan/if_zyd.c',
1145        ]
1146)
1147
1148devPci = Module('dev_pci')
1149devPci.addHeaderFiles(
1150        [
1151                'dev/pci/pcireg.h',
1152                'dev/pci/pcivar.h',
1153        ]
1154)
1155
1156devUsbBase = Module('dev_usb_base')
1157devUsbBase.addHeaderFiles(
1158        [
1159                'bsm/audit.h',
1160                'bsm/audit_kevents.h',
1161                'sys/acl.h',
1162                'sys/bufobj.h',
1163                'sys/_bus_dma.h',
1164                'sys/bus_dma.h',
1165                'sys/bus.h',
1166                'sys/callout.h',
1167                'sys/cdefs.h',
1168                'sys/condvar.h',
1169                'sys/conf.h',
1170                #'sys/cpuset.h',
1171                'sys/ctype.h',
1172                'sys/endian.h',
1173                'sys/errno.h',
1174                'sys/event.h',
1175                'sys/eventhandler.h',
1176                'sys/fcntl.h',
1177                'sys/filedesc.h',
1178                'sys/file.h',
1179                'sys/filio.h',
1180                'sys/ioccom.h',
1181                # FreeBSD version is in RTEMS since used by readv/writev
1182                # 'sys/_iovec.h',
1183                'sys/kernel.h',
1184                'sys/kobj.h',
1185                'sys/kthread.h',
1186                'sys/ktr.h',
1187                'sys/libkern.h',
1188                'sys/linker_set.h',
1189                'sys/_lock.h',
1190                'sys/lock.h',
1191                'sys/_lockmgr.h',
1192                'sys/lockmgr.h',
1193                'sys/lock_profile.h',
1194                'sys/lockstat.h',
1195                'sys/mac.h',
1196                'sys/malloc.h',
1197                'sys/mbuf.h',
1198                'sys/module.h',
1199                'sys/mount.h',
1200                'sys/_mutex.h',
1201                'sys/mutex.h',
1202                'sys/_null.h',
1203                'sys/osd.h',
1204                'sys/param.h',
1205                'sys/pcpu.h',
1206                'sys/poll.h',
1207                'sys/priority.h',
1208                'sys/priv.h',
1209                'sys/proc.h',
1210                'sys/queue.h',
1211                'sys/refcount.h',
1212                'sys/resource.h',
1213                'sys/resourcevar.h',
1214                'sys/rtprio.h',
1215                'sys/runq.h',
1216                'sys/_rwlock.h',
1217                'sys/rwlock.h',
1218                'sys/_semaphore.h',
1219                'sys/selinfo.h',
1220                'sys/sigio.h',
1221                'sys/signal.h',
1222                'sys/signalvar.h',
1223                'sys/_sigset.h',
1224                #'sys/sleepqueue.h',
1225                'sys/socket.h',
1226                'sys/stddef.h',
1227                'sys/stdint.h',
1228                'sys/_sx.h',
1229                'sys/sx.h',
1230                'sys/sysctl.h',
1231                'sys/systm.h',
1232                'sys/ttycom.h',
1233                'sys/_types.h',
1234                'sys/types.h',
1235                'sys/ucontext.h',
1236                'sys/ucred.h',
1237                # FreeBSD version is in RTEMS since used by readv/writev
1238                # 'sys/uio.h',
1239                'sys/aio.h',
1240                'sys/unistd.h',
1241                'sys/vmmeter.h',
1242                #'sys/vnode.h',
1243                'sys/rman.h',
1244                'sys/reboot.h',
1245                'sys/bitstring.h',
1246                'sys/linker.h',
1247                'vm/uma.h',
1248                'vm/uma_int.h',
1249                'vm/uma_dbg.h',
1250                'vm/vm.h',
1251                #'vm/vm_page.h',
1252                'fs/devfs/devfs_int.h',
1253        ]
1254)
1255devUsbBase.addSourceFiles(
1256        [
1257                'kern/init_main.c',
1258                'kern/kern_linker.c',
1259                'kern/kern_mib.c',
1260                'kern/kern_timeout.c',
1261                'kern/kern_mbuf.c',
1262                'kern/kern_module.c',
1263                'kern/kern_sysctl.c',
1264                'kern/subr_bus.c',
1265                'kern/subr_kobj.c',
1266                #'kern/subr_sleepqueue.c',
1267                'kern/uipc_mbuf.c',
1268                'kern/uipc_mbuf2.c',
1269                'kern/uipc_socket.c',
1270                'kern/uipc_sockbuf.c',
1271                'kern/uipc_domain.c',
1272                #'kern/uipc_syscalls.c',
1273                'vm/uma_core.c',
1274        ]
1275)
1276
1277cam = Module('cam')
1278cam.addHeaderFiles(
1279        [
1280                'sys/ata.h',
1281                'cam/cam.h',
1282                'cam/cam_ccb.h',
1283                'cam/cam_sim.h',
1284                'cam/cam_xpt_sim.h',
1285                'cam/scsi/scsi_all.h',
1286                'cam/scsi/scsi_da.h',
1287                'cam/ata/ata_all.h',
1288                'cam/cam_periph.h',
1289                'cam/cam_debug.h',
1290                'cam/cam_xpt.h',
1291        ]
1292)
1293cam.addSourceFiles(
1294        [
1295                'cam/cam.c',
1296                'cam/scsi/scsi_all.c',
1297        ]
1298)
1299
1300devNet = Module('dev_net')
1301devNet.addHeaderFiles(
1302        [
1303                'dev/mii/mii.h',
1304                'dev/mii/miivar.h',
1305                'dev/mii/brgphyreg.h',
1306                'dev/mii/icsphyreg.h',
1307                'dev/led/led.h',
1308                'net/bpf.h',
1309                'net/ethernet.h',
1310                'net/if_arp.h',
1311                'net/if_dl.h',
1312                'net/if.h',
1313                'net/if_media.h',
1314                'net/if_types.h',
1315                'net/if_var.h',
1316                'net/vnet.h',
1317        ]
1318)
1319devNet.addSourceFiles(
1320        [
1321                'dev/mii/mii.c',
1322                'dev/mii/mii_physubr.c',
1323                'dev/mii/icsphy.c',
1324                'dev/mii/brgphy.c',
1325        ]
1326)
1327
1328devNic = Module('dev_nic')
1329devNic.addHeaderFiles(
1330        [
1331        #       'sys/taskqueue.h',
1332                'sys/pciio.h',
1333                'dev/random/randomdev_soft.h',
1334                'sys/eventvar.h',
1335                'sys/kenv.h',
1336                'dev/pci/pci_private.h',
1337                'dev/pci/pcib_private.h',
1338                'isa/isavar.h',
1339                'isa/pnpvar.h',
1340        ]
1341)
1342
1343devNic.addCPUDependentHeaderFiles(
1344        [
1345                'arm/include/cpufunc.h',
1346                'i386/include/specialreg.h',
1347                'i386/include/md_var.h',
1348                'i386/include/intr_machdep.h',
1349                'i386/include/legacyvar.h',
1350                'i386/include/pci_cfgreg.h',
1351                'i386/include/cpufunc.h',
1352                'mips/include/cpufunc.h',
1353                'mips/include/cpuregs.h',
1354                'powerpc/include/cpufunc.h',
1355                'powerpc/include/psl.h',
1356                'powerpc/include/spr.h',
1357                'sparc64/include/cpufunc.h',
1358                'sparc64/include/asi.h',
1359                'sparc64/include/pstate.h',
1360        ]
1361)
1362
1363devNic.addCPUDependentSourceFiles(
1364        'i386',
1365        [
1366                'i386/pci/pci_bus.c',
1367                'i386/i386/legacy.c',
1368        ]
1369)
1370devNic.addSourceFiles(
1371        [
1372        #       'kern/subr_taskqueue.c',
1373                'kern/subr_hints.c',
1374                'dev/random/harvest.c',
1375                'libkern/random.c',
1376                'libkern/arc4random.c',
1377                'kern/subr_pcpu.c',
1378                'kern/subr_sbuf.c',
1379                'kern/subr_rman.c',
1380                'kern/subr_module.c',
1381                'libkern/inet_ntoa.c',
1382                'kern/kern_prot.c',
1383                'kern/kern_proc.c',
1384                'kern/kern_time.c',
1385                'kern/kern_event.c',
1386                'netinet/tcp_hostcache.c',
1387                'dev/pci/pci.c',
1388                'dev/pci/pci_user.c',
1389                'kern/uipc_accf.c',
1390                'kern/kern_ntptime.c',
1391                'kern/kern_environment.c',
1392                'kern/kern_intr.c',
1393                'kern/kern_resource.c',
1394                'kern/subr_bufring.c',
1395                'dev/led/led.c',
1396                'kern/subr_unit.c',
1397                'dev/pci/pci_pci.c',
1398        ]
1399)
1400
1401devNic_re = Module('dev_nic_re')
1402devNic_re.addHeaderFiles(
1403        [
1404                'pci/if_rlreg.h',
1405        ]
1406)
1407devNic_re.addSourceFiles(
1408        [
1409                'dev/re/if_re.c',
1410        ]
1411)
1412
1413devNic_fxp = Module('dev_nic_fxp')
1414devNic_fxp.addHeaderFiles(
1415        [
1416                'dev/fxp/if_fxpreg.h',
1417                'dev/fxp/if_fxpvar.h',
1418                'dev/fxp/rcvbundl.h',
1419        ]
1420)
1421devNic_fxp.addSourceFiles(
1422        [
1423                'dev/fxp/if_fxp.c',
1424        ]
1425)
1426
1427devNic_e1000 = Module('dev_nic_e1000')
1428devNic_e1000.addHeaderFiles(
1429        [
1430                'dev/e1000/e1000_80003es2lan.h',
1431                'dev/e1000/e1000_82571.h',
1432                'dev/e1000/e1000_defines.h',
1433                'dev/e1000/e1000_mac.h',
1434                'dev/e1000/e1000_nvm.h',
1435                'dev/e1000/e1000_regs.h',
1436                'dev/e1000/if_igb.h',
1437                'dev/e1000/e1000_82541.h',
1438                'dev/e1000/e1000_82575.h',
1439                'dev/e1000/e1000_hw.h',
1440                'dev/e1000/e1000_manage.h',
1441                'dev/e1000/e1000_osdep.h',
1442                'dev/e1000/e1000_vf.h',
1443                'dev/e1000/if_lem.h',
1444                'dev/e1000/e1000_82543.h',
1445                'dev/e1000/e1000_api.h',
1446                'dev/e1000/e1000_ich8lan.h',
1447                'dev/e1000/e1000_mbx.h',
1448                'dev/e1000/e1000_phy.h',
1449                'dev/e1000/if_em.h',
1450        ]
1451)
1452devNic_e1000.addSourceFiles(
1453        [
1454                'dev/e1000/e1000_80003es2lan.c',
1455                'dev/e1000/e1000_82542.c',
1456                'dev/e1000/e1000_82575.c',
1457                'dev/e1000/e1000_mac.c',
1458                'dev/e1000/e1000_nvm.c',
1459                'dev/e1000/e1000_vf.c',
1460                'dev/e1000/if_lem.c',
1461                'dev/e1000/e1000_82540.c',
1462                'dev/e1000/e1000_82543.c',
1463                'dev/e1000/e1000_api.c',
1464                'dev/e1000/e1000_manage.c',
1465                'dev/e1000/e1000_osdep.c',
1466                'dev/e1000/if_em.c',
1467                'dev/e1000/e1000_82541.c',
1468                'dev/e1000/e1000_82571.c',
1469                'dev/e1000/e1000_ich8lan.c',
1470                'dev/e1000/e1000_mbx.c',
1471                'dev/e1000/e1000_phy.c',
1472                'dev/e1000/if_igb.c',
1473        ]
1474)
1475
1476# DEC Tulip aka Intel 21143
1477devNic_dc = Module('dev_nic_dc')
1478devNic_dc.addHeaderFiles(
1479        [
1480                'dev/dc/if_dcreg.h',
1481        ]
1482)
1483devNic_dc.addSourceFiles(
1484        [
1485                'dev/dc/dcphy.c',
1486                'dev/dc/if_dc.c',
1487                'dev/dc/pnphy.c',
1488        ]
1489)
1490
1491# SMC9111x
1492devNic_smc = Module('dev_nic_smc')
1493devNic_smc.addHeaderFiles(
1494        [
1495                'dev/smc/if_smcreg.h',
1496                'dev/smc/if_smcvar.h',
1497        ]
1498)
1499devNic_smc.addSourceFiles(
1500        [
1501                'dev/smc/if_smc.c',
1502        ]
1503)
1504
1505# Crystal Semiconductor CS8900
1506devNic_cs = Module('dev_nic_cs')
1507devNic_cs.addHeaderFiles(
1508        [
1509                'dev/cs/if_csreg.h',
1510                'dev/cs/if_csvar.h',
1511        ]
1512)
1513devNic_cs.addSourceFiles(
1514        [
1515                'dev/cs/if_cs.c',
1516                'dev/cs/if_cs_isa.c',
1517                'dev/cs/if_cs_pccard.c',
1518        ]
1519)
1520
1521# Broadcomm BCE, BFE, BGE - MII is intertwined
1522devNic_broadcomm = Module('dev_nic_broadcomm')
1523devNic_broadcomm.addHeaderFiles(
1524        [
1525                'dev/bce/if_bcefw.h',
1526                'dev/bce/if_bcereg.h',
1527                'dev/bfe/if_bfereg.h',
1528                'dev/bge/if_bgereg.h',
1529        ]
1530)
1531devNic_broadcomm.addSourceFiles(
1532        [
1533                'dev/bce/if_bce.c',
1534                'dev/bfe/if_bfe.c',
1535                'dev/bge/if_bge.c',
1536        ]
1537)
1538
1539netDeps = Module('netDeps')
1540netDeps.addHeaderFiles(
1541        [
1542                'security/mac/mac_framework.h',
1543                'sys/cpu.h',
1544                'sys/interrupt.h',
1545                'sys/fnv_hash.h',
1546                'sys/tree.h',
1547                'sys/buf_ring.h',
1548                'sys/rwlock.h',
1549                'sys/_rmlock.h',
1550                'sys/sockio.h',
1551                'sys/sdt.h',
1552                'sys/_task.h',
1553                'sys/sbuf.h',
1554                'sys/smp.h',
1555                'sys/syslog.h',
1556                'sys/jail.h',
1557                'sys/protosw.h',
1558                'sys/random.h',
1559                'sys/rmlock.h',
1560                'sys/hash.h',
1561                #'sys/select.h',
1562                'sys/sf_buf.h',
1563                'sys/socketvar.h',
1564                'sys/sockbuf.h',
1565                #'sys/sysproto.h',
1566                'sys/sockstate.h',
1567                'sys/sockopt.h',
1568                'sys/domain.h',
1569                'sys/time.h',
1570        ]
1571)
1572
1573net = Module('net')
1574net.addHeaderFiles(
1575        [
1576                'net/bpf_buffer.h',
1577                'net/bpfdesc.h',
1578                'net/bpf.h',
1579                'net/bpf_jitter.h',
1580                'net/bpf_zerocopy.h',
1581                'net/bridgestp.h',
1582                'net/ethernet.h',
1583                'net/fddi.h',
1584                'net/firewire.h',
1585                'net/flowtable.h',
1586                'net/ieee8023ad_lacp.h',
1587                'net/if_arc.h',
1588                'net/if_arp.h',
1589                'net/if_atm.h',
1590                'net/if_bridgevar.h',
1591                'net/if_clone.h',
1592                'net/if_dl.h',
1593                'net/if_enc.h',
1594                'net/if_gif.h',
1595                'net/if_gre.h',
1596                'net/if.h',
1597                'net/if_lagg.h',
1598                'net/if_llatbl.h',
1599                'net/if_llc.h',
1600                'net/if_media.h',
1601                'net/if_mib.h',
1602                'net/if_sppp.h',
1603                'net/if_stf.h',
1604                'net/if_tap.h',
1605                'net/if_tapvar.h',
1606                'net/if_tun.h',
1607                'net/if_types.h',
1608                'net/if_var.h',
1609                'net/if_vlan_var.h',
1610                'net/iso88025.h',
1611                'net/netisr.h',
1612                'net/pfil.h',
1613                'net/pfkeyv2.h',
1614                'net/ppp_defs.h',
1615                'net/radix.h',
1616                'net/radix_mpath.h',
1617                'net/raw_cb.h',
1618                'net/route.h',
1619                'net/slcompress.h',
1620                'net/vnet.h',
1621                'net/zlib.h',
1622                'sys/timepps.h',
1623                'sys/timetc.h',
1624                'sys/timex.h',
1625        ]
1626)
1627net.addSourceFiles(
1628        [
1629                'kern/subr_eventhandler.c',
1630                'kern/kern_subr.c',
1631                'kern/kern_tc.c',
1632                'libkern/fls.c',
1633                'net/bridgestp.c',
1634                'net/ieee8023ad_lacp.c',
1635                'net/if_atmsubr.c',
1636                'net/if.c',
1637                'net/if_clone.c',
1638                'net/if_dead.c',
1639                'net/if_disc.c',
1640                'net/if_edsc.c',
1641                'net/if_ef.c',
1642                'net/if_enc.c',
1643                'net/if_epair.c',
1644                'net/if_faith.c',
1645                'net/if_fddisubr.c',
1646                'net/if_fwsubr.c',
1647                'net/if_gif.c',
1648                'net/if_gre.c',
1649                'net/if_iso88025subr.c',
1650                'net/if_lagg.c',
1651                'net/if_llatbl.c',
1652                'net/if_loop.c',
1653                'net/if_media.c',
1654                'net/if_mib.c',
1655                'net/if_spppfr.c',
1656                'net/if_spppsubr.c',
1657                'net/if_tap.c',
1658                'net/if_tun.c',
1659                'net/if_vlan.c',
1660                'net/pfil.c',
1661                'net/radix.c',
1662                'net/radix_mpath.c',
1663                'net/raw_cb.c',
1664                'net/raw_usrreq.c',
1665                'net/route.c',
1666                'net/rtsock.c',
1667                'net/slcompress.c',
1668                'net/zlib.c',
1669                'net/bpf_buffer.c',
1670                'net/bpf.c',
1671                'net/bpf_filter.c',
1672                'net/bpf_jitter.c',
1673                'net/if_arcsubr.c',
1674                'net/if_bridge.c',
1675                'net/if_ethersubr.c',
1676                'net/netisr.c',
1677        ]
1678)
1679
1680netinet = Module('netinet')
1681netinet.addHeaderFiles(
1682        [
1683                'netinet/icmp6.h',
1684                'netinet/icmp_var.h',
1685                'netinet/if_atm.h',
1686                'netinet/if_ether.h',
1687                'netinet/igmp.h',
1688                'netinet/igmp_var.h',
1689                'netinet/in_gif.h',
1690                'netinet/in.h',
1691                'netinet/in_pcb.h',
1692                'netinet/in_systm.h',
1693                'netinet/in_var.h',
1694                'netinet/ip6.h',
1695                'netinet/ip_carp.h',
1696                'netinet/ip_divert.h',
1697                'netinet/ip_dummynet.h',
1698                'netinet/ip_ecn.h',
1699                'netinet/ip_encap.h',
1700                'netinet/ip_fw.h',
1701                'netinet/ip_gre.h',
1702                'netinet/ip.h',
1703                'netinet/ip_icmp.h',
1704                'netinet/ip_ipsec.h',
1705                'netinet/ip_mroute.h',
1706                'netinet/ip_options.h',
1707                'netinet/ip_var.h',
1708                'netinet/ipfw/ip_dn_private.h',
1709                'netinet/ipfw/ip_fw_private.h',
1710                'netinet/ipfw/dn_sched.h',
1711                'netinet/ipfw/dn_heap.h',
1712                'netinet/pim.h',
1713                'netinet/pim_var.h',
1714                'netinet/sctp_asconf.h',
1715                'netinet/sctp_auth.h',
1716                'netinet/sctp_bsd_addr.h',
1717                'netinet/sctp_cc_functions.h',
1718                'netinet/sctp_constants.h',
1719                'netinet/sctp_crc32.h',
1720                'netinet/sctp.h',
1721                'netinet/sctp_header.h',
1722                'netinet/sctp_indata.h',
1723                'netinet/sctp_input.h',
1724                'netinet/sctp_lock_bsd.h',
1725                'netinet/sctp_os_bsd.h',
1726                'netinet/sctp_os.h',
1727                'netinet/sctp_output.h',
1728                'netinet/sctp_pcb.h',
1729                'netinet/sctp_peeloff.h',
1730                'netinet/sctp_structs.h',
1731                'netinet/sctp_sysctl.h',
1732                'netinet/sctp_timer.h',
1733                'netinet/sctp_uio.h',
1734                'netinet/sctputil.h',
1735                'netinet/sctp_var.h',
1736                'netinet/tcp_debug.h',
1737                'netinet/tcp_fsm.h',
1738                'netinet/tcp.h',
1739                'netinet/tcp_hostcache.h',
1740                'netinet/tcpip.h',
1741                'netinet/tcp_lro.h',
1742                'netinet/tcp_offload.h',
1743                'netinet/tcp_seq.h',
1744                'netinet/tcp_syncache.h',
1745                'netinet/tcp_timer.h',
1746                'netinet/tcp_var.h',
1747                'netinet/toedev.h',
1748                'netinet/udp.h',
1749                'netinet/udp_var.h',
1750                'netinet/libalias/alias_local.h',
1751                'netinet/libalias/alias.h',
1752                'netinet/libalias/alias_mod.h',
1753                'netinet/libalias/alias_sctp.h',
1754        ]
1755)
1756# in_cksum.c is architecture dependent
1757netinet.addSourceFiles(
1758        [
1759                'netinet/accf_data.c',
1760                'netinet/accf_dns.c',
1761                'netinet/accf_http.c',
1762                'netinet/if_atm.c',
1763                'netinet/if_ether.c',
1764                'netinet/igmp.c',
1765                'netinet/in.c',
1766                'netinet/in_gif.c',
1767                'netinet/in_mcast.c',
1768                'netinet/in_pcb.c',
1769                'netinet/in_proto.c',
1770                'netinet/in_rmx.c',
1771                'netinet/ip_carp.c',
1772                'netinet/ip_divert.c',
1773                'netinet/ip_ecn.c',
1774                'netinet/ip_encap.c',
1775                'netinet/ip_fastfwd.c',
1776                'netinet/ip_gre.c',
1777                'netinet/ip_icmp.c',
1778                'netinet/ip_id.c',
1779                'netinet/ip_input.c',
1780                'netinet/ip_ipsec.c',
1781                'netinet/ip_mroute.c',
1782                'netinet/ip_options.c',
1783                'netinet/ip_output.c',
1784                'netinet/raw_ip.c',
1785                'netinet/sctp_asconf.c',
1786                'netinet/sctp_auth.c',
1787                'netinet/sctp_bsd_addr.c',
1788                'netinet/sctp_cc_functions.c',
1789                'netinet/sctp_crc32.c',
1790                'netinet/sctp_indata.c',
1791                'netinet/sctp_input.c',
1792                'netinet/sctp_output.c',
1793                'netinet/sctp_pcb.c',
1794                'netinet/sctp_peeloff.c',
1795                'netinet/sctp_sysctl.c',
1796                'netinet/sctp_timer.c',
1797                'netinet/sctp_usrreq.c',
1798                'netinet/sctputil.c',
1799                'netinet/tcp_debug.c',
1800                #'netinet/tcp_hostcache.c',
1801                'netinet/tcp_input.c',
1802                'netinet/tcp_lro.c',
1803                'netinet/tcp_offload.c',
1804                'netinet/tcp_output.c',
1805                'netinet/tcp_reass.c',
1806                'netinet/tcp_sack.c',
1807                'netinet/tcp_subr.c',
1808                'netinet/tcp_syncache.c',
1809                'netinet/tcp_timer.c',
1810                'netinet/tcp_timewait.c',
1811                'netinet/tcp_usrreq.c',
1812                'netinet/udp_usrreq.c',
1813                'netinet/ipfw/dn_sched_fifo.c',
1814                'netinet/ipfw/dn_sched_rr.c',
1815                'netinet/ipfw/ip_fw_log.c',
1816                'netinet/ipfw/dn_sched_qfq.c',
1817                'netinet/ipfw/dn_sched_prio.c',
1818                #'netinet/ipfw/ip_fw_dynamic.c',
1819                'netinet/ipfw/ip_dn_glue.c',
1820                'netinet/ipfw/ip_fw2.c',
1821                'netinet/ipfw/dn_heap.c',
1822                'netinet/ipfw/ip_dummynet.c',
1823                'netinet/ipfw/ip_fw_sockopt.c',
1824                'netinet/ipfw/dn_sched_wf2q.c',
1825                'netinet/ipfw/ip_fw_nat.c',
1826                'netinet/ipfw/ip_fw_pfil.c',
1827                'netinet/ipfw/ip_dn_io.c',
1828                'netinet/ipfw/ip_fw_table.c',
1829                'netinet/libalias/alias_dummy.c',
1830                'netinet/libalias/alias_pptp.c',
1831                'netinet/libalias/alias_smedia.c',
1832                'netinet/libalias/alias_mod.c',
1833                'netinet/libalias/alias_cuseeme.c',
1834                'netinet/libalias/alias_nbt.c',
1835                'netinet/libalias/alias_irc.c',
1836                'netinet/libalias/alias_util.c',
1837                'netinet/libalias/alias_db.c',
1838                'netinet/libalias/alias_ftp.c',
1839                'netinet/libalias/alias_proxy.c',
1840                'netinet/libalias/alias.c',
1841                'netinet/libalias/alias_skinny.c',
1842                'netinet/libalias/alias_sctp.c',
1843        ]
1844)
1845
1846netinet6 = Module('netinet6')
1847netinet6.conditionalOn = "DISABLE_IPV6"
1848netinet6.cppPattern = 's/^\#define INET6 1/\/\/ \#define INET6 1/'
1849netinet6.addHeaderFiles(
1850        [
1851                'netinet6/icmp6.h',
1852                'netinet6/in6_gif.h',
1853                'netinet6/in6.h',
1854                'netinet6/in6_ifattach.h',
1855                'netinet6/in6_pcb.h',
1856                'netinet6/in6_var.h',
1857                'netinet6/ip6_ecn.h',
1858                'netinet6/ip6.h',
1859                'netinet6/ip6_ipsec.h',
1860                'netinet6/ip6_mroute.h',
1861                'netinet6/ip6protosw.h',
1862                'netinet6/ip6_var.h',
1863                'netinet6/mld6.h',
1864                'netinet6/mld6_var.h',
1865                'netinet6/nd6.h',
1866                'netinet6/pim6.h',
1867                'netinet6/pim6_var.h',
1868                'netinet6/raw_ip6.h',
1869                'netinet6/scope6_var.h',
1870                'netinet6/sctp6_var.h',
1871                'netinet6/tcp6_var.h',
1872                'netinet6/udp6_var.h',
1873        ]
1874)
1875netinet6.addSourceFiles(
1876        [
1877                'net/if_stf.c',
1878                'netinet6/dest6.c',
1879                'netinet6/frag6.c',
1880                'netinet6/icmp6.c',
1881                'netinet6/in6.c',
1882                'netinet6/in6_cksum.c',
1883                'netinet6/in6_gif.c',
1884                'netinet6/in6_ifattach.c',
1885                'netinet6/in6_mcast.c',
1886                'netinet6/in6_pcb.c',
1887                'netinet6/in6_proto.c',
1888                'netinet6/in6_rmx.c',
1889                'netinet6/in6_src.c',
1890                'netinet6/ip6_forward.c',
1891                'netinet6/ip6_id.c',
1892                'netinet6/ip6_input.c',
1893                'netinet6/ip6_ipsec.c',
1894                'netinet6/ip6_mroute.c',
1895                'netinet6/ip6_output.c',
1896                'netinet6/mld6.c',
1897                'netinet6/nd6.c',
1898                'netinet6/nd6_nbr.c',
1899                'netinet6/nd6_rtr.c',
1900                'netinet6/raw_ip6.c',
1901                'netinet6/route6.c',
1902                'netinet6/scope6.c',
1903                'netinet6/sctp6_usrreq.c',
1904                'netinet6/udp6_usrreq.c',
1905        ]
1906)
1907
1908netipsec = Module('netipsec')
1909netipsec.addHeaderFiles(
1910        [
1911                'netipsec/ah.h',
1912                'netipsec/ah_var.h',
1913                'netipsec/esp.h',
1914                'netipsec/esp_var.h',
1915                'netipsec/ipcomp.h',
1916                'netipsec/ipcomp_var.h',
1917                'netipsec/ipip_var.h',
1918                'netipsec/ipsec6.h',
1919                'netipsec/ipsec.h',
1920                'netipsec/keydb.h',
1921                'netipsec/key_debug.h',
1922                'netipsec/key.h',
1923                'netipsec/keysock.h',
1924                'netipsec/key_var.h',
1925                'netipsec/xform.h',
1926        ]
1927)
1928netipsec.addSourceFiles(
1929        [
1930                'netipsec/ipsec.c',
1931                'netipsec/ipsec_input.c',
1932                'netipsec/ipsec_mbuf.c',
1933                'netipsec/ipsec_output.c',
1934                'netipsec/key.c',
1935                'netipsec/key_debug.c',
1936                'netipsec/keysock.c',
1937                'netipsec/xform_ah.c',
1938                'netipsec/xform_esp.c',
1939                'netipsec/xform_ipcomp.c',
1940                'netipsec/xform_ipip.c',
1941                'netipsec/xform_tcp.c',
1942        ]
1943)
1944
1945net80211 = Module('net80211')
1946net80211.addHeaderFiles(
1947        [
1948                'net80211/ieee80211_action.h',
1949                'net80211/ieee80211_adhoc.h',
1950                'net80211/ieee80211_ageq.h',
1951                'net80211/ieee80211_amrr.h',
1952                'net80211/ieee80211_crypto.h',
1953                'net80211/ieee80211_dfs.h',
1954                'net80211/ieee80211_freebsd.h',
1955                'net80211/_ieee80211.h',
1956                'net80211/ieee80211.h',
1957                'net80211/ieee80211_hostap.h',
1958                'net80211/ieee80211_ht.h',
1959                'net80211/ieee80211_input.h',
1960                'net80211/ieee80211_ioctl.h',
1961                'net80211/ieee80211_mesh.h',
1962                'net80211/ieee80211_monitor.h',
1963                'net80211/ieee80211_node.h',
1964                'net80211/ieee80211_phy.h',
1965                'net80211/ieee80211_power.h',
1966                'net80211/ieee80211_proto.h',
1967                'net80211/ieee80211_radiotap.h',
1968                'net80211/ieee80211_ratectl.h',
1969                'net80211/ieee80211_regdomain.h',
1970                'net80211/ieee80211_rssadapt.h',
1971                'net80211/ieee80211_scan.h',
1972                'net80211/ieee80211_sta.h',
1973                'net80211/ieee80211_superg.h',
1974                'net80211/ieee80211_tdma.h',
1975                'net80211/ieee80211_var.h',
1976                'net80211/ieee80211_wds.h',
1977        ]
1978)
1979netipsec.addSourceFiles(
1980        [
1981                'net80211/ieee80211_acl.c',
1982                'net80211/ieee80211_action.c',
1983                'net80211/ieee80211_adhoc.c',
1984                'net80211/ieee80211_ageq.c',
1985                'net80211/ieee80211_amrr.c',
1986                'net80211/ieee80211.c',
1987                'net80211/ieee80211_crypto.c',
1988                'net80211/ieee80211_crypto_ccmp.c',
1989                'net80211/ieee80211_crypto_none.c',
1990                'net80211/ieee80211_crypto_tkip.c',
1991                'net80211/ieee80211_crypto_wep.c',
1992                'net80211/ieee80211_ddb.c',
1993                'net80211/ieee80211_dfs.c',
1994                'net80211/ieee80211_freebsd.c',
1995                'net80211/ieee80211_hostap.c',
1996                'net80211/ieee80211_ht.c',
1997                'net80211/ieee80211_hwmp.c',
1998                'net80211/ieee80211_input.c',
1999                'net80211/ieee80211_ioctl.c',
2000                'net80211/ieee80211_mesh.c',
2001                'net80211/ieee80211_monitor.c',
2002                'net80211/ieee80211_node.c',
2003                'net80211/ieee80211_output.c',
2004                'net80211/ieee80211_phy.c',
2005                'net80211/ieee80211_power.c',
2006                'net80211/ieee80211_proto.c',
2007                'net80211/ieee80211_radiotap.c',
2008                'net80211/ieee80211_ratectl.c',
2009                'net80211/ieee80211_ratectl_none.c',
2010                'net80211/ieee80211_regdomain.c',
2011                'net80211/ieee80211_rssadapt.c',
2012                'net80211/ieee80211_scan.c',
2013                'net80211/ieee80211_scan_sta.c',
2014                'net80211/ieee80211_sta.c',
2015                'net80211/ieee80211_superg.c',
2016                'net80211/ieee80211_tdma.c',
2017                'net80211/ieee80211_wds.c',
2018                'net80211/ieee80211_xauth.c',
2019        ]
2020)
2021
2022opencrypto = Module('opencrypto')
2023opencrypto.addHeaderFiles(
2024        [
2025                'sys/md5.h',
2026                'opencrypto/deflate.h',
2027                'opencrypto/xform.h',
2028                'opencrypto/cryptosoft.h',
2029                'opencrypto/rmd160.h',
2030                'opencrypto/cryptodev.h',
2031                'opencrypto/castsb.h',
2032                'opencrypto/skipjack.h',
2033                'opencrypto/cast.h',
2034        ]
2035)
2036opencrypto.addSourceFiles(
2037        [
2038                'opencrypto/crypto.c',
2039                'opencrypto/deflate.c',
2040                'opencrypto/cryptosoft.c',
2041                'opencrypto/criov.c',
2042                'opencrypto/rmd160.c',
2043                'opencrypto/xform.c',
2044                'opencrypto/skipjack.c',
2045                'opencrypto/cast.c',
2046                'opencrypto/cryptodev.c',
2047        ]
2048)
2049
2050crypto = Module('crypto')
2051crypto.addHeaderFiles(
2052        [
2053                #'crypto/aesni/aesni.h',
2054                'crypto/sha1.h',
2055                'crypto/sha2/sha2.h',
2056                'crypto/rijndael/rijndael.h',
2057                'crypto/rijndael/rijndael_local.h',
2058                'crypto/rijndael/rijndael-api-fst.h',
2059                'crypto/des/des.h',
2060                'crypto/des/spr.h',
2061                'crypto/des/podd.h',
2062                'crypto/des/sk.h',
2063                'crypto/des/des_locl.h',
2064                'crypto/blowfish/bf_pi.h',
2065                'crypto/blowfish/bf_locl.h',
2066                'crypto/blowfish/blowfish.h',
2067                'crypto/rc4/rc4.h',
2068                #'crypto/via/padlock.h',
2069                'crypto/camellia/camellia.h',
2070        ]
2071)
2072crypto.addSourceFiles(
2073        [
2074                #'crypto/aesni/aesni.c',
2075                #'crypto/aesni/aesni_wrap.c',
2076                'crypto/sha1.c',
2077                'crypto/sha2/sha2.c',
2078                'crypto/rijndael/rijndael-alg-fst.c',
2079                'crypto/rijndael/rijndael-api.c',
2080                'crypto/rijndael/rijndael-api-fst.c',
2081                'crypto/des/des_setkey.c',
2082                'crypto/des/des_enc.c',
2083                'crypto/des/des_ecb.c',
2084                'crypto/blowfish/bf_enc.c',
2085                'crypto/blowfish/bf_skey.c',
2086                'crypto/blowfish/bf_ecb.c',
2087                'crypto/rc4/rc4.c',
2088                #'crypto/via/padlock.c',
2089                #'crypto/via/padlock_cipher.c',
2090                #'crypto/via/padlock_hash.c',
2091                'crypto/camellia/camellia-api.c',
2092                'crypto/camellia/camellia.c',
2093        ]
2094)
2095
2096altq = Module('altq')
2097altq.addHeaderFiles(
2098        [
2099                'contrib/altq/altq/altq_rmclass.h',
2100                'contrib/altq/altq/altq_cbq.h',
2101                'contrib/altq/altq/altq_var.h',
2102                'contrib/altq/altq/altqconf.h',
2103                'contrib/altq/altq/altq.h',
2104                'contrib/altq/altq/altq_hfsc.h',
2105                'contrib/altq/altq/altq_red.h',
2106                'contrib/altq/altq/altq_classq.h',
2107                'contrib/altq/altq/altq_priq.h',
2108                'contrib/altq/altq/altq_rmclass_debug.h',
2109                'contrib/altq/altq/altq_cdnr.h',
2110                'contrib/altq/altq/altq_rio.h',
2111                'contrib/altq/altq/if_altq.h',
2112        ]
2113)
2114altq.addSourceFiles(
2115        [
2116                'contrib/altq/altq/altq_rmclass.c',
2117                'contrib/altq/altq/altq_rio.c',
2118                'contrib/altq/altq/altq_subr.c',
2119                'contrib/altq/altq/altq_cdnr.c',
2120                'contrib/altq/altq/altq_priq.c',
2121                'contrib/altq/altq/altq_cbq.c',
2122                'contrib/altq/altq/altq_hfsc.c',
2123                'contrib/altq/altq/altq_red.c',
2124        ]
2125)
2126
2127# contrib/pf Module
2128pf = Module('pf')
2129pf.addHeaderFiles(
2130        [
2131                'contrib/pf/net/pf_mtag.h',
2132                'contrib/pf/net/if_pfsync.h',
2133                'contrib/pf/net/pfvar.h',
2134                'contrib/pf/net/if_pflog.h',
2135        ]
2136)
2137pf.addSourceFiles(
2138        [
2139                'contrib/pf/netinet/in4_cksum.c',
2140                'contrib/pf/net/pf.c',
2141                'contrib/pf/net/if_pflog.c',
2142                'contrib/pf/net/pf_subr.c',
2143                'contrib/pf/net/pf_ioctl.c',
2144                'contrib/pf/net/pf_table.c',
2145                'contrib/pf/net/pf_if.c',
2146                'contrib/pf/net/pf_osfp.c',
2147                'contrib/pf/net/pf_norm.c',
2148                'contrib/pf/net/pf_ruleset.c',
2149                'contrib/pf/net/if_pfsync.c',
2150        ]
2151)
2152
2153# in_chksum Module
2154in_cksum = Module('in_cksum')
2155in_cksum.addRTEMSHeaderFiles(
2156        [
2157        ]
2158)
2159in_cksum.addCPUDependentHeaderFiles(
2160        [
2161                'arm/include/in_cksum.h',
2162                'i386/include/in_cksum.h',
2163                'mips/include/in_cksum.h',
2164                'powerpc/include/in_cksum.h',
2165                'sparc64/include/in_cksum.h',
2166        ]
2167)
2168in_cksum.addCPUDependentSourceFiles(
2169        'arm',
2170        [
2171                'arm/arm/in_cksum.c',
2172        ]
2173)
2174in_cksum.addCPUDependentSourceFiles(
2175        'i386',
2176        [
2177                'i386/i386/in_cksum.c',
2178        ]
2179)
2180in_cksum.addCPUDependentSourceFiles(
2181        'mips',
2182        [
2183                'mips/mips/in_cksum.c',
2184        ]
2185)
2186in_cksum.addCPUDependentSourceFiles(
2187        'powerpc',
2188        [
2189                'powerpc/powerpc/in_cksum.c',
2190        ]
2191)
2192in_cksum.addCPUDependentSourceFiles(
2193        'sparc',
2194        [
2195                'mips/mips/in_cksum.c',
2196        ]
2197)
2198in_cksum.addCPUDependentSourceFiles(
2199        'sparc64',
2200        [
2201                'sparc64/sparc64/in_cksum.c',
2202        ]
2203)
2204
2205# Register all the Module instances with the Module Manager
2206mm.addModule(rtems)
2207mm.addModule(netDeps)
2208mm.addModule(net)
2209mm.addModule(netinet)
2210mm.addModule(netinet6)
2211mm.addModule(netipsec)
2212mm.addModule(net80211)
2213mm.addModule(opencrypto)
2214mm.addModule(crypto)
2215mm.addModule(altq)
2216mm.addModule(pf)
2217mm.addModule(devNet)
2218
2219mm.addModule(local)
2220mm.addModule(devUsbBase)
2221mm.addModule(devUsb)
2222mm.addModule(devUsbQuirk)
2223mm.addModule(devUsbController)
2224
2225mm.addModule(cam)
2226mm.addModule(devUsbStorage)
2227#mm.addModule(devUsbNet)
2228
2229# Add PCI
2230mm.addModule(devPci)
2231
2232# Add NIC devices
2233mm.addModule(devNic)
2234mm.addModule(devNic_re)
2235mm.addModule(devNic_fxp)
2236mm.addModule(devNic_e1000)
2237mm.addModule(devNic_dc)
2238mm.addModule(devNic_smc)
2239mm.addModule(devNic_broadcomm)
2240# TBD Requires ISA and PCCard Support to be pulled in.
2241# mm.addModule(devNic_cs)
2242
2243# Add in_chksum
2244mm.addModule(in_cksum)
2245
2246# XXX TODO Check that no file is also listed in empty
2247# XXX TODO Check that no file in in two modules
2248
2249# Perform the actual file manipulation
2250if isForward == True:
2251  if isOnlyMakefile == False:
2252    mm.copyFromFreeBSDToRTEMS()
2253  mm.createMakefile()
2254else:
2255  mm.copyFromRTEMSToFreeBSD()
2256
2257# Print a summary if changing files
2258if isDiffMode == False:
2259  if filesProcessed == 1:
2260    print str(filesProcessed) + " file was changed."
2261  else:
2262    print str(filesProcessed) + " files were changed."
Note: See TracBrowser for help on using the repository browser.