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

4.1155-freebsd-126-freebsd-12freebsd-9.3
Last change on this file since f333955 was f333955, checked in by Joel Sherrill <joel.sherrill@…>, on 08/31/12 at 23:50:17

Build System: Add option to disable IPV6 in orderly fashion

If you define DISABLE_IPV6=yes to the config.inc, then the
rtems-bsd-config.h file will be modified accordingly and
the IPV6 kernel sources will not be built. This is easier
to manage and more correct than having a patch to do the same.

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