Changeset 5428
- Timestamp:
- Aug 25, 2016 1:36:33 AM (8 years ago)
- Location:
- pjproject/trunk
- Files:
-
- 139 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/aconfigure
r5416 r5428 623 623 ac_main_obj 624 624 ac_host 625 ac_webrtc_ldflags 626 ac_webrtc_cflags 627 ac_webrtc_instset 628 ac_no_webrtc 625 629 ac_no_yuv 626 630 opus_present … … 643 647 ac_ssl_has_aes_gcm 644 648 ac_no_ssl 645 ac_webrtc_ldflags646 ac_webrtc_cflags647 649 ac_openh264_ldflags 648 650 ac_openh264_cflags … … 683 685 ac_pjmedia_snd 684 686 ac_pjmedia_resample 687 ac_external_webrtc 685 688 ac_external_yuv 686 689 ac_srtp_shutdown_present … … 782 785 with_external_srtp 783 786 with_external_yuv 787 with_external_webrtc 784 788 enable_resample 785 789 enable_sound … … 807 811 with_openh264 808 812 enable_openh264 809 with_webrtc810 enable_webrtc811 813 enable_ipp 812 814 with_ipp … … 824 826 enable_opus 825 827 enable_libyuv 828 enable_libwebrtc 826 829 ' 827 830 ac_precious_vars='build_alias … … 1476 1479 --disable-v4l2 Disable Video4Linux2 (default: not disabled) 1477 1480 --disable-openh264 Disable OpenH264 (default: not disabled) 1478 --disable-webrtc Exclude webrtc in the build1479 1481 --enable-ipp Enable Intel IPP support. Specify the Intel IPP 1480 1482 package and samples location using IPPROOT and … … 1493 1495 1494 1496 --disable-libyuv Exclude libyuv in the build 1497 --disable-libwebrtc Exclude libwebrtc in the build 1495 1498 1496 1499 Optional Packages: … … 1517 1520 use CFLAGS and LDFLAGS env var to set the 1518 1521 include/lib paths) 1522 --with-external-webrtc Use external webrtc development files, not the one 1523 in "third_party" directory. When this option is set, 1524 make sure that webrtc is accessible to use (hint: 1525 use CFLAGS and LDFLAGS env var to set the 1526 include/lib paths) 1519 1527 --with-external-pa Use external PortAudio development files, not the 1520 1528 one in "third_party" directory. When this option is … … 1525 1533 --with-ffmpeg=DIR Specify alternate FFMPEG prefix 1526 1534 --with-openh264=DIR Specify alternate OpenH264 prefix 1527 --with-webrtc=DIR Specify alternate WebRtc prefix1528 1535 --with-ipp=DIR Specify the Intel IPP location 1529 1536 --with-ipp-samples=DIR Specify the Intel IPP samples location … … 6118 6125 6119 6126 6127 ac_external_webrtc=0 6128 6129 6130 # Check whether --with-external-webrtc was given. 6131 if test "${with_external_webrtc+set}" = set; then : 6132 withval=$with_external_webrtc; 6133 if test "x$with_external_webrtc" != "xno"; then 6134 # Test webrtc installation 6135 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if external webrtc devkit is installed" >&5 6136 $as_echo_n "checking if external webrtc devkit is installed... " >&6; } 6137 cat confdefs.h - <<_ACEOF >conftest.$ac_ext 6138 /* end confdefs.h. */ 6139 #include <webrtc/modules/audio_processing/aec/aec_core.h> 6140 #include <webrtc/modules/audio_processing/aec/include/echo_cancellation.h> 6141 6142 int 6143 main () 6144 { 6145 WebRtcAec_Create(); 6146 ; 6147 return 0; 6148 } 6149 _ACEOF 6150 if ac_fn_c_try_compile "$LINENO"; then : 6151 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes!!" >&5 6152 $as_echo "yes!!" >&6; } 6153 ac_external_webrtc="1" 6154 6155 else 6156 as_fn_error $? "Unable to use external webrtc. If webrtc development files are not available in the default locations, use CFLAGS and LDFLAGS env var to set the include/lib paths" "$LINENO" 5 6157 fi 6158 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 6159 fi 6160 6161 6162 fi 6163 6164 6165 6120 6166 ac_pjmedia_resample=libresample 6121 6167 … … 7402 7448 7403 7449 7404 7405 # Check whether --with-webrtc was given.7406 if test "${with_webrtc+set}" = set; then :7407 withval=$with_webrtc;7408 else7409 with_webrtc=no7410 7411 fi7412 7413 7414 if test "x$ac_cross_compile" != "x" -a "x$with_webrtc" = "xno"; then7415 enable_webrtc=no7416 fi7417 7418 7419 7420 # Check whether --enable-webrtc was given.7421 if test "${enable_webrtc+set}" = set; then :7422 enableval=$enable_webrtc; if test "$enable_webrtc" = "no"; then7423 { $as_echo "$as_me:${as_lineno-$LINENO}: result: Checking if webrtc is disabled...yes" >&57424 $as_echo "Checking if webrtc is disabled...yes" >&6; }7425 fi7426 else7427 7428 if test "x$with_webrtc" != "xno" -a "x$with_webrtc" != "x"; then7429 WEBRTC_PREFIX=$with_webrtc7430 WEBRTC_CFLAGS="-I$WEBRTC_PREFIX/src"7431 7432 case $target in7433 *-apple-darwin_ios*)7434 case $ARCH in7435 *arm*)7436 WEBRTC_CFLAGS="-DPJMEDIA_WEBRTC_AEC_USE_MOBILE=1 $WEBRTC_CFLAGS"7437 WEBRTC_LDFLAGS="-L$WEBRTC_PREFIX/src/out_ios/Release-iphoneos"7438 WEBRTC_LIBS="-laudio_processing_neon -lcommon_audio_neon"7439 ;;7440 *)7441 ;;7442 esac7443 ;;7444 *mingw* | *cygw* | *win32* | *w32* | *darwin* | *linux* | *android*)7445 WEBRTC_LDFLAGS="-L$WEBRTC_PREFIX/src/out/Release"7446 WEBRTC_LIBS="-laudio_processing_sse2"7447 ;;7448 *)7449 ;;7450 esac7451 7452 { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using webrtc prefix... $with_webrtc" >&57453 $as_echo "Using webrtc prefix... $with_webrtc" >&6; }7454 else7455 WEBRTC_CFLAGS=""7456 WEBRTC_LDFLAGS=""7457 fi7458 7459 WEBRTC_LIBS="$WEBRTC_LIBS -laudio_processing -lcommon_audio -lsystem_wrappers"7460 7461 SAVED_LIBS="$LIBS"7462 SAVED_LDFLAGS="$LDFLAGS"7463 SAVED_CFLAGS="$CFLAGS"7464 7465 LIBS="$WEBRTC_LIBS $LIBS"7466 LDFLAGS="$WEBRTC_LDFLAGS $LDFLAGS"7467 CFLAGS="$WEBRTC_CFLAGS $CFLAGS"7468 7469 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for WebRtcAec_Process in -laudio_processing" >&57470 $as_echo_n "checking for WebRtcAec_Process in -laudio_processing... " >&6; }7471 if ${ac_cv_lib_audio_processing_WebRtcAec_Process+:} false; then :7472 $as_echo_n "(cached) " >&67473 else7474 ac_check_lib_save_LIBS=$LIBS7475 LIBS="-laudio_processing7476 $LIBS"7477 cat confdefs.h - <<_ACEOF >conftest.$ac_ext7478 /* end confdefs.h. */7479 7480 /* Override any GCC internal prototype to avoid an error.7481 Use char because int might match the return type of a GCC7482 builtin and then its argument prototype would still apply. */7483 #ifdef __cplusplus7484 extern "C"7485 #endif7486 char WebRtcAec_Process ();7487 int7488 main ()7489 {7490 return WebRtcAec_Process ();7491 ;7492 return 0;7493 }7494 _ACEOF7495 if ac_fn_c_try_link "$LINENO"; then :7496 ac_cv_lib_audio_processing_WebRtcAec_Process=yes7497 else7498 ac_cv_lib_audio_processing_WebRtcAec_Process=no7499 fi7500 rm -f core conftest.err conftest.$ac_objext \7501 conftest$ac_exeext conftest.$ac_ext7502 LIBS=$ac_check_lib_save_LIBS7503 fi7504 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_audio_processing_WebRtcAec_Process" >&57505 $as_echo "$ac_cv_lib_audio_processing_WebRtcAec_Process" >&6; }7506 if test "x$ac_cv_lib_audio_processing_WebRtcAec_Process" = xyes; then :7507 ac_webrtc_cflags="-DPJMEDIA_HAS_WEBRTC_AEC=1 $WEBRTC_CFLAGS"7508 ac_webrtc_ldflags="$WEBRTC_LDFLAGS $WEBRTC_LIBS"7509 7510 else7511 LIBS="$SAVED_LIBS"7512 LDFLAGS="$SAVED_LDFLAGS"7513 CFLAGS="$SAVED_CFLAGS"7514 7515 fi7516 7517 7518 fi7519 7520 7521 7450 # Check whether --enable-ipp was given. 7522 7451 if test "${enable_ipp+set}" = set; then : … … 8468 8397 { $as_echo "$as_me:${as_lineno-$LINENO}: result: Checking if libyuv is disabled...no" >&5 8469 8398 $as_echo "Checking if libyuv is disabled...no" >&6; } 8399 fi 8400 8401 8402 8403 8404 8405 8406 8407 # Check whether --enable-libwebrtc was given. 8408 if test "${enable_libwebrtc+set}" = set; then : 8409 enableval=$enable_libwebrtc; if test "$enable_libwebrtc" = "no"; then 8410 ac_no_webrtc=1 8411 $as_echo "#define PJMEDIA_HAS_LIBWEBRTC 0" >>confdefs.h 8412 8413 { $as_echo "$as_me:${as_lineno-$LINENO}: result: Checking if libwebrtc is disabled...yes" >&5 8414 $as_echo "Checking if libwebrtc is disabled...yes" >&6; } 8415 fi 8416 else 8417 8418 { $as_echo "$as_me:${as_lineno-$LINENO}: result: Checking if libwebrtc is disabled...no" >&5 8419 $as_echo "Checking if libwebrtc is disabled...no" >&6; } 8420 case $target in 8421 *-apple-darwin_ios*) 8422 case $target in 8423 *arm*) 8424 ac_webrtc_instset=neon 8425 ;; 8426 *) 8427 ac_webrtc_instset=sse2 8428 ;; 8429 esac 8430 ;; 8431 *android*) 8432 case $TARGET_ABI in 8433 armeabi-v7a) 8434 ac_webrtc_instset=neon 8435 ac_webrtc_cflags="-mfloat-abi=softfp -mfpu=neon" 8436 ;; 8437 armeabi) 8438 ac_webrtc_instset=neon 8439 ac_webrtc_cflags="-mfloat-abi=softfp -mfpu=neon -march=armv7" 8440 ;; 8441 arm64*) 8442 ac_webrtc_instset=neon 8443 ac_webrtc_cflags="-DWEBRTC_ARCH_ARM64" 8444 ;; 8445 mips*) 8446 ac_webrtc_instset=mips 8447 ;; 8448 *) 8449 ac_webrtc_instset=sse2 8450 ;; 8451 esac 8452 ;; 8453 *mingw* | *cygw* | *win32* | *w32* | *darwin* | *linux*) 8454 ac_webrtc_instset=sse2 8455 ;; 8456 *) 8457 ;; 8458 esac 8459 8470 8460 fi 8471 8461 -
pjproject/trunk/aconfigure.ac
r5416 r5428 594 594 ], 595 595 [AC_MSG_ERROR([Unable to use external libyuv. If libyuv development files are not available in the default locations, use CFLAGS and LDFLAGS env var to set the include/lib paths])]) 596 fi 597 ] 598 ) 599 600 601 dnl # Use external webrtc installation 602 AC_SUBST(ac_external_webrtc,0) 603 AC_ARG_WITH(external-webrtc, 604 AS_HELP_STRING([--with-external-webrtc], 605 [Use external webrtc development files, not the one in "third_party" directory. When this option is set, make sure that webrtc is accessible to use (hint: use CFLAGS and LDFLAGS env var to set the include/lib paths)]), 606 [ 607 if test "x$with_external_webrtc" != "xno"; then 608 # Test webrtc installation 609 AC_MSG_CHECKING([if external webrtc devkit is installed]) 610 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <webrtc/modules/audio_processing/aec/aec_core.h> 611 #include <webrtc/modules/audio_processing/aec/include/echo_cancellation.h> 612 ]], 613 [WebRtcAec_Create();])], 614 [AC_MSG_RESULT(yes!!) 615 ac_external_webrtc="1" 616 ], 617 [AC_MSG_ERROR([Unable to use external webrtc. If webrtc development files are not available in the default locations, use CFLAGS and LDFLAGS env var to set the include/lib paths])]) 596 618 fi 597 619 ] … … 1244 1266 1245 1267 1246 dnl # WebRtc alt prefix1247 AC_ARG_WITH(webrtc,1248 AS_HELP_STRING([--with-webrtc=DIR],1249 [Specify alternate WebRtc prefix]),1250 [],1251 [with_webrtc=no]1252 )1253 1254 dnl # Do not use default webrtc installation if we are cross-compiling1255 if test "x$ac_cross_compile" != "x" -a "x$with_webrtc" = "xno"; then1256 enable_webrtc=no1257 fi1258 1259 dnl # WebRtc1260 AC_SUBST(ac_webrtc_cflags)1261 AC_SUBST(ac_webrtc_ldflags)1262 AC_ARG_ENABLE(webrtc,1263 AS_HELP_STRING([--disable-webrtc],1264 [Exclude webrtc in the build]),1265 [if test "$enable_webrtc" = "no"; then1266 AC_MSG_RESULT([Checking if webrtc is disabled...yes])1267 fi],1268 [1269 if test "x$with_webrtc" != "xno" -a "x$with_webrtc" != "x"; then1270 WEBRTC_PREFIX=$with_webrtc1271 WEBRTC_CFLAGS="-I$WEBRTC_PREFIX/src"1272 1273 case $target in1274 *-apple-darwin_ios*)1275 case $ARCH in1276 *arm*)1277 WEBRTC_CFLAGS="-DPJMEDIA_WEBRTC_AEC_USE_MOBILE=1 $WEBRTC_CFLAGS"1278 WEBRTC_LDFLAGS="-L$WEBRTC_PREFIX/src/out_ios/Release-iphoneos"1279 WEBRTC_LIBS="-laudio_processing_neon -lcommon_audio_neon"1280 ;;1281 *)1282 ;;1283 esac1284 ;;1285 *mingw* | *cygw* | *win32* | *w32* | *darwin* | *linux* | *android*)1286 WEBRTC_LDFLAGS="-L$WEBRTC_PREFIX/src/out/Release"1287 WEBRTC_LIBS="-laudio_processing_sse2"1288 ;;1289 *)1290 ;;1291 esac1292 1293 AC_MSG_RESULT([Using webrtc prefix... $with_webrtc])1294 else1295 WEBRTC_CFLAGS=""1296 WEBRTC_LDFLAGS=""1297 fi1298 1299 WEBRTC_LIBS="$WEBRTC_LIBS -laudio_processing -lcommon_audio -lsystem_wrappers"1300 1301 SAVED_LIBS="$LIBS"1302 SAVED_LDFLAGS="$LDFLAGS"1303 SAVED_CFLAGS="$CFLAGS"1304 1305 LIBS="$WEBRTC_LIBS $LIBS"1306 LDFLAGS="$WEBRTC_LDFLAGS $LDFLAGS"1307 CFLAGS="$WEBRTC_CFLAGS $CFLAGS"1308 1309 AC_CHECK_LIB(audio_processing,1310 WebRtcAec_Process,1311 [ ac_webrtc_cflags="-DPJMEDIA_HAS_WEBRTC_AEC=1 $WEBRTC_CFLAGS"1312 ac_webrtc_ldflags="$WEBRTC_LDFLAGS $WEBRTC_LIBS"1313 ],1314 [ LIBS="$SAVED_LIBS"1315 LDFLAGS="$SAVED_LDFLAGS"1316 CFLAGS="$SAVED_CFLAGS"1317 ],1318 []1319 )1320 ])1321 1322 1268 dnl ######################################################## 1323 1269 dnl # Intel IPP support … … 1820 1766 1821 1767 1768 dnl # Include webrtc 1769 AC_SUBST(ac_no_webrtc) 1770 AC_SUBST(ac_webrtc_instset) 1771 AC_SUBST(ac_webrtc_cflags) 1772 AC_SUBST(ac_webrtc_ldflags) 1773 AC_ARG_ENABLE(libwebrtc, 1774 AS_HELP_STRING([--disable-libwebrtc], 1775 [Exclude libwebrtc in the build]), 1776 [if test "$enable_libwebrtc" = "no"; then 1777 [ac_no_webrtc=1] 1778 AC_DEFINE(PJMEDIA_HAS_LIBWEBRTC,0) 1779 AC_MSG_RESULT([Checking if libwebrtc is disabled...yes]) 1780 fi], 1781 [ 1782 AC_MSG_RESULT([Checking if libwebrtc is disabled...no]) 1783 case $target in 1784 *-apple-darwin_ios*) 1785 case $target in 1786 *arm*) 1787 ac_webrtc_instset=neon 1788 ;; 1789 *) 1790 ac_webrtc_instset=sse2 1791 ;; 1792 esac 1793 ;; 1794 *android*) 1795 case $TARGET_ABI in 1796 armeabi-v7a) 1797 ac_webrtc_instset=neon 1798 ac_webrtc_cflags="-mfloat-abi=softfp -mfpu=neon" 1799 ;; 1800 armeabi) 1801 ac_webrtc_instset=neon 1802 ac_webrtc_cflags="-mfloat-abi=softfp -mfpu=neon -march=armv7" 1803 ;; 1804 arm64*) 1805 ac_webrtc_instset=neon 1806 ac_webrtc_cflags="-DWEBRTC_ARCH_ARM64" 1807 ;; 1808 mips*) 1809 ac_webrtc_instset=mips 1810 ;; 1811 *) 1812 ac_webrtc_instset=sse2 1813 ;; 1814 esac 1815 ;; 1816 *mingw* | *cygw* | *win32* | *w32* | *darwin* | *linux*) 1817 ac_webrtc_instset=sse2 1818 ;; 1819 *) 1820 ;; 1821 esac 1822 ]) 1823 1824 1822 1825 dnl ########################################## 1823 1826 dnl # -
pjproject/trunk/build.mak.in
r5361 r5428 132 132 APP_THIRD_PARTY_LIBS += -lyuv 133 133 APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libyuv.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/third_party/lib/libyuv.$(SHLIB_SUFFIX) 134 endif 135 endif 136 endif 137 138 ifneq (@ac_no_webrtc@,1) 139 ifeq (@ac_external_webrtc@,1) 140 APP_THIRD_PARTY_EXT += -lwebrtc 141 else 142 APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libwebrtc-$(LIB_SUFFIX) 143 ifeq ($(PJ_SHARED_LIBRARIES),) 144 APP_THIRD_PARTY_LIBS += -lwebrtc-$(TARGET_NAME) 145 else 146 APP_THIRD_PARTY_LIBS += -lwebrtc 147 APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libwebrtc.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/third_party/lib/libwebrtc.$(SHLIB_SUFFIX) 134 148 endif 135 149 endif -
pjproject/trunk/configure-android
r5413 r5428 150 150 fi 151 151 152 export TARGET_ABI="${TARGET_ABI}" 152 153 export CC="${ANDROID_TC}/bin/${TARGET_HOST}-gcc" 153 154 export CXX="${ANDROID_TC}/bin/${TARGET_HOST}-g++" -
pjproject/trunk/pjmedia/build/os-auto.mak.in
r5361 r5428 33 33 OPENH264_LDFLAGS = @ac_openh264_ldflags@ 34 34 35 # WebRtc36 WEBRTC_CFLAGS = @ac_webrtc_cflags@37 WEBRTC_LDFLAGS = @ac_webrtc_ldflags@38 39 35 40 36 # PJMEDIA features exclusion … … 42 38 $(SDL_CFLAGS) $(FFMPEG_CFLAGS) $(V4L2_CFLAGS) $(QT_CFLAGS) \ 43 39 $(DARWIN_CFLAGS) $(ANDROID_CFLAGS) \ 44 $(OPENH264_CFLAGS) $(WEBRTC_CFLAGS)40 $(OPENH264_CFLAGS) 45 41 export LDFLAGS += $(SDL_LDFLAGS) $(FFMPEG_LDFLAGS) $(V4L2_LDFLAGS) \ 46 $(OPENH264_LDFLAGS) $(WEBRTC_LDFLAGS)42 $(OPENH264_LDFLAGS) 47 43 48 44 # Define the desired sound device backend … … 204 200 endif 205 201 202 # 203 # libwebrtc 204 # 205 ifeq (@ac_no_webrtc@,1) 206 export CFLAGS += -DPJMEDIA_HAS_WEBRTC_AEC=0 207 else 208 export CFLAGS += -DPJMEDIA_HAS_WEBRTC_AEC=1 209 ifneq ($(findstring arm,$(@ac_webrtc_instset@)),) 210 export CFLAGS += -DPJMEDIA_WEBRTC_AEC_USE_MOBILE=1 211 endif 212 213 ifeq (@ac_external_webrtc@,0) 214 export CFLAGS += -I$(THIRD_PARTY)/webrtc/src 215 endif 216 endif 217 206 218 207 219 # -
pjproject/trunk/third_party/build/os-auto.mak.in
r5412 r5428 65 65 endif 66 66 endif 67 68 ifneq (@ac_no_webrtc@,1) 69 ifeq (@ac_external_webrtc@,1) 70 # External webrtc 71 else 72 DIRS += webrtc 73 WEBRTC_OTHER_CFLAGS = -fexceptions -DWEBRTC_POSIX=1 @ac_webrtc_cflags@ 74 ifneq ($(findstring sse2,@ac_webrtc_instset@),) 75 WEBRTC_SRC = \ 76 modules/audio_processing/aec/aec_core_sse2.o \ 77 modules/audio_processing/aec/aec_rdft_sse2.o \ 78 modules/audio_processing/aecm/aecm_core_c.o \ 79 modules/audio_processing/ns/nsx_core_c.o \ 80 system_wrappers/source/cpu_features.o 81 else ifneq ($(findstring neon,@ac_webrtc_instset@),) 82 WEBRTC_SRC = \ 83 modules/audio_processing/aec/aec_core_neon.o \ 84 modules/audio_processing/aec/aec_rdft_neon.o \ 85 modules/audio_processing/aecm/aecm_core_c.o \ 86 modules/audio_processing/aecm/aecm_core_neon.o \ 87 modules/audio_processing/ns/nsx_core_c.o \ 88 modules/audio_processing/ns/nsx_core_neon.o \ 89 common_audio/signal_processing/cross_correlation_neon.o \ 90 common_audio/signal_processing/downsample_fast_neon.o \ 91 common_audio/signal_processing/min_max_operations_neon.o 92 WEBRTC_OTHER_CFLAGS += -DWEBRTC_HAS_NEON 93 else ifneq ($(findstring mips,@ac_webrtc_instset@),) 94 WEBRTC_SRC = \ 95 modules/audio_processing/aec/aec_core_mips.o \ 96 modules/audio_processing/aec/aec_rdft_mips.o \ 97 modules/audio_processing/aecm/aecm_core_mips.o \ 98 modules/audio_processing/ns/nsx_core_mips.o \ 99 common_audio/signal_processing/cross_correlation_mips.o \ 100 common_audio/signal_processing/downsample_fast_mips.o \ 101 common_audio/signal_processing/min_max_operations_mips.o 102 103 WEBRTC_OTHER_CFLAGS += -DMIPS_FPU_LE 104 endif 105 endif 106 endif
Note: See TracChangeset
for help on using the changeset viewer.