Changeset 314be23 in rtems-libbsd for freebsd-to-rtems.py


Ignore:
Timestamp:
May 1, 2015, 6:02:22 AM (4 years ago)
Author:
Chris Johns <chrisj@…>
Branches:
4.11, c1e05b9ea378b2971e3d7704779112b4bc4296da, freebsd-9.3, 4a77611a223ea883fb548679b516d326a020d447
Children:
0799761
Parents:
67f8497
git-author:
Chris Johns <chrisj@…> (05/01/15 06:02:22)
git-committer:
Sebastian Huber <sebastian.huber@…> (05/15/15 12:08:42)
Message:

freebsd-to-rtems: Refactor the conversion support to allow multiples build systems.

Split the freebsd-to-rtems.py into separate parts to allow more than
a single build system generator.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • freebsd-to-rtems.py

    r67f8497 r314be23  
    1 #!/usr/bin/python
     1#! /usr/bin/env python
     2#
     3#  Copyright (c) 2015 Chris Johns <chrisj@rtems.org>. All rights reserved.
    24#
    35#  Copyright (c) 2009-2015 embedded brains GmbH.  All rights reserved.
     
    3436# FreeBSD: http://svn.freebsd.org/base/releng/8.2/sys (revision 222485)
    3537
    36 import shutil
    3738import os
    38 import re
    3939import sys
    4040import getopt
    41 import filecmp
    42 import difflib
    4341
    44 RTEMS_DIR = "."
    45 FreeBSD_DIR = "freebsd-org"
    46 isVerbose = False
     42import builder
     43import makefile
     44import libbsd
     45
    4746isForward = True
    48 isDryRun = False
    49 isDiffMode = False
    5047isEarlyExit = False
    5148isOnlyMakefile = False
    52 tempFile = "/tmp/tmp_FBRT"
    53 filesProcessed = 0
    5449
    5550def usage():
    56   print "freebsd-to-rtems.py [args]"
    57   print "  -?|-h|--help     print this and exit"
    58   print "  -d|--dry-run     run program but no modifications"
    59   print "  -D|--diff        provide diff of files between trees"
    60   print "  -e|--early-exit  evaluate arguments, print results, and exit"
    61   print "  -m|--makefile    just generate Makefile"
    62   print "  -R|--reverse     default FreeBSD -> RTEMS, reverse that"
    63   print "  -r|--rtems       RTEMS Libbsd directory (default: '.')"
    64   print "  -f|--freebsd     FreeBSD SVN directory (default: 'freebsd-org')"
    65   print "  -v|--verbose     enable verbose output mode"
     51    print "freebsd-to-rtems.py [args]"
     52    print "  -?|-h|--help     print this and exit"
     53    print "  -d|--dry-run     run program but no modifications"
     54    print "  -D|--diff        provide diff of files between trees"
     55    print "  -e|--early-exit  evaluate arguments, print results, and exit"
     56    print "  -m|--makefile    just generate Makefile"
     57    print "  -R|--reverse     default FreeBSD -> RTEMS, reverse that"
     58    print "  -r|--rtems       RTEMS Libbsd directory (default: '.')"
     59    print "  -f|--freebsd     FreeBSD SVN directory (default: 'freebsd-org')"
     60    print "  -v|--verbose     enable verbose output mode"
    6661
    6762# Parse the arguments
    6863def parseArguments():
    69   global RTEMS_DIR, FreeBSD_DIR
    70   global isVerbose, isForward, isDryRun, isEarlyExit
    71   global isOnlyMakefile, isDiffMode
    72   try:
    73     opts, args = getopt.getopt(sys.argv[1:], "?hdDemRr:f:v",
    74                  ["help",
    75                   "help",
    76                   "dry-run"
    77                   "diff"
    78                   "early-exit"
    79                   "makefile"
    80                   "reverse"
    81                   "rtems="
    82                   "freebsd="
    83                   "verbose"
    84                  ]
    85                 )
    86   except getopt.GetoptError, err:
    87     # print help information and exit:
    88     print str(err) # will print something like "option -a not recognized"
    89     usage()
    90     sys.exit(2)
    91   for o, a in opts:
    92     if o in ("-v", "--verbose"):
    93       isVerbose = True
    94     elif o in ("-h", "--help", "-?"):
    95       usage()
    96       sys.exit()
    97     elif o in ("-d", "--dry-run"):
    98       isDryRun = True
    99     elif o in ("-D", "--diff"):
    100       isDiffMode = True
    101     elif o in ("-e", "--early-exit"):
    102       isEarlyExit = True
    103     elif o in ("-m", "--makefile"):
    104       isOnlyMakefile = True
    105     elif o in ("-R", "--reverse"):
    106       isForward = False
    107     elif o in ("-r", "--rtems"):
    108       RTEMS_DIR = a
    109     elif o in ("-f", "--freebsd"):
    110       FreeBSD_DIR = a
    111     else:
    112        assert False, "unhandled option"
     64    global isForward, isEarlyExit
     65    global isOnlyMakefile
     66    try:
     67        opts, args = getopt.getopt(sys.argv[1:],
     68                                   "?hdDemRr:f:v",
     69                                   [ "help",
     70                                     "help",
     71                                     "dry-run"
     72                                     "diff"
     73                                     "early-exit"
     74                                     "makefile"
     75                                     "reverse"
     76                                     "rtems="
     77                                     "freebsd="
     78                                     "verbose" ])
     79    except getopt.GetoptError, err:
     80        # print help information and exit:
     81        print str(err) # will print something like "option -a not recognized"
     82        usage()
     83        sys.exit(2)
     84    for o, a in opts:
     85        if o in ("-v", "--verbose"):
     86            builder.isVerbose = True
     87        elif o in ("-h", "--help", "-?"):
     88            usage()
     89            sys.exit()
     90        elif o in ("-d", "--dry-run"):
     91            builder.isDryRun = True
     92        elif o in ("-D", "--diff"):
     93            builder.isDiffMode = True
     94        elif o in ("-e", "--early-exit"):
     95            isEarlyExit = True
     96        elif o in ("-m", "--makefile"):
     97            isOnlyMakefile = True
     98        elif o in ("-R", "--reverse"):
     99            isForward = False
     100        elif o in ("-r", "--rtems"):
     101            builder.RTEMS_DIR = a
     102        elif o in ("-f", "--freebsd"):
     103            builder.FreeBSD_DIR = a
     104        else:
     105            assert False, "unhandled option"
    113106
    114107parseArguments()
    115 print "Verbose:                " + ("no", "yes")[isVerbose]
    116 print "Dry Run:                " + ("no", "yes")[isDryRun]
    117 print "Diff Mode Enabled:      " + ("no", "yes")[isDiffMode]
     108
     109print "Verbose:                " + ("no", "yes")[builder.isVerbose]
     110print "Dry Run:                " + ("no", "yes")[builder.isDryRun]
     111print "Diff Mode Enabled:      " + ("no", "yes")[builder.isDiffMode]
    118112print "Only Generate Makefile: " + ("no", "yes")[isOnlyMakefile]
    119 print "RTEMS Libbsd Directory: " + RTEMS_DIR
    120 print "FreeBSD SVN Directory:  " + FreeBSD_DIR
     113print "RTEMS Libbsd Directory: " + builder.RTEMS_DIR
     114print "FreeBSD SVN Directory:  " + builder.FreeBSD_DIR
    121115print "Direction:              " + ("reverse", "forward")[isForward]
    122116
     
    124118def wasDirectorySet(desc, path):
    125119    if path == "not_set":
    126         print desc + " Directory was not specified on command line"
     120        print "error:" + desc + " Directory was not specified on command line"
    127121        sys.exit(2)
    128122
    129123    if os.path.isdir( path ) != True:
    130         print desc + " Directory (" + path + ") does not exist"
     124        print "error:" + desc + " Directory (" + path + ") does not exist"
    131125        sys.exit(2)
    132126
    133127# Were RTEMS and FreeBSD directories specified
    134 wasDirectorySet( "RTEMS", RTEMS_DIR )
    135 wasDirectorySet( "FreeBSD", FreeBSD_DIR )
    136  
     128wasDirectorySet( "RTEMS", builder.RTEMS_DIR )
     129wasDirectorySet( "FreeBSD", builder.FreeBSD_DIR )
     130
    137131# Are we generating or reverting?
    138132if isForward == True:
    139     print "Forward from FreeBSD SVN into ", RTEMS_DIR
     133    print "Forward from FreeBSD GIT into ", builder.RTEMS_DIR
    140134else:
    141     print "Reverting from ", RTEMS_DIR
     135    print "Reverting from ", builder.RTEMS_DIR
    142136    if isOnlyMakefile == True:
    143         print "Only Makefile Mode and Reverse are contradictory"
     137        print "error: Makefile Mode and Reverse are contradictory"
    144138        sys.exit(2)
    145139
     
    148142    sys.exit(0)
    149143
    150 # Move target dependent files under a machine directory
    151 def mapCPUDependentPath(path):
    152         return path.replace("include/", "include/machine/")
     144makefile_generator = makefile.ModuleManager()
    153145
    154 # compare and process file only if different
    155 #  + copy or diff depending on execution mode
    156 def processIfDifferent(new, old, src):
    157   global filesProcessed
    158   global isVerbose, isDryRun, isEarlyExit
    159   if not os.path.exists(old) or \
    160      filecmp.cmp(new, old, shallow=False) == False:
    161     filesProcessed += 1
    162     if isDiffMode == False:
    163       if isVerbose == True:
    164         print "Move " + src + " to " + old
    165       if isDryRun == False:
    166         shutil.move(new, old)
    167     else:
    168       #print "Diff " + src
    169       old_contents = open(old).readlines()
    170       new_contents = open(new).readlines()
    171       for line in difflib.unified_diff( \
    172           old_contents, new_contents, fromfile=src, tofile=new, n=5):
    173         sys.stdout.write(line)
    174 
    175 def fixIncludes(data):
    176         data = re.sub('#include <sys/lock.h>', '#include <rtems/bsd/sys/lock.h>', data)
    177         data = re.sub('#include <sys/time.h>', '#include <rtems/bsd/sys/time.h>', data)
    178         data = re.sub('#include <sys/cpuset.h>', '#include <rtems/bsd/sys/cpuset.h>', data)
    179         data = re.sub('#include <sys/errno.h>', '#include <rtems/bsd/sys/errno.h>', data)
    180         data = re.sub('#include <sys/param.h>', '#include <rtems/bsd/sys/param.h>', data)
    181         data = re.sub('#include <sys/types.h>', '#include <rtems/bsd/sys/types.h>', data)
    182         data = re.sub('#include <sys/resource.h>', '#include <rtems/bsd/sys/resource.h>', data)
    183         data = re.sub('#include <sys/unistd.h>', '#include <rtems/bsd/sys/unistd.h>', data)
    184         data = re.sub('#include <sys/_types.h>', '#include <rtems/bsd/sys/_types.h>', data)
    185         return data
    186 
    187 # revert fixing the include paths inside a C or .h file
    188 def revertFixIncludes(data):
    189         data = re.sub('#include <rtems/bsd/', '#include <', data)
    190         data = re.sub('#include <util.h>', '#include <rtems/bsd/util.h>', data)
    191         data = re.sub('#include <bsd.h>', '#include <rtems/bsd/bsd.h>', data)
    192         data = re.sub('#include <zerocopy.h>', '#include <rtems/bsd/zerocopy.h>', data)
    193         return data
    194 
    195 # fix include paths inside a C or .h file
    196 def fixLocalIncludes(data):
    197         data = re.sub('#include "opt_([^"]*)"', '#include <rtems/bsd/local/opt_\\1>', data)
    198         data = re.sub('#include "([^"]*)_if.h"', '#include <rtems/bsd/local/\\1_if.h>', data)
    199         data = re.sub('#include "miidevs([^"]*)"', '#include <rtems/bsd/local/miidevs\\1>', data)
    200         data = re.sub('#include "usbdevs([^"]*)"', '#include <rtems/bsd/local/usbdevs\\1>', data)
    201         return data
    202 
    203 # revert fixing the include paths inside a C or .h file
    204 def revertFixLocalIncludes(data):
    205         data = re.sub('#include <rtems/bsd/local/([^>]*)>', '#include "\\1"', data)
    206         return data
    207 
    208 class Converter(object):
    209         def convert(self, src):
    210                 return open(src).read()
    211 
    212         def isConvertible(self):
    213                 return True
    214 
    215 class NoConverter(Converter):
    216         def convert(self, src):
    217                 raise
    218 
    219         def isConvertible(self):
    220                 return False
    221 
    222 class EmptyConverter(Converter):
    223         def convert(self, src):
    224                 return '/* EMPTY */\n'
    225 
    226 class FromFreeBSDToRTEMSHeaderConverter(Converter):
    227         def convert(self, src):
    228                 data = super(FromFreeBSDToRTEMSHeaderConverter, self).convert(src)
    229                 data = fixLocalIncludes(data)
    230                 data = fixIncludes(data)
    231                 return data
    232 
    233 class FromFreeBSDToRTEMSUserSpaceHeaderConverter(Converter):
    234         def convert(self, src):
    235                 data = super(FromFreeBSDToRTEMSUserSpaceHeaderConverter, self).convert(src)
    236                 data = fixIncludes(data)
    237                 return data
    238 
    239 class FromFreeBSDToRTEMSSourceConverter(Converter):
    240         def convert(self, src):
    241                 data = super(FromFreeBSDToRTEMSSourceConverter, self).convert(src)
    242                 data = fixLocalIncludes(data)
    243                 data = fixIncludes(data)
    244                 data = '#include <machine/rtems-bsd-kernel-space.h>\n\n' + data
    245                 return data
    246 
    247 class FromFreeBSDToRTEMSUserSpaceSourceConverter(Converter):
    248         def convert(self, src):
    249                 data = super(FromFreeBSDToRTEMSUserSpaceSourceConverter, self).convert(src)
    250                 data = fixIncludes(data)
    251                 data = '#include <machine/rtems-bsd-user-space.h>\n\n' + data
    252                 return data
    253 
    254 class FromRTEMSToFreeBSDHeaderConverter(Converter):
    255         def convert(self, src):
    256                 data = super(FromRTEMSToFreeBSDHeaderConverter, self).convert(src)
    257                 data = revertFixLocalIncludes(data)
    258                 data = revertFixIncludes(data)
    259                 return data
    260 
    261 class FromRTEMSToFreeBSDSourceConverter(Converter):
    262         def convert(self, src):
    263                 data = super(FromRTEMSToFreeBSDSourceConverter, self).convert(src)
    264                 data = re.sub('#include <machine/rtems-bsd-kernel-space.h>\n\n', '', data)
    265                 data = re.sub('#include <machine/rtems-bsd-user-space.h>\n\n', '', data)
    266                 data = revertFixLocalIncludes(data)
    267                 data = revertFixIncludes(data)
    268                 return data
    269 
    270 class PathComposer(object):
    271         def composeFreeBSDPath(self, path):
    272                 return path
    273 
    274         def composeRTEMSPath(self, path, prefix):
    275                 path = prefix + path
    276                 return path
    277 
    278 class FreeBSDPathComposer(PathComposer):
    279         def composeFreeBSDPath(self, path):
    280                 return FreeBSD_DIR + '/' + path
    281 
    282         def composeRTEMSPath(self, path, prefix):
    283                 return prefix + 'freebsd/' + path
    284 
    285 class RTEMSPathComposer(PathComposer):
    286         def composeFreeBSDPath(self, path):
    287                 return path
    288 
    289         def composeRTEMSPath(self, path, prefix):
    290                 path = prefix + 'rtemsbsd/' + path
    291                 return path
    292 
    293 class CPUDependentPathComposer(FreeBSDPathComposer):
    294         def composeRTEMSPath(self, path, prefix):
    295                 path = super(CPUDependentPathComposer, self).composeRTEMSPath(path, prefix)
    296                 path = mapCPUDependentPath(path)
    297                 return path
    298 
    299 class TargetSourceCPUDependentPathComposer(CPUDependentPathComposer):
    300         def __init__(self, targetCPU, sourceCPU):
    301                 self.targetCPU = targetCPU
    302                 self.sourceCPU = sourceCPU
    303 
    304         def composeRTEMSPath(self, path, prefix):
    305                 path = super(TargetSourceCPUDependentPathComposer, self).composeRTEMSPath(path, prefix)
    306                 path = path.replace(self.sourceCPU, self.targetCPU)
    307                 return path
    308 
    309 class MakefileFragmentComposer(object):
    310         def compose(self, path):
    311                 return ''
    312 
    313 class SourceFileMakefileFragmentComposer(MakefileFragmentComposer):
    314         def __init__(self, cflags = None):
    315                 self.cflags = cflags
    316 
    317         def compose(self, path):
    318                 fragment = 'LIB_C_FILES += ' + path + '\n'
    319                 if self.cflags != None:
    320                         fragment = fragment + path[:-1] + 'o: ' + path + '\n' \
    321                                 + '\t$(CC) $(CPPFLAGS) $(CFLAGS) ' + self.cflags + ' -c $< -o $@\n'
    322                 return fragment
    323 
    324 class TestMakefileFragementComposer(MakefileFragmentComposer):
    325         def __init__(self, testName, fileFragments, runTest, netTest):
    326                 self.testName = testName
    327                 self.fileFragments = fileFragments
    328                 self.runTest = runTest
    329                 self.netTest = netTest
    330 
    331         def compose(self, path):
    332                 testPrefix = 'TEST_' + self.testName.upper()
    333                 testOFiles = testPrefix + '_O_FILES'
    334                 testDFiles = testPrefix + '_D_FILES'
    335                 testDir = 'testsuite/' + self.testName
    336                 testExe = testDir + '/' + self.testName + '.exe'
    337                 testMap = testDir + '/' + self.testName + '.map'
    338                 testCollection = 'TESTS'
    339                 if self.netTest:
    340                         testCollection = 'NET_' + testCollection
    341                 makefileFragment = '\n' + testPrefix + ' = ' + testExe + '\n' \
    342                         + testOFiles + ' =\n' \
    343                         + testDFiles + ' =\n'
    344                 for fileFragment in self.fileFragments:
    345                         makefileFragment = makefileFragment + testOFiles + ' += ' + testDir + '/' + fileFragment + '.o\n' \
    346                                 + testDFiles + ' += ' + testDir + '/' + fileFragment + '.d\n'
    347                 makefileFragment = makefileFragment + '$(' + testPrefix + '): $(' + testOFiles + ') $(LIB)\n' \
    348                         '\t$(LINK.c) -Wl,-Map,' + testMap + ' $^ -lm -lz -o $@\n' \
    349                         + testCollection + ' += $(' + testPrefix + ')\n' \
    350                         'O_FILES += $(' + testOFiles + ')\n' \
    351                         'D_FILES += $(' + testDFiles + ')\n'
    352                 if self.runTest:
    353                         makefileFragment = makefileFragment + 'RUN_' + testCollection + ' += $(' + testPrefix + ')\n'
    354                 return makefileFragment
    355 
    356 class File(object):
    357         def __init__(self, path, pathComposer, fromFreeBSDToRTEMSConverter, fromRTEMSToFreeBSDConverter, makefileFragmentComposer):
    358                 self.path = path
    359                 self.pathComposer = pathComposer
    360                 self.fromFreeBSDToRTEMSConverter = fromFreeBSDToRTEMSConverter
    361                 self.fromRTEMSToFreeBSDConverter = fromRTEMSToFreeBSDConverter
    362                 self.makefileFragmentComposer = makefileFragmentComposer
    363 
    364         def copy(self, dst, src, converter):
    365                 if converter.isConvertible():
    366                         global tempFile
    367                         try:
    368                                 if isDryRun == False:
    369                                         os.makedirs(os.path.dirname(dst))
    370                         except OSError:
    371                                 pass
    372                         data = converter.convert(src)
    373                         out = open(tempFile, 'w')
    374                         out.write(data)
    375                         out.close()
    376                         processIfDifferent(tempFile, dst, src)
    377 
    378         def copyFromFreeBSDToRTEMS(self):
    379                 src = self.pathComposer.composeFreeBSDPath(self.path)
    380                 dst = self.pathComposer.composeRTEMSPath(self.path, RTEMS_DIR + '/')
    381                 self.copy(dst, src, self.fromFreeBSDToRTEMSConverter)
    382 
    383         def copyFromRTEMSToFreeBSD(self):
    384                 src = self.pathComposer.composeRTEMSPath(self.path, RTEMS_DIR + '/')
    385                 dst = self.pathComposer.composeFreeBSDPath(self.path)
    386                 self.copy(dst, src, self.fromRTEMSToFreeBSDConverter)
    387 
    388         def getMakefileFragment(self):
    389                 return self.makefileFragmentComposer.compose(self.pathComposer.composeRTEMSPath(self.path, ''))
    390 
    391 # Module Manager - Collection of Modules
    392 class ModuleManager:
    393         def __init__(self):
    394                 self.modules = []
    395 
    396         def addModule(self, module):
    397                 self.modules.append(module)
    398 
    399         def copyFromFreeBSDToRTEMS(self):
    400                 for m in self.modules:
    401                         m.copyFromFreeBSDToRTEMS()
    402 
    403         def copyFromRTEMSToFreeBSD(self):
    404                 for m in self.modules:
    405                         m.copyFromRTEMSToFreeBSD()
    406 
    407         def createMakefile(self):
    408                 global tempFile
    409                 data = 'include config.inc\n' \
    410                         '\n' \
    411                         'RTEMS_MAKEFILE_PATH = $(PREFIX)/$(TARGET)/$(BSP)\n' \
    412                         'include $(RTEMS_MAKEFILE_PATH)/Makefile.inc\n' \
    413                         'include $(RTEMS_CUSTOM)\n' \
    414                         'include $(PROJECT_ROOT)/make/leaf.cfg\n' \
    415                         '\n' \
    416                         'COMMON_FLAGS += -fno-strict-aliasing\n' \
    417                         'COMMON_FLAGS += -ffreestanding\n' \
    418                         'COMMON_FLAGS += -fno-common\n' \
    419                         'COMMON_FLAGS += -Irtemsbsd/include\n' \
    420                         'COMMON_FLAGS += -Irtemsbsd/$(RTEMS_CPU)/include\n' \
    421                         'COMMON_FLAGS += -Ifreebsd/sys\n' \
    422                         'COMMON_FLAGS += -Ifreebsd/sys/$(RTEMS_CPU)/include\n' \
    423                         'COMMON_FLAGS += -Ifreebsd/sys/contrib/altq\n' \
    424                         'COMMON_FLAGS += -Ifreebsd/sys/contrib/pf\n' \
    425                         'COMMON_FLAGS += -Ifreebsd/include\n' \
    426                         'COMMON_FLAGS += -Ifreebsd/lib/libc/include\n' \
    427                         'COMMON_FLAGS += -Ifreebsd/lib/libc/isc/include\n' \
    428                         'COMMON_FLAGS += -Ifreebsd/lib/libc/resolv\n' \
    429                         'COMMON_FLAGS += -Ifreebsd/lib/libutil\n' \
    430                         'COMMON_FLAGS += -Ifreebsd/lib/libkvm\n' \
    431                         'COMMON_FLAGS += -Ifreebsd/lib/libmemstat\n' \
    432                         'COMMON_FLAGS += -Ifreebsd/lib/libipsec\n' \
    433                         'COMMON_FLAGS += -Irtemsbsd/sys\n' \
    434                         'COMMON_FLAGS += -ImDNSResponder/mDNSCore\n' \
    435                         'COMMON_FLAGS += -ImDNSResponder/mDNSShared\n' \
    436                         'COMMON_FLAGS += -ImDNSResponder/mDNSPosix\n' \
    437                         'COMMON_FLAGS += -Itestsuite/include\n' \
    438                         'COMMON_FLAGS += -Wall\n' \
    439                         'COMMON_FLAGS += -Wno-format\n' \
    440                         'COMMON_FLAGS += -MT $@ -MD -MP -MF $(basename $@).d\n' \
    441                         'CFLAGS += $(COMMON_FLAGS)\n' \
    442                         'CFLAGS += -std=gnu11\n' \
    443                         'CXXFLAGS += $(COMMON_FLAGS)\n' \
    444                         'CXXFLAGS += -std=gnu++11\n' \
    445                         'NEED_DUMMY_PIC_IRQ=yes\n' \
    446                         '\n' \
    447                         'TEST_NETWORK_CONFIG = testsuite/include/rtems/bsd/test/network-config.h\n' \
    448                         '\n' \
    449                         'TESTS =\n' \
    450                         'RUN_TESTS =\n' \
    451                         '\n' \
    452                         'NET_TESTS =\n' \
    453                         'RUN_NET_TESTS =\n' \
    454                         '\n' \
    455                         'O_FILES =\n' \
    456                         'D_FILES =\n' \
    457                         '\n' \
    458                         'LIB = libbsd.a\n' \
    459                         'LIB_GEN_FILES =\n' \
    460                         'LIB_C_FILES =\n' \
    461                         'LIB_CXX_FILES =\n' \
    462                         'LIB_CXX_FILES += rtemsbsd/rtems/rtems-bsd-cxx.cc\n'
    463                 for m in self.modules:
    464                         if m.conditionalOn != "none":
    465                                 data += 'ifneq ($(' + m.conditionalOn + '),yes)\n'
    466 
    467                         for f in m.files:
    468                                 data += f.getMakefileFragment()
    469                         for cpu, files in sorted(m.cpuDependentSourceFiles.items()):
    470                                 data += 'ifeq ($(RTEMS_CPU), ' + cpu + ')\n'
    471                                 for f in files:
    472                                         data += f.getMakefileFragment()
    473                                 if cpu in ("arm", "i386", "lm32", "mips", "powerpc", "sparc", "m68k"):
    474                                         data += 'NEED_DUMMY_PIC_IRQ=no\n'
    475                                 data += 'endif\n'
    476                         if m.conditionalOn != "none":
    477                                 data += 'endif # ' + m.conditionalOn +'\n'
    478                 data += '\n' \
    479                         'ifeq ($(NEED_DUMMY_PIC_IRQ),yes)\n' \
    480                         'CFLAGS += -I rtems-dummy-pic-irq/include\n' \
    481                         'endif\n' \
    482                         'LIB_O_FILES = $(LIB_C_FILES:%.c=%.o) $(LIB_CXX_FILES:%.cc=%.o)\n' \
    483                         'O_FILES += $(LIB_O_FILES)\n' \
    484                         'D_FILES += $(LIB_C_FILES:%.c=%.d) $(LIB_CXX_FILES:%.cc=%.d)\n' \
    485                         '\n' \
    486                         'all: $(LIB) $(TESTS) $(TEST_NETWORK_CONFIG) $(NET_TESTS)\n' \
    487                         '\n' \
    488                         '$(LIB): $(LIB_GEN_FILES) $(LIB_O_FILES)\n' \
    489                         '\trm -f $@\n' \
    490                         '\t$(AR) rcu $@ $^\n' \
    491                         '\n' \
    492                         'run_tests: $(RUN_TESTS)\n' \
    493                         '\t$(TEST_RUNNER) $^\n' \
    494                         '\tcheck_endof\n' \
    495                         '\n' \
    496                         'run_net_tests: $(RUN_NET_TESTS)\n' \
    497                         '\t$(TEST_RUNNER) -N -T $(NET_TAP_INTERFACE) $^\n' \
    498                         '\tcheck_endof\n' \
    499                         '\n' \
    500                         '$(TEST_NETWORK_CONFIG): $(TEST_NETWORK_CONFIG).in config.inc\n' \
    501                         '\tsed -e \'s/@NET_CFG_SELF_IP@/$(NET_CFG_SELF_IP)/\' \\\n' \
    502                         '\t-e \'s/@NET_CFG_NETMASK@/$(NET_CFG_NETMASK)/\' \\\n' \
    503                         '\t-e \'s/@NET_CFG_PEER_IP@/$(NET_CFG_PEER_IP)/\' \\\n' \
    504                         '\t-e \'s/@NET_CFG_GATEWAY_IP@/$(NET_CFG_GATEWAY_IP)/\' \\\n' \
    505                         '\t< $< > $@\n' \
    506                         '\n' \
    507                         'CPU_SED  = sed\n' \
    508                         'CPU_SED += -e \'/arm/d\'\n' \
    509                         'CPU_SED += -e \'/i386/d\'\n' \
    510                         'CPU_SED += -e \'/powerpc/d\'\n' \
    511                         'CPU_SED += -e \'/mips/d\'\n' \
    512                         'CPU_SED += -e \'/sparc64/d\'\n' \
    513                         '\n' \
    514                         'LIB_DIR = $(INSTALL_BASE)/lib\n' \
    515                         'INCLUDE_DIR = $(INSTALL_BASE)/lib/include\n' \
    516                         '\n' \
    517                         'install: $(LIB)\n' \
    518                         '\tinstall -d $(LIB_DIR)\n' \
    519                         '\tinstall -m 644 $(LIB) $(LIB_DIR)\n' \
    520                         '\tcd rtemsbsd/include ; for i in `find . -type d` ; do \\\n' \
    521                         '\t  install -d $(INCLUDE_DIR)/$$i ; \\\n' \
    522                         '\t  install -m 644 $$i/*.h $(INCLUDE_DIR)/$$i ; done\n' \
    523                         '\tcd freebsd/include ; for i in `find . -type d` ; do \\\n' \
    524                         '\t  install -d $(INCLUDE_DIR)/$$i ; \\\n' \
    525                         '\t  install -m 644 $$i/*.h $(INCLUDE_DIR)/$$i ; done\n' \
    526                         '\tcd freebsd/sys/contrib/altq ; \\\n' \
    527                         '\t  install -d $(INCLUDE_DIR)/altq ; \\\n' \
    528                         '\t  install -m 644 altq/*.h $(INCLUDE_DIR)/altq\n' \
    529                         '\tfor i in bsm cam net net80211 netatalk netinet netinet6 netipsec sys vm ; do \\\n' \
    530                         '\t  install -d $(INCLUDE_DIR)/$$i ; \\\n' \
    531                         '\t  install -m 644 freebsd/sys/$$i/*.h $(INCLUDE_DIR)/$$i ; done\n' \
    532                         '\tcd freebsd/sys/dev/mii ; \\\n' \
    533                         '\t  install -d $(INCLUDE_DIR)/dev/mii ; \\\n' \
    534                         '\t  install -m 644 *.h $(INCLUDE_DIR)/dev/mii\n' \
    535                         '\tinstall -m 644 mDNSResponder/mDNSCore/mDNSDebug.h $(INCLUDE_DIR)\n' \
    536                         '\tinstall -m 644 mDNSResponder/mDNSCore/mDNSEmbeddedAPI.h $(INCLUDE_DIR)\n' \
    537                         '\tinstall -m 644 mDNSResponder/mDNSShared/dns_sd.h $(INCLUDE_DIR)\n' \
    538                         '\tinstall -m 644 mDNSResponder/mDNSPosix/mDNSPosix.h $(INCLUDE_DIR)\n' \
    539                         '\n' \
    540                         'clean:\n' \
    541                         '\trm -f $(LIB_GEN_FILES) $(LIB) $(TESTS) $(O_FILES) $(D_FILES)\n' \
    542                         '\trm -f libbsd.html\n' \
    543                         '\n' \
    544                         '-include $(D_FILES)\n' \
    545                         '\n' \
    546                         'doc: libbsd.html\n' \
    547                         '\n' \
    548                         'libbsd.html: libbsd.txt\n' \
    549                         '\tasciidoc -o libbsd.html libbsd.txt\n'
    550  
    551                 out = open(tempFile, 'w')
    552                 out.write(data)
    553                 out.close()
    554                 makefile = RTEMS_DIR + '/Makefile'
    555                 processIfDifferent(tempFile, makefile, "Makefile")
    556 
    557 def assertHeaderFile(path):
    558         if path[-2] != '.' or path[-1] != 'h':
    559                 print "*** " + path + " does not end in .h"
    560                 print "*** Move it to a C source file list"
    561                 sys.exit(2)
    562 
    563 def assertSourceFile(path):
    564         if path[-2] != '.' or (path[-1] != 'c' and path[-1] != 'S'):
    565                 print "*** " + path + " does not end in .c"
    566                 print "*** Move it to a header file list"
    567                 sys.exit(2)
    568 
    569 # Module - logical group of related files we can perform actions on
    570 class Module:
    571         def __init__(self, name):
    572                 self.name = name
    573                 self.conditionalOn = "none"
    574                 self.files = []
    575                 self.cpuDependentSourceFiles = {}
    576                 self.dependencies = []
    577 
    578         def initCPUDependencies(self, cpu):
    579                 if not self.cpuDependentSourceFiles.has_key(cpu):
    580                         self.cpuDependentSourceFiles [cpu] = []
    581 
    582         def copyFromFreeBSDToRTEMS(self):
    583                 for f in self.files:
    584                         f.copyFromFreeBSDToRTEMS()
    585                 for cpu, files in self.cpuDependentSourceFiles.items():
    586                         for f in files:
    587                                 f.copyFromFreeBSDToRTEMS()
    588 
    589         def copyFromRTEMSToFreeBSD(self):
    590                 for f in self.files:
    591                         f.copyFromRTEMSToFreeBSD()
    592                 for cpu, files in self.cpuDependentSourceFiles.items():
    593                         for f in files:
    594                                 f.copyFromRTEMSToFreeBSD()
    595 
    596         def addFiles(self, currentFiles, newFiles, pathComposer, fromFreeBSDToRTEMSConverter, fromRTEMSToFreeBSDConverter, assertFile, makefileFragmentComposer = MakefileFragmentComposer()):
    597                 for newFile in newFiles:
    598                         assertFile(newFile)
    599                         currentFiles.append(File(newFile, pathComposer, fromFreeBSDToRTEMSConverter, fromRTEMSToFreeBSDConverter, makefileFragmentComposer))
    600                 return currentFiles
    601 
    602         def addFile(self, f):
    603                 self.files.append(f)
    604 
    605         def addKernelSpaceHeaderFiles(self, files):
    606                 self.files = self.addFiles(self.files, files, FreeBSDPathComposer(), FromFreeBSDToRTEMSHeaderConverter(), FromRTEMSToFreeBSDHeaderConverter(), assertHeaderFile)
    607 
    608         def addUserSpaceHeaderFiles(self, files):
    609                 self.files = self.addFiles(self.files, files, FreeBSDPathComposer(), FromFreeBSDToRTEMSUserSpaceHeaderConverter(), FromRTEMSToFreeBSDHeaderConverter(), assertHeaderFile)
    610 
    611         def addRTEMSHeaderFiles(self, files):
    612                 self.files = self.addFiles(self.files, files, RTEMSPathComposer(), NoConverter(), NoConverter(), assertHeaderFile)
    613 
    614         def addCPUDependentHeaderFiles(self, files):
    615                 self.files = self.addFiles(self.files, files, CPUDependentPathComposer(), FromFreeBSDToRTEMSHeaderConverter(), FromRTEMSToFreeBSDHeaderConverter(), assertHeaderFile)
    616 
    617         def addTargetSourceCPUDependentHeaderFiles(self, targetCPUs, sourceCPU, files):
    618                 for cpu in targetCPUs:
    619                         self.files = self.addFiles(self.files, files, TargetSourceCPUDependentPathComposer(cpu, sourceCPU), FromFreeBSDToRTEMSHeaderConverter(), NoConverter(), assertHeaderFile)
    620 
    621         def addSourceFiles(self, files, cflags = None):
    622                 self.files = self.addFiles(self.files, files, PathComposer(), NoConverter(), NoConverter(), assertSourceFile, SourceFileMakefileFragmentComposer(cflags))
    623 
    624         def addKernelSpaceSourceFiles(self, files, cflags = None):
    625                 self.files = self.addFiles(self.files, files, FreeBSDPathComposer(), FromFreeBSDToRTEMSSourceConverter(), FromRTEMSToFreeBSDSourceConverter(), assertSourceFile, SourceFileMakefileFragmentComposer(cflags))
    626 
    627         def addUserSpaceSourceFiles(self, files, cflags = None):
    628                 self.files = self.addFiles(self.files, files, FreeBSDPathComposer(), FromFreeBSDToRTEMSUserSpaceSourceConverter(), FromRTEMSToFreeBSDSourceConverter(), assertSourceFile, SourceFileMakefileFragmentComposer(cflags))
    629 
    630         def addRTEMSSourceFiles(self, files, cflags = None):
    631                 self.files = self.addFiles(self.files, files, RTEMSPathComposer(), NoConverter(), NoConverter(), assertSourceFile, SourceFileMakefileFragmentComposer(cflags))
    632 
    633         def addCPUDependentSourceFiles(self, cpu, files, cflags = None):
    634                 self.initCPUDependencies(cpu)
    635                 self.cpuDependentSourceFiles [cpu] = self.addFiles(self.cpuDependentSourceFiles [cpu], files, CPUDependentPathComposer(), FromFreeBSDToRTEMSSourceConverter(), FromRTEMSToFreeBSDSourceConverter(), assertSourceFile, SourceFileMakefileFragmentComposer(cflags))
    636 
    637         def addTargetSourceCPUDependentSourceFiles(self, targetCPUs, sourceCPU, files, cflags = None):
    638                 for cpu in targetCPUs:
    639                         self.initCPUDependencies(cpu)
    640                         self.cpuDependentSourceFiles [cpu] = self.addFiles(self.cpuDependentSourceFiles [cpu], files, TargetSourceCPUDependentPathComposer(cpu, sourceCPU), FromFreeBSDToRTEMSSourceConverter(), NoConverter(), assertSourceFile, SourceFileMakefileFragmentComposer(cflags))
    641 
    642         def addTest(self, testName, fileFragments, runTest = True, netTest = False):
    643                 self.files.append(File(testName, PathComposer(), NoConverter(), NoConverter(), TestMakefileFragementComposer(testName, fileFragments, runTest, netTest)))
    644 
    645         def addDependency(self, dep):
    646                 self.dependencies.append(dep)
    647 
    648 # Create Module Manager and supporting Modules
    649 #  - initialize each module with set of files associated
    650 mm = ModuleManager()
    651 
    652 rtems = Module('rtems')
    653 rtems.addRTEMSSourceFiles(
    654         [
    655                 'local/bus_if.c',
    656                 'local/cryptodev_if.c',
    657                 'local/device_if.c',
    658                 'local/miibus_if.c',
    659                 'local/pcib_if.c',
    660                 'local/pci_if.c',
    661                 'local/usb_if.c',
    662                 'local/mmcbus_if.c',
    663                 'local/mmcbr_if.c',
    664                 'rtems/ipsec_get_policylen.c',
    665                 'rtems/rtems-bsd-assert.c',
    666                 'rtems/rtems-bsd-arp-processor.c',
    667                 'rtems/rtems-bsd-autoconf.c',
    668                 'rtems/rtems-bsd-bus-dma.c',
    669                 'rtems/rtems-bsd-bus-dma-mbuf.c',
    670                 'rtems/rtems-bsd-cam.c',
    671                 'rtems/rtems-bsd-chunk.c',
    672                 'rtems/rtems-bsd-conf.c',
    673                 'rtems/rtems-bsd-configintrhook.c',
    674                 'rtems/rtems-bsd-delay.c',
    675                 'rtems/rtems-bsd-get-ethernet-addr.c',
    676                 'rtems/rtems-bsd-get-file.c',
    677                 'rtems/rtems-bsd-get-mac-address.c',
    678                 'rtems/rtems-bsd-get-allocator-domain-size.c',
    679                 'rtems/rtems-bsd-get-task-priority.c',
    680                 'rtems/rtems-bsd-get-task-stack-size.c',
    681                 'rtems/rtems-bsd-init.c',
    682                 'rtems/rtems-bsd-jail.c',
    683                 'rtems/rtems-bsd-log.c',
    684                 'rtems/rtems-bsd-malloc.c',
    685                 'rtems/rtems-bsd-mbuf.c',
    686                 'rtems/rtems-bsd-mutex.c',
    687                 'rtems/rtems-bsd-muteximpl.c',
    688                 'rtems/rtems-bsd-newproc.c',
    689                 'rtems/rtems-bsd-nexus.c',
    690                 'rtems/rtems-bsd-page.c',
    691                 'rtems/rtems-bsd-panic.c',
    692                 'rtems/rtems-bsd-pci_bus.c',
    693                 'rtems/rtems-bsd-pci_cfgreg.c',
    694                 'rtems/rtems-bsd-program.c',
    695                 'rtems/rtems-bsd-rwlock.c',
    696                 'rtems/rtems-bsd-shell.c',
    697                 'rtems/rtems-bsd-shell-netcmds.c',
    698                 'rtems/rtems-bsd-signal.c',
    699                 'rtems/rtems-bsd-sx.c',
    700                 'rtems/rtems-bsd-syscall-api.c',
    701                 'rtems/rtems-bsd-sysctlbyname.c',
    702                 'rtems/rtems-bsd-sysctl.c',
    703                 'rtems/rtems-bsd-sysctlnametomib.c',
    704                 'rtems/rtems-bsd-thread.c',
    705                 'rtems/rtems-bsd-timesupport.c',
    706                 'rtems/rtems-bsdnet-rtrequest.c',
    707                 'rtems/rtems-kvm.c',
    708                 'rtems/rtems_mii_ioctl_kern.c',
    709                 'rtems/rtems-syslog-initialize.c',
    710                 'rtems/syslog.c',
    711                 'ftpd/ftpd.c',
    712                 'mdns/mdns.c',
    713                 'mdns/mdns-hostname-default.c',
    714                 'pppd/auth.c',
    715                 'pppd/ccp.c',
    716                 'pppd/chap.c',
    717                 'pppd/chap_ms.c',
    718                 'pppd/chat.c',
    719                 'pppd/demand.c',
    720                 'pppd/fsm.c',
    721                 'pppd/ipcp.c',
    722                 'pppd/lcp.c',
    723                 'pppd/magic.c',
    724                 'pppd/options.c',
    725                 'pppd/rtemsmain.c',
    726                 'pppd/rtemspppd.c',
    727                 'pppd/sys-rtems.c',
    728                 'pppd/upap.c',
    729                 'pppd/utils.c',
    730                 'sys/dev/usb/controller/ehci_mpc83xx.c',
    731                 'sys/dev/usb/controller/ohci_lpc24xx.c',
    732                 'sys/dev/usb/controller/ohci_lpc32xx.c',
    733                 'sys/dev/smc/if_smc_nexus.c',
    734                 'sys/dev/ffec/if_ffec_mcf548x.c',
    735                 'sys/dev/dw_mmc/dw_mmc.c',
    736                 'sys/net/if_ppp.c',
    737                 'sys/net/ppp_tty.c',
    738                 'telnetd/check_passwd.c',
    739                 'telnetd/des.c',
    740                 'telnetd/pty.c',
    741                 'telnetd/telnetd.c',
    742                 'sys/dev/tsec/if_tsec_nexus.c',
    743         ]
    744 )
    745 
    746 class KVMSymbolsMakefileFragmentComposer(MakefileFragmentComposer):
    747         def compose(self, path):
    748                 return 'LIB_GEN_FILES += ' + path + '\n' \
    749                         'LIB_C_FILES += ' + path + '\n' \
    750                         + path + ': rtemsbsd/rtems/generate_kvm_symbols\n' \
    751                         '\t./$< > $@\n'
    752 
    753 rtems.addFile(File('rtems/rtems-kvm-symbols.c', RTEMSPathComposer(), NoConverter(), NoConverter(), KVMSymbolsMakefileFragmentComposer()))
    754 
    755 base = Module('base')
    756 base.addKernelSpaceHeaderFiles(
    757         [
    758                 'sys/bsm/audit.h',
    759                 'sys/bsm/audit_kevents.h',
    760                 'sys/fs/devfs/devfs_int.h',
    761                 'sys/security/audit/audit.h',
    762                 'sys/security/mac/mac_framework.h',
    763                 'sys/sys/acl.h',
    764                 'sys/sys/aio.h',
    765                 'sys/sys/bitstring.h',
    766                 'sys/sys/bufobj.h',
    767                 'sys/sys/buf_ring.h',
    768                 'sys/sys/_bus_dma.h',
    769                 'sys/sys/bus_dma.h',
    770                 'sys/sys/bus.h',
    771                 'sys/sys/_callout.h',
    772                 'sys/sys/callout.h',
    773                 'sys/sys/capability.h',
    774                 'sys/sys/condvar.h',
    775                 'sys/sys/conf.h',
    776                 'sys/sys/cpu.h',
    777                 'sys/sys/ctype.h',
    778                 'sys/sys/domain.h',
    779                 'sys/sys/endian.h',
    780                 'sys/sys/eventhandler.h',
    781                 'sys/sys/filedesc.h',
    782                 'sys/sys/file.h',
    783                 'sys/sys/filio.h',
    784                 'sys/sys/fnv_hash.h',
    785                 'sys/sys/hash.h',
    786                 'sys/sys/hhook.h',
    787                 'sys/sys/interrupt.h',
    788                 'sys/sys/jail.h',
    789                 'sys/sys/kernel.h',
    790                 'sys/sys/khelp.h',
    791                 'sys/sys/kobj.h',
    792                 'sys/sys/kthread.h',
    793                 'sys/sys/ktr.h',
    794                 'sys/sys/libkern.h',
    795                 'sys/sys/limits.h',
    796                 'sys/sys/linker.h',
    797                 'sys/sys/linker_set.h',
    798                 'sys/sys/_lock.h',
    799                 'sys/sys/_lockmgr.h',
    800                 'sys/sys/lockmgr.h',
    801                 'sys/sys/lock_profile.h',
    802                 'sys/sys/lockstat.h',
    803                 'sys/sys/loginclass.h',
    804                 'sys/sys/mac.h',
    805                 'sys/sys/malloc.h',
    806                 'sys/sys/mbuf.h',
    807                 'sys/sys/module.h',
    808                 'sys/sys/module_khelp.h',
    809                 'sys/sys/mount.h',
    810                 'sys/sys/_mutex.h',
    811                 'sys/sys/mutex.h',
    812                 'sys/sys/_null.h',
    813                 'sys/sys/osd.h',
    814                 'sys/sys/pcpu.h',
    815                 'sys/sys/priority.h',
    816                 'sys/sys/priv.h',
    817                 'sys/sys/proc.h',
    818                 'sys/sys/protosw.h',
    819                 'sys/sys/racct.h',
    820                 'sys/sys/random.h',
    821                 'sys/sys/reboot.h',
    822                 'sys/sys/refcount.h',
    823                 'sys/sys/resourcevar.h',
    824                 'sys/sys/rman.h',
    825                 'sys/sys/_rmlock.h',
    826                 'sys/sys/rmlock.h',
    827                 'sys/sys/rtprio.h',
    828                 'sys/sys/runq.h',
    829                 'sys/sys/_rwlock.h',
    830                 'sys/sys/rwlock.h',
    831                 'sys/sys/sbuf.h',
    832                 'sys/sys/sdt.h',
    833                 'sys/sys/select.h',
    834                 'sys/sys/selinfo.h',
    835                 'sys/sys/_semaphore.h',
    836                 'sys/sys/sf_buf.h',
    837                 'sys/sys/sigio.h',
    838                 'sys/sys/_sigset.h',
    839                 'sys/sys/smp.h',
    840                 'sys/sys/sleepqueue.h',
    841                 'sys/sys/_sockaddr_storage.h',
    842                 'sys/sys/sockbuf.h',
    843                 'sys/sys/socket.h',
    844                 'sys/sys/socketvar.h',
    845                 'sys/sys/sockio.h',
    846                 'sys/sys/sockopt.h',
    847                 'sys/sys/sockstate.h',
    848                 'sys/sys/stddef.h',
    849                 'sys/sys/stdint.h',
    850                 'sys/sys/_sx.h',
    851                 'sys/sys/sx.h',
    852                 'sys/sys/sysctl.h',
    853                 'sys/sys/syslog.h',
    854                 'sys/sys/sysproto.h',
    855                 'sys/sys/systm.h',
    856                 'sys/sys/_task.h',
    857                 'sys/sys/taskqueue.h',
    858                 'sys/sys/nlist_aout.h',
    859                 'sys/rpc/types.h',
    860                 'sys/sys/timepps.h',
    861                 'sys/sys/timetc.h',
    862                 'sys/sys/timex.h',
    863                 'sys/sys/tree.h',
    864                 'sys/sys/ttycom.h',
    865                 'sys/sys/ucred.h',
    866                 'sys/sys/un.h',
    867                 'sys/sys/unpcb.h',
    868                 'sys/sys/vmmeter.h',
    869                 'sys/sys/vnode.h',
    870                 'sys/vm/uma_dbg.h',
    871                 'sys/vm/uma.h',
    872                 'sys/vm/uma_int.h',
    873                 'sys/vm/vm_extern.h',
    874                 'sys/vm/vm.h',
    875         ]
    876 )
    877 base.addKernelSpaceSourceFiles(
    878         [
    879                 'sys/kern/init_main.c',
    880                 'sys/kern/kern_condvar.c',
    881                 'sys/kern/kern_event.c',
    882                 'sys/kern/kern_hhook.c',
    883                 'sys/kern/kern_intr.c',
    884                 'sys/kern/kern_khelp.c',
    885                 'sys/kern/kern_linker.c',
    886                 'sys/kern/kern_mbuf.c',
    887                 'sys/kern/kern_mib.c',
    888                 'sys/kern/kern_module.c',
    889                 'sys/kern/kern_mtxpool.c',
    890                 'sys/kern/kern_osd.c',
    891                 'sys/kern/kern_synch.c',
    892                 'sys/kern/kern_sysctl.c',
    893                 'sys/kern/kern_time.c',
    894                 'sys/kern/kern_timeout.c',
    895                 'sys/kern/subr_bufring.c',
    896                 'sys/kern/subr_bus.c',
    897                 'sys/kern/subr_eventhandler.c',
    898                 'sys/kern/subr_hash.c',
    899                 'sys/kern/subr_hints.c',
    900                 'sys/kern/subr_kobj.c',
    901                 'sys/kern/subr_lock.c',
    902                 'sys/kern/subr_module.c',
    903                 'sys/kern/subr_rman.c',
    904                 'sys/kern/subr_sbuf.c',
    905                 'sys/kern/subr_sleepqueue.c',
    906                 'sys/kern/subr_taskqueue.c',
    907                 'sys/kern/subr_uio.c',
    908                 'sys/kern/subr_unit.c',
    909                 'sys/kern/sys_generic.c',
    910                 'sys/kern/uipc_accf.c',
    911                 'sys/kern/uipc_domain.c',
    912                 'sys/kern/uipc_mbuf2.c',
    913                 'sys/kern/uipc_mbuf.c',
    914                 'sys/kern/uipc_sockbuf.c',
    915                 'sys/kern/uipc_socket.c',
    916                 'sys/kern/uipc_usrreq.c',
    917                 'sys/libkern/arc4random.c',
    918                 'sys/libkern/fls.c',
    919                 'sys/libkern/inet_ntoa.c',
    920                 'sys/libkern/random.c',
    921                 'sys/vm/uma_core.c',
    922         ]
    923 )
    924 
    925 mmc = Module('mmc')
    926 mmc.addKernelSpaceHeaderFiles(
    927         [
    928                 'sys/dev/mmc/bridge.h',
    929                 'sys/dev/mmc/mmcbrvar.h',
    930                 'sys/dev/mmc/mmcreg.h',
    931                 'sys/dev/mmc/mmcvar.h',
    932                 'sys/dev/sdhci/sdhci.h',
    933         ]
    934 )
    935 mmc.addKernelSpaceSourceFiles(
    936         [
    937                 'sys/dev/mmc/mmc.c',
    938                 'sys/dev/mmc/mmcsd.c',
    939                 'sys/dev/sdhci/sdhci.c',
    940         ]
    941 )
    942 
    943 devUsb = Module('dev_usb')
    944 devUsb.addKernelSpaceHeaderFiles(
    945         [
    946                 'sys/dev/usb/ufm_ioctl.h',
    947                 'sys/dev/usb/usb_busdma.h',
    948                 'sys/dev/usb/usb_bus.h',
    949                 'sys/dev/usb/usb_cdc.h',
    950                 'sys/dev/usb/usb_controller.h',
    951                 'sys/dev/usb/usb_core.h',
    952                 'sys/dev/usb/usb_debug.h',
    953                 'sys/dev/usb/usb_dev.h',
    954                 'sys/dev/usb/usb_device.h',
    955                 'sys/dev/usb/usbdi.h',
    956                 'sys/dev/usb/usbdi_util.h',
    957                 'sys/dev/usb/usb_dynamic.h',
    958                 'sys/dev/usb/usb_endian.h',
    959                 'sys/dev/usb/usb_freebsd.h',
    960                 'sys/dev/usb/usb_generic.h',
    961                 'sys/dev/usb/usb.h',
    962                 'sys/dev/usb/usbhid.h',
    963                 'sys/dev/usb/usb_hub.h',
    964                 'sys/dev/usb/usb_ioctl.h',
    965                 'sys/dev/usb/usb_mbuf.h',
    966                 'sys/dev/usb/usb_msctest.h',
    967                 'sys/dev/usb/usb_pf.h',
    968                 'sys/dev/usb/usb_process.h',
    969                 'sys/dev/usb/usb_request.h',
    970                 'sys/dev/usb/usb_transfer.h',
    971                 'sys/dev/usb/usb_util.h',
    972         ]
    973 )
    974 devUsb.addKernelSpaceSourceFiles(
    975         [
    976                 'sys/dev/usb/usb_busdma.c',
    977                 'sys/dev/usb/usb_core.c',
    978                 'sys/dev/usb/usb_debug.c',
    979                 'sys/dev/usb/usb_dev.c',
    980                 'sys/dev/usb/usb_device.c',
    981                 'sys/dev/usb/usb_dynamic.c',
    982                 'sys/dev/usb/usb_error.c',
    983                 'sys/dev/usb/usb_generic.c',
    984                 'sys/dev/usb/usb_handle_request.c',
    985                 'sys/dev/usb/usb_hid.c',
    986                 'sys/dev/usb/usb_hub.c',
    987                 'sys/dev/usb/usb_lookup.c',
    988                 'sys/dev/usb/usb_mbuf.c',
    989                 'sys/dev/usb/usb_msctest.c',
    990                 'sys/dev/usb/usb_parse.c',
    991                 'sys/dev/usb/usb_process.c',
    992                 'sys/dev/usb/usb_request.c',
    993                 'sys/dev/usb/usb_transfer.c',
    994                 'sys/dev/usb/usb_util.c',
    995         ]
    996 )
    997 
    998 devUsbAddOn = Module('dev_usb_add_on')
    999 devUsbAddOn.addKernelSpaceHeaderFiles(
    1000         [
    1001                 'sys/dev/usb/usb_pci.h',
    1002                 'sys/dev/usb/usb_compat_linux.h',
    1003         ]
    1004 )
    1005 devUsbAddOn.addKernelSpaceSourceFiles(
    1006         [
    1007                 'sys/dev/usb/usb_compat_linux.c',
    1008         ]
    1009 )
    1010 
    1011 devUsbBluetooth = Module('dev_usb_bluetooth')
    1012 devUsbBluetooth.addDependency(devUsb)
    1013 devUsbBluetooth.addKernelSpaceHeaderFiles(
    1014         [
    1015                 'sys/dev/usb/bluetooth/ng_ubt_var.h',
    1016         ]
    1017 )
    1018 devUsbBluetooth.addKernelSpaceSourceFiles(
    1019         [
    1020                 'sys/dev/usb/bluetooth/ng_ubt.c',
    1021                 'sys/dev/usb/bluetooth/ubtbcmfw.c',
    1022         ]
    1023 )
    1024 
    1025 devUsbController = Module('dev_usb_controller')
    1026 devUsbController.addDependency(devUsb)
    1027 devUsbController.addKernelSpaceHeaderFiles(
    1028         [
    1029                 'sys/dev/usb/controller/ohci.h',
    1030                 'sys/dev/usb/controller/ohcireg.h',
    1031                 'sys/dev/usb/controller/ehci.h',
    1032                 'sys/dev/usb/controller/ehcireg.h',
    1033                 'sys/dev/usb/controller/uhcireg.h',
    1034                 'sys/dev/usb/controller/xhcireg.h',
    1035         ]
    1036 )
    1037 devUsbController.addKernelSpaceSourceFiles(
    1038         [
    1039                 'sys/dev/usb/controller/ohci.c',
    1040                 'sys/dev/usb/controller/ehci.c',
    1041                 'sys/dev/usb/controller/usb_controller.c',
    1042         ]
    1043 )
    1044 
    1045 devUsbControllerAddOn = Module('dev_usb_controller_add_on')
    1046 devUsbControllerAddOn.addDependency(devUsb)
    1047 devUsbControllerAddOn.addKernelSpaceHeaderFiles(
    1048         [
    1049                 'sys/dev/usb/controller/at91dci.h',
    1050                 'sys/dev/usb/controller/atmegadci.h',
    1051                 'sys/dev/usb/controller/musb_otg.h',
    1052                 'sys/dev/usb/controller/uss820dci.h',
    1053         ]
    1054 )
    1055 devUsbControllerAddOn.addKernelSpaceSourceFiles(
    1056         [
    1057                 'sys/dev/usb/controller/at91dci_atmelarm.c',
    1058                 'sys/dev/usb/controller/at91dci.c',
    1059                 'sys/dev/usb/controller/atmegadci_atmelarm.c',
    1060                 'sys/dev/usb/controller/atmegadci.c',
    1061                 'sys/dev/usb/controller/ehci_ixp4xx.c',
    1062                 'sys/dev/usb/controller/ehci_pci.c',
    1063                 'sys/dev/usb/controller/musb_otg.c',
    1064                 'sys/dev/usb/controller/ehci_mbus.c',
    1065                 'sys/dev/usb/controller/musb_otg_atmelarm.c',
    1066                 'sys/dev/usb/controller/ohci_atmelarm.c',
    1067                 'sys/dev/usb/controller/ohci_pci.c',
    1068                 'sys/dev/usb/controller/uhci_pci.c',
    1069                 'sys/dev/usb/controller/uss820dci_atmelarm.c',
    1070                 'sys/dev/usb/controller/uss820dci.c',
    1071         ]
    1072 )
    1073 
    1074 devUsbInput = Module('dev_usb_input')
    1075 devUsbInput.addDependency(devUsb)
    1076 devUsbInput.addKernelSpaceHeaderFiles(
    1077         [
    1078                 'sys/dev/usb/input/usb_rdesc.h',
    1079         ]
    1080 )
    1081 devUsbInput.addKernelSpaceSourceFiles(
    1082         [
    1083                 'sys/dev/usb/input/uhid.c',
    1084                 'sys/dev/usb/input/ukbd.c',
    1085         ]
    1086 )
    1087 
    1088 devUsbInputMouse = Module('dev_usb_mouse')
    1089 devUsbInputMouse.addDependency(devUsb)
    1090 devUsbInputMouse.addKernelSpaceHeaderFiles(
    1091         [
    1092                 'sys/sys/tty.h',
    1093                 'sys/sys/mouse.h',
    1094                 'sys/sys/ttyqueue.h',
    1095                 'sys/sys/ttydefaults.h',
    1096                 'sys/sys/ttydisc.h',
    1097                 'sys/sys/ttydevsw.h',
    1098                 'sys/sys/ttyhook.h',
    1099         ]
    1100 )
    1101 devUsbInputMouse.addKernelSpaceSourceFiles(
    1102         [
    1103                 'sys/dev/usb/input/ums.c',
    1104         ]
    1105 )
    1106 
    1107 devUsbMisc = Module('dev_usb_misc')
    1108 devUsbMisc.addDependency(devUsb)
    1109 devUsbMisc.addKernelSpaceHeaderFiles(
    1110         [
    1111                 'sys/dev/usb/misc/udbp.h',
    1112         ]
    1113 )
    1114 devUsbMisc.addKernelSpaceSourceFiles(
    1115         [
    1116                 'sys/dev/usb/misc/udbp.c',
    1117                 'sys/dev/usb/misc/ufm.c',
    1118         ]
    1119 )
    1120 
    1121 devUsbNet = Module('dev_usb_net')
    1122 devUsbNet.addDependency(devUsb)
    1123 devUsbNet.addKernelSpaceHeaderFiles(
    1124         [
    1125                 'sys/dev/mii/mii.h',
    1126                 'sys/dev/mii/miivar.h',
    1127                 'sys/dev/usb/net/if_cdcereg.h',
    1128                 'sys/dev/usb/net/usb_ethernet.h',
    1129         ]
    1130 )
    1131 devUsbNet.addKernelSpaceSourceFiles(
    1132         [
    1133                 'sys/dev/usb/net/if_cdce.c',
    1134                 'sys/dev/usb/net/usb_ethernet.c',
    1135         ]
    1136 )
    1137 
    1138 devUsbQuirk = Module('dev_usb_quirk')
    1139 devUsbQuirk.addDependency(devUsb)
    1140 devUsbQuirk.addKernelSpaceHeaderFiles(
    1141         [
    1142                 'sys/dev/usb/quirk/usb_quirk.h',
    1143         ]
    1144 )
    1145 devUsbQuirk.addKernelSpaceSourceFiles(
    1146         [
    1147                 'sys/dev/usb/quirk/usb_quirk.c',
    1148         ]
    1149 )
    1150 
    1151 devUsbSerial = Module('dev_usb_serial')
    1152 devUsbSerial.addDependency(devUsb)
    1153 devUsbSerial.addKernelSpaceHeaderFiles(
    1154         [
    1155                 'sys/dev/usb/serial/uftdi_reg.h',
    1156                 'sys/dev/usb/serial/usb_serial.h',
    1157         ]
    1158 )
    1159 devUsbSerial.addKernelSpaceSourceFiles(
    1160         [
    1161                 'sys/dev/usb/serial/u3g.c',
    1162                 'sys/dev/usb/serial/uark.c',
    1163                 'sys/dev/usb/serial/ubsa.c',
    1164                 'sys/dev/usb/serial/ubser.c',
    1165                 'sys/dev/usb/serial/uchcom.c',
    1166                 'sys/dev/usb/serial/ucycom.c',
    1167                 'sys/dev/usb/serial/ufoma.c',
    1168                 'sys/dev/usb/serial/uftdi.c',
    1169                 'sys/dev/usb/serial/ugensa.c',
    1170                 'sys/dev/usb/serial/uipaq.c',
    1171                 'sys/dev/usb/serial/ulpt.c',
    1172                 'sys/dev/usb/serial/umct.c',
    1173                 'sys/dev/usb/serial/umodem.c',
    1174                 'sys/dev/usb/serial/umoscom.c',
    1175                 'sys/dev/usb/serial/uplcom.c',
    1176                 'sys/dev/usb/serial/usb_serial.c',
    1177                 'sys/dev/usb/serial/uslcom.c',
    1178                 'sys/dev/usb/serial/uvisor.c',
    1179                 'sys/dev/usb/serial/uvscom.c',
    1180         ]
    1181 )
    1182 
    1183 devUsbStorage = Module('dev_usb_storage')
    1184 devUsbStorage.addDependency(devUsb)
    1185 devUsbStorage.addKernelSpaceSourceFiles(
    1186         [
    1187                 'sys/dev/usb/storage/umass.c',
    1188         ]
    1189 )
    1190 
    1191 devUsbStorageAddOn = Module('dev_usb_storage_add_on')
    1192 devUsbStorageAddOn.addDependency(devUsb)
    1193 devUsbStorageAddOn.addKernelSpaceHeaderFiles(
    1194         [
    1195                 'sys/dev/usb/storage/rio500_usb.h',
    1196         ]
    1197 )
    1198 devUsbStorageAddOn.addKernelSpaceSourceFiles(
    1199         [
    1200                 'sys/dev/usb/storage/urio.c',
    1201                 'sys/dev/usb/storage/ustorage_fs.c',
    1202         ]
    1203 )
    1204 
    1205 devUsbTemplate = Module('dev_usb_template')
    1206 devUsbTemplate.addDependency(devUsb)
    1207 devUsbTemplate.addKernelSpaceHeaderFiles(
    1208         [
    1209                 'sys/dev/usb/template/usb_template.h',
    1210         ]
    1211 )
    1212 devUsbTemplate.addKernelSpaceSourceFiles(
    1213         [
    1214                 'sys/dev/usb/template/usb_template.c',
    1215                 'sys/dev/usb/template/usb_template_cdce.c',
    1216                 'sys/dev/usb/template/usb_template_msc.c',
    1217                 'sys/dev/usb/template/usb_template_mtp.c',
    1218         ]
    1219 )
    1220 
    1221 devUsbWlan = Module('dev_usb_wlan')
    1222 devUsbWlan.addDependency(devUsb)
    1223 devUsbWlan.addKernelSpaceHeaderFiles(
    1224         [
    1225                 'sys/dev/usb/wlan/if_rumfw.h',
    1226                 'sys/dev/usb/wlan/if_rumreg.h',
    1227                 'sys/dev/usb/wlan/if_rumvar.h',
    1228                 'sys/dev/usb/wlan/if_uathreg.h',
    1229                 'sys/dev/usb/wlan/if_uathvar.h',
    1230                 'sys/dev/usb/wlan/if_upgtvar.h',
    1231                 'sys/dev/usb/wlan/if_uralreg.h',
    1232                 'sys/dev/usb/wlan/if_uralvar.h',
    1233                 'sys/dev/usb/wlan/if_zydfw.h',
    1234                 'sys/dev/usb/wlan/if_zydreg.h',
    1235         ]
    1236 )
    1237 devUsbWlan.addKernelSpaceSourceFiles(
    1238         [
    1239                 'sys/dev/usb/wlan/if_rum.c',
    1240                 'sys/dev/usb/wlan/if_uath.c',
    1241                 'sys/dev/usb/wlan/if_upgt.c',
    1242                 'sys/dev/usb/wlan/if_ural.c',
    1243                 'sys/dev/usb/wlan/if_zyd.c',
    1244         ]
    1245 )
    1246 
    1247 cam = Module('cam')
    1248 cam.addKernelSpaceHeaderFiles(
    1249         [
    1250                 'sys/sys/ata.h',
    1251                 'sys/cam/cam.h',
    1252                 'sys/cam/cam_ccb.h',
    1253                 'sys/cam/cam_sim.h',
    1254                 'sys/cam/cam_xpt_sim.h',
    1255                 'sys/cam/scsi/scsi_all.h',
    1256                 'sys/cam/scsi/scsi_da.h',
    1257                 'sys/cam/ata/ata_all.h',
    1258                 'sys/cam/cam_periph.h',
    1259                 'sys/cam/cam_debug.h',
    1260                 'sys/cam/cam_xpt.h',
    1261         ]
    1262 )
    1263 cam.addKernelSpaceSourceFiles(
    1264         [
    1265                 'sys/cam/cam.c',
    1266                 'sys/cam/scsi/scsi_all.c',
    1267         ]
    1268 )
    1269 
    1270 devNet = Module('dev_net')
    1271 devNet.addKernelSpaceHeaderFiles(
    1272         [
    1273                 'sys/dev/mii/mii.h',
    1274                 'sys/dev/mii/mii_bitbang.h',
    1275                 'sys/dev/mii/miivar.h',
    1276                 'sys/dev/mii/brgphyreg.h',
    1277                 'sys/dev/mii/e1000phyreg.h',
    1278                 'sys/dev/mii/icsphyreg.h',
    1279                 'sys/dev/led/led.h',
    1280                 'sys/net/bpf.h',
    1281                 'sys/net/ethernet.h',
    1282                 'sys/net/if_arp.h',
    1283                 'sys/net/if_dl.h',
    1284                 'sys/net/if.h',
    1285                 'sys/net/if_media.h',
    1286                 'sys/net/if_types.h',
    1287                 'sys/net/if_var.h',
    1288                 'sys/net/vnet.h',
    1289                 'sys/dev/ofw/openfirm.h',
    1290                 'sys/dev/tsec/if_tsec.h',
    1291                 'sys/dev/tsec/if_tsecreg.h',
    1292                 'sys/dev/cadence/if_cgem_hw.h',
    1293                 'sys/dev/dwc/if_dwc.h',
    1294                 'sys/arm/xilinx/zy7_slcr.h',
    1295         ]
    1296 )
    1297 devNet.addKernelSpaceSourceFiles(
    1298         [
    1299                 'sys/dev/mii/mii.c',
    1300                 'sys/dev/mii/mii_bitbang.c',
    1301                 'sys/dev/mii/mii_physubr.c',
    1302                 'sys/dev/mii/icsphy.c',
    1303                 'sys/dev/mii/e1000phy.c',
    1304                 'sys/dev/mii/brgphy.c',
    1305                 'sys/dev/mii/micphy.c',
    1306                 'sys/dev/mii/ukphy.c',
    1307                 'sys/dev/mii/ukphy_subr.c',
    1308                 'sys/dev/tsec/if_tsec.c',
    1309                 'sys/dev/cadence/if_cgem.c',
    1310                 'sys/dev/dwc/if_dwc.c',
    1311                 'sys/arm/xilinx/zy7_slcr.c',
    1312         ]
    1313 )
    1314 
    1315 devNic = Module('dev_nic')
    1316 devNic.addKernelSpaceHeaderFiles(
    1317         [
    1318                 'sys/sys/pciio.h',
    1319                 'sys/dev/random/randomdev_soft.h',
    1320                 'sys/sys/eventvar.h',
    1321                 'sys/sys/kenv.h',
    1322                 'sys/isa/isavar.h',
    1323                 'sys/isa/pnpvar.h',
    1324                 'sys/netatalk/at.h',
    1325                 'sys/netatalk/endian.h',
    1326                 'sys/netatalk/aarp.h',
    1327                 'sys/netatalk/at_extern.h',
    1328                 'sys/netatalk/at_var.h',
    1329                 'sys/netatalk/ddp.h',
    1330                 'sys/netatalk/ddp_pcb.h',
    1331                 'sys/netatalk/ddp_var.h',
    1332                 'sys/netatalk/phase2.h',
    1333                 'sys/sys/mman.h',
    1334                 'sys/sys/buf.h',
    1335                 'sys/sys/mqueue.h',
    1336                 'sys/sys/tty.h',
    1337                 'sys/sys/ttyqueue.h',
    1338                 'sys/sys/ttydisc.h',
    1339                 'sys/sys/ttydevsw.h',
    1340                 'sys/sys/ttyhook.h',
    1341                 'sys/sys/user.h',
    1342         ]
    1343 )
    1344 
    1345 devNic.addCPUDependentHeaderFiles(
    1346         [
    1347                 'sys/arm/include/cpufunc.h',
    1348                 'sys/i386/include/specialreg.h',
    1349                 'sys/i386/include/md_var.h',
    1350                 'sys/i386/include/intr_machdep.h',
    1351                 'sys/i386/include/cpufunc.h',
    1352                 'sys/mips/include/cpufunc.h',
    1353                 'sys/mips/include/cpuregs.h',
    1354                 'sys/powerpc/include/cpufunc.h',
    1355                 'sys/powerpc/include/psl.h',
    1356                 'sys/powerpc/include/spr.h',
    1357                 'sys/sparc64/include/cpufunc.h',
    1358                 'sys/sparc64/include/asi.h',
    1359                 'sys/sparc64/include/pstate.h',
    1360         ]
    1361 )
    1362 devNic.addKernelSpaceSourceFiles(
    1363         [
    1364                 'sys/dev/random/harvest.c',
    1365                 'sys/netinet/tcp_hostcache.c',
    1366                 'sys/dev/led/led.c',
    1367                 'sys/netatalk/aarp.c',
    1368                 'sys/netatalk/at_control.c',
    1369                 'sys/netatalk/at_rmx.c',
    1370                 'sys/netatalk/ddp_input.c',
    1371                 'sys/netatalk/ddp_pcb.c',
    1372                 'sys/netatalk/ddp_usrreq.c',
    1373                 'sys/netatalk/at_proto.c',
    1374                 'sys/netatalk/ddp_output.c',
    1375         ]
    1376 )
    1377 
    1378 devNic_re = Module('dev_nic_re')
    1379 devNic_re.addKernelSpaceHeaderFiles(
    1380         [
    1381                 'sys/pci/if_rlreg.h',
    1382         ]
    1383 )
    1384 devNic_re.addKernelSpaceSourceFiles(
    1385         [
    1386                 'sys/dev/re/if_re.c',
    1387         ]
    1388 )
    1389 
    1390 devNic_fxp = Module('dev_nic_fxp')
    1391 devNic_fxp.addKernelSpaceHeaderFiles(
    1392         [
    1393                 'sys/dev/fxp/if_fxpreg.h',
    1394                 'sys/dev/fxp/if_fxpvar.h',
    1395                 'sys/dev/fxp/rcvbundl.h',
    1396         ]
    1397 )
    1398 devNic_fxp.addKernelSpaceSourceFiles(
    1399         [
    1400                 'sys/dev/fxp/if_fxp.c',
    1401         ]
    1402 )
    1403 
    1404 devNic_e1000 = Module('dev_nic_e1000')
    1405 devNic_e1000.addKernelSpaceHeaderFiles(
    1406         [
    1407                 'sys/dev/e1000/e1000_80003es2lan.h',
    1408                 'sys/dev/e1000/e1000_82541.h',
    1409                 'sys/dev/e1000/e1000_82543.h',
    1410                 'sys/dev/e1000/e1000_82571.h',
    1411                 'sys/dev/e1000/e1000_82575.h',
    1412                 'sys/dev/e1000/e1000_api.h',
    1413                 'sys/dev/e1000/e1000_defines.h',
    1414                 'sys/dev/e1000/e1000_hw.h',
    1415                 'sys/dev/e1000/e1000_i210.h',
    1416                 'sys/dev/e1000/e1000_ich8lan.h',
    1417                 'sys/dev/e1000/e1000_mac.h',
    1418                 'sys/dev/e1000/e1000_manage.h',
    1419                 'sys/dev/e1000/e1000_mbx.h',
    1420                 'sys/dev/e1000/e1000_nvm.h',
    1421                 'sys/dev/e1000/e1000_osdep.h',
    1422                 'sys/dev/e1000/e1000_phy.h',
    1423                 'sys/dev/e1000/e1000_regs.h',
    1424                 'sys/dev/e1000/e1000_vf.h',
    1425                 'sys/dev/e1000/if_em.h',
    1426                 'sys/dev/e1000/if_igb.h',
    1427                 'sys/dev/e1000/if_lem.h',
    1428         ]
    1429 )
    1430 devNic_e1000.addKernelSpaceSourceFiles(
    1431         [
    1432                 'sys/dev/e1000/e1000_80003es2lan.c',
    1433                 'sys/dev/e1000/e1000_82542.c',
    1434                 'sys/dev/e1000/e1000_82575.c',
    1435                 'sys/dev/e1000/e1000_mac.c',
    1436                 'sys/dev/e1000/e1000_nvm.c',
    1437                 'sys/dev/e1000/e1000_vf.c',
    1438                 'sys/dev/e1000/if_lem.c',
    1439                 'sys/dev/e1000/e1000_82540.c',
    1440                 'sys/dev/e1000/e1000_82543.c',
    1441                 'sys/dev/e1000/e1000_api.c',
    1442                 'sys/dev/e1000/e1000_manage.c',
    1443                 'sys/dev/e1000/e1000_osdep.c',
    1444                 'sys/dev/e1000/if_em.c',
    1445                 'sys/dev/e1000/e1000_82541.c',
    1446                 'sys/dev/e1000/e1000_82571.c',
    1447                 'sys/dev/e1000/e1000_ich8lan.c',
    1448                 'sys/dev/e1000/e1000_mbx.c',
    1449                 'sys/dev/e1000/e1000_phy.c',
    1450                 'sys/dev/e1000/if_igb.c',
    1451         ]
    1452 )
    1453 
    1454 # DEC Tulip aka Intel 21143
    1455 devNic_dc = Module('dev_nic_dc')
    1456 devNic_dc.addKernelSpaceHeaderFiles(
    1457         [
    1458                 'sys/dev/dc/if_dcreg.h',
    1459         ]
    1460 )
    1461 devNic_dc.addKernelSpaceSourceFiles(
    1462         [
    1463                 'sys/dev/dc/dcphy.c',
    1464                 'sys/dev/dc/if_dc.c',
    1465                 'sys/dev/dc/pnphy.c',
    1466         ]
    1467 )
    1468 
    1469 # SMC9111x
    1470 devNic_smc = Module('dev_nic_smc')
    1471 devNic_smc.addKernelSpaceHeaderFiles(
    1472         [
    1473                 'sys/dev/smc/if_smcreg.h',
    1474                 'sys/dev/smc/if_smcvar.h',
    1475         ]
    1476 )
    1477 devNic_smc.addKernelSpaceSourceFiles(
    1478         [
    1479                 'sys/dev/smc/if_smc.c',
    1480         ]
    1481 )
    1482 
    1483 # Crystal Semiconductor CS8900
    1484 devNic_cs = Module('dev_nic_cs')
    1485 devNic_cs.addKernelSpaceHeaderFiles(
    1486         [
    1487                 'sys/dev/cs/if_csreg.h',
    1488                 'sys/dev/cs/if_csvar.h',
    1489         ]
    1490 )
    1491 devNic_cs.addKernelSpaceSourceFiles(
    1492         [
    1493                 'sys/dev/cs/if_cs.c',
    1494                 'sys/dev/cs/if_cs_isa.c',
    1495                 'sys/dev/cs/if_cs_pccard.c',
    1496         ]
    1497 )
    1498 
    1499 # Broadcomm BCE, BFE, BGE - MII is intertwined
    1500 devNic_broadcomm = Module('dev_nic_broadcomm')
    1501 devNic_broadcomm.addKernelSpaceHeaderFiles(
    1502         [
    1503                 'sys/dev/bce/if_bcefw.h',
    1504                 'sys/dev/bce/if_bcereg.h',
    1505                 'sys/dev/bfe/if_bfereg.h',
    1506                 'sys/dev/bge/if_bgereg.h',
    1507         ]
    1508 )
    1509 devNic_broadcomm.addKernelSpaceSourceFiles(
    1510         [
    1511                 'sys/dev/bce/if_bce.c',
    1512                 'sys/dev/bfe/if_bfe.c',
    1513                 'sys/dev/bge/if_bge.c',
    1514         ]
    1515 )
    1516 
    1517 net = Module('net')
    1518 net.addKernelSpaceHeaderFiles(
    1519         [
    1520                 'sys/net/bpf_buffer.h',
    1521                 'sys/net/bpfdesc.h',
    1522                 'sys/net/bpf.h',
    1523                 'sys/net/bpf_jitter.h',
    1524                 'sys/net/bpf_zerocopy.h',
    1525                 'sys/net/bridgestp.h',
    1526                 'sys/net/ethernet.h',
    1527                 'sys/net/fddi.h',
    1528                 'sys/net/firewire.h',
    1529                 'sys/net/flowtable.h',
    1530                 'sys/net/ieee8023ad_lacp.h',
    1531                 'sys/net/if_arc.h',
    1532                 'sys/net/if_arp.h',
    1533                 'sys/net/if_atm.h',
    1534                 'sys/net/if_bridgevar.h',
    1535                 'sys/net/if_clone.h',
    1536                 'sys/net/if_dl.h',
    1537                 'sys/net/if_enc.h',
    1538                 'sys/net/if_gif.h',
    1539                 'sys/net/if_gre.h',
    1540                 'sys/net/if.h',
    1541                 'sys/net/if_lagg.h',
    1542                 'sys/net/if_llatbl.h',
    1543                 'sys/net/if_llc.h',
    1544                 'sys/net/if_media.h',
    1545                 'sys/net/if_mib.h',
    1546                 'sys/net/if_sppp.h',
    1547                 'sys/net/if_stf.h',
    1548                 'sys/net/if_tap.h',
    1549                 'sys/net/if_tapvar.h',
    1550                 'sys/net/if_tun.h',
    1551                 'sys/net/if_types.h',
    1552                 'sys/net/if_var.h',
    1553                 'sys/net/if_vlan_var.h',
    1554                 'sys/net/iso88025.h',
    1555                 'sys/net/netisr.h',
    1556                 'sys/net/netisr_internal.h',
    1557                 'sys/net/pfil.h',
    1558                 'sys/net/pfkeyv2.h',
    1559                 'sys/net/ppp_defs.h',
    1560                 'sys/net/radix.h',
    1561                 'sys/net/radix_mpath.h',
    1562                 'sys/net/raw_cb.h',
    1563                 'sys/net/route.h',
    1564                 'sys/net/slcompress.h',
    1565                 'sys/net/vnet.h',
    1566         ]
    1567 )
    1568 net.addKernelSpaceSourceFiles(
    1569         [
    1570                 'sys/kern/sys_socket.c',
    1571                 'sys/kern/uipc_syscalls.c',
    1572                 'sys/net/bridgestp.c',
    1573                 'sys/net/ieee8023ad_lacp.c',
    1574                 'sys/net/if_atmsubr.c',
    1575                 'sys/net/if.c',
    1576                 'sys/net/if_clone.c',
    1577                 'sys/net/if_dead.c',
    1578                 'sys/net/if_disc.c',
    1579                 'sys/net/if_edsc.c',
    1580                 'sys/net/if_ef.c',
    1581                 'sys/net/if_enc.c',
    1582                 'sys/net/if_epair.c',
    1583                 'sys/net/if_faith.c',
    1584                 'sys/net/if_fddisubr.c',
    1585                 'sys/net/if_fwsubr.c',
    1586                 'sys/net/if_gif.c',
    1587                 'sys/net/if_gre.c',
    1588                 'sys/net/if_iso88025subr.c',
    1589                 'sys/net/if_lagg.c',
    1590                 'sys/net/if_llatbl.c',
    1591                 'sys/net/if_loop.c',
    1592                 'sys/net/if_media.c',
    1593                 'sys/net/if_mib.c',
    1594                 'sys/net/if_spppfr.c',
    1595                 'sys/net/if_spppsubr.c',
    1596                 'sys/net/if_tap.c',
    1597                 'sys/net/if_tun.c',
    1598                 'sys/net/if_vlan.c',
    1599                 'sys/net/pfil.c',
    1600                 'sys/net/radix.c',
    1601                 'sys/net/radix_mpath.c',
    1602                 'sys/net/raw_cb.c',
    1603                 'sys/net/raw_usrreq.c',
    1604                 'sys/net/route.c',
    1605                 'sys/net/rtsock.c',
    1606                 'sys/net/slcompress.c',
    1607                 'sys/net/bpf_buffer.c',
    1608                 'sys/net/bpf.c',
    1609                 'sys/net/bpf_filter.c',
    1610                 'sys/net/bpf_jitter.c',
    1611                 'sys/net/if_arcsubr.c',
    1612                 'sys/net/if_bridge.c',
    1613                 'sys/net/if_ethersubr.c',
    1614                 'sys/net/netisr.c',
    1615         ]
    1616 )
    1617 
    1618 netinet = Module('netinet')
    1619 netinet.addKernelSpaceHeaderFiles(
    1620         [
    1621                 'sys/netinet/cc.h',
    1622                 'sys/netinet/cc/cc_module.h',
    1623                 'sys/netinet/icmp6.h',
    1624                 'sys/netinet/icmp_var.h',
    1625                 'sys/netinet/if_atm.h',
    1626                 'sys/netinet/if_ether.h',
    1627                 'sys/netinet/igmp.h',
    1628                 'sys/netinet/igmp_var.h',
    1629                 'sys/netinet/in_gif.h',
    1630                 'sys/netinet/in.h',
    1631                 'sys/netinet/in_pcb.h',
    1632                 'sys/netinet/in_systm.h',
    1633                 'sys/netinet/in_var.h',
    1634                 'sys/netinet/ip6.h',
    1635                 'sys/netinet/ip_carp.h',
    1636                 'sys/netinet/ip_divert.h',
    1637                 'sys/netinet/ip_dummynet.h',
    1638                 'sys/netinet/ip_ecn.h',
    1639                 'sys/netinet/ip_encap.h',
    1640                 'sys/netinet/ip_fw.h',
    1641                 'sys/netinet/ip_gre.h',
    1642                 'sys/netinet/ip.h',
    1643                 'sys/netinet/ip_icmp.h',
    1644                 'sys/netinet/ip_ipsec.h',
    1645                 'sys/netinet/ip_mroute.h',
    1646                 'sys/netinet/ip_options.h',
    1647                 'sys/netinet/ip_var.h',
    1648                 'sys/netpfil/ipfw/dn_heap.h',
    1649                 'sys/netpfil/ipfw/dn_sched.h',
    1650                 'sys/netpfil/ipfw/ip_dn_private.h',
    1651                 'sys/netpfil/ipfw/ip_fw_private.h',
    1652                 'sys/netinet/pim.h',
    1653                 'sys/netinet/pim_var.h',
    1654                 'sys/netinet/sctp_asconf.h',
    1655                 'sys/netinet/sctp_auth.h',
    1656                 'sys/netinet/sctp_bsd_addr.h',
    1657                 'sys/netinet/sctp_constants.h',
    1658                 'sys/netinet/sctp_crc32.h',
    1659                 'sys/netinet/sctp_dtrace_declare.h',
    1660                 'sys/netinet/sctp_dtrace_define.h',
    1661                 'sys/netinet/sctp.h',
    1662                 'sys/netinet/sctp_header.h',
    1663                 'sys/netinet/sctp_indata.h',
    1664                 'sys/netinet/sctp_input.h',
    1665                 'sys/netinet/sctp_lock_bsd.h',
    1666                 'sys/netinet/sctp_os_bsd.h',
    1667                 'sys/netinet/sctp_os.h',
    1668                 'sys/netinet/sctp_output.h',
    1669                 'sys/netinet/sctp_pcb.h',
    1670                 'sys/netinet/sctp_peeloff.h',
    1671                 'sys/netinet/sctp_structs.h',
    1672                 'sys/netinet/sctp_sysctl.h',
    1673                 'sys/netinet/sctp_timer.h',
    1674                 'sys/netinet/sctp_uio.h',
    1675                 'sys/netinet/sctputil.h',
    1676                 'sys/netinet/sctp_var.h',
    1677                 'sys/netinet/tcp_debug.h',
    1678                 'sys/netinet/tcp_fsm.h',
    1679                 'sys/netinet/tcp.h',
    1680                 'sys/netinet/tcp_hostcache.h',
    1681                 'sys/netinet/tcpip.h',
    1682                 'sys/netinet/tcp_lro.h',
    1683                 'sys/netinet/tcp_offload.h',
    1684                 'sys/netinet/tcp_seq.h',
    1685                 'sys/netinet/tcp_syncache.h',
    1686                 'sys/netinet/tcp_timer.h',
    1687                 'sys/netinet/tcp_var.h',
    1688                 'sys/netinet/toecore.h',
    1689                 'sys/netinet/udp.h',
    1690                 'sys/netinet/udp_var.h',
    1691                 'sys/netinet/libalias/alias_local.h',
    1692                 'sys/netinet/libalias/alias.h',
    1693                 'sys/netinet/libalias/alias_mod.h',
    1694                 'sys/netinet/libalias/alias_sctp.h',
    1695         ]
    1696 )
    1697 # in_cksum.c is architecture dependent
    1698 netinet.addKernelSpaceSourceFiles(
    1699         [
    1700                 'sys/netinet/accf_data.c',
    1701                 'sys/netinet/accf_dns.c',
    1702                 'sys/netinet/accf_http.c',
    1703                 'sys/netinet/cc/cc.c',
    1704                 'sys/netinet/cc/cc_newreno.c',
    1705                 'sys/netinet/if_atm.c',
    1706                 'sys/netinet/if_ether.c',
    1707                 'sys/netinet/igmp.c',
    1708                 'sys/netinet/in.c',
    1709                 'sys/netinet/in_gif.c',
    1710                 'sys/netinet/in_mcast.c',
    1711                 'sys/netinet/in_pcb.c',
    1712                 'sys/netinet/in_proto.c',
    1713                 'sys/netinet/in_rmx.c',
    1714                 'sys/netinet/ip_carp.c',
    1715                 'sys/netinet/ip_divert.c',
    1716                 'sys/netinet/ip_ecn.c',
    1717                 'sys/netinet/ip_encap.c',
    1718                 'sys/netinet/ip_fastfwd.c',
    1719                 'sys/netinet/ip_gre.c',
    1720                 'sys/netinet/ip_icmp.c',
    1721                 'sys/netinet/ip_id.c',
    1722                 'sys/netinet/ip_input.c',
    1723                 'sys/netinet/ip_mroute.c',
    1724                 'sys/netinet/ip_options.c',
    1725                 'sys/netinet/ip_output.c',
    1726                 'sys/netinet/raw_ip.c',
    1727                 'sys/netinet/sctp_asconf.c',
    1728                 'sys/netinet/sctp_auth.c',
    1729                 'sys/netinet/sctp_bsd_addr.c',
    1730                 'sys/netinet/sctp_cc_functions.c',
    1731                 'sys/netinet/sctp_crc32.c',
    1732                 'sys/netinet/sctp_indata.c',
    1733                 'sys/netinet/sctp_input.c',
    1734                 'sys/netinet/sctp_output.c',
    1735                 'sys/netinet/sctp_pcb.c',
    1736                 'sys/netinet/sctp_peeloff.c',
    1737                 'sys/netinet/sctp_sysctl.c',
    1738                 'sys/netinet/sctp_timer.c',
    1739                 'sys/netinet/sctp_usrreq.c',
    1740                 'sys/netinet/sctputil.c',
    1741                 'sys/netinet/tcp_debug.c',
    1742                 #'netinet/tcp_hostcache.c',
    1743                 'sys/netinet/tcp_input.c',
    1744                 'sys/netinet/tcp_lro.c',
    1745                 'sys/netinet/tcp_offload.c',
    1746                 'sys/netinet/tcp_output.c',
    1747                 'sys/netinet/tcp_reass.c',
    1748                 'sys/netinet/tcp_sack.c',
    1749                 'sys/netinet/tcp_subr.c',
    1750                 'sys/netinet/tcp_syncache.c',
    1751                 'sys/netinet/tcp_timer.c',
    1752                 'sys/netinet/tcp_timewait.c',
    1753                 'sys/netinet/tcp_usrreq.c',
    1754                 'sys/netpfil/ipfw/dn_heap.c',
    1755                 'sys/netpfil/ipfw/dn_sched_fifo.c',
    1756                 'sys/netpfil/ipfw/dn_sched_prio.c',
    1757                 'sys/netpfil/ipfw/dn_sched_qfq.c',
    1758                 'sys/netpfil/ipfw/dn_sched_rr.c',
    1759                 'sys/netpfil/ipfw/dn_sched_wf2q.c',
    1760                 'sys/netpfil/ipfw/ip_dn_glue.c',
    1761                 'sys/netpfil/ipfw/ip_dn_io.c',
    1762                 'sys/netpfil/ipfw/ip_dummynet.c',
    1763                 'sys/netpfil/ipfw/ip_fw2.c',
    1764                 #'sys/netpfil/ipfw/ip_fw_dynamic.c',
    1765                 'sys/netpfil/ipfw/ip_fw_log.c',
    1766                 'sys/netpfil/ipfw/ip_fw_nat.c',
    1767                 'sys/netpfil/ipfw/ip_fw_pfil.c',
    1768                 'sys/netpfil/ipfw/ip_fw_sockopt.c',
    1769                 'sys/netpfil/ipfw/ip_fw_table.c',
    1770                 'sys/netinet/udp_usrreq.c',
    1771                 'sys/netinet/libalias/alias_dummy.c',
    1772                 'sys/netinet/libalias/alias_pptp.c',
    1773                 'sys/netinet/libalias/alias_smedia.c',
    1774                 'sys/netinet/libalias/alias_mod.c',
    1775                 'sys/netinet/libalias/alias_cuseeme.c',
    1776                 'sys/netinet/libalias/alias_nbt.c',
    1777                 'sys/netinet/libalias/alias_irc.c',
    1778                 'sys/netinet/libalias/alias_util.c',
    1779                 'sys/netinet/libalias/alias_db.c',
    1780                 'sys/netinet/libalias/alias_ftp.c',
    1781                 'sys/netinet/libalias/alias_proxy.c',
    1782                 'sys/netinet/libalias/alias.c',
    1783                 'sys/netinet/libalias/alias_skinny.c',
    1784                 'sys/netinet/libalias/alias_sctp.c',
    1785         ]
    1786 )
    1787 
    1788 netinet6 = Module('netinet6')
    1789 netinet6.addKernelSpaceHeaderFiles(
    1790         [
    1791                 'sys/netinet6/icmp6.h',
    1792                 'sys/netinet6/in6_gif.h',
    1793                 'sys/netinet6/in6.h',
    1794                 'sys/netinet6/in6_ifattach.h',
    1795                 'sys/netinet6/in6_pcb.h',
    1796                 'sys/netinet6/in6_var.h',
    1797                 'sys/netinet6/ip6_ecn.h',
    1798                 'sys/netinet6/ip6.h',
    1799                 'sys/netinet6/ip6_ipsec.h',
    1800                 'sys/netinet6/ip6_mroute.h',
    1801                 'sys/netinet6/ip6protosw.h',
    1802                 'sys/netinet6/ip6_var.h',
    1803                 'sys/netinet6/mld6.h',
    1804                 'sys/netinet6/mld6_var.h',
    1805                 'sys/netinet6/nd6.h',
    1806                 'sys/netinet6/pim6.h',
    1807                 'sys/netinet6/pim6_var.h',
    1808                 'sys/netinet6/raw_ip6.h',
    1809                 'sys/netinet6/scope6_var.h',
    1810                 'sys/netinet6/sctp6_var.h',
    1811                 'sys/netinet6/send.h',
    1812                 'sys/netinet6/tcp6_var.h',
    1813                 'sys/netinet6/udp6_var.h',
    1814         ]
    1815 )
    1816 netinet6.addKernelSpaceSourceFiles(
    1817         [
    1818                 'sys/net/if_stf.c',
    1819                 'sys/netinet6/dest6.c',
    1820                 'sys/netinet6/frag6.c',
    1821                 'sys/netinet6/icmp6.c',
    1822                 'sys/netinet6/in6.c',
    1823                 'sys/netinet6/in6_cksum.c',
    1824                 'sys/netinet6/in6_gif.c',
    1825                 'sys/netinet6/in6_ifattach.c',
    1826                 'sys/netinet6/in6_mcast.c',
    1827                 'sys/netinet6/in6_pcb.c',
    1828                 'sys/netinet6/in6_proto.c',
    1829                 'sys/netinet6/in6_rmx.c',
    1830                 'sys/netinet6/in6_src.c',
    1831                 'sys/netinet6/ip6_forward.c',
    1832                 'sys/netinet6/ip6_id.c',
    1833                 'sys/netinet6/ip6_input.c',
    1834                 'sys/netinet6/ip6_mroute.c',
    1835                 'sys/netinet6/ip6_output.c',
    1836                 'sys/netinet6/mld6.c',
    1837                 'sys/netinet6/nd6.c',
    1838                 'sys/netinet6/nd6_nbr.c',
    1839                 'sys/netinet6/nd6_rtr.c',
    1840                 'sys/netinet6/raw_ip6.c',
    1841                 'sys/netinet6/route6.c',
    1842                 'sys/netinet6/scope6.c',
    1843                 'sys/netinet6/sctp6_usrreq.c',
    1844                 'sys/netinet6/udp6_usrreq.c',
    1845         ]
    1846 )
    1847 
    1848 netipsec = Module('netipsec')
    1849 netipsec.addKernelSpaceHeaderFiles(
    1850         [
    1851                 'sys/netipsec/ah.h',
    1852                 'sys/netipsec/ah_var.h',
    1853                 'sys/netipsec/esp.h',
    1854                 'sys/netipsec/esp_var.h',
    1855                 'sys/netipsec/ipcomp.h',
    1856                 'sys/netipsec/ipcomp_var.h',
    1857                 'sys/netipsec/ipip_var.h',
    1858                 'sys/netipsec/ipsec6.h',
    1859                 'sys/netipsec/ipsec.h',
    1860                 'sys/netipsec/keydb.h',
    1861                 'sys/netipsec/key_debug.h',
    1862                 'sys/netipsec/key.h',
    1863                 'sys/netipsec/keysock.h',
    1864                 'sys/netipsec/key_var.h',
    1865                 'sys/netipsec/xform.h',
    1866         ]
    1867 )
    1868 netipsec.addKernelSpaceSourceFiles(
    1869         [
    1870                 'sys/netinet/ip_ipsec.c',
    1871                 'sys/netinet6/ip6_ipsec.c',
    1872                 'sys/netipsec/ipsec.c',
    1873                 'sys/netipsec/ipsec_input.c',
    1874                 'sys/netipsec/ipsec_mbuf.c',
    1875                 'sys/netipsec/ipsec_output.c',
    1876                 'sys/netipsec/key.c',
    1877                 'sys/netipsec/key_debug.c',
    1878                 'sys/netipsec/keysock.c',
    1879                 'sys/netipsec/xform_ah.c',
    1880                 'sys/netipsec/xform_esp.c',
    1881                 'sys/netipsec/xform_ipcomp.c',
    1882                 'sys/netipsec/xform_ipip.c',
    1883                 'sys/netipsec/xform_tcp.c',
    1884         ]
    1885 )
    1886 
    1887 net80211 = Module('net80211')
    1888 net80211.addKernelSpaceHeaderFiles(
    1889         [
    1890                 'sys/net80211/ieee80211_action.h',
    1891                 'sys/net80211/ieee80211_adhoc.h',
    1892                 'sys/net80211/ieee80211_ageq.h',
    1893                 'sys/net80211/ieee80211_amrr.h',
    1894                 'sys/net80211/ieee80211_crypto.h',
    1895                 'sys/net80211/ieee80211_dfs.h',
    1896                 'sys/net80211/ieee80211_freebsd.h',
    1897                 'sys/net80211/_ieee80211.h',
    1898                 'sys/net80211/ieee80211.h',
    1899                 'sys/net80211/ieee80211_hostap.h',
    1900                 'sys/net80211/ieee80211_ht.h',
    1901                 'sys/net80211/ieee80211_input.h',
    1902                 'sys/net80211/ieee80211_ioctl.h',
    1903                 'sys/net80211/ieee80211_mesh.h',
    1904                 'sys/net80211/ieee80211_monitor.h',
    1905                 'sys/net80211/ieee80211_node.h',
    1906                 'sys/net80211/ieee80211_phy.h',
    1907                 'sys/net80211/ieee80211_power.h',
    1908                 'sys/net80211/ieee80211_proto.h',
    1909                 'sys/net80211/ieee80211_radiotap.h',
    1910                 'sys/net80211/ieee80211_ratectl.h',
    1911                 'sys/net80211/ieee80211_regdomain.h',
    1912                 'sys/net80211/ieee80211_rssadapt.h',
    1913                 'sys/net80211/ieee80211_scan.h',
    1914                 'sys/net80211/ieee80211_sta.h',
    1915                 'sys/net80211/ieee80211_superg.h',
    1916                 'sys/net80211/ieee80211_tdma.h',
    1917                 'sys/net80211/ieee80211_var.h',
    1918                 'sys/net80211/ieee80211_wds.h',
    1919         ]
    1920 )
    1921 netipsec.addKernelSpaceSourceFiles(
    1922         [
    1923                 'sys/net80211/ieee80211_acl.c',
    1924                 'sys/net80211/ieee80211_action.c',
    1925                 'sys/net80211/ieee80211_adhoc.c',
    1926                 'sys/net80211/ieee80211_ageq.c',
    1927                 'sys/net80211/ieee80211_amrr.c',
    1928                 'sys/net80211/ieee80211.c',
    1929                 'sys/net80211/ieee80211_crypto.c',
    1930                 'sys/net80211/ieee80211_crypto_ccmp.c',
    1931                 'sys/net80211/ieee80211_crypto_none.c',
    1932                 'sys/net80211/ieee80211_crypto_tkip.c',
    1933                 'sys/net80211/ieee80211_crypto_wep.c',
    1934                 'sys/net80211/ieee80211_ddb.c',
    1935                 'sys/net80211/ieee80211_dfs.c',
    1936                 'sys/net80211/ieee80211_freebsd.c',
    1937                 'sys/net80211/ieee80211_hostap.c',
    1938                 'sys/net80211/ieee80211_ht.c',
    1939                 'sys/net80211/ieee80211_hwmp.c',
    1940                 'sys/net80211/ieee80211_input.c',
    1941                 'sys/net80211/ieee80211_ioctl.c',
    1942                 'sys/net80211/ieee80211_mesh.c',
    1943                 'sys/net80211/ieee80211_monitor.c',
    1944                 'sys/net80211/ieee80211_node.c',
    1945                 'sys/net80211/ieee80211_output.c',
    1946                 'sys/net80211/ieee80211_phy.c',
    1947                 'sys/net80211/ieee80211_power.c',
    1948                 'sys/net80211/ieee80211_proto.c',
    1949                 'sys/net80211/ieee80211_radiotap.c',
    1950                 'sys/net80211/ieee80211_ratectl.c',
    1951                 'sys/net80211/ieee80211_ratectl_none.c',
    1952                 'sys/net80211/ieee80211_regdomain.c',
    1953                 'sys/net80211/ieee80211_rssadapt.c',
    1954                 'sys/net80211/ieee80211_scan.c',
    1955                 'sys/net80211/ieee80211_scan_sta.c',
    1956                 'sys/net80211/ieee80211_sta.c',
    1957                 'sys/net80211/ieee80211_superg.c',
    1958                 'sys/net80211/ieee80211_tdma.c',
    1959                 'sys/net80211/ieee80211_wds.c',
    1960                 'sys/net80211/ieee80211_xauth.c',
    1961         ]
    1962 )
    1963 
    1964 opencrypto = Module('opencrypto')
    1965 opencrypto.addKernelSpaceHeaderFiles(
    1966         [
    1967                 'sys/opencrypto/deflate.h',
    1968                 'sys/opencrypto/xform.h',
    1969                 'sys/opencrypto/cryptosoft.h',
    1970                 'sys/opencrypto/rmd160.h',
    1971                 'sys/opencrypto/cryptodev.h',
    1972                 'sys/opencrypto/castsb.h',
    1973                 'sys/opencrypto/skipjack.h',
    1974                 'sys/opencrypto/cast.h',
    1975         ]
    1976 )
    1977 opencrypto.addKernelSpaceSourceFiles(
    1978         [
    1979                 'sys/opencrypto/crypto.c',
    1980                 'sys/opencrypto/deflate.c',
    1981                 'sys/opencrypto/cryptosoft.c',
    1982                 'sys/opencrypto/criov.c',
    1983                 'sys/opencrypto/rmd160.c',
    1984                 'sys/opencrypto/xform.c',
    1985                 'sys/opencrypto/skipjack.c',
    1986                 'sys/opencrypto/cast.c',
    1987         ]
    1988 )
    1989 
    1990 crypto = Module('crypto')
    1991 crypto.addKernelSpaceHeaderFiles(
    1992         [
    1993                 #'crypto/aesni/aesni.h',
    1994                 'sys/crypto/sha1.h',
    1995                 'sys/crypto/sha2/sha2.h',
    1996                 'sys/crypto/rijndael/rijndael.h',
    1997                 'sys/crypto/rijndael/rijndael_local.h',
    1998                 'sys/crypto/rijndael/rijndael-api-fst.h',
    1999                 'sys/crypto/des/des.h',
    2000                 'sys/crypto/des/spr.h',
    2001                 'sys/crypto/des/podd.h',
    2002                 'sys/crypto/des/sk.h',
    2003                 'sys/crypto/des/des_locl.h',
    2004                 'sys/crypto/blowfish/bf_pi.h',
    2005                 'sys/crypto/blowfish/bf_locl.h',
    2006                 'sys/crypto/blowfish/blowfish.h',
    2007                 'sys/crypto/rc4/rc4.h',
    2008                 #'crypto/via/padlock.h',
    2009                 'sys/crypto/camellia/camellia.h',
    2010         ]
    2011 )
    2012 crypto.addKernelSpaceSourceFiles(
    2013         [
    2014                 #'crypto/aesni/aesni.c',
    2015                 #'crypto/aesni/aesni_wrap.c',
    2016                 'sys/crypto/sha1.c',
    2017                 'sys/crypto/sha2/sha2.c',
    2018                 'sys/crypto/rijndael/rijndael-alg-fst.c',
    2019                 'sys/crypto/rijndael/rijndael-api.c',
    2020                 'sys/crypto/rijndael/rijndael-api-fst.c',
    2021                 'sys/crypto/des/des_setkey.c',
    2022                 'sys/crypto/des/des_enc.c',
    2023                 'sys/crypto/des/des_ecb.c',
    2024                 'sys/crypto/blowfish/bf_enc.c',
    2025                 'sys/crypto/blowfish/bf_skey.c',
    2026                 'sys/crypto/blowfish/bf_ecb.c',
    2027                 'sys/crypto/rc4/rc4.c',
    2028                 #'crypto/via/padlock.c',
    2029                 #'crypto/via/padlock_cipher.c',
    2030                 #'crypto/via/padlock_hash.c',
    2031                 'sys/crypto/camellia/camellia-api.c',
    2032                 'sys/crypto/camellia/camellia.c',
    2033         ]
    2034 )
    2035 
    2036 altq = Module('altq')
    2037 altq.addKernelSpaceHeaderFiles(
    2038         [
    2039                 'sys/contrib/altq/altq/altq_rmclass.h',
    2040                 'sys/contrib/altq/altq/altq_cbq.h',
    2041                 'sys/contrib/altq/altq/altq_var.h',
    2042                 'sys/contrib/altq/altq/altqconf.h',
    2043                 'sys/contrib/altq/altq/altq.h',
    2044                 'sys/contrib/altq/altq/altq_hfsc.h',
    2045                 'sys/contrib/altq/altq/altq_red.h',
    2046                 'sys/contrib/altq/altq/altq_classq.h',
    2047                 'sys/contrib/altq/altq/altq_priq.h',
    2048                 'sys/contrib/altq/altq/altq_rmclass_debug.h',
    2049                 'sys/contrib/altq/altq/altq_cdnr.h',
    2050                 'sys/contrib/altq/altq/altq_rio.h',
    2051                 'sys/contrib/altq/altq/if_altq.h',
    2052         ]
    2053 )
    2054 altq.addKernelSpaceSourceFiles(
    2055         [
    2056                 'sys/contrib/altq/altq/altq_rmclass.c',
    2057                 'sys/contrib/altq/altq/altq_rio.c',
    2058                 'sys/contrib/altq/altq/altq_subr.c',
    2059                 'sys/contrib/altq/altq/altq_cdnr.c',
    2060                 'sys/contrib/altq/altq/altq_priq.c',
    2061                 'sys/contrib/altq/altq/altq_cbq.c',
    2062                 'sys/contrib/altq/altq/altq_hfsc.c',
    2063                 'sys/contrib/altq/altq/altq_red.c',
    2064         ]
    2065 )
    2066 
    2067 # contrib/pf Module
    2068 pf = Module('pf')
    2069 pf.addKernelSpaceHeaderFiles(
    2070         [
    2071                 'sys/contrib/pf/net/if_pflog.h',
    2072                 'sys/contrib/pf/net/if_pflow.h',
    2073                 'sys/contrib/pf/net/if_pfsync.h',
    2074                 'sys/contrib/pf/net/pfvar.h',
    2075                 'sys/contrib/pf/net/pf_mtag.h',
    2076         ]
    2077 )
    2078 pf.addKernelSpaceSourceFiles(
    2079         [
    2080                 'sys/contrib/pf/net/if_pflog.c',
    2081                 'sys/contrib/pf/net/if_pfsync.c',
    2082                 'sys/contrib/pf/net/pf.c',
    2083                 'sys/contrib/pf/net/pf_if.c',
    2084                 'sys/contrib/pf/net/pf_ioctl.c',
    2085                 'sys/contrib/pf/net/pf_lb.c',
    2086                 'sys/contrib/pf/net/pf_norm.c',
    2087                 'sys/contrib/pf/net/pf_osfp.c',
    2088                 'sys/contrib/pf/net/pf_ruleset.c',
    2089                 'sys/contrib/pf/net/pf_table.c',
    2090                 'sys/contrib/pf/netinet/in4_cksum.c',
    2091         ]
    2092 )
    2093 
    2094 pci = Module('pci')
    2095 pci.addKernelSpaceSourceFiles(
    2096         [
    2097                 'sys/dev/pci/pci.c',
    2098                 'sys/dev/pci/pci_user.c',
    2099                 'sys/dev/pci/pci_pci.c',
    2100         ]
    2101 )
    2102 pci.addKernelSpaceHeaderFiles(
    2103         [
    2104                 'sys/dev/pci/pcib_private.h',
    2105                 'sys/dev/pci/pci_private.h',
    2106                 'sys/dev/pci/pcireg.h',
    2107                 'sys/dev/pci/pcivar.h',
    2108                 'sys/dev/pci/pcivar.h',
    2109         ]
    2110 )
    2111 pci.addCPUDependentHeaderFiles(
    2112         [
    2113                 'sys/i386/include/legacyvar.h',
    2114         ]
    2115 )
    2116 pci.addTargetSourceCPUDependentHeaderFiles(
    2117         [ 'arm', 'avr', 'bfin', 'h8300', 'lm32', 'm32c', 'm32r', 'm68k', 'mips', 'nios2', 'powerpc', 'sh', 'sparc', 'sparc64', 'v850' ],
    2118         'i386',
    2119         [
    2120                 'sys/i386/include/legacyvar.h',
    2121         ]
    2122 )
    2123 pci.addTargetSourceCPUDependentHeaderFiles(
    2124         [ 'arm', 'avr', 'bfin', 'h8300', 'i386', 'lm32', 'm32c', 'm32r', 'm68k', 'mips', 'nios2', 'powerpc', 'sh', 'sparc', 'sparc64', 'v850' ],
    2125         'x86',
    2126         [
    2127                 'sys/x86/include/pci_cfgreg.h',
    2128         ]
    2129 )
    2130 pci.addCPUDependentSourceFiles(
    2131         'i386',
    2132         [
    2133                 'sys/i386/i386/legacy.c',
    2134         ]
    2135 )
    2136 pci.addTargetSourceCPUDependentSourceFiles(
    2137         [ 'arm', 'avr', 'bfin', 'h8300', 'lm32', 'm32c', 'm32r', 'm68k', 'mips', 'nios2', 'powerpc', 'sh', 'sparc', 'sparc64', 'v850' ],
    2138         'i386',
    2139         [
    2140                 'sys/i386/i386/legacy.c',
    2141         ]
    2142 )
    2143 pci.addTargetSourceCPUDependentSourceFiles(
    2144         [ 'arm', 'avr', 'bfin', 'h8300', 'i386', 'lm32', 'm32c', 'm32r', 'm68k', 'mips', 'nios2', 'powerpc', 'sh', 'sparc', 'sparc64', 'v850' ],
    2145         'x86',
    2146         [
    2147                 'sys/x86/pci/pci_bus.c',
    2148         ]
    2149 )
    2150 
    2151 userSpace = Module('userSpace')
    2152 userSpace.addUserSpaceHeaderFiles(
    2153         [
    2154                 'include/arpa/ftp.h',
    2155                 'include/arpa/inet.h',
    2156                 'include/arpa/nameser_compat.h',
    2157                 'include/arpa/nameser.h',
    2158                 'include/db.h',
    2159                 'include/err.h',
    2160                 'include/ifaddrs.h',
    2161                 'include/mpool.h',
    2162                 'include/netconfig.h',
    2163                 'include/netdb.h',
    2164                 'include/nlist.h',
    2165                 'include/nsswitch.h',
    2166                 'include/resolv.h',
    2167                 'include/res_update.h',
    2168                 'include/rpc/auth_des.h',
    2169                 'include/rpc/auth.h',
    2170                 'include/rpc/auth_unix.h',
    2171                 'include/rpc/clnt.h',
    2172                 'include/rpc/clnt_soc.h',
    2173                 'include/rpc/clnt_stat.h',
    2174                 'include/rpc/pmap_clnt.h',
    2175                 'include/rpc/pmap_prot.h',
    2176                 'include/rpc/rpcb_clnt.h',
    2177                 'include/rpc/rpcent.h',
    2178                 'include/rpc/rpc.h',
    2179                 'include/rpc/rpc_msg.h',
    2180                 'include/rpc/svc_auth.h',
    2181                 'include/rpc/svc.h',
    2182                 'include/rpcsvc/nis_db.h',
    2183                 'include/rpcsvc/nislib.h',
    2184                 'include/rpcsvc/nis_tags.h',
    2185                 'include/rpc/svc_soc.h',
    2186                 'include/rpcsvc/ypclnt.h',
    2187                 'include/rpcsvc/yp_prot.h',
    2188                 'include/rpc/xdr.h',
    2189                 'include/sysexits.h',
    2190                 'lib/libc/db/btree/btree.h',
    2191                 'lib/libc/db/btree/extern.h',
    2192                 'lib/libc/db/recno/extern.h',
    2193                 'lib/libc/db/recno/recno.h',
    2194                 'lib/libc/include/isc/eventlib.h',
    2195                 'lib/libc/include/isc/list.h',
    2196                 'lib/libc/include/isc/platform.h',
    2197                 'lib/libc/include/libc_private.h',
    2198                 'lib/libc/include/namespace.h',
    2199                 'lib/libc/include/nss_tls.h',
    2200                 'lib/libc/include/port_after.h',
    2201                 'lib/libc/include/port_before.h',
    2202                 'lib/libc/include/reentrant.h',
    2203                 'lib/libc/include/resolv_mt.h',
    2204                 'lib/libc/include/spinlock.h',
    2205                 'lib/libc/include/un-namespace.h',
    2206                 'lib/libc/isc/eventlib_p.h',
    2207                 'lib/libc/net/netdb_private.h',
    2208                 'lib/libc/net/nss_backends.h',
    2209                 'lib/libc/net/res_config.h',
    2210                 'lib/libc/resolv/res_debug.h',
    2211                 'lib/libc/resolv/res_private.h',
    2212                 'lib/libc/stdio/local.h',
    2213                 'lib/libipsec/ipsec_strerror.h',
    2214                 'lib/libipsec/libpfkey.h',
    2215                 'lib/libkvm/kvm.h',
    2216                 'lib/libmemstat/memstat.h',
    2217                 'lib/libmemstat/memstat_internal.h',
    2218                 'lib/libutil/libutil.h',
    2219                 'sbin/dhclient/dhcpd.h',
    2220                 'sbin/dhclient/dhcp.h',
    2221                 'sbin/dhclient/dhctoken.h',
    2222                 'sbin/dhclient/privsep.h',
    2223                 'sbin/dhclient/tree.h',
    2224                 'sbin/ifconfig/ifconfig.h',
    2225                 'sbin/ifconfig/regdomain.h',
    2226                 'usr.bin/netstat/netstat.h',
    2227         ]
    2228 )
    2229 
    2230 class RPCGENMakefileFragmentComposer(MakefileFragmentComposer):
    2231         def compose(self, path):
    2232                 headerPath = path[:-2] + '.h'
    2233                 return headerPath + ': ' + path + '\n' \
    2234                         '\t     rm -f $@\n' \
    2235                         '\t     rpcgen -h -o $@ $<\n'
    2236 
    2237 userSpace.addFile(File('include/rpc/rpcb_prot.x', FreeBSDPathComposer(), Converter(), Converter(), RPCGENMakefileFragmentComposer()))
    2238 
    2239 class RouteKeywordsMakefileFragmentComposer(MakefileFragmentComposer):
    2240         def compose(self, path):
    2241                 headerPath = path + '.h'
    2242                 tmpPath = path + '.tmp'
    2243                 return headerPath + ': ' + path + '\n' \
    2244                         '\tsed -e \'/^#/d\' -e \'/^$$/d\' $< > ' + tmpPath + '\n' \
    2245                         '\tLC_ALL=C tr \'a-z\' \'A-Z\' < ' + tmpPath + ' | paste ' + tmpPath + ' - | \\\n' \
    2246                         '\tawk \'{ if (NF > 1) printf "#define\\tK_%s\\t%d\\n\\t{\\"%s\\", K_%s},\\n", $$2, NR, $$1, $$2 }\' > $@\n' \
    2247                         '\trm -f ' + tmpPath + '\n'
    2248 
    2249 userSpace.addFile(File('sbin/route/keywords', FreeBSDPathComposer(), Converter(), Converter(), RouteKeywordsMakefileFragmentComposer()))
    2250 
    2251 class LexMakefileFragmentComposer(MakefileFragmentComposer):
    2252         def __init__(self, sym, dep):
    2253                 self.sym = sym
    2254                 self.dep = dep
    2255 
    2256         def compose(self, path):
    2257                 src = path[:-2] + '.c'
    2258                 dep = path[:path.rfind('/')] + '/' + self.dep
    2259                 return 'LIB_C_FILES += ' + src + '\n' \
    2260                         + src + ': ' + path + ' ' + dep + '\n' \
    2261                         '\t${LEX} -P ' + self.sym + ' -t $< | sed -e \'/YY_BUF_SIZE/s/16384/1024/\' > $@\n'
    2262 
    2263 class YaccMakefileFragmentComposer(MakefileFragmentComposer):
    2264         def __init__(self, sym, header):
    2265                 self.sym = sym
    2266                 self.header = header
    2267 
    2268         def compose(self, path):
    2269                 src = path[:-2] + '.c'
    2270                 hdr = path[:path.rfind('/')] + '/' + self.header
    2271                 return 'LIB_C_FILES += ' + src + '\n' \
    2272                         + src + ': ' + path + '\n' \
    2273                         '\tyacc -b ' + self.sym + ' -d -p ' + self.sym + ' $<\n' \
    2274                         '\tsed -e ''/YY_BUF_SIZE/s/16384/1024/'' < ' + self.sym + '.tab.c > $@\n' \
    2275                         '\trm -f ' + self.sym + '.tab.c\n' \
    2276                         '\tmv ' + self.sym + '.tab.h ' + hdr + '\n'
    2277 
    2278 rtems.addFile(File('lib/libc/net/nslexer.l', FreeBSDPathComposer(), Converter(), Converter(), LexMakefileFragmentComposer('_nsyy', 'nsparser.c')))
    2279 rtems.addFile(File('lib/libc/net/nsparser.y', FreeBSDPathComposer(), Converter(), Converter(), YaccMakefileFragmentComposer('_nsyy', 'nsparser.h')))
    2280 rtems.addFile(File('lib/libipsec/policy_token.l', FreeBSDPathComposer(), Converter(), Converter(), LexMakefileFragmentComposer('__libipsecyy', 'policy_parse.c')))
    2281 rtems.addFile(File('lib/libipsec/policy_parse.y', FreeBSDPathComposer(), Converter(), Converter(), YaccMakefileFragmentComposer('__libipsecyy', 'y.tab.h')))
    2282 
    2283 userSpace.addUserSpaceSourceFiles(
    2284         [
    2285                 'lib/libc/db/btree/bt_close.c',
    2286                 'lib/libc/db/btree/bt_conv.c',
    2287                 'lib/libc/db/btree/bt_debug.c',
    2288                 'lib/libc/db/btree/bt_delete.c',
    2289                 'lib/libc/db/btree/bt_get.c',
    2290                 'lib/libc/db/btree/bt_open.c',
    2291                 'lib/libc/db/btree/bt_overflow.c',
    2292                 'lib/libc/db/btree/bt_page.c',
    2293                 'lib/libc/db/btree/bt_put.c',
    2294                 'lib/libc/db/btree/bt_search.c',
    2295                 'lib/libc/db/btree/bt_seq.c',
    2296                 'lib/libc/db/btree/bt_split.c',
    2297                 'lib/libc/db/btree/bt_utils.c',
    2298                 'lib/libc/db/db/db.c',
    2299                 'lib/libc/db/mpool/mpool.c',
    2300                 'lib/libc/db/mpool/mpool-compat.c',
    2301                 'lib/libc/db/recno/rec_close.c',
    2302                 'lib/libc/db/recno/rec_delete.c',
    2303                 'lib/libc/db/recno/rec_get.c',
    2304                 'lib/libc/db/recno/rec_open.c',
    2305                 'lib/libc/db/recno/rec_put.c',
    2306                 'lib/libc/db/recno/rec_search.c',
    2307                 'lib/libc/db/recno/rec_seq.c',
    2308                 'lib/libc/db/recno/rec_utils.c',
    2309         ],
    2310         '-D__DBINTERFACE_PRIVATE -DINET6'
    2311 )
    2312 userSpace.addUserSpaceSourceFiles(
    2313         [
    2314                 'bin/hostname/hostname.c',
    2315                 'lib/libc/gen/err.c',
    2316                 'lib/libc/gen/feature_present.c',
    2317                 'lib/libc/gen/gethostname.c',
    2318                 'lib/libc/gen/sethostname.c',
    2319                 'lib/libc/inet/inet_addr.c',
    2320                 'lib/libc/inet/inet_cidr_ntop.c',
    2321                 'lib/libc/inet/inet_cidr_pton.c',
    2322                 'lib/libc/inet/inet_lnaof.c',
    2323                 'lib/libc/inet/inet_makeaddr.c',
    2324                 'lib/libc/inet/inet_neta.c',
    2325                 'lib/libc/inet/inet_net_ntop.c',
    2326                 'lib/libc/inet/inet_netof.c',
    2327                 'lib/libc/inet/inet_net_pton.c',
    2328                 'lib/libc/inet/inet_network.c',
    2329                 'lib/libc/inet/inet_ntoa.c',
    2330                 'lib/libc/inet/inet_ntop.c',
    2331                 'lib/libc/inet/inet_pton.c',
    2332                 'lib/libc/inet/nsap_addr.c',
    2333                 'lib/libc/isc/ev_streams.c',
    2334                 'lib/libc/isc/ev_timers.c',
    2335                 'lib/libc/nameser/ns_name.c',
    2336                 'lib/libc/nameser/ns_netint.c',
    2337                 'lib/libc/nameser/ns_parse.c',
    2338                 'lib/libc/nameser/ns_print.c',
    2339                 'lib/libc/nameser/ns_samedomain.c',
    2340                 'lib/libc/nameser/ns_ttl.c',
    2341                 'lib/libc/net/base64.c',
    2342                 'lib/libc/net/ether_addr.c',
    2343                 'lib/libc/net/gai_strerror.c',
    2344                 'lib/libc/net/getaddrinfo.c',
    2345                 'lib/libc/net/gethostbydns.c',
    2346                 'lib/libc/net/gethostbyht.c',
    2347                 'lib/libc/net/gethostbynis.c',
    2348                 'lib/libc/net/gethostnamadr.c',
    2349                 'lib/libc/net/getifaddrs.c',
    2350                 'lib/libc/net/getifmaddrs.c',
    2351                 'lib/libc/net/getnameinfo.c',
    2352                 'lib/libc/net/getnetbydns.c',
    2353                 'lib/libc/net/getnetbyht.c',
    2354                 'lib/libc/net/getnetbynis.c',
    2355                 'lib/libc/net/getnetnamadr.c',
    2356                 'lib/libc/net/getproto.c',
    2357                 'lib/libc/net/getprotoent.c',
    2358                 'lib/libc/net/getprotoname.c',
    2359                 'lib/libc/net/getservent.c',
    2360                 'lib/libc/net/if_indextoname.c',
    2361                 'lib/libc/net/if_nameindex.c',
    2362                 'lib/libc/net/if_nametoindex.c',
    2363                 'lib/libc/net/ip6opt.c',
    2364                 'lib/libc/net/linkaddr.c',
    2365                 'lib/libc/net/map_v4v6.c',
    2366                 'lib/libc/net/name6.c',
    2367                 'lib/libc/net/nsdispatch.c',
    2368                 'lib/libc/net/rcmd.c',
    2369                 'lib/libc/net/recv.c',
    2370                 'lib/libc/net/rthdr.c',
    2371                 'lib/libc/net/send.c',
    2372                 'lib/libc/posix1e/mac.c',
    2373                 'lib/libc/resolv/h_errno.c',
    2374                 'lib/libc/resolv/herror.c',
    2375                 'lib/libc/resolv/mtctxres.c',
    2376                 'lib/libc/resolv/res_comp.c',
    2377                 'lib/libc/resolv/res_data.c',
    2378                 'lib/libc/resolv/res_debug.c',
    2379                 'lib/libc/resolv/res_findzonecut.c',
    2380                 'lib/libc/resolv/res_init.c',
    2381                 'lib/libc/resolv/res_mkquery.c',
    2382                 'lib/libc/resolv/res_mkupdate.c',
    2383                 'lib/libc/resolv/res_query.c',
    2384                 'lib/libc/resolv/res_send.c',
    2385                 'lib/libc/resolv/res_state.c',
    2386                 'lib/libc/resolv/res_update.c',
    2387                 'lib/libc/stdio/fgetln.c',
    2388                 'lib/libc/stdlib/strtonum.c',
    2389                 'lib/libc/string/strsep.c',
    2390                 'lib/libipsec/ipsec_dump_policy.c',
    2391                 'lib/libipsec/ipsec_get_policylen.c',
    2392                 'lib/libipsec/ipsec_strerror.c',
    2393                 'lib/libipsec/pfkey.c',
    2394                 'lib/libipsec/pfkey_dump.c',
    2395                 'lib/libmemstat/memstat_all.c',
    2396                 'lib/libmemstat/memstat.c',
    2397                 'lib/libmemstat/memstat_malloc.c',
    2398                 'lib/libmemstat/memstat_uma.c',
    2399                 'lib/libutil/expand_number.c',
    2400                 'lib/libutil/humanize_number.c',
    2401                 'lib/libutil/trimdomain.c',
    2402                 'sbin/dhclient/alloc.c',
    2403                 'sbin/dhclient/bpf.c',
    2404                 'sbin/dhclient/clparse.c',
    2405                 'sbin/dhclient/conflex.c',
    2406                 'sbin/dhclient/convert.c',
    2407                 'sbin/dhclient/dhclient.c',
    2408                 'sbin/dhclient/dispatch.c',
    2409                 'sbin/dhclient/errwarn.c',
    2410                 'sbin/dhclient/hash.c',
    2411                 'sbin/dhclient/inet.c',
    2412                 'sbin/dhclient/options.c',
    2413                 'sbin/dhclient/packet.c',
    2414                 'sbin/dhclient/parse.c',
    2415                 'sbin/dhclient/privsep.c',
    2416                 'sbin/dhclient/tables.c',
    2417                 'sbin/dhclient/tree.c',
    2418                 'sbin/ifconfig/af_atalk.c',
    2419                 'sbin/ifconfig/af_inet6.c',
    2420                 'sbin/ifconfig/af_inet.c',
    2421                 'sbin/ifconfig/af_link.c',
    2422                 'sbin/ifconfig/af_nd6.c',
    2423                 'sbin/ifconfig/ifbridge.c',
    2424                 'sbin/ifconfig/ifcarp.c',
    2425                 'sbin/ifconfig/ifclone.c',
    2426                 'sbin/ifconfig/ifconfig.c',
    2427                 'sbin/ifconfig/ifgif.c',
    2428                 'sbin/ifconfig/ifgre.c',
    2429                 'sbin/ifconfig/ifgroup.c',
    2430                 'sbin/ifconfig/iflagg.c',
    2431                 'sbin/ifconfig/ifmac.c',
    2432                 'sbin/ifconfig/ifmedia.c',
    2433                 'sbin/ifconfig/ifpfsync.c',
    2434                 'sbin/ifconfig/ifvlan.c',
    2435                 'sbin/ping6/ping6.c',
    2436                 'sbin/ping/ping.c',
    2437                 'sbin/route/route.c',
    2438                 'usr.bin/netstat/atalk.c',
    2439                 'usr.bin/netstat/bpf.c',
    2440                 'usr.bin/netstat/if.c',
    2441                 'usr.bin/netstat/inet6.c',
    2442                 'usr.bin/netstat/inet.c',
    2443                 'usr.bin/netstat/ipsec.c',
    2444                 'usr.bin/netstat/main.c',
    2445                 'usr.bin/netstat/mbuf.c',
    2446                 'usr.bin/netstat/mroute6.c',
    2447                 'usr.bin/netstat/mroute.c',
    2448                 'usr.bin/netstat/route.c',
    2449                 'usr.bin/netstat/pfkey.c',
    2450                 'usr.bin/netstat/sctp.c',
    2451                 'usr.bin/netstat/unix.c',
    2452         ],
    2453         '-DINET6'
    2454 )
    2455 
    2456 # in_chksum Module
    2457 in_cksum = Module('in_cksum')
    2458 in_cksum.addRTEMSHeaderFiles(
    2459         [
    2460         ]
    2461 )
    2462 in_cksum.addCPUDependentHeaderFiles(
    2463         [
    2464                 'sys/i386/include/in_cksum.h',
    2465                 'sys/mips/include/in_cksum.h',
    2466                 'sys/powerpc/include/in_cksum.h',
    2467                 'sys/sparc64/include/in_cksum.h',
    2468         ]
    2469 )
    2470 in_cksum.addTargetSourceCPUDependentHeaderFiles(
    2471         [ 'arm', 'avr', 'bfin', 'h8300', 'lm32', 'm32c', 'm32r', 'm68k', 'nios2', 'sh', 'sparc', 'v850' ],
    2472         'mips',
    2473         [
    2474                 'sys/mips/include/in_cksum.h',
    2475         ]
    2476 )
    2477 in_cksum.addTargetSourceCPUDependentSourceFiles(
    2478         [ 'arm', 'avr', 'bfin', 'h8300', 'lm32', 'm32c', 'm32r', 'm68k', 'nios2', 'sh', 'sparc', 'v850' ],
    2479         'mips',
    2480         [
    2481                 'sys/mips/mips/in_cksum.c',
    2482         ]
    2483 )
    2484 in_cksum.addCPUDependentSourceFiles(
    2485         'i386',
    2486         [
    2487                 'sys/i386/i386/in_cksum.c',
    2488         ]
    2489 )
    2490 in_cksum.addCPUDependentSourceFiles(
    2491         'mips',
    2492         [
    2493                 'sys/mips/mips/in_cksum.c',
    2494         ]
    2495 )
    2496 in_cksum.addCPUDependentSourceFiles(
    2497         'powerpc',
    2498         [
    2499                 'sys/powerpc/powerpc/in_cksum.c',
    2500         ]
    2501 )
    2502 in_cksum.addCPUDependentSourceFiles(
    2503         'sparc',
    2504         [
    2505                 'sys/mips/mips/in_cksum.c',
    2506         ]
    2507 )
    2508 in_cksum.addCPUDependentSourceFiles(
    2509         'sparc64',
    2510         [
    2511                 'sys/sparc64/sparc64/in_cksum.c',
    2512         ]
    2513 )
    2514 
    2515 tests = Module('tests')
    2516 tests.addTest('foobarclient', ['test_main'], runTest = False, netTest = True)
    2517 tests.addTest('foobarserver', ['test_main'], runTest = False, netTest = True)
    2518 tests.addTest('dhcpcd01', ['test_main'], runTest = False, netTest = True)
    2519 tests.addTest('dhcpcd02', ['test_main'], runTest = False, netTest = True)
    2520 tests.addTest('arphole', ['test_main'], runTest = False, netTest = True)
    2521 tests.addTest('telnetd01', ['test_main'], runTest = False, netTest = True)
    2522 tests.addTest('unix01', ['test_main'])
    2523 tests.addTest('ftpd01', ['test_main'], netTest = True)
    2524 tests.addTest('ping01', ['test_main'], netTest = True)
    2525 tests.addTest('selectpollkqueue01', ['test_main'])
    2526 tests.addTest('rwlock01', ['test_main'])
    2527 tests.addTest('sleep01', ['test_main'])
    2528 tests.addTest('syscalls01', ['test_main'])
    2529 tests.addTest('commands01', ['test_main'])
    2530 tests.addTest('usb01', ['init', 'test-file-system'], False)
    2531 tests.addTest('loopback01', ['test_main'])
    2532 tests.addTest('netshell01', ['test_main', 'shellconfig'], False)
    2533 tests.addTest('swi01', ['init', 'swi_test'])
    2534 tests.addTest('timeout01', ['init', 'timeout_test'])
    2535 tests.addTest('init01', ['test_main'])
    2536 tests.addTest('thread01', ['test_main'])
    2537 tests.addTest('mutex01', ['test_main'])
    2538 tests.addTest('condvar01', ['test_main'])
    2539 tests.addTest('ppp01', ['test_main'], runTest = False)
    2540 tests.addTest('zerocopy01', ['test_main'], runTest = False, netTest = True)
    2541 tests.addTest('smp01', ['test_main'])
    2542 tests.addTest('media01', ['test_main'], runTest = False)
    2543 tests.addTest('vlan01', ['test_main'], netTest = True)
    2544 tests.addTest('lagg01', ['test_main'], netTest = True)
    2545 
    2546 dhcpcd = Module('dhcpcd')
    2547 dhcpcd.addSourceFiles(
    2548         [
    2549                 'dhcpcd/arp.c',
    2550                 'dhcpcd/auth.c',
    2551                 'dhcpcd/bpf.c',
    2552                 'dhcpcd/common.c',
    2553                 'dhcpcd/dhcp6.c',
    2554                 'dhcpcd/dhcp.c',
    2555                 'dhcpcd/dhcpcd.c',
    2556                 'dhcpcd/dhcpcd-embedded.c',
    2557                 'dhcpcd/dhcp-common.c',
    2558                 'dhcpcd/duid.c',
    2559                 'dhcpcd/eloop.c',
    2560                 'dhcpcd/if-bsd.c',
    2561                 'dhcpcd/if-options.c',
    2562                 'dhcpcd/if-pref.c',
    2563                 'dhcpcd/ipv4.c',
    2564                 'dhcpcd/ipv4ll.c',
    2565                 'dhcpcd/ipv6.c',
    2566                 'dhcpcd/ipv6nd.c',
    2567                 'dhcpcd/net.c',
    2568                 'dhcpcd/platform-bsd.c',
    2569                 'dhcpcd/compat/pselect.c',
    2570                 'dhcpcd/crypt/hmac_md5.c',
    2571         ],
    2572         '-D__FreeBSD__ -DTHERE_IS_NO_FORK -DMASTER_ONLY -DINET -DINET6'
    2573 )
    2574 dhcpcd.addRTEMSSourceFiles(
    2575         [
    2576                 'rtems/rtems-bsd-shell-dhcpcd.c',
    2577         ]
    2578 )
    2579 
    2580 mdnsresponder = Module('mdnsresponder')
    2581 mdnsresponder.addSourceFiles(
    2582         [
    2583                 'mDNSResponder/mDNSCore/anonymous.c',
    2584                 'mDNSResponder/mDNSCore/CryptoAlg.c',
    2585                 'mDNSResponder/mDNSCore/DNSCommon.c',
    2586                 'mDNSResponder/mDNSCore/DNSDigest.c',
    2587                 'mDNSResponder/mDNSCore/mDNS.c',
    2588                 'mDNSResponder/mDNSCore/uDNS.c',
    2589                 'mDNSResponder/mDNSShared/dnssd_clientshim.c',
    2590                 'mDNSResponder/mDNSShared/mDNSDebug.c',
    2591                 'mDNSResponder/mDNSShared/PlatformCommon.c',
    2592                 'mDNSResponder/mDNSShared/GenLinkedList.c',
    2593                 'mDNSResponder/mDNSPosix/mDNSPosix.c',
    2594                 'mDNSResponder/mDNSPosix/mDNSUNP.c',
    2595         ]
    2596 )
    2597 
    2598 mghttpd = Module('mghttpd')
    2599 mghttpd.addSourceFiles(
    2600         [
    2601                 'rtemsbsd/mghttpd/mongoose.c',
    2602         ],
    2603         '-DNO_SSL -DNO_POPEN -DNO_CGI -DUSE_WEBSOCKET'
    2604 )
    2605 
    2606 # Register all the Module instances with the Module Manager
    2607 mm.addModule(rtems)
    2608 mm.addModule(base)
    2609 mm.addModule(mmc)
    2610 mm.addModule(net)
    2611 mm.addModule(netinet)
    2612 mm.addModule(netinet6)
    2613 #mm.addModule(netipsec)
    2614 mm.addModule(net80211)
    2615 mm.addModule(opencrypto)
    2616 mm.addModule(crypto)
    2617 mm.addModule(altq)
    2618 mm.addModule(pf)
    2619 mm.addModule(devNet)
    2620 
    2621 mm.addModule(devUsb)
    2622 mm.addModule(devUsbQuirk)
    2623 mm.addModule(devUsbController)
    2624 
    2625 mm.addModule(cam)
    2626 mm.addModule(devUsbStorage)
    2627 #mm.addModule(devUsbNet)
    2628 
    2629 # Add PCI
    2630 mm.addModule(pci)
    2631 
    2632 # Add NIC devices
    2633 mm.addModule(devNic)
    2634 mm.addModule(devNic_re)
    2635 mm.addModule(devNic_fxp)
    2636 mm.addModule(devNic_e1000)
    2637 mm.addModule(devNic_dc)
    2638 mm.addModule(devNic_smc)
    2639 mm.addModule(devNic_broadcomm)
    2640 # TBD Requires ISA and PCCard Support to be pulled in.
    2641 # mm.addModule(devNic_cs)
    2642 
    2643 # Add in_chksum
    2644 mm.addModule(in_cksum)
    2645 
    2646 mm.addModule(userSpace)
    2647 
    2648 mm.addModule(tests)
    2649 mm.addModule(dhcpcd)
    2650 mm.addModule(mghttpd)
    2651 mm.addModule(mdnsresponder)
    2652 
    2653 # XXX TODO Check that no file is also listed in empty
    2654 # XXX TODO Check that no file in in two modules
     146libbsd.sources(makefile_generator)
    2655147
    2656148# Perform the actual file manipulation
    2657149if isForward:
    2658         if not isOnlyMakefile:
    2659                 mm.copyFromFreeBSDToRTEMS()
    2660         mm.createMakefile()
     150    if not isOnlyMakefile:
     151        makefile_generator.copyFromFreeBSDToRTEMS()
     152    makefile_generator.generate()
    2661153else:
    2662         mm.copyFromRTEMSToFreeBSD()
     154    makefile_generator.copyFromRTEMSToFreeBSD()
    2663155
    2664156# Print a summary if changing files
    2665 if isDiffMode == False:
    2666   if filesProcessed == 1:
    2667     print str(filesProcessed) + " file was changed."
    2668   else:
    2669     print str(filesProcessed) + " files were changed."
     157if builder.isDiffMode == False:
     158    print '%d file(s) were changed.' % (builder.filesProcessed)
Note: See TracChangeset for help on using the changeset viewer.