source: rtems-libbsd/freebsd-to-rtems.py @ 2c3d8b9

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

Added rtems specific page tracking methods for uma page allocation.

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