1#!/usr/bin/env python3 2#/* 3# * FreeRTOS Kernel V11.0.1 4# * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. 5# * 6# * SPDX-License-Identifier: MIT 7# * 8# * Permission is hereby granted, free of charge, to any person obtaining a copy of 9# * this software and associated documentation files (the "Software"), to deal in 10# * the Software without restriction, including without limitation the rights to 11# * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 12# * the Software, and to permit persons to whom the Software is furnished to do so, 13# * subject to the following conditions: 14# * 15# * The above copyright notice and this permission notice shall be included in all 16# * copies or substantial portions of the Software. 17# * 18# * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19# * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 20# * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 21# * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 22# * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 23# * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24# * 25# * https://www.FreeRTOS.org 26# * https://github.com/FreeRTOS 27# * 28# */ 29 30import os 31from common.header_checker import HeaderChecker 32 33#-------------------------------------------------------------------------------------------------- 34# CONFIG 35#-------------------------------------------------------------------------------------------------- 36KERNEL_IGNORED_FILES = [ 37 'FreeRTOS-openocd.c', 38 'Makefile', 39 '.DS_Store', 40 'cspell.config.yaml' 41] 42 43KERNEL_IGNORED_EXTENSIONS = [ 44 '.yml', 45 '.css', 46 '.idx', 47 '.md', 48 '.url', 49 '.sty', 50 '.0-rc2', 51 '.s82', 52 '.js', 53 '.out', 54 '.pack', 55 '.2', 56 '.1-kernel-only', 57 '.0-kernel-only', 58 '.0-rc1', 59 '.readme', 60 '.tex', 61 '.png', 62 '.bat', 63 '.sh', 64 '.txt', 65 '.cmake', 66 '.config' 67] 68 69KERNEL_ASM_EXTENSIONS = [ 70 '.s', 71 '.S', 72 '.src', 73 '.inc', 74 '.s26', 75 '.s43', 76 '.s79', 77 '.s85', 78 '.s87', 79 '.s90', 80 '.asm', 81 '.h' 82] 83 84KERNEL_PY_EXTENSIONS = [ 85 '.py' 86] 87 88KERNEL_IGNORED_PATTERNS = [ 89 r'.*\.git.*', 90 r'.*portable/IAR/AtmelSAM7S64/.*AT91SAM7.*', 91 r'.*portable/GCC/ARM7_AT91SAM7S/.*', 92 r'.*portable/MPLAB/PIC18F/stdio.h', 93 r'.*portable/ThirdParty/xClang/XCOREAI/*', 94 r'.*IAR/ARM_C*', 95 r'.*IAR/78K0R/*', 96 r'.*CCS/MSP430X/*', 97 r'.*portable/template/*', 98 r'.*template_configuration/*' 99] 100 101KERNEL_THIRD_PARTY_PATTERNS = [ 102 r'.*portable/ThirdParty/GCC/Posix/port*', 103 r'.*portable/ThirdParty/*', 104 r'.*portable/IAR/AVR32_UC3/.*', 105 r'.*portable/GCC/AVR32_UC3/.*', 106] 107 108KERNEL_HEADER = [ 109 '/*\n', 110 ' * FreeRTOS Kernel V11.0.1\n', 111 ' * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n', 112 ' *\n', 113 ' * SPDX-License-Identifier: MIT\n', 114 ' *\n', 115 ' * Permission is hereby granted, free of charge, to any person obtaining a copy of\n', 116 ' * this software and associated documentation files (the "Software"), to deal in\n', 117 ' * the Software without restriction, including without limitation the rights to\n', 118 ' * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n', 119 ' * the Software, and to permit persons to whom the Software is furnished to do so,\n', 120 ' * subject to the following conditions:\n', 121 ' *\n', 122 ' * The above copyright notice and this permission notice shall be included in all\n', 123 ' * copies or substantial portions of the Software.\n', 124 ' *\n', 125 ' * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n', 126 ' * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n', 127 ' * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n', 128 ' * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n', 129 ' * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n', 130 ' * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n', 131 ' *\n', 132 ' * https://www.FreeRTOS.org\n', 133 ' * https://github.com/FreeRTOS\n', 134 ' *\n', 135 ' */\n', 136] 137 138def main(): 139 parser = HeaderChecker.configArgParser() 140 args = parser.parse_args() 141 142 # Configure the checks then run 143 checker = HeaderChecker(KERNEL_HEADER, 144 ignored_files=KERNEL_IGNORED_FILES, 145 ignored_ext=KERNEL_IGNORED_EXTENSIONS, 146 ignored_patterns=KERNEL_IGNORED_PATTERNS, 147 third_party_patterns=KERNEL_THIRD_PARTY_PATTERNS, 148 py_ext=KERNEL_PY_EXTENSIONS, 149 asm_ext=KERNEL_ASM_EXTENSIONS) 150 checker.ignoreFile(os.path.split(__file__)[-1]) 151 152 rc = checker.processArgs(args) 153 if rc: 154 checker.showHelp(__file__) 155 156 return rc 157 158if __name__ == '__main__': 159 exit(main()) 160