diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2016-06-28 14:32:08 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2016-06-28 14:32:08 +0000 |
commit | f2de888a88002f4812ce56c39aabf1fb773073d5 (patch) | |
tree | f83fc8015eccbf41cabf9f3c3c0b6fec27e10c57 | |
parent | 583f97ce8a39782f22741f03917d54a21178d090 (diff) |
Re #1937: Added libyuv build configs for GNU build systems.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5361 74dad513-b988-da41-8d7b-12977e46ad98
-rwxr-xr-x | aconfigure | 196 | ||||
-rw-r--r-- | aconfigure.ac | 119 | ||||
-rw-r--r-- | build.mak.in | 23 | ||||
-rw-r--r-- | build/rules.mak | 7 | ||||
-rw-r--r-- | pjmedia/build/os-auto.mak.in | 21 | ||||
-rw-r--r-- | pjsip-apps/src/swig/java/android/src/org/pjsip/pjsua2/app/MyApp.java | 3 | ||||
-rw-r--r-- | third_party/build/os-auto.mak.in | 8 | ||||
-rw-r--r-- | third_party/build/yuv/Makefile | 339 |
8 files changed, 503 insertions, 213 deletions
@@ -622,6 +622,7 @@ ac_subst_vars='LTLIBOBJS LIBOBJS ac_main_obj ac_host +ac_no_yuv opus_present opus_h_present ac_no_opus @@ -642,8 +643,6 @@ openssl_h_present ac_no_ssl ac_webrtc_ldflags ac_webrtc_cflags -ac_libyuv_ldflags -ac_libyuv_cflags ac_openh264_ldflags ac_openh264_cflags ac_v4l2_ldflags @@ -682,6 +681,7 @@ ac_pa_cflags ac_external_pa ac_pjmedia_snd ac_pjmedia_resample +ac_external_yuv ac_srtp_shutdown_present ac_srtp_deinit_present ac_external_srtp @@ -779,6 +779,7 @@ enable_shared with_external_speex with_external_gsm with_external_srtp +with_external_yuv enable_resample enable_sound with_external_pa @@ -804,8 +805,6 @@ enable_ffmpeg enable_v4l2 with_openh264 enable_openh264 -with_libyuv -enable_libyuv with_webrtc enable_webrtc enable_ipp @@ -822,6 +821,7 @@ with_silk enable_silk with_opus enable_opus +enable_libyuv ' ac_precious_vars='build_alias host_alias @@ -1474,7 +1474,6 @@ Optional Features: --disable-ffmpeg Disable ffmpeg (default: not disabled) --disable-v4l2 Disable Video4Linux2 (default: not disabled) --disable-openh264 Disable OpenH264 (default: not disabled) - --disable-libyuv Exclude libyuv in the build --disable-webrtc Exclude webrtc in the build --enable-ipp Enable Intel IPP support. Specify the Intel IPP package and samples location using IPPROOT and @@ -1491,6 +1490,7 @@ Optional Features: --disable-opus Exclude OPUS support from the build (default: autodetect) + --disable-libyuv Exclude libyuv in the build Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -1510,6 +1510,11 @@ Optional Packages: make sure that SRTP is accessible to use (hint: use CFLAGS and LDFLAGS env var to set the include/lib paths) + --with-external-yuv Use external libyuv development files, not the one + in "third_party" directory. When this option is set, + make sure that libyuv is accessible to use (hint: + use CFLAGS and LDFLAGS env var to set the + include/lib paths) --with-external-pa Use external PortAudio development files, not the one in "third_party" directory. When this option is set, make sure that PortAudio is accessible to use @@ -1518,7 +1523,6 @@ Optional Packages: --with-sdl=DIR Specify alternate libSDL prefix --with-ffmpeg=DIR Specify alternate FFMPEG prefix --with-openh264=DIR Specify alternate OpenH264 prefix - --with-libyuv=DIR Specify alternate libyuv prefix --with-webrtc=DIR Specify alternate WebRtc prefix --with-ipp=DIR Specify the Intel IPP location --with-ipp-samples=DIR Specify the Intel IPP samples location @@ -6049,6 +6053,44 @@ fi fi fi + +ac_external_yuv=0 + + +# Check whether --with-external-yuv was given. +if test "${with_external_yuv+set}" = set; then : + withval=$with_external_yuv; + if test "x$with_external_yuv" != "xno"; then + # Test libyuv installation + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if external libyuv devkit is installed" >&5 +$as_echo_n "checking if external libyuv devkit is installed... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <libyuv.h> +int +main () +{ +RGB24ToI420(0,0,0,0,0,0,0,0,0,0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes!!" >&5 +$as_echo "yes!!" >&6; } + ac_external_yuv="1" + +else + as_fn_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" "$LINENO" 5 +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + + +fi + + + ac_pjmedia_resample=libresample # Check whether --enable-resample was given. @@ -6212,6 +6254,13 @@ fi +# Disable video on mingw +case $target in + *mingw*) + enable_video="no" + ;; +esac + # Check whether --enable-video was given. if test "${enable_video+set}" = set; then : enableval=$enable_video; if test "$enable_video" = "no"; then @@ -6870,6 +6919,7 @@ $as_echo_n "checking ffmpeg packages... " >&6; } if $PKG_CONFIG --exists libswscale; then ac_ffmpeg_cflags="$ac_ffmpeg_cflags -DPJMEDIA_HAS_LIBSWSCALE=1" av_pkg="$av_pkg libswscale" + enable_libyuv="no" fi if $PKG_CONFIG --exists libavutil; then ac_ffmpeg_cflags="$ac_ffmpeg_cflags -DPJMEDIA_HAS_LIBAVUTIL=1" @@ -7108,6 +7158,7 @@ $as_echo "$ac_cv_lib_swscale_sws_scale" >&6; } if test "x$ac_cv_lib_swscale_sws_scale" = xyes; then : ac_ffmpeg_cflags="$ac_ffmpeg_cflags -DPJMEDIA_HAS_LIBSWSCALE=1" ac_ffmpeg_ldflags="$ac_ffmpeg_ldflags -lswscale" + enable_libyuv="no" fi @@ -7326,123 +7377,6 @@ fi -# Check whether --with-libyuv was given. -if test "${with_libyuv+set}" = set; then : - withval=$with_libyuv; -else - with_libyuv=no - -fi - - -if test "x$ac_cross_compile" != "x" -a "x$with_libyuv" = "xno"; then - enable_libyuv=no -fi - - - -# Check whether --enable-libyuv was given. -if test "${enable_libyuv+set}" = set; then : - enableval=$enable_libyuv; if test "$enable_libyuv" = "no"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Checking if libyuv is disabled...yes" >&5 -$as_echo "Checking if libyuv is disabled...yes" >&6; } - fi -else - - if test "x$with_libyuv" != "xno" -a "x$with_libyuv" != "x"; then - LIBYUV_PREFIX=$with_libyuv - LIBYUV_CFLAGS="-I$LIBYUV_PREFIX/include" - - case $target in - *-apple-darwin_ios*) - LIBYUV_LDFLAGS="-L$LIBYUV_PREFIX/out_ios/Release-iphoneos" - case $ARCH in - *arm*) - LIBYUV_LIBS="-lyuv_neon" - ;; - *) - ;; - esac - ;; - *mingw* | *cygw* | *win32* | *w32* | *darwin* | *linux* | *android*) - LIBYUV_LDFLAGS="-L$LIBYUV_PREFIX/out/Release" - ;; - *) - LIBYUV_CFLAGS="" - LIBYUV_LDFLAGS="" - ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using libyuv prefix... $with_libyuv" >&5 -$as_echo "Using libyuv prefix... $with_libyuv" >&6; } - else - LIBYUV_CFLAGS="" - LIBYUV_LDFLAGS="" - fi - - LIBYUV_LIBS="$LIBYUV_LIBS -lyuv" - - SAVED_LIBS="$LIBS" - SAVED_LDFLAGS="$LDFLAGS" - SAVED_CFLAGS="$CFLAGS" - - LIBS="$LIBYUV_LIBS $LIBS" - LDFLAGS="$LIBYUV_LDFLAGS $LDFLAGS" - CFLAGS="$LIBYUV_CFLAGS $CFLAGS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for I420Scale in -lyuv" >&5 -$as_echo_n "checking for I420Scale in -lyuv... " >&6; } -if ${ac_cv_lib_yuv_I420Scale+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lyuv - $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char I420Scale (); -int -main () -{ -return I420Scale (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_yuv_I420Scale=yes -else - ac_cv_lib_yuv_I420Scale=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_yuv_I420Scale" >&5 -$as_echo "$ac_cv_lib_yuv_I420Scale" >&6; } -if test "x$ac_cv_lib_yuv_I420Scale" = xyes; then : - ac_libyuv_cflags="-DPJMEDIA_HAS_LIBYUV=1 $LIBYUV_CFLAGS" - ac_libyuv_ldflags="$LIBYUV_LDFLAGS $LIBYUV_LIBS" - -else - LIBS="$SAVED_LIBS" - LDFLAGS="$SAVED_LDFLAGS" - CFLAGS="$SAVED_CFLAGS" - -fi - - -fi - - - # Check whether --with-webrtc was given. if test "${with_webrtc+set}" = set; then : @@ -8444,6 +8378,22 @@ fi +# Check whether --enable-libyuv was given. +if test "${enable_libyuv+set}" = set; then : + enableval=$enable_libyuv; if test "$enable_libyuv" = "no"; then + ac_no_yuv=1, + $as_echo "#define PJMEDIA_HAS_LIBYUV 0" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Checking if libyuv is disabled...yes" >&5 +$as_echo "Checking if libyuv is disabled...yes" >&6; } + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Checking if libyuv is disabled...no" >&5 +$as_echo "Checking if libyuv is disabled...no" >&6; } +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if select() needs correct nfds" >&5 diff --git a/aconfigure.ac b/aconfigure.ac index b0b147ce..bc4eb456 100644 --- a/aconfigure.ac +++ b/aconfigure.ac @@ -568,6 +568,27 @@ if test "x$ac_external_srtp" = "x1"; then fi fi + +dnl # Use external libyuv installation +AC_SUBST(ac_external_yuv,0) +AC_ARG_WITH(external-yuv, + AS_HELP_STRING([--with-external-yuv], + [Use external libyuv development files, not the one in "third_party" directory. When this option is set, make sure that libyuv is accessible to use (hint: use CFLAGS and LDFLAGS env var to set the include/lib paths)]), + [ + if test "x$with_external_yuv" != "xno"; then + # Test libyuv installation + AC_MSG_CHECKING([if external libyuv devkit is installed]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <libyuv.h>]], + [RGB24ToI420(0,0,0,0,0,0,0,0,0,0);])], + [AC_MSG_RESULT(yes!!) + ac_external_yuv="1" + ], + [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])]) + fi + ] + ) + + dnl # Resample implementation AC_SUBST(ac_pjmedia_resample,libresample) AC_ARG_ENABLE(resample, @@ -685,6 +706,13 @@ fi AC_SUBST(ac_pjmedia_video) +# Disable video on mingw +case $target in + *mingw*) + enable_video="no" + ;; +esac + dnl # --disable-video option AC_ARG_ENABLE(video, AS_HELP_STRING([--disable-video], @@ -1037,6 +1065,8 @@ AC_ARG_ENABLE(ffmpeg, if $PKG_CONFIG --exists libswscale; then ac_ffmpeg_cflags="$ac_ffmpeg_cflags -DPJMEDIA_HAS_LIBSWSCALE=1" av_pkg="$av_pkg libswscale" + dnl # disable libyuv when libswscale is enabled + enable_libyuv="no" fi if $PKG_CONFIG --exists libavutil; then ac_ffmpeg_cflags="$ac_ffmpeg_cflags -DPJMEDIA_HAS_LIBAVUTIL=1" @@ -1095,6 +1125,7 @@ AC_ARG_ENABLE(ffmpeg, sws_scale, [ac_ffmpeg_cflags="$ac_ffmpeg_cflags -DPJMEDIA_HAS_LIBSWSCALE=1" ac_ffmpeg_ldflags="$ac_ffmpeg_ldflags -lswscale" + enable_libyuv="no" ], [], [-lavutil] @@ -1205,82 +1236,6 @@ AC_ARG_ENABLE(openh264, ]) -dnl # libyuv alt prefix -AC_ARG_WITH(libyuv, - AS_HELP_STRING([--with-libyuv=DIR], - [Specify alternate libyuv prefix]), - [], - [with_libyuv=no] - ) - -dnl # Do not use default libyuv installation if we are cross-compiling -if test "x$ac_cross_compile" != "x" -a "x$with_libyuv" = "xno"; then - enable_libyuv=no -fi - -dnl # Include libyuv -AC_SUBST(ac_libyuv_cflags) -AC_SUBST(ac_libyuv_ldflags) -AC_ARG_ENABLE(libyuv, - AS_HELP_STRING([--disable-libyuv], - [Exclude libyuv in the build]), - [if test "$enable_libyuv" = "no"; then - AC_MSG_RESULT([Checking if libyuv is disabled...yes]) - fi], - [ - if test "x$with_libyuv" != "xno" -a "x$with_libyuv" != "x"; then - LIBYUV_PREFIX=$with_libyuv - LIBYUV_CFLAGS="-I$LIBYUV_PREFIX/include" - - case $target in - *-apple-darwin_ios*) - LIBYUV_LDFLAGS="-L$LIBYUV_PREFIX/out_ios/Release-iphoneos" - case $ARCH in - *arm*) - LIBYUV_LIBS="-lyuv_neon" - ;; - *) - ;; - esac - ;; - *mingw* | *cygw* | *win32* | *w32* | *darwin* | *linux* | *android*) - LIBYUV_LDFLAGS="-L$LIBYUV_PREFIX/out/Release" - ;; - *) - LIBYUV_CFLAGS="" - LIBYUV_LDFLAGS="" - ;; - esac - - AC_MSG_RESULT([Using libyuv prefix... $with_libyuv]) - else - LIBYUV_CFLAGS="" - LIBYUV_LDFLAGS="" - fi - - LIBYUV_LIBS="$LIBYUV_LIBS -lyuv" - - SAVED_LIBS="$LIBS" - SAVED_LDFLAGS="$LDFLAGS" - SAVED_CFLAGS="$CFLAGS" - - LIBS="$LIBYUV_LIBS $LIBS" - LDFLAGS="$LIBYUV_LDFLAGS $LDFLAGS" - CFLAGS="$LIBYUV_CFLAGS $CFLAGS" - - AC_CHECK_LIB(yuv, - I420Scale, - [ ac_libyuv_cflags="-DPJMEDIA_HAS_LIBYUV=1 $LIBYUV_CFLAGS" - ac_libyuv_ldflags="$LIBYUV_LDFLAGS $LIBYUV_LIBS" - ], - [ LIBS="$SAVED_LIBS" - LDFLAGS="$SAVED_LDFLAGS" - CFLAGS="$SAVED_CFLAGS" - ], - [] - ) - ]) - dnl # WebRtc alt prefix AC_ARG_WITH(webrtc, @@ -1834,6 +1789,18 @@ AC_ARG_ENABLE(opus, fi ]) +dnl # Include libyuv +AC_SUBST(ac_no_yuv) +AC_ARG_ENABLE(libyuv, + AS_HELP_STRING([--disable-libyuv], + [Exclude libyuv in the build]), + [if test "$enable_libyuv" = "no"; then + [ac_no_yuv=1], + AC_DEFINE(PJMEDIA_HAS_LIBYUV,0) + AC_MSG_RESULT([Checking if libyuv is disabled...yes]) + fi], + AC_MSG_RESULT([Checking if libyuv is disabled...no])) + dnl ########################################## dnl # diff --git a/build.mak.in b/build.mak.in index 62a8c29e..802211ce 100644 --- a/build.mak.in +++ b/build.mak.in @@ -121,6 +121,21 @@ endif endif endif +ifneq (@ac_no_yuv@,1) +ifeq (@ac_external_yuv@,1) +APP_THIRD_PARTY_EXT += -lyuv +else +APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libyuv-$(LIB_SUFFIX) +ifeq ($(PJ_SHARED_LIBRARIES),) +APP_THIRD_PARTY_LIBS += -lyuv-$(TARGET_NAME) +else +APP_THIRD_PARTY_LIBS += -lyuv +APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libyuv.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/third_party/lib/libyuv.$(SHLIB_SUFFIX) +endif +endif +endif + + # Additional flags @ac_build_mak_vars@ @@ -157,15 +172,11 @@ DARWIN_CFLAGS = @ac_darwin_cflags@ # Android ANDROID_CFLAGS = @ac_android_cflags@ -# libyuv -LIBYUV_CFLAGS = @ac_libyuv_cflags@ -LIBYUV_LDFLAGS = @ac_libyuv_ldflags@ - # PJMEDIA features exclusion PJ_VIDEO_CFLAGS += $(SDL_CFLAGS) $(FFMPEG_CFLAGS) $(V4L2_CFLAGS) $(QT_CFLAGS) \ - $(OPENH264_CFLAGS) $(DARWIN_CFLAGS) $(LIBYUV_CFLAGS) + $(OPENH264_CFLAGS) $(DARWIN_CFLAGS) PJ_VIDEO_LDFLAGS += $(SDL_LDFLAGS) $(FFMPEG_LDFLAGS) $(V4L2_LDFLAGS) \ - $(OPENH264_LDFLAGS) $(LIBYUV_LDFLAGS) + $(OPENH264_LDFLAGS) # CFLAGS, LDFLAGS, and LIBS to be used by applications export APP_CC := @CC@ diff --git a/build/rules.mak b/build/rules.mak index 9891bf46..8fa98655 100644 --- a/build/rules.mak +++ b/build/rules.mak @@ -51,7 +51,7 @@ OBJDIRS := $(sort $(dir $(OBJS))) # # FULL_SRCS is ../src/app/file1.c ../src/app/file1.S # -FULL_SRCS = $(foreach file, $($(APP)_OBJS), $(SRCDIR)/$(basename $(file)).m $(SRCDIR)/$(basename $(file)).c $(SRCDIR)/$(basename $(file)).cpp $(SRCDIR)/$(basename $(file)).S) +FULL_SRCS = $(foreach file, $($(APP)_OBJS), $(SRCDIR)/$(basename $(file)).m $(SRCDIR)/$(basename $(file)).c $(SRCDIR)/$(basename $(file)).cpp $(SRCDIR)/$(basename $(file)).cc $(SRCDIR)/$(basename $(file)).S) # # When generating dependency (gcc -MM), ideally we use only either @@ -174,6 +174,11 @@ $(OBJDIR)/%$(OBJEXT): $(SRCDIR)/%.cpp $(CC_OUT)$(subst /,$(HOST_PSEP),$@) \ $(subst /,$(HOST_PSEP),$<) +$(OBJDIR)/%$(OBJEXT): $(SRCDIR)/%.cc + $(CXX) $($(APP)_CXXFLAGS) \ + $(CC_OUT)$(subst /,$(HOST_PSEP),$@) \ + $(subst /,$(HOST_PSEP),$<) + $(OBJDIRS): $(subst @@,$(subst /,$(HOST_PSEP),$@),$(HOST_MKDIR)) diff --git a/pjmedia/build/os-auto.mak.in b/pjmedia/build/os-auto.mak.in index 37e7ffac..63e95a3c 100644 --- a/pjmedia/build/os-auto.mak.in +++ b/pjmedia/build/os-auto.mak.in @@ -28,10 +28,6 @@ DARWIN_CFLAGS = @ac_darwin_cflags@ # Android ANDROID_CFLAGS = @ac_android_cflags@ -# libyuv -LIBYUV_CFLAGS = @ac_libyuv_cflags@ -LIBYUV_LDFLAGS = @ac_libyuv_ldflags@ - # openh264 OPENH264_CFLAGS = @ac_openh264_cflags@ OPENH264_LDFLAGS = @ac_openh264_ldflags@ @@ -44,10 +40,10 @@ WEBRTC_LDFLAGS = @ac_webrtc_ldflags@ # PJMEDIA features exclusion export CFLAGS += @ac_no_small_filter@ @ac_no_large_filter@ @ac_no_speex_aec@ \ $(SDL_CFLAGS) $(FFMPEG_CFLAGS) $(V4L2_CFLAGS) $(QT_CFLAGS) \ - $(DARWIN_CFLAGS) $(ANDROID_CFLAGS) $(LIBYUV_CFLAGS) \ + $(DARWIN_CFLAGS) $(ANDROID_CFLAGS) \ $(OPENH264_CFLAGS) $(WEBRTC_CFLAGS) export LDFLAGS += $(SDL_LDFLAGS) $(FFMPEG_LDFLAGS) $(V4L2_LDFLAGS) \ - $(LIBYUV_LDFLAGS) $(OPENH264_LDFLAGS) $(WEBRTC_LDFLAGS) + $(OPENH264_LDFLAGS) $(WEBRTC_LDFLAGS) # Define the desired sound device backend # Valid values are: @@ -196,6 +192,19 @@ export CFLAGS += -DPJMEDIA_AUDIO_DEV_HAS_PORTAUDIO=1 endif # +# libyuv +# +ifeq (@ac_no_yuv@,1) +export CFLAGS += -DPJMEDIA_HAS_LIBYUV=0 +else +export CFLAGS += -DPJMEDIA_HAS_LIBYUV=1 +ifeq (@ac_external_yuv@,0) +export CFLAGS += -I$(THIRD_PARTY)/yuv/include +endif +endif + + +# # MacOSX specific # ifneq ($(findstring coreaudio,$(AC_PJMEDIA_SND)),) diff --git a/pjsip-apps/src/swig/java/android/src/org/pjsip/pjsua2/app/MyApp.java b/pjsip-apps/src/swig/java/android/src/org/pjsip/pjsua2/app/MyApp.java index d4fbc307..f7855db4 100644 --- a/pjsip-apps/src/swig/java/android/src/org/pjsip/pjsua2/app/MyApp.java +++ b/pjsip-apps/src/swig/java/android/src/org/pjsip/pjsua2/app/MyApp.java @@ -283,7 +283,8 @@ class MyApp { static { try{ System.loadLibrary("openh264"); - System.loadLibrary("yuv"); + // Ticket #1937: libyuv is now included as static lib + //System.loadLibrary("yuv"); } catch (UnsatisfiedLinkError e) { System.out.println("UnsatisfiedLinkError: " + e.getMessage()); System.out.println("This could be safely ignored if you " + diff --git a/third_party/build/os-auto.mak.in b/third_party/build/os-auto.mak.in index b634ce43..ef261f65 100644 --- a/third_party/build/os-auto.mak.in +++ b/third_party/build/os-auto.mak.in @@ -40,3 +40,11 @@ endif ifeq (@ac_pjmedia_resample@,libresample) DIRS += resample endif + +ifneq (@ac_no_yuv@,1) +ifeq (@ac_external_yuv@,1) +# External yuv +else +DIRS += yuv +endif +endif diff --git a/third_party/build/yuv/Makefile b/third_party/build/yuv/Makefile new file mode 100644 index 00000000..da263c55 --- /dev/null +++ b/third_party/build/yuv/Makefile @@ -0,0 +1,339 @@ +include ../../../build.mak +include ../../../build/common.mak + +export LIBDIR := ../../lib + +RULES_MAK := $(PJDIR)/build/rules.mak + +export YUV_LIB := libyuv-$(TARGET_NAME)$(LIBEXT) + +ifeq ($(PJ_SHARED_LIBRARIES),) +else +export YUV_SONAME := libyuv.$(SHLIB_SUFFIX) +export YUV_SHLIB := $(YUV_SONAME).$(PJ_VERSION_MAJOR) +endif + +############################################################################### +# Gather all flags. +# +export _CFLAGS := $(CC_CFLAGS) $(OS_CFLAGS) $(HOST_CFLAGS) $(M_CFLAGS) \ + $(CFLAGS) $(CC_INC). $(CC_INC)../../yuv/include \ + $(CC_INC)../../../pjlib/include +export _CXXFLAGS:= $(_CFLAGS) $(CC_CXXFLAGS) $(OS_CXXFLAGS) $(M_CXXFLAGS) \ + $(HOST_CXXFLAGS) $(CXXFLAGS) +export _LDFLAGS := $(CC_LDFLAGS) $(OS_LDFLAGS) $(M_LDFLAGS) $(HOST_LDFLAGS) \ + $(LDFLAGS) + +export YUV_SRCDIR = ../../yuv/source +export YUV_OBJS = \ + compare.o \ + compare_common.o \ + compare_gcc.o \ + compare_neon64.o \ + compare_neon.o \ + compare_win.o \ + convert_argb.o \ + convert.o \ + convert_from_argb.o \ + convert_from.o \ + convert_jpeg.o \ + convert_to_argb.o \ + convert_to_i420.o \ + cpu_id.o \ + mjpeg_decoder.o \ + mjpeg_validate.o \ + planar_functions.o \ + rotate_any.o \ + rotate_argb.o \ + rotate.o \ + rotate_common.o \ + rotate_gcc.o \ + rotate_mips.o \ + rotate_neon64.o \ + rotate_neon.o \ + rotate_win.o \ + row_any.o \ + row_common.o \ + row_gcc.o \ + row_mips.o \ + row_neon64.o \ + row_neon.o \ + row_win.o \ + scale_any.o \ + scale_argb.o \ + scale.o \ + scale_common.o \ + scale_gcc.o \ + scale_mips.o \ + scale_neon64.o \ + scale_neon.o \ + scale_win.o \ + video_common.o + +export YUV_CFLAGS = -fomit-frame-pointer $(_CFLAGS) +export YUV_CXXFLAGS = $(YUV_CFLAGS) + + +export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT +############################################################################### +# Main entry +# +# $(TARGET) is defined in os-$(OS_NAME).mak file in current directory. +# +TARGETS := $(YUV_LIB) $(YUV_SONAME) + +all: $(TARGETS) + +doc: + cd .. && doxygen docs/doxygen.cfg + +dep: depend +distclean: realclean + +.PHONY: all dep depend clean realclean distclean +.PHONY: $(TARGETS) +.PHONE: $(YUV_LIB) $(YUV_SONAME) + +libyuv: $(YUV_LIB) +$(YUV_SONAME): $(YUV_LIB) +$(YUV_LIB) $(YUV_SONAME): + $(MAKE) -f $(RULES_MAK) APP=YUV app=libyuv $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) + +clean print_lib: + $(MAKE) -f $(RULES_MAK) APP=YUV app=libyuv $@ + +realclean: + $(subst @@,$(subst /,$(HOST_PSEP),.yuv-$(TARGET_NAME).depend),$(HOST_RMR)) + + $(MAKE) -f $(RULES_MAK) APP=YUV app=libyuv $@ + +depend: + $(MAKE) -f $(RULES_MAK) APP=YUV app=libyuv $@ + + +include ../../../build.mak +include ../../../build/common.mak + +export LIBDIR := ../../lib + +RULES_MAK := $(PJDIR)/build/rules.mak + +export YUV_LIB := libyuv-$(TARGET_NAME)$(LIBEXT) + +ifeq ($(PJ_SHARED_LIBRARIES),) +else +export YUV_SONAME := libyuv.$(SHLIB_SUFFIX) +export YUV_SHLIB := $(YUV_SONAME).$(PJ_VERSION_MAJOR) +endif + +############################################################################### +# Gather all flags. +# +export _CFLAGS := $(CC_CFLAGS) $(OS_CFLAGS) $(HOST_CFLAGS) $(M_CFLAGS) \ + $(CFLAGS) $(CC_INC). $(CC_INC)../../yuv/include \ + $(CC_INC)../../../pjlib/include +export _CXXFLAGS:= $(_CFLAGS) $(CC_CXXFLAGS) $(OS_CXXFLAGS) $(M_CXXFLAGS) \ + $(HOST_CXXFLAGS) $(CXXFLAGS) +export _LDFLAGS := $(CC_LDFLAGS) $(OS_LDFLAGS) $(M_LDFLAGS) $(HOST_LDFLAGS) \ + $(LDFLAGS) + +export YUV_SRCDIR = ../../yuv/source +export YUV_OBJS = \ + compare.o \ + compare_common.o \ + compare_gcc.o \ + compare_neon64.o \ + compare_neon.o \ + compare_win.o \ + convert_argb.o \ + convert.o \ + convert_from_argb.o \ + convert_from.o \ + convert_jpeg.o \ + convert_to_argb.o \ + convert_to_i420.o \ + cpu_id.o \ + mjpeg_decoder.o \ + mjpeg_validate.o \ + planar_functions.o \ + rotate_any.o \ + rotate_argb.o \ + rotate.o \ + rotate_common.o \ + rotate_gcc.o \ + rotate_mips.o \ + rotate_neon64.o \ + rotate_neon.o \ + rotate_win.o \ + row_any.o \ + row_common.o \ + row_gcc.o \ + row_mips.o \ + row_neon64.o \ + row_neon.o \ + row_win.o \ + scale_any.o \ + scale_argb.o \ + scale.o \ + scale_common.o \ + scale_gcc.o \ + scale_mips.o \ + scale_neon64.o \ + scale_neon.o \ + scale_win.o \ + video_common.o + +export YUV_CFLAGS = -fomit-frame-pointer $(_CFLAGS) +export YUV_CXXFLAGS = $(YUV_CFLAGS) + + +export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT +############################################################################### +# Main entry +# +# $(TARGET) is defined in os-$(OS_NAME).mak file in current directory. +# +TARGETS := $(YUV_LIB) $(YUV_SONAME) + +all: $(TARGETS) + +doc: + cd .. && doxygen docs/doxygen.cfg + +dep: depend +distclean: realclean + +.PHONY: all dep depend clean realclean distclean +.PHONY: $(TARGETS) +.PHONE: $(YUV_LIB) $(YUV_SONAME) + +libyuv: $(YUV_LIB) +$(YUV_SONAME): $(YUV_LIB) +$(YUV_LIB) $(YUV_SONAME): + $(MAKE) -f $(RULES_MAK) APP=YUV app=libyuv $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) + +clean print_lib: + $(MAKE) -f $(RULES_MAK) APP=YUV app=libyuv $@ + +realclean: + $(subst @@,$(subst /,$(HOST_PSEP),.yuv-$(TARGET_NAME).depend),$(HOST_RMR)) + + $(MAKE) -f $(RULES_MAK) APP=YUV app=libyuv $@ + +depend: + $(MAKE) -f $(RULES_MAK) APP=YUV app=libyuv $@ + + +include ../../../build.mak +include ../../../build/common.mak + +export LIBDIR := ../../lib + +RULES_MAK := $(PJDIR)/build/rules.mak + +export YUV_LIB := libyuv-$(TARGET_NAME)$(LIBEXT) + +ifeq ($(PJ_SHARED_LIBRARIES),) +else +export YUV_SONAME := libyuv.$(SHLIB_SUFFIX) +export YUV_SHLIB := $(YUV_SONAME).$(PJ_VERSION_MAJOR) +endif + +############################################################################### +# Gather all flags. +# +export _CFLAGS := $(CC_CFLAGS) $(OS_CFLAGS) $(HOST_CFLAGS) $(M_CFLAGS) \ + $(CFLAGS) $(CC_INC). $(CC_INC)../../yuv/include \ + $(CC_INC)../../../pjlib/include +export _CXXFLAGS:= $(_CFLAGS) $(CC_CXXFLAGS) $(OS_CXXFLAGS) $(M_CXXFLAGS) \ + $(HOST_CXXFLAGS) $(CXXFLAGS) +export _LDFLAGS := $(CC_LDFLAGS) $(OS_LDFLAGS) $(M_LDFLAGS) $(HOST_LDFLAGS) \ + $(LDFLAGS) + +export YUV_SRCDIR = ../../yuv/source +export YUV_OBJS = \ + compare.o \ + compare_common.o \ + compare_gcc.o \ + compare_neon64.o \ + compare_neon.o \ + compare_win.o \ + convert_argb.o \ + convert.o \ + convert_from_argb.o \ + convert_from.o \ + convert_jpeg.o \ + convert_to_argb.o \ + convert_to_i420.o \ + cpu_id.o \ + mjpeg_decoder.o \ + mjpeg_validate.o \ + planar_functions.o \ + rotate_any.o \ + rotate_argb.o \ + rotate.o \ + rotate_common.o \ + rotate_gcc.o \ + rotate_mips.o \ + rotate_neon64.o \ + rotate_neon.o \ + rotate_win.o \ + row_any.o \ + row_common.o \ + row_gcc.o \ + row_mips.o \ + row_neon64.o \ + row_neon.o \ + row_win.o \ + scale_any.o \ + scale_argb.o \ + scale.o \ + scale_common.o \ + scale_gcc.o \ + scale_mips.o \ + scale_neon64.o \ + scale_neon.o \ + scale_win.o \ + video_common.o + +export YUV_CFLAGS = -fomit-frame-pointer $(_CFLAGS) +export YUV_CXXFLAGS = $(YUV_CFLAGS) + + +export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT +############################################################################### +# Main entry +# +# $(TARGET) is defined in os-$(OS_NAME).mak file in current directory. +# +TARGETS := $(YUV_LIB) $(YUV_SONAME) + +all: $(TARGETS) + +doc: + cd .. && doxygen docs/doxygen.cfg + +dep: depend +distclean: realclean + +.PHONY: all dep depend clean realclean distclean +.PHONY: $(TARGETS) +.PHONE: $(YUV_LIB) $(YUV_SONAME) + +libyuv: $(YUV_LIB) +$(YUV_SONAME): $(YUV_LIB) +$(YUV_LIB) $(YUV_SONAME): + $(MAKE) -f $(RULES_MAK) APP=YUV app=libyuv $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) + +clean print_lib: + $(MAKE) -f $(RULES_MAK) APP=YUV app=libyuv $@ + +realclean: + $(subst @@,$(subst /,$(HOST_PSEP),.yuv-$(TARGET_NAME).depend),$(HOST_RMR)) + + $(MAKE) -f $(RULES_MAK) APP=YUV app=libyuv $@ + +depend: + $(MAKE) -f $(RULES_MAK) APP=YUV app=libyuv $@ + + |