source: rtems-libbsd/freebsd-to-rtems.py @ 865a290

4.1155-freebsd-126-freebsd-12freebsd-9.3
Last change on this file since 865a290 was 865a290, checked in by Joel Sherrill <joel.sherrill@…>, on 07/14/12 at 16:20:42

Makefile: Correct dependencies for parallelism

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