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

4.1155-freebsd-126-freebsd-12freebsd-9.3
Last change on this file since 0109975 was 2c3d8b9, checked in by Jennifer Averett <jennifer.averett@…>, on 07/20/12 at 19:17:05

Added rtems specific page tracking methods for uma page allocation.

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