| Notes on Makefile |
| ------------------ |
| March 12, 2014 |
| |
| To avoid issues with Visual Studio the generated lexer and parser code are |
| checked into revision control. |
| |
| This allows a straight forward conventional build process with Visual Studio |
| on Windows, but means on linux-like systems the Makefile behaviour is somewhat |
| non-standard. |
| |
| 1) Calling 'make' will compile and generate the static library and test |
| executable, but will NOT re-generate the lexer and parser. |
| $ make |
| Compiling Source src/sdc_common.c... |
| Compiling Source src/sdc.c... |
| Compiling Lexer src/sdc_parse.lex.c... |
| Compiling Parser src/sdc_parse.tab.c... |
| Linking static library: libsdc_parse.a |
| Compiling Source src/main.c... |
| Linking executable: sdc_parse_test |
| |
| 2) Calling 'make clean' will remove all generted files EXCEPT the lexer and parser |
| $ make clean |
| rm -f obj/main.o obj/sdc_common.o obj/sdc.o obj/sdc_parse.lex.o obj/sdc_parse.tab.o |
| rm -f obj/main.d obj/sdc_common.d obj/sdc.d obj/sdc_parse.lex.d obj/sdc_parse.tab.d |
| rm -rf obj |
| rm -f sdc_parse_test |
| rm -f libsdc_parse.a |
| |
| 3) To force regeneration of the lexer and parser from the source .l and .y files |
| do the following (with flex and bison installed and on the path): |
| $ make grammar |
| Re-generating parser and lexer. Clean with 'make clean_grammar'. |
| Generating Parser src/sdc_parse.y... |
| Generating Lexer src/sdc_parse.l... |
| |
| 3) To force cleaning of the generated lexer and parser files do: |
| $ make clean_grammar |
| Removing generated parser and lexer. Regenerate with 'make grammar'. |
| rm -f src/sdc_parse.lex.c |
| rm -f src/sdc_parse.tab.c |
| |
| MAKING CHANGES |
| ------------------ |
| It is recomended that you make any changes to the lexer and parser on a |
| linux-like platform, so you can use the Makefile as described above. |
| |
| If you are making changes to the lexer or parser source files (sdc_parse.l and |
| sdc_parse.y), you must call 'make grammar' explicitly to re-generate the lexer |
| and parser, and then 'make' to compile the changes. You must commit the |
| re-generated lexer and parser files (sdc_parser.lex.c, sdc_parse.tab.c, |
| and sdc_parse.tab.h) allong with the lexer and parser sources if they have |
| changed. Do not let these files get out of sync. |
| |
| MOTIVATION |
| ------------------ |
| In order to have a simple build process with Visual Studio on Windows, we have |
| checked-in the lexer and parser code generated by flex and bison. This means |
| that Windows users DO NOT need to install flex or bison and configure Visual |
| Studio to use them (which is a pain) if they just want to compile and use VPR. |
| |
| Since we don't expect the supported grammar to change very often this seems a |
| reasonable trade-off. |
| |
| The result is that by default the lexer and parser code are not re-generated |
| each compile. If you want to make modifications to the SDC lexer/parser, do |
| so on a linux-like platform with flex and bison on the command-line path with |
| the commands described above. |