Re: How to generate symbols list on GNU Arm Embedded Toolchain
Marco Pastorelli <[email protected]>
| Newsgroups | gmane.comp.programming.tools.scons.user |
|---|---|
| Message-ID | <CAFRxoJn108LzePEvN2e9yO8dskmA9jyJUB-e2cfVFjFD6FNfYw@mail.gmail.com> |
Hi Bill, I'm using MCUXpresso, it's an Eclipse-based IDE provided by NXP Thanks! Marco On Fri, 31 Jul 2020 at 18:35, Bill Deegan <[email protected]> wrote: > Which IDE are you using? > > On Fri, Jul 31, 2020 at 7:52 AM Marco Pastorelli <[email protected]> > wrote: > >> Hi all! >> >> I’m using SCons to build an Arm Cortex-M7 project based on GNU Arm >> Embedded Toolchain. >> Other than compiling the project, I’d like to generate the list of >> symbols to import from my IDE to get an accurate code highlighting. >> I wrote some code to generate the list of header files included in the >> projects, then I’m trying to get the symbol form every header file. >> The main issue I’m facing is that the include hierarchy is not preserved, >> so for example I got errors from freertos because FreeRTOS.h must appear in >> source files before include task.h. >> >> Does anybody know how to fix this problem or a different method to >> generate the symbols list? >> >> Thanks! Below a snippet of my code >> Marco >> >> >> def generate_include_list(env, target, source): >> """create a file to store include paths in GNU style, to be loaded >> with @""" >> paths = [] >> for p in env['CPPPATH']: >> path = Path(p) >> try: >> path.is_dir() >> paths.append(str(path)) >> except OSError: >> pass >> with open('include.list', 'w') as fileout: >> for path in paths: >> fileout.write(' -I ' + path.replace('\\', '/')) >> >> >> def cleanup_header_list(env, target, source): >> """get rid of the toolchain comments, we only need a list of real >> file paths""" >> with open('tmp_header_file.list', 'r') as filein: >> lines = [] >> for line in filein: >> path = Path(line.strip()) >> try: >> path.is_file() >> lines.append(str(path)) >> except OSError: >> pass >> lines.reverse() >> with open('header_file.list', 'w') as fileout: >> for line in reversed(lines): >> fileout.write(line.replace('\\', '/') + '\n') >> >> >> # get the list of the header files (except toolchain header files) >> # in case also the toolchain header files are needed, use the option -M >> env.Command( >> target='tmp_header_file.list', >> source='', >> action=[generate_include_list, '$CC -H -MM src/main.c @include.list >> $CCFLAGS > $TARGET', cleanup_header_list] >> ) >> >> >> # from all the header files get the symbols >> env.Command( >> target='symbol.list', >> source='', >> action=['type header_file.list', '$CC -E -dM @include.list $CCFLAGS >> @header_file.list > $TARGET'] >> ) >> _______________________________________________ >> Scons-users mailing list >> [email protected] >> https://pairlist4.pair.net/mailman/listinfo/scons-users >> > _______________________________________________ > Scons-users mailing list > [email protected] > https://pairlist4.pair.net/mailman/listinfo/scons-users > _______________________________________________ Scons-users mailing list [email protected] https://pairlist4.pair.net/mailman/listinfo/scons-users