Tristan Matthews | 0a329cc | 2013-07-17 13:20:14 -0400 | [diff] [blame] | 1 | |
| 2 | |
| 3 | |
| 4 | Build Instructions for PJLIB/PJMEDIA/PJSIP RTEMS Port |
| 5 | |
| 6 | |
| 7 | |
| 8 | The RTEMS port uses the POSIX abstraction layer at the moment, and has been |
| 9 | tested with RTEMS 4.6 on i386 target. |
| 10 | |
| 11 | |
| 12 | Building RTEMS |
| 13 | --------------- |
| 14 | I use RTEMS 4.6 on a cygwin host with i386/pc386 as target, but I think it |
| 15 | should work with different RTEMS versions/hosts/targets. |
| 16 | |
| 17 | RTEMS was built with the following commands: |
| 18 | |
| 19 | $ /opt/src/rtems-4.6.6/configure --enable-cxx --enable-posix --enable-networking --enable-rdbg --enable-tests --enable-rtemsbsp=pc386 --target=i386-rtems |
| 20 | $ make |
| 21 | $ make install |
| 22 | |
| 23 | |
| 24 | Supported Targets |
| 25 | ----------------- |
| 26 | At the moment, pjlib supports i386 and mpc860 CPU target. For other targets, |
| 27 | you would need to create/tweak the appropriate "m-xxx.mak" in "build" directory |
| 28 | and the corresponding "m_xxx.h" header file in "pj/compat" directory. |
| 29 | |
| 30 | Please refer to pjlib porting guide about how to port PJLIB to new CPU target. |
| 31 | |
| 32 | |
| 33 | Building PJLIB/PJMEDIA/PJSIP |
| 34 | ---------------------------- |
| 35 | Use the following steps to build the libraries: |
| 36 | |
| 37 | |
| 38 | 1. Set RTEMS_LIBRARY_PATH environment variable to point to your BSP directory |
| 39 | (which is <RTEMS INSTALLATION POINT>/<BOARD SUPPORT PACKAGE>). |
| 40 | |
| 41 | For example (with sh): |
| 42 | |
| 43 | $ export RTEMS_LIBRARY_PATH=/opt/rtems-4.6/i386-rtems/pc386 |
| 44 | |
| 45 | |
| 46 | 2. Unfortunately pjproject's configure script is unable to create "build.mak" |
| 47 | for cross compilation (but this may change in the future), so we need to |
| 48 | create "build.mak" manually. |
| 49 | |
| 50 | The file "README-configure" has some info about the variables in "build.mak". |
| 51 | |
| 52 | For example, the "build.mak" for i386 target: |
| 53 | |
| 54 | export MACHINE_NAME := i386 |
| 55 | export OS_NAME := rtems |
| 56 | export HOST_NAME := mingw |
| 57 | export CC_NAME := gcc |
| 58 | export TARGET_NAME := i386-rtems |
| 59 | export CROSS_COMPILE := i386-rtems- |
| 60 | |
| 61 | |
| 62 | 3. Put additional CFLAGS or LDFLAGS that are specific to your target in |
| 63 | "user.mak". |
| 64 | |
| 65 | For example, my "user.mak" looks like this: |
| 66 | |
| 67 | export CFLAGS += |
| 68 | export LDFLAGS += -Wl,-Ttext,0x00100000 -Wl,--defsym -Wl,HeapSize=0x400000 |
| 69 | |
| 70 | |
| 71 | 4. Build the libraries: |
| 72 | |
| 73 | $ make dep && make distclean && make |
| 74 | |
| 75 | |
| 76 | 5. That should be it. The libraries should be in "lib" directory and |
| 77 | applications in "bin" directory. |
| 78 | |
| 79 | |
| 80 | |
| 81 | Acknowledgements |
| 82 | ---------------- |
| 83 | Many thanks for Phil Torre <ptorre at zetron dot com>, who did most of the |
| 84 | initial porting and testing with pjlib etc. All credits go to him. |
| 85 | |
| 86 | |
| 87 | |