aboutsummaryrefslogtreecommitdiffstats
path: root/docs/dev_guide/2_project_architecture.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/dev_guide/2_project_architecture.md')
-rw-r--r--docs/dev_guide/2_project_architecture.md98
1 files changed, 98 insertions, 0 deletions
diff --git a/docs/dev_guide/2_project_architecture.md b/docs/dev_guide/2_project_architecture.md
new file mode 100644
index 0000000..0cae607
--- /dev/null
+++ b/docs/dev_guide/2_project_architecture.md
@@ -0,0 +1,98 @@
+# Project architecture
+
+A typical project architecture would be :
+
+```tree
+<project-root-path>
+│
+├── conf.d/
+│ ├── autobuild/
+│ │ ├── agl
+│ │ │ └── autobuild
+│ │ ├── linux
+│ │ │ └── autobuild
+│ │ └── windows
+│ │ └── autobuild
+│ ├── app-templates/
+│ │ ├── README.md
+│ │ ├── autobuild/
+│ │ │ ├── agl
+│ │ │ │ └── autobuild.in
+│ │ │ ├── linux
+│ │ │ │ └── autobuild.in
+│ │ │ └── windows
+│ │ │ └── autobuild.in
+│ │ ├── cmake/
+│ │ │ ├── config.cmake.sample
+│ │ │ ├── export.map
+│ │ │ └── macros.cmake
+│ │ ├── deb/
+│ │ │ └── config.deb.in
+│ │ ├── rpm/
+│ │ │ └── config.spec.in
+│ │ └── wgt/
+│ │ ├── config.xml.in
+│ │ ├── config.xml.in.sample
+│ │ ├── icon-default.png
+│ │ ├── icon-html5.png
+│ │ ├── icon-native.png
+│ │ ├── icon-qml.png
+│ │ └── icon-service.png
+│ ├── packaging/
+│ │ ├── config.spec
+│ │ └── config.deb
+│ ├── cmake
+│ │ └── config.cmake
+│ └── wgt
+│ └── config.xml.in
+├── <libs>
+├── <target>
+│ └── <files>
+├── <target>
+│ └── <file>
+└── <target>
+ └── <files>
+```
+
+| # | Parent | Description |
+| - | -------| ----------- |
+| \<root-path\> | - | Path to your project. Hold master CMakeLists.txt and general files of your projects. |
+| conf.d | \<root-path\> | Holds needed files to build, install, debug, package an AGL app project |
+| app-templates | conf.d | Git submodule to app-templates AGL repository which provides CMake helpers macros library, and build scripts. config.cmake is a copy of config.cmake.sample configured for the projects. SHOULD NOT BE MODIFIED MANUALLY !|
+| autobuild | conf.d | Scripts generated from app-templates to build packages the same way for differents platforms.|
+| cmake | conf.d | Contains at least config.cmake file modified from the sample provided in app-templates submodule. |
+| wgt | conf.d | Contains at least config.xml.in template file modified from the sample provided in app-templates submodule for the needs of project (See config.xml.in.sample file for more details). |
+| packaging | conf.d | Contains output files used to build packages. |
+| \<libs\> | \<root-path\> | External dependencies libraries. This isn't to be used to include header file but build and link statically specifics libraries. | Library sources files. Can be a decompressed library archive file or project fork. |
+| \<target\> | \<root-path\> | A target to build, typically library, executable, etc. |
+
+## Manage app-templates submodule
+
+### Update
+
+You may have some news bug fixes or features available from app-templates
+repository that you want. To update your submodule proceed like the following:
+
+```bash
+git submodule update --remote
+git commit -s conf.d/app-templates
+```
+
+This will update the submodule to the HEAD of master branch repository. Save
+the modification by commiting it in your master git project.
+
+### Checkout submodule to a git tag
+
+You could just want to update at a specified repository tag or branch or commit
+, here are the method to do so:
+
+```bash
+cd conf.d/app-templates
+# Choose one of the following depending what you want
+git checkout <tag_name>
+git checkout --detach <branch_name>
+git checkout --detach <commit_id>
+# Then commit
+cd ../..
+git commit -s conf.d/app-templates
+```