49 | | * principles |
50 | | * extracting the flags |
51 | | * caching built libraries |
52 | | * harbours |
53 | | * usage |
54 | | * writing harbour files |
| 52 | When the developer uses the Coastline, he is working with 3 directories. |
| 53 | The first one is the directory with Coastline checkout, in the scripts referred to as `HSCT_HOME`. |
| 54 | Second one is the build directory where the building happens. |
| 55 | And the last one is directory with HelenOS sources (`HSCT_HELENOS_ROOT`). |
| 56 | |
| 57 | The build directory needs to be initialized first. |
| 58 | During initialization, headers and libraries from HelenOS source tree are copied to the build directory and used compiler/linker flags are extracted and prepared for further use. |
| 59 | These are stored in the `helenos/` subdirectory. |
| 60 | A shell script `helenos/env.sh` contains settings of various paths and also the flags for the compiler and the linker. |
| 61 | To initialize the build directory, you need to call |
| 62 | |
| 63 | {{{ |
| 64 | $HSCT_HOME/hsct.sh init /path/to/HelenOS/source/tree |
| 65 | }}} |
| 66 | |
| 67 | If you specify a profile (e.g. `ia32`) as a third argument, the initialization would prepare the build directory for that profile. |
| 68 | Specifying the word `build` as a last (fourth) argument would force a complete rebuild for the specified profile. |
| 69 | |
| 70 | Once the directory is initialized, the user can build the ported software. |
| 71 | The build is invoked by calling `hsct.sh` in the following manner: |
| 72 | |
| 73 | {{{ |
| 74 | hsct.sh build <package> |
| 75 | }}} |
| 76 | |
| 77 | |
| 78 | This would download the tarballs, unpack them and run `configure` and `make` (or alternatives) for the given software. |
| 79 | |
| 80 | Once the build is complete, the user can either package the software into a tarball or directly copy the application to HelenOS source tree. |
| 81 | Running |
| 82 | |
| 83 | {{{ |
| 84 | hsct.sh install <package> |
| 85 | }}} |
| 86 | |
| 87 | would copy the application (library) to HelenOS source tree that was specified during initialization. |
| 88 | Executing |
| 89 | |
| 90 | {{{ |
| 91 | hsct.sh archive <package> |
| 92 | }}} |
| 93 | |
| 94 | would create a tarball in `archives/` subdirectory. |
| 95 | Unpacking this tarball into `uspace/overlay` would effectively install the package. |
| 96 | |
| 97 | |
| 98 | If you do not want to rebuild the software yourself, you can download [http://helenos.alisma.cz/coastline/matrix/ pre-built packages]. |
| 99 | Please note that these packages are not 100% up-to-date with mainline and sometimes may not work or may work only partially. |
| 100 | |
| 101 | |
| 102 | === Porting new software === |
| 103 | |
| 104 | * harbour files |
| 105 | * `$shipname`, `$shipsources` and `$shiptugs` |
| 106 | * `build()` and `package()` functions |
| 107 | * common issues |
| 108 | * forcing cross-compilation |
| 109 | * naming clashes |