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