diff --git a/README.md b/README.md index e0460e25c..5896228b7 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ that. ## Status -* Some code runs. [Insert any game name here] doesn't. +* Some code runs. [Insert any game name here] doesn't. Except Frogger 2. Yep. * Asserts! Crashes! Hangs! Blank screens! ## Disclaimer @@ -47,7 +47,8 @@ update gyp files/etc. ## Building See [building](docs/building.md) for setup and information about the -`xenia-build` script. +`xenia-build` script. When writing code, check the [style guide](docs/style_guide.md) +and be sure to clang-format! ## Contributors Wanted! @@ -55,16 +56,10 @@ Have some spare time, know advanced C++, and want to write an emulator? Contribute! There's a ton of work that needs to be done, a lot of which is wide open greenfield fun. -That said, the project is currently undergoing a lot of major foundational -development and core pieces are changing rapidly and poorly documented. -It'll be difficult to casually hack things in unless you know what you're -doing. - Fixes and optimizations are always welcome (please!), but in addition to that there are some major work areas still untouched: * Help work through missing functionality/bugs in game [compat](https://github.com/benvanik/xenia/issues?labels=compat) -* Write an [OpenGL driver](https://github.com/benvanik/xenia/issues/59) * Add input drivers for [OSX](https://github.com/benvanik/xenia/issues/61) and [PS4 controllers](https://github.com/benvanik/xenia/issues/60) (or anything else) * Start [hacking on audio](https://github.com/benvanik/xenia/issues/62) * Build a [virtual LIVE service](https://github.com/benvanik/xenia/issues/64) diff --git a/docs/building.md b/docs/building.md index 84fa7acf3..6e797a74e 100644 --- a/docs/building.md +++ b/docs/building.md @@ -44,7 +44,7 @@ keypresses: #### setup -Run this on initial checkout to pull down all dependencies and setup LLVM. +Run this on initial checkout to pull down all dependencies and submodules. xb setup diff --git a/docs/style_guide.md b/docs/style_guide.md new file mode 100644 index 000000000..4101f8946 --- /dev/null +++ b/docs/style_guide.md @@ -0,0 +1,45 @@ +# Style Guide + +The style guide can be summed up as 'clang-format with the Google style set'. +In addition, the [Google Style Guide](http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml) +is followed and cpplint is the source of truth. + +Base rules: + +* 80 column line length max +* LF (Unix-style) line endings +* 2-space soft tabs, no TABs! +* [Google Style Guide](http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml) for naming/casing/etc + +Code that really breaks from the formatting rules will not be accepted, as then +no one else can use clang-format on the code without also touching all your +lines. + +## Tools + +### clang-format + +clang-format with the Google style is used to format all files. I recommend +installing/wiring it up to your editor of choice so that you don't even have to +think about tabs and wrapping and such. + +#### Visual Studio + +Grab the official [experimental Visual Studio plugin](http://llvm.org/builds/). +To switch to the Google style go Tools -> Options -> LLVM/Clang -> ClangFormat +and set Style to Google. Then use ctrl-r/ctrl-f to trigger the formatting. +Unfortunately it only does the cursor by default, so you'll have to select the +whole doc and invoke it to get it all done. + +If you have a better option, let me know! + +#### Xcode + +Install [Alcatraz](http://alcatraz.io/) to get the [ClangFormat](https://github.com/travisjeffery/ClangFormat-Xcode) +package. Set it to use the Google style and format on save. Never think about +tabs or linefeeds or whatever again. + +### cpplint + +TODO(benvanik): write a cool script to do this/editor plugins. +In the future, the linter will run as a git commit hook and on travis.