From 82c8d97e2ab422143b22402d986e6a5289d8daf1 Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Sat, 27 May 2006 13:11:32 +0000 Subject: Added README-RTEMS and tweaked the makefiles git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@477 74dad513-b988-da41-8d7b-12977e46ad98 --- README-RTEMS | 87 +++++++++++++++++++++++ RELNOTES.txt | 171 ---------------------------------------------- build/rules.mak | 2 +- pjlib-util/build/Makefile | 16 +++-- pjlib/build/Makefile | 2 + pjmedia/build/Makefile | 23 +++++-- pjsip/build/Makefile | 10 +++ 7 files changed, 129 insertions(+), 182 deletions(-) create mode 100644 README-RTEMS delete mode 100644 RELNOTES.txt diff --git a/README-RTEMS b/README-RTEMS new file mode 100644 index 00000000..9132319d --- /dev/null +++ b/README-RTEMS @@ -0,0 +1,87 @@ + + + + Build Instructions for PJLIB/PJMEDIA/PJSIP RTEMS Port + + + +The RTEMS port uses the POSIX abstraction layer at the moment, and has been +tested with RTEMS 4.6 on i386 target. + + +Building RTEMS +--------------- +I use RTEMS 4.6 on a cygwin host with i386/pc386 as target, but I think it +should work with different RTEMS versions/hosts/targets. + +RTEMS was built with the following commands: + + $ /opt/src/rtems-4.6.6/configure --enable-cxx --enable-posix --enable-networking --enable-rdbg --enable-tests --enable-rtemsbsp=pc386 --target=i386-rtems + $ make + $ make install + + +Supported Targets +----------------- +At the moment, pjlib supports i386 and mpc860 CPU target. For other targets, +you would need to create/tweak the appropriate "m-xxx.mak" in "build" directory +and the corresponding "m_xxx.h" header file in "pj/compat" directory. + +Please refer to pjlib porting guide about how to port PJLIB to new CPU target. + + +Building PJLIB/PJMEDIA/PJSIP +---------------------------- +Use the following steps to build the libraries: + + +1. Set RTEMS_LIBRARY_PATH environment variable to point to your BSP directory + (which is /). + + For example (with sh): + + $ export RTEMS_LIBRARY_PATH=/opt/rtems-4.6/i386-rtems/pc386 + + +2. Unfortunately pjproject's configure script is unable to create "build.mak" + for cross compilation (but this may change in the future), so we need to + create "build.mak" manually. + + The file "README-configure" has some info about the variables in "build.mak". + + For example, the "build.mak" for i386 target: + + export MACHINE_NAME := i386 + export OS_NAME := rtems + export HOST_NAME := mingw + export CC_NAME := gcc + export TARGET_NAME := i386-rtems + export CROSS_COMPILE := i386-rtems- + + +3. Put additional CFLAGS or LDFLAGS that are specific to your target in + "user.mak". + + For example, my "user.mak" looks like this: + + export CFLAGS += + export LDFLAGS += -Wl,-Ttext,0x00100000 -Wl,--defsym -Wl,HeapSize=0x400000 + + +4. Build the libraries: + + $ make dep && make distclean && make + + +5. That should be it. The libraries should be in "lib" directory and + applications in "bin" directory. + + + +Acknowledgements +---------------- +Many thanks for Phil Torre , who did most of the +initial porting and testing with pjlib etc. All credits go to him. + + + diff --git a/RELNOTES.txt b/RELNOTES.txt deleted file mode 100644 index 208e017e..00000000 --- a/RELNOTES.txt +++ /dev/null @@ -1,171 +0,0 @@ -RELEASE NOTES - -Version 0.3-pre4 -Nov 13th, 2005 -==================================== - -PJLIB - - Correct error reporting in the whole library. No more vague -1 errors! - - New super portable socket abstraction. - - Other headers were made super portable too. - - Ioqueue supports multiple pending operations in a single socket! - - No more floating point. - - Ported to new platforms: - - i386/linux kernel (!) - - Sparc/Solaris - - Alpha/Linux - -PJSIP - - Correct error reporting in the whole library. No more -1 errors! - - Rewrote event, now much more readable. - - Per object tracing. - - -Version 0.2.9 - 2005/06/19 -==================================== -Core: - - Moved authentication stuff to core. -SIMPLE: - - Initial implementation of Event framework (SUBSCRIBE/NOTIFY) - - Initial implementation of Presence - - Tidying up here and there. - -Version 0.2.8.5 - 2005/06/05 -==================================== -Core: - - Tidying up sip_msg.h (no need to export clone/shallow_clone/print API - for headers). - - Endpoint now can respond with 501/Not Supported if incoming request is - not handled by any modules. - - Endpoint also supports Allow header now. - - Changed transport names to capital letters (thanks ...) - - Fixed bug with locking in select() ioqueue. - - Add status phrase for >= 700 status codes. - -pjsua: - - Verify URL in arguments to prevent crash. - - Can read commands from config file. - - Now has buddy list and can send IM! - -SIMPLE: - - Instant Messaging support! - -MEDIA: - - CLOSING SEQUENCE IS NOT PROPER!!! SOMETIMES THREAD IS DEADLOCKED, - OR DSOUND IS NOT CLOSED PROPERLY!!! - -Version 0.2.8 - 2005/05/28 -==================================== -- Simple STUN client support - SIP UDP port and media RTP/RTCP ports are now STUN aware. -- Major changed in I/O queue, now callback is used. - Callback is better because multiple libraries can register to single I/O queue. - It was not possible with previous implementation, because the function which does - polling needs to understand what to do when a key is signalled. The changes was - initially needed to support STUN, but then the STUN client implementation uses the - simpler select() (in stun_client.c). -- Merge SDP library into PJMEDIA (no more PJSDP). - PJSDP only has couple of files (sdp.[hc]), not worth maintaining a library. -- Fixed bug in select() I/O queue (not thread safe). - - -Version 0.2.7 - 2005/05/14 -==================================== -PJLIB: -- Major reorganization in pool, introducing pool factory and policy. - All libraries now can be completely agnostic about memory management - choosen by application. -- Fixed bug in GUID generation on mingw -- Fixed bug in scanner if ASCII > 127 is fed into the input -- More doxygen documentation - -PJMEDIA: -- Renamed some functions/structs/etc. - -UA library: -- Registration client completed (including authentication). -- Fixed a crash condition when tsx has not received any response. - -PJSUA: -- Use getopt.c - - -Version 0.2.6 - 2005/04/17 -==================================== -All: -- tidying up header files. - -Core library: -- Removed PJSIP_HAS_DUMP macro (now automatically calculated based on log level) -- Added pjsip_tx_data_invalidate_msg() - -UA library: -- big modification in dialog API to better support injecting custom header - in outgoing message and to make it more flexible for future features (such - as caching the outgoing message): - - sending messages is now done in two steps: (1)create the msg transmit - buffer (pjsip_dlg_tx_data), (2)send the msg transmit buffer. - - dialog state won't change in step (1); it will change only - when the message is actually sent in step (2). - What won't change: - - the dialog state - - outgoing CSeq - - outgoing message transmit buffer (pjsip_dlg_tx_data) will be deleted - when sent in step (2). Application MAY save request messages for - future transmission, even after the request has been sent. To do so, - it must increment the reference counter and remember that each time - the request is sent, the reference counter will be decremented. Also - application CAN NOT re-send the message while the transaction that - sends the message has not terminated. -- changed API names: pjsip_dlg_answer_invitation() --> pjsip_dlg_answer(), etc. -- initial sip_reg.h for SIP registration. - -Auth library: -- the digest authentication should work, however it has not been tested - with any SIP servers because we don't have REGISTER support yet. -*Note*: - authentication in pjsua still uses hardcoded user/pass: hello/world. - - -Version 0.2.5.2 - 2005/03/25 -==================================== -UA library: -- Major modification in dialog callbacks, now high level callbacks such as - on_calling(), on_incoming(), on_provisional(), on_established(), and - on_disconnected() are provided instead of just one callback (on_event()). -- Added pjsip_dlg_disconnect() which should handle all cases of disconnection - such as sending CANCEL, sending BYE, or sending final response to INVITE. -- Added and updated doxygen comments. -- Changed: pjsip_dialog_xxx --> pjsip_dlg_xxx - -New: -- PJSIP Auth library, which supports digest scheme. -- Only client functionality is present at the moment. - -PJSUA: -- Remove callgen feature, as it makes the application complicated. - Will move it to different application, to make way for more sophisticated - call generator. -- Support the new callback framework. -- Support the new digest authentication (UAC only). - -SIP core: -- Added PJSIP_EVENT_BEFORE_TX, triggered by transaction before sending - outgoing message (including retransmission). Application can use this event - (via dialog callback) to modify the message before transmission (such as - adding authorization headers). -- Added general purpose function to print text body. -- Move constant strings in parser to public/extern, just in case other - part of the library need to use them. - -PJMEDIA: -- Protect against NULL in destroy session. - -Misc: -- Rename build output directory x_Win32_x --> x_vc7_x or x_vc6_x, also - library naming includes _vc7_ or _vc6_ now. -- Renamed pjsip_test_core --> pjsip_core_test. -- Renamed pjaudio_tool --> pjmedia_audio_tool. -- Renamed sdp_test --> pjsdp_test -- PJLIB test: added second pool test after new/malloc test. -- Renamed README.txt --> INSTALL.txt diff --git a/build/rules.mak b/build/rules.mak index 6a25b17b..a77bc571 100644 --- a/build/rules.mak +++ b/build/rules.mak @@ -154,7 +154,7 @@ depend: for F in $(FULL_SRCS); do \ if test -f $$F; then \ echo "$(OBJDIR)/" | tr -d '\n' >> $(DEP_FILE); \ - if $(CC_NAME) -M $(DEPFLAGS) $$F | sed '/^#/d' >> $(DEP_FILE); then \ + if $(CC) -M $(DEPFLAGS) $$F | sed '/^#/d' >> $(DEP_FILE); then \ true; \ else \ echo 'err:' >> $(DEP_FILE); \ diff --git a/pjlib-util/build/Makefile b/pjlib-util/build/Makefile index 89d11623..685318b9 100644 --- a/pjlib-util/build/Makefile +++ b/pjlib-util/build/Makefile @@ -69,11 +69,19 @@ pjlib-util-test: $(PJLIB_LIB) ../lib/pjlib-util-test.ko: $(MAKE) -f $(RULES_MAK) APP=UTIL_TEST app=pjlib-util-test $@ -clean depend realclean: +clean: $(MAKE) -f $(RULES_MAK) APP=PJLIB_UTIL app=pjlib-util $@ $(MAKE) -f $(RULES_MAK) APP=UTIL_TEST app=pjlib-util-test $@ - @if test "$@" = "depend"; then \ - echo '$(TEST_EXE): $(PJLIB_UTIL_LIB)' >> .pjlib-util-test-$(TARGET_NAME).depend; \ - fi + +realclean: + $(subst @@,$(subst /,$(HOST_PSEP),.pjlib-util-$(TARGET_NAME).depend),$(HOST_RMR)) + $(subst @@,$(subst /,$(HOST_PSEP),.pjlib-util-test-$(TARGET_NAME).depend),$(HOST_RMR)) + $(MAKE) -f $(RULES_MAK) APP=PJLIB_UTIL app=pjlib-util $@ + $(MAKE) -f $(RULES_MAK) APP=UTIL_TEST app=pjlib-util-test $@ + +depend: + $(MAKE) -f $(RULES_MAK) APP=PJLIB_UTIL app=pjlib-util $@ + $(MAKE) -f $(RULES_MAK) APP=UTIL_TEST app=pjlib-util-test $@ + echo '$(TEST_EXE): $(PJLIB_UTIL_LIB)' >> .pjlib-util-test-$(TARGET_NAME).depend; \ diff --git a/pjlib/build/Makefile b/pjlib/build/Makefile index a53f9d9e..f333aafc 100644 --- a/pjlib/build/Makefile +++ b/pjlib/build/Makefile @@ -94,6 +94,8 @@ clean: $(MAKE) -f $(RULES_MAK) APP=TEST app=pjlib-test clean realclean: + $(subst @@,$(subst /,$(HOST_PSEP),.pjlib-$(TARGET_NAME).depend),$(HOST_RMR)) + $(subst @@,$(subst /,$(HOST_PSEP),.pjlib-test-$(TARGET_NAME).depend),$(HOST_RMR)) $(MAKE) -f $(RULES_MAK) APP=PJLIB app=pjlib realclean $(MAKE) -f $(RULES_MAK) APP=TEST app=pjlib-test realclean diff --git a/pjmedia/build/Makefile b/pjmedia/build/Makefile index 9dfac98c..ddfe7749 100644 --- a/pjmedia/build/Makefile +++ b/pjmedia/build/Makefile @@ -163,15 +163,26 @@ pjmedia-test: $(PJMEDIA_LIB) ../lib/pjmedia-test.ko: $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_TEST app=pjmedia-test $@ -clean depend realclean: +clean: $(MAKE) -f $(RULES_MAK) APP=PJMEDIA app=pjmedia $@ $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_CODEC app=pjmedia-codec $@ $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_TEST app=pjmedia-test $@ + +realclean: + $(subst @@,$(subst /,$(HOST_PSEP),.pjmedia-$(TARGET_NAME).depend),$(HOST_RMR)) + $(subst @@,$(subst /,$(HOST_PSEP),.pjmedia-codec-$(TARGET_NAME).depend),$(HOST_RMR)) + $(subst @@,$(subst /,$(HOST_PSEP),.pjmedia-test-$(TARGET_NAME).depend),$(HOST_RMR)) + + $(MAKE) -f $(RULES_MAK) APP=PJMEDIA app=pjmedia $@ + $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_CODEC app=pjmedia-codec $@ + $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_TEST app=pjmedia-test $@ + +depend: + $(MAKE) -f $(RULES_MAK) APP=PJMEDIA app=pjmedia $@ $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_CODEC app=pjmedia-codec $@ - @if test "$@" = "depend"; then \ - echo '$(PJMEDIA_LIB): .pjmedia-$(TARGET_NAME).depend' >> .pjmedia-$(TARGET_NAME).depend; \ - echo '$(PJMEDIA_CODEC_LIB): .pjmedia-codec-$(TARGET_NAME).depend' >> .pjmedia-codec-$(TARGET_NAME).depend; \ - echo '$(PJMEDIA_TEST_EXE): $(PJMEDIA_LIB) $(PJMEDIA_CODEC_LIB)' >> .pjmedia-test-$(TARGET_NAME).depend; \ - fi + $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_TEST app=pjmedia-test $@ + echo '$(PJMEDIA_LIB): .pjmedia-$(TARGET_NAME).depend' >> .pjmedia-$(TARGET_NAME).depend; \ + echo '$(PJMEDIA_CODEC_LIB): .pjmedia-codec-$(TARGET_NAME).depend' >> .pjmedia-codec-$(TARGET_NAME).depend; \ + echo '$(PJMEDIA_TEST_EXE): $(PJMEDIA_LIB) $(PJMEDIA_CODEC_LIB)' >> .pjmedia-test-$(TARGET_NAME).depend; \ diff --git a/pjsip/build/Makefile b/pjsip/build/Makefile index 76b1f660..8c38439a 100644 --- a/pjsip/build/Makefile +++ b/pjsip/build/Makefile @@ -133,5 +133,15 @@ clean depend realclean: $(MAKE) -f $(RULES_MAK) APP=PJSIP_SIMPLE app=pjsip-simple $@ $(MAKE) -f $(RULES_MAK) APP=PJSUA_LIB app=pjsua-lib $@ +realclean: + $(subst @@,$(subst /,$(HOST_PSEP),.pjsip-$(TARGET_NAME).depend),$(HOST_RMR)) + $(subst @@,$(subst /,$(HOST_PSEP),.pjsip-ua-$(TARGET_NAME).depend),$(HOST_RMR)) + $(subst @@,$(subst /,$(HOST_PSEP),.pjsip-simple-$(TARGET_NAME).depend),$(HOST_RMR)) + $(subst @@,$(subst /,$(HOST_PSEP),.pjsua-lib-$(TARGET_NAME).depend),$(HOST_RMR)) + $(MAKE) -f $(RULES_MAK) APP=PJSIP app=pjsip $@ + $(MAKE) -f $(RULES_MAK) APP=PJSIP_UA app=pjsip-ua $@ + $(MAKE) -f $(RULES_MAK) APP=PJSIP_SIMPLE app=pjsip-simple $@ + $(MAKE) -f $(RULES_MAK) APP=PJSUA_LIB app=pjsua-lib $@ + -- cgit v1.2.3