| sofort: portable software project template |
| ------------------------------------------ |
| |
| This README file aims to speed-up the initial use of sofort |
| with your own project while accounting for diverse groups |
| of learners. |
| |
| On that note, and in addition to making the most out of this document, |
| you might want to join the (un)usually friendly #midipix channel on |
| the freenode irc network. |
| |
| ====================================================================== |
| |
| LEARN BY COMPARISON: |
| |
| # git clone git://midipix.org/sofort |
| # git clone git://midipix.org/mdso |
| # diff -u sofort/config.project mdso/config.project |
| # diff -ru sofort/project mdso/project |
| |
| ====================================================================== |
| |
| LEARN BY EXAMPLE: |
| |
| * mdso: basic configuration, explicit source list |
| https://git.midipix.org/cgit.cgi/mdso/ |
| |
| * bfirm: an external build project for libfirm, using wildcards |
| in project/common.mk and project/headers.mk. |
| https://git.midipix.org/cgit.cgi/compilers/bfirm/ |
| |
| * sbpython3: an external build project for python3.x, utilizing |
| sofort's config test framework (cfgtest.sh) and a custom config |
| step (project/config/cfgdefs.sh). |
| |
| ====================================================================== |
| |
| LEARN BY INSTRUCTION: |
| |
| First Use-Case: using sofort with an existing project |
| -- keep your original repository and the build project separate; |
| -- allow testing the new build system (sofort) against the old one; |
| -- merge the two at the time of your choice. |
| |
| -- for the purpose of illustration: |
| :: foo (directory containing your original project) |
| :: bfoo (directory containing the new build project) |
| :: temp (where you'll run configure, which could be bfoo or elsewhere) |
| |
| * copy all files and folders from the top-level sofort repository |
| into bfoo; the _include_ and _src_ sub-directories are place-holders, |
| and may thus be removed. |
| |
| * edit config.project: ignoring the #_build section for the time being, |
| and keeping all three components (front-end, shared, static) disabled. |
| |
| * test that everything is ready: |
| cd temp && /path/to/bfoo/configure --source-dir=/path/to/foo && make |
| |
| * the default location for public (api) headers is include/foo/ |
| |
| * edit project/common.mk and project/headers.mk. Whether you use |
| wildcards or explicit references to source files and headers is |
| entirely up to you, and bears no effect on the build process. |
| |
| * edit config.project again, and enable the relevant component(s), that |
| is, any or all of front-end, shared, and static); note also that you |
| may remove whichever portion of config.project that is irrelevant to |
| your project. |
| |
| * test again. |
| |
| Second Use-Case: using sofort with a new project |
| -- keeping everything under a single repository; |
| -- no need to pass --source-dir=/path/to/foo to configure; |
| -- otherwise identical to the first use-case, as outlined above. |
| |
| ====================================================================== |