Spinning Topp Logo BlackTopp Studios
inc
jagati_package.h
1 // © Copyright 2010 - 2016 BlackTopp Studios Inc.
2 /* This file is part of The Mezzanine Engine.
3 
4  The Mezzanine Engine is free software: you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation, either version 3 of the License, or
7  (at your option) any later version.
8 
9  The Mezzanine Engine is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with The Mezzanine Engine. If not, see <http://www.gnu.org/licenses/>.
16 */
17 /* The original authors have included a copy of the license specified above in the
18  'Docs' folder. See 'gpl.txt'
19 */
20 /* We welcome the use of the Mezzanine engine to anyone, including companies who wish to
21  Build professional software and charge for their product.
22 
23  However there are some practical restrictions, so if your project involves
24  any of the following you should contact us and we will try to work something
25  out:
26  - DRM or Copy Protection of any kind(except Copyrights)
27  - Software Patents You Do Not Wish to Freely License
28  - Any Kind of Linking to Non-GPL licensed Works
29  - Are Currently In Violation of Another Copyright Holder's GPL License
30  - If You want to change our code and not add a few hundred MB of stuff to
31  your distribution
32 
33  These and other limitations could cause serious legal problems if you ignore
34  them, so it is best to simply contact us or the Free Software Foundation, if
35  you have any questions.
36 
37  Joseph Toppi - toppij@gmail.com
38  John Blackwood - makoenergy02@gmail.com
39 */
40 #ifndef _jagati_package_h
41 #define _jagati_package_h
42 
43 /**
44  @page jagati_package Jagati Package and Refactor
45  Currently the Mezzanine engine is one monolithic code base. Many of the libaries can work
46  independently and still be extemely useful. The Jagati Refactor is the modularizing of these
47  libraries.
48 
49  @n
50  This page describes the contents of one Jagati package. We wil pull a piece of the Mezzanine out
51  and make a package from it. It will be refactored and adjusted to meet the standards here.
52 
53  @n
54  Each package will compile under Clang, GCC, MinGW, TDM-gcc and Visual Studio. Each compilation
55  will enable "-werror" or whatever compiler flag turns all warnings into errors. A slew of extra
56  compiler warnings will be enabled to minimize the chance of writing bugs.
57 
58  @n
59  We will keep our current level of documentation. We will keep out curent level of coverage for
60  our automated generation
61 
62  @section jagati_package_package Modules after Jagati Refactor
63 
64  @dot Jagati Packages and Dependencies
65  digraph JagatiPackages {
66 
67  EntreLua [shape=box];
68  Armadillo [shape=box];
69 
70  Lua51Bindings [shape=box];
71  RubyBindings [shape=box];
72  JavaBindings [shape=box];
73 
74  Scripting [shape=box];
75  Input [shape=box];
76  Network [shape=box];
77  Resource [shape=box];
78 
79  Graphics [shape=box];
80  UI [shape=box];
81  Physics [shape=box];
82  Noise [shape=box];
83  Audio [shape=box];
84 
85  Entresol [shape=box];
86  Threading [shape=box];
87  Base [shape=box];
88  Math [shape=box];
89 
90  StaticFoundation [shape=box];
91  Testing [shape=box];
92  Foundation [shape=box];
93 
94  EntreLua -> Lua51Bindings;
95  Armadillo -> UI;
96 
97  Lua51Bindings -> Scripting;
98  RubyBindings -> Scripting;
99  JavaBindings -> Scripting;
100 
101  Scripting -> Base;
102  Input -> Base;
103  Network -> Base;
104  Resource -> Base;
105 
106  UI -> Graphics;
107  Graphics -> Base;
108  Graphics -> Math;
109  Audio -> Base;
110  Audio -> Math;
111  Physics -> Base;
112  Physics -> Math;
113  Noise -> Base;
114  Noise -> Math;
115 
116  Entresol -> Threading;
117  Entresol -> Base;
118  Threading -> Foundation;
119  Base -> Foundation;
120  Math -> Foundation;
121 
122  Foundation -> Testing;
123  Testing -> StaticFoundation;
124  Foundation -> StaticFoundation;
125  }
126  @enddot
127 
128  @section jagati_package_files Files and Folders in a package
129  A rough file hiearchy:
130 
131  - @ref jagati_package_root – Package Root
132  - @ref jagati_package_cmake "CMakeLists.txt"
133  - @ref jagati_package_license
134  - @ref jagati_package_ci
135  - @ref jagati_package_readme
136  - @ref jagati_package_dox_dir
137  - @ref jagati_package_dox_h
138  - @ref jagati_package_include_dir
139  - @ref jagati_package_lib_dir
140  - @ref jagati_package_src_dir
141  - @ref jagati_package_swig_dir
142  - @ref jagati_package_swig_config_h
143  - @ref jagati_package_test_dir
144 
145  @section jagati_package_root / – Package Root
146  The root folder.
147 
148  @section jagati_package_cmake CMakeLists.txt and Jagati CMake API
149  We need to describe variables the variables that the root CMakeLists.txt. This is still being
150  decided on and will likely be determined by ruslo/hunter.
151 
152  @section jagati_package_gitignores .gitignore
153  This file tells git what does not need to be included in the build.
154 
155  @section jagati_package_ci .travis.yml and appveyor.yml – Coninuous Integration Config
156  Each Jagati package will be built and run automatically on a variety of platforms automatically.
157 
158  @section jagati_package_readme README.md – Technical details for Humans
159  This should have an overview
160 
161  @section jagati_package_license COPYING.md
162  This file will have legal details about copying the files and resources in the package. The
163  Default for most Jagati packages is the
164  @htmlonly<a href="">@endhtmlonly
165  GPL v3
166  @htmlonly</a>@endhtmlonly
167  but the
168  @htmlonly<a href="">@endhtmlonly
169  BSD License
170  @htmlonly</a>@endhtmlonly
171  is good to. The are no technical reasons other licenses couldn't be described here.
172 
173  @section jagati_package_dox_dir dox/ – Special Considerations for Doxygen.
174  Extra docmentation headers and files ought to go here.
175 
176  @subsection jagati_package_dox_h dox/dox.h – Doxygen entry point
177  If this optional file is present it is the file that Doxygen will read. This should include
178  all the files that are Doxygen documented.
179 
180  @section jagati_package_include_dir include/ – Header directory for others to use
181  Describe why to separate headers from source files here.
182 
183  @section jagati_package_lib_dir lib/ – Internal libraray source
184  Many Packages provide some kind of functionality provided by external systems or that require
185  very complex algorithms. Any external libraries providing such functionality can
186 
187  @section jagati_package_src_dir src/ – Actual source code
188  The implementation of a package goes here.
189 
190  @section jagati_package_swig_dir swig/ – Special Considerations for SWIG.
191  Most people do not want to build their whole game or application in C++. Swig reads the C/C++
192  source code of the package and generates bindings for other languages to be able to use the
193  Mezzanine.
194 
195  @subsection jagati_package_swig_config_h swig/SwigConfig.h – SWIG Entry Point.
196  If this file is present it is the entry point for Swig. This should include all the headers
197  that SWIG is to read and prepare bindings for.
198 
199  @section jagati_package_test_dir test/ – Test Headers
200  A directory full of files that each contain one class describing tests for one part of the
201  system
202 
203 */
204 
205 #endif