/
Build System Structure
Build System Structure
Makefile
- Located in
ramcloud/GNUmakefile
- This makefile system follows the structuring conventions recommended by Peter Miller in his excellent paper: Recursive Make Considered Harmful
- Essentially one Makefile, with includes at various places in the project directory
GNUmakefile
is the root Makefile- Included bits are called
Makefrag
.
- No special magic here - this is simply direct expansion of the file contents.
- Means all
Makefrag
contents are still relative to the working directory of the make invocation (which there is only one of in this style of build system). - One can refer to the working directory of make via
$(TOP)
which is declared in the top level Makefile
- Means all
- Keep in mind
- There is no scoping here, if you declare something in a
Makefrag
that conflicts with something in anotherMakefrag
or something in theGNUmakefile
collisions are resolved just as they would be in a single Makefile (i.e. one definition will override the other depending on the order in which they are included.
- There is no scoping here, if you declare something in a
Interesting Targets
make
- build the RAMCloud server and client software- Output
obj.master/client/client, obj.master/server/server
- Replace 'master' with the git local branch name you are on if it is not 'master'
- Output
make unit-test
- build and run RAMCloud unit tests (requires CppUnit)make test
- a simple smoke test that runsunit-test
and builds a simple application to ensure the install information is sufficientmake check
- currently runs Google style checker against files in the src directory; subject to check as style evolves
Unit Testing
- Run via
make unit-test
- Builds and runs the tests in a single shot
Simple Style/Static Checking
- Run via
make check
- Uses cpplint.py to check that the style is the agreed-upon style.
, multiple selections available,
Related content
General Information for Developers
General Information for Developers
More like this
Want to Contribute to RAMCloud?
Want to Contribute to RAMCloud?
More like this
Coding Conventions
Coding Conventions
More like this
Writing Unit Tests
Writing Unit Tests
More like this
Setting Up a RAMCloud Cluster
Setting Up a RAMCloud Cluster
More like this
Netbeans
Netbeans
More like this