source: rtems-libbsd/freebsd-to-rtems.py @ 210671a

4.1155-freebsd-126-freebsd-12freebsd-9.3
Last change on this file since 210671a was af4b6f2, checked in by Jennifer Averett <jennifer.averett@…>, on 09/07/12 at 16:41:09

Added mman.h

This will be needed when the ifconfig command is added.

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