- build.go notes
- build.go compiles Harvey's libraries, kernel, and applications. Rather than having mkfiles and running the 'mk' command, we describe the projects in JSON files and run 'build' on them. See sys/src/cmds/cmds.json for an example.
- Here's some notes on what the individual fields of the JSON files do:
- Name: names the current config. For now, you can only have one config per file, but later you may be able to have more than one.
- Projects: sub-projects. Subdirectory Makefiles essentially. These get built BEFORE pretty much anything else, including Pre commands
- Pre: commands to run before compilation
- Post: Commands to run after compilation
- Cflags, Oflags: self-explanatory
- Include: additional json files to be read in and processed. For instance include Cflags and Oflags that many configs may use
- ObjectFiles: you don't define this in the .json, it's build from the SourceFiles element by stripping the .c and adding .o
- Libs: libraries that need to be linked in
- Env: things to stick in the environment.
- SourceFilesCmd: list files that should be built into separate commands. This is the mkmany paradigm; if you list "aan.c", we will first build "aan.o", then link it to create "aan".
- SourceFiles: list files that get built into a single binary. Mkone.
- Program: The name of the program we want to output, assuming we're using SourceFiles instead of SourceFilesCmd.
- Install: this is the directory where your program(s) will be placed after compiling and linking.
- Library: the name of the .a file we want to generate. Currently ignored! We just stick an ar command in the Post commands, which is pretty naughty.