android / ndk

The Android Native Development Kit
1.98k stars 255 forks source link

unknown type name __uint128_t on ndk-build #190

Closed shakirali2244 closed 8 years ago

shakirali2244 commented 8 years ago

GStreamer : [GEN] => gst-build/gstreamer_android.c GStreamer : [COMPILE] => gst-build/gstreamer_android.c In file included from c:\nvpack\android-sdk-windows\ndk-bundle\platforms\android-24\arch-arm64\usr\include\signal.h:37:0, fromgstreamer-sdk-android/include/glib-2.0/glib/gbacktrace.h:35, fromgstreamer-sdk-android/include/glib-2.0/glib.h:36, from gstreamer-sdk-android/include/gstreamer-0.10/gst/gst.h:27, from gst-build/gstreamer_android.c:2: c:\nvpack\android-sdk-windows\ndk-bundle\platforms\android-24\arch-arm64\usr\include\asm\sigcontext.h:44:2: error: unknown type name '__uint128_t' __uint128_t vregs[32]; ^ make: *\ [gst-build/gstreamer_android.o] Error 1

I removed the cygwin and mingw form the PATHS, trying to compile g streamer sample app

AkshayBudhiraja commented 8 years ago

+1 I have been having the same issue with the identical error as posted above. Would appreciate any help/direction.

enh commented 8 years ago

you'll need to build with -std=gnu11 or whatever rather than -std=c11, since __uint128_t is a non-standard extension.

(even if that's a workaround for you, we should see if we can do something in the platform to make this work regardless.)

enh commented 8 years ago

actually, i'm having trouble reproducing this. can you supply the full compile invocation that fails?

AkshayBudhiraja commented 8 years ago

Thanks for replying, @enh

How do I get ndk-build to build it using gnu11? ndk-build does not recognise -std as a flag.

shakirali2244 commented 8 years ago

the invocation was following

ndk-build

I got the different log when tried to build on ubuntu

Android NDK: WARNING: APP_PLATFORM android-23 is larger than android:minSdkVersion 9 in ./AndroidManifest.xml    
make: -n: Command not found
/bin/sh: 0: Illegal option - 
/bin/sh: 0: Illegal option - 
/bin/sh: 0: Illegal option - 
/bin/sh: 0: Illegal option - 
/bin/sh: 0: Illegal option - 
/bin/sh: 0: Illegal option - 
/bin/sh: 0: Illegal option - 
/bin/sh: 0: Illegal option - 
/bin/sh: 0: Illegal option - 
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer_prebuilt.mk:65: warning: overriding commands for target `delsharedlib'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer_prebuilt.mk:65: warning: ignoring old commands for target `delsharedlib'
make: -n: Command not found
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:167: warning: overriding commands for target `genstatic'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:167: warning: ignoring old commands for target `genstatic'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:177: warning: overriding commands for target `gst-build/gstreamer_android.o'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:177: warning: ignoring old commands for target `gst-build/gstreamer_android.o'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:182: warning: overriding commands for target `buildsharedlibrary'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:182: warning: ignoring old commands for target `buildsharedlibrary'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:186: warning: overriding commands for target `copyjavasource'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:186: warning: ignoring old commands for target `copyjavasource'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:190: warning: overriding commands for target `copyfontsres'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:190: warning: ignoring old commands for target `copyfontsres'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer_prebuilt.mk:65: warning: overriding commands for target `delsharedlib'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer_prebuilt.mk:65: warning: ignoring old commands for target `delsharedlib'
make: -n: Command not found
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:167: warning: overriding commands for target `genstatic'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:167: warning: ignoring old commands for target `genstatic'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:177: warning: overriding commands for target `gst-build/gstreamer_android.o'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:177: warning: ignoring old commands for target `gst-build/gstreamer_android.o'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:182: warning: overriding commands for target `buildsharedlibrary'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:182: warning: ignoring old commands for target `buildsharedlibrary'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:186: warning: overriding commands for target `copyjavasource'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:186: warning: ignoring old commands for target `copyjavasource'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:190: warning: overriding commands for target `copyfontsres'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:190: warning: ignoring old commands for target `copyfontsres'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer_prebuilt.mk:65: warning: overriding commands for target `delsharedlib'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer_prebuilt.mk:65: warning: ignoring old commands for target `delsharedlib'
make: -n: Command not found
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:167: warning: overriding commands for target `genstatic'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:167: warning: ignoring old commands for target `genstatic'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:177: warning: overriding commands for target `gst-build/gstreamer_android.o'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:177: warning: ignoring old commands for target `gst-build/gstreamer_android.o'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:182: warning: overriding commands for target `buildsharedlibrary'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:182: warning: ignoring old commands for target `buildsharedlibrary'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:186: warning: overriding commands for target `copyjavasource'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:186: warning: ignoring old commands for target `copyjavasource'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:190: warning: overriding commands for target `copyfontsres'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:190: warning: ignoring old commands for target `copyfontsres'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer_prebuilt.mk:65: warning: overriding commands for target `delsharedlib'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer_prebuilt.mk:65: warning: ignoring old commands for target `delsharedlib'
make: -n: Command not found
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:167: warning: overriding commands for target `genstatic'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:167: warning: ignoring old commands for target `genstatic'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:177: warning: overriding commands for target `gst-build/gstreamer_android.o'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:177: warning: ignoring old commands for target `gst-build/gstreamer_android.o'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:182: warning: overriding commands for target `buildsharedlibrary'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:182: warning: ignoring old commands for target `buildsharedlibrary'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:186: warning: overriding commands for target `copyjavasource'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:186: warning: ignoring old commands for target `copyjavasource'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:190: warning: overriding commands for target `copyfontsres'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:190: warning: ignoring old commands for target `copyfontsres'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer_prebuilt.mk:65: warning: overriding commands for target `delsharedlib'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer_prebuilt.mk:65: warning: ignoring old commands for target `delsharedlib'
make: -n: Command not found
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:167: warning: overriding commands for target `genstatic'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:167: warning: ignoring old commands for target `genstatic'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:177: warning: overriding commands for target `gst-build/gstreamer_android.o'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:177: warning: ignoring old commands for target `gst-build/gstreamer_android.o'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:182: warning: overriding commands for target `buildsharedlibrary'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:182: warning: ignoring old commands for target `buildsharedlibrary'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:186: warning: overriding commands for target `copyjavasource'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:186: warning: ignoring old commands for target `copyjavasource'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:190: warning: overriding commands for target `copyfontsres'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:190: warning: ignoring old commands for target `copyfontsres'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer_prebuilt.mk:65: warning: overriding commands for target `delsharedlib'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer_prebuilt.mk:65: warning: ignoring old commands for target `delsharedlib'
make: -n: Command not found
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:167: warning: overriding commands for target `genstatic'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:167: warning: ignoring old commands for target `genstatic'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:177: warning: overriding commands for target `gst-build/gstreamer_android.o'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:177: warning: ignoring old commands for target `gst-build/gstreamer_android.o'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:182: warning: overriding commands for target `buildsharedlibrary'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:182: warning: ignoring old commands for target `buildsharedlibrary'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:186: warning: overriding commands for target `copyjavasource'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:186: warning: ignoring old commands for target `copyjavasource'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:190: warning: overriding commands for target `copyfontsres'
/home/xyz/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:190: warning: ignoring old commands for target `copyfontsres'
GStreamer      : [GEN] => gst-build/gstreamer_android.c
/bin/sh: 1: i: not found
make: [genstatic] Error 127 (ignored)
/bin/sh: 1: i: not found
make: [genstatic] Error 127 (ignored)
/bin/sh: 1: i: not found
make: [genstatic] Error 127 (ignored)
/bin/sh: 1: i: not found
make: [genstatic] Error 127 (ignored)
GStreamer      : [COMPILE] => gst-build/gstreamer_android.c
In file included from /home/xyz/android/android-ndk-r12b/platforms/android-23/arch-arm64/usr/include/signal.h:37:0,
                 from /home/xyz/android/gstreamer-sdk-android/include/glib-2.0/glib/gbacktrace.h:35,
                 from /home/xyz/android/gstreamer-sdk-android/include/glib-2.0/glib.h:36,
                 from /home/xyz/android/gstreamer-sdk-android/include/gstreamer-0.10/gst/gst.h:27,
                 from gst-build/gstreamer_android.c:2:
/home/xyz/android/android-ndk-r12b/platforms/android-23/arch-arm64/usr/include/asm/sigcontext.h:44:2: error: unknown type name '__uint128_t'
  __uint128_t vregs[32];
  ^
gst-build/gstreamer_android.c:9:2: error: stray '@' in program
  @PLUGINS_DECLARATION@
  ^
gst-build/gstreamer_android.c:9:22: error: stray '@' in program
  @PLUGINS_DECLARATION@
                      ^
gst-build/gstreamer_android.c:12:2: error: stray '@' in program
  @G_IO_MODULES_DECLARE@
  ^
gst-build/gstreamer_android.c:9:3: error: unknown type name 'PLUGINS_DECLARATION'
  @PLUGINS_DECLARATION@
   ^
gst-build/gstreamer_android.c:12:23: error: stray '@' in program
  @G_IO_MODULES_DECLARE@
                       ^
gst-build/gstreamer_android.c:15:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'void'
 void
 ^
gst-build/gstreamer_android.c:18:2: error: stray '@' in program
  @PLUGINS_REGISTRATION@
  ^
gst-build/gstreamer_android.c:18:23: error: stray '@' in program
  @PLUGINS_REGISTRATION@
                       ^
gst-build/gstreamer_android.c: In function 'gst_android_load_gio_modules':
gst-build/gstreamer_android.c:25:2: error: stray '@' in program
  @G_IO_MODULES_LOAD@
  ^
gst-build/gstreamer_android.c:25:20: error: stray '@' in program
  @G_IO_MODULES_LOAD@
                    ^
gst-build/gstreamer_android.c:25:3: error: 'G_IO_MODULES_LOAD' undeclared (first use in this function)
  @G_IO_MODULES_LOAD@
   ^
gst-build/gstreamer_android.c:25:3: note: each undeclared identifier is reported only once for each function it appears in
gst-build/gstreamer_android.c:26:1: error: expected ';' before '}' token
 }
 ^
gst-build/gstreamer_android.c: In function 'gst_android_init':
gst-build/gstreamer_android.c:388:3: error: implicit declaration of function 'gst_android_register_static_plugins' [-Werror=implicit-function-declaration]
   gst_android_register_static_plugins ();
   ^
cc1: all warnings being treated as errors
make: *** [gst-build/gstreamer_android.o] Error 1
enh commented 8 years ago

https://developer.android.com/ndk/guides/ndk-build.html says to use V=1 to see the command lines.

DanAlbert commented 8 years ago

@AkshayBudhiraja: It's not an ndk-build flag. You need to add it to LOCAL_CFLAGS.

shakirali2244 commented 8 years ago

@DanAlbert I tried to add it to gstreamer.mk and android.mk . It doesnt seem to change anything I am using GStreamer SDK 2013.6 (Congo) for Android ARM with android-ndk-r12b

Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := tutorial-1
LOCAL_SRC_FILES := tutorial-1.c
LOCAL_SHARED_LIBRARIES := gstreamer_android
LOCAL_LDLIBS := -llog
LOCAL_CFLAGS += -std=gnu11
include $(BUILD_SHARED_LIBRARY)

ifndef GSTREAMER_SDK_ROOT
ifndef GSTREAMER_SDK_ROOT_ANDROID
$(error GSTREAMER_SDK_ROOT_ANDROID is not defined!)
endif
GSTREAMER_SDK_ROOT        := $(GSTREAMER_SDK_ROOT_ANDROID)
endif
GSTREAMER_NDK_BUILD_PATH  := $(GSTREAMER_SDK_ROOT)/share/gst-android/ndk-build/
GSTREAMER_PLUGINS         := coreelements
include $(GSTREAMER_NDK_BUILD_PATH)/gstreamer.mk

gstreamer.mk

# cerbero - a multi-platform build system for Open Source software
# Copyright (C) 2012 Andoni Morales Alastruey <ylatuya@gmail.com>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.

$(call assert-defined, GSTREAMER_SDK_ROOT)
$(if $(wildcard $(GSTREAMER_SDK_ROOT)),,\
  $(error "The directory GSTREAMER_SDK_ROOT=$(GSTREAMER_SDK_ROOT) does not exists")\
)

#####################
#  Setup variables  #
#####################

ifndef GSTREAMER_PLUGINS
  $(info "The list of GSTREAMER_PLUGINS is empty")
endif

# Expand home directory (~/)
GSTREAMER_SDK_ROOT := $(wildcard $(GSTREAMER_SDK_ROOT))

# Path for GStreamer static plugins
ifndef GSTREAMER_STATIC_PLUGINS_PATH
GSTREAMER_STATIC_PLUGINS_PATH := lib/gstreamer-0.10
endif
GSTREAMER_STATIC_PLUGINS_PATH := $(GSTREAMER_SDK_ROOT)/lib/gstreamer-0.10/static

# Path for the NDK integration makefiles
ifndef GSTREAMER_NDK_BUILD_PATH
GSTREAMER_NDK_BUILD_PATH := $(GSTREAMER_SDK_ROOT)/share/gst-android/ndk-build
endif

# Include tools
include $(GSTREAMER_NDK_BUILD_PATH)/tools.mk

# Path for the static GIO modules
G_IO_MODULES_PATH := $(GSTREAMER_SDK_ROOT)/lib/gio/modules/static

# Host tools
ifeq ($(HOST_OS),windows)
    HOST_SED := $(GSTREAMER_NDK_BUILD_PATH)/tools/windows/sed
    GSTREAMER_LD :=
else
endif

GSTREAMER_ANDROID_MODULE_NAME := gstreamer_android
GSTREAMER_BUILD_DIR           := gst-build
GSTREAMER_ANDROID_O           := $(GSTREAMER_BUILD_DIR)/$(GSTREAMER_ANDROID_MODULE_NAME).o
GSTREAMER_ANDROID_SO          := $(GSTREAMER_BUILD_DIR)/lib$(GSTREAMER_ANDROID_MODULE_NAME).so
GSTREAMER_ANDROID_C           := $(GSTREAMER_BUILD_DIR)/$(GSTREAMER_ANDROID_MODULE_NAME).c
GSTREAMER_ANDROID_C_IN        := $(GSTREAMER_NDK_BUILD_PATH)/gstreamer_android.c.in
GSTREAMER_DEPS                := $(GSTREAMER_EXTRA_DEPS) gstreamer-0.10
GSTREAMER_LD                  := -fuse-ld=gold

################################
#  NDK Build Prebuilt library  #
################################

# Declare a prebuilt library module, a shared library including
# gstreamer, its dependencies and all its plugins.
# Since the shared library is not really prebuilt, but will be built
# using the defined rules in this file, we can't use the
# PREBUILT_SHARED_LIBRARY makefiles like explained in the docs,
# as it checks for the existance of the shared library. We therefore
# use a custom gstreamer_prebuilt.mk, which skips this step

include $(CLEAR_VARS)
LOCAL_CFLAGS += -std=gnu11
LOCAL_MODULE            := $(GSTREAMER_ANDROID_MODULE_NAME)
LOCAL_SRC_FILES         := $(GSTREAMER_ANDROID_SO)
LOCAL_BUILD_SCRIPT      := PREBUILT_SHARED_LIBRARY
LOCAL_MODULE_CLASS      := PREBUILT_SHARED_LIBRARY
LOCAL_MAKEFILE          := $(local-makefile)
LOCAL_PREBUILT_PREFIX   := lib
LOCAL_PREBUILT_SUFFIX   := .so
LOCAL_EXPORT_C_INCLUDES := $(subst -I$1, $1, $(call pkg-config-get-includes,$(GSTREAMER_DEPS)))
LOCAL_EXPORT_C_INCLUDES += $(GSTREAMER_SDK_ROOT)/include

##################################################################
#   Our custom rules to create a shared libray with gstreamer    #
#   and the requested plugins in GSTREAMER_PLUGINS starts here   #
##################################################################

include $(GSTREAMER_NDK_BUILD_PATH)/gstreamer_prebuilt.mk
# This triggers the build of our library using our custom rules
$(GSTREAMER_ANDROID_SO): buildsharedlibrary copyjavasource copyfontsres

# Some plugins use a different name for the module name, like the playback
# plugin, which uses playbin for the module name: libgstplaybin.so
fix-plugin-name = \
    $(subst gst$1 ,gst$2 ,$(GSTREAMER_PLUGINS_LIBS))

fix-deps = \
    $(subst $1,$1 $2,$(GSTREAMER_ANDROID_LIBS))

# Generate list of plugin links (eg: -lcoreelements -lvideoscale)
GSTREAMER_PLUGINS_LIBS       := $(foreach plugin, $(GSTREAMER_PLUGINS), -lgst$(plugin) )
GSTREAMER_PLUGINS_LIBS       := $(call fix-plugin-name,playback,playbin)
GSTREAMER_PLUGINS_LIBS       := $(call fix-plugin-name,uridecodebin,decodebin2)
GSTREAMER_PLUGINS_LIBS       := $(call fix-plugin-name,encoding,encodebin)
GSTREAMER_PLUGINS_LIBS       := $(call fix-plugin-name,soup,souphttpsrc)
GSTREAMER_PLUGINS_LIBS       := $(call fix-plugin-name,gstsiren,siren)
GSTREAMER_PLUGINS_LIBS       := $(call fix-plugin-name,sdp,sdpelem)
GSTREAMER_PLUGINS_LIBS       := $(call fix-plugin-name,gstrtpmanager,rtpmanager)
GSTREAMER_PLUGINS_LIBS       := $(call fix-plugin-name,scaletempo,scaletempoplugin)
GSTREAMER_PLUGINS_LIBS       := $(call fix-plugin-name,mpegdemux2,mpegdemux)
GSTREAMER_PLUGINS_LIBS       := $(call fix-plugin-name,realmedia,rmdemux)
GSTREAMER_PLUGINS_LIBS       := $(subst gstgnonlin,gnl,$(GSTREAMER_PLUGINS_LIBS))

# Generate the plugins' declaration strings
GSTREAMER_PLUGINS_DECLARE    := $(foreach plugin, $(GSTREAMER_PLUGINS), \
            GST_PLUGIN_STATIC_DECLARE($(plugin));\n)
# Generate the plugins' registration strings
GSTREAMER_PLUGINS_REGISTER   := $(foreach plugin, $(GSTREAMER_PLUGINS), \
            GST_PLUGIN_STATIC_REGISTER($(plugin));\n)

# Generate list of gio modules
G_IO_MODULES_PATH            := $(foreach path, $(G_IO_MODULES_PATH), -L$(path))
G_IO_MODULES_LIBS            := $(foreach module, $(G_IO_MODULES), -lgio$(module))
G_IO_MODULES_DECLARE         := $(foreach module, $(G_IO_MODULES), \
            G_IO_MODULE_DECLARE(gnutls);\n)
G_IO_MODULES_LOAD            := $(foreach module, $(G_IO_MODULES), \
            G_IO_MODULE_LOAD(gnutls);\n)

# Get the full list of libraries
# link at least to gstreamer-0.10 in case the plugins list is empty
GSTREAMER_ANDROID_LIBS       := $(call pkg-config-get-libs,$(GSTREAMER_DEPS))
GSTREAMER_ANDROID_LIBS       += $(GSTREAMER_PLUGINS_LIBS) $(G_IO_MODULES_LIBS) -llog -lz
GSTREAMER_ANDROID_WHOLE_AR   := $(call pkg-config-get-libs-no-deps,$(GSTREAMER_DEPS))
# Fix deps for giognutls
GSTREAMER_ANDROID_LIBS       := $(call fix-deps,-lgiognutls, -lhogweed)
GSTREAMER_ANDROID_CFLAGS     := $(call pkg-config-get-includes,$(GSTREAMER_DEPS)) -I$(GSTREAMER_SDK_ROOT)/include

# In newer NDK, SYSROOT is replaced by SYSROOT_INC and SYSROOT_LINK, which
# now points to the root directory. But this will probably change in the future from:
# https://android.googlesource.com/platform/ndk/+/fa8c1b4338c1bef2813ecee0ee298e9498a1aaa7
ifndef SYSROOT
    SYSROOT := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-$(TARGET_ARCH)
endif

# Create the link command
GSTREAMER_ANDROID_CMD        := $(call libtool-link,$(TARGET_CC) $(TARGET_LDFLAGS) -shared --sysroot=$(SYSROOT) \
    -o $(GSTREAMER_ANDROID_SO) $(GSTREAMER_ANDROID_O) \
    -L$(GSTREAMER_SDK_ROOT)/lib -L$(GSTREAMER_STATIC_PLUGINS_PATH) $(G_IO_MODULES_PATH) \
    $(GSTREAMER_ANDROID_LIBS), $(GSTREAMER_LD)) -Wl,-no-undefined $(GSTREAMER_LD)
GSTREAMER_ANDROID_CMD        := $(call libtool-whole-archive,$(GSTREAMER_ANDROID_CMD),$(GSTREAMER_ANDROID_WHOLE_AR))

# Generates a source file that declares and registers all the required plugins
genstatic:
    @$(HOST_ECHO) "GStreamer      : [GEN] => $(GSTREAMER_ANDROID_C)"
    @$(call host-mkdir,$(GSTREAMER_BUILD_DIR))
    @$(call host-cp,$(GSTREAMER_ANDROID_C_IN),$(GSTREAMER_ANDROID_C))
    @$(HOST_SED) -i "s/@PLUGINS_DECLARATION@/$(GSTREAMER_PLUGINS_DECLARE)/g" $(GSTREAMER_ANDROID_C)
    @$(HOST_SED) -i "s/@PLUGINS_REGISTRATION@/$(GSTREAMER_PLUGINS_REGISTER)/g" $(GSTREAMER_ANDROID_C)
    @$(HOST_SED) -i "s/@G_IO_MODULES_LOAD@/$(G_IO_MODULES_LOAD)/g" $(GSTREAMER_ANDROID_C)
    @$(HOST_SED) -i "s/@G_IO_MODULES_DECLARE@/$(G_IO_MODULES_DECLARE)/g" $(GSTREAMER_ANDROID_C)

# Compile the source file
$(GSTREAMER_ANDROID_O): genstatic
    @$(HOST_ECHO) "GStreamer      : [COMPILE] => $(GSTREAMER_ANDROID_C)"
    @$(TARGET_CC) --sysroot=$(SYSROOT) $(TARGET_CFLAGS) -c $(GSTREAMER_ANDROID_C) -Wall -Werror -o $(GSTREAMER_ANDROID_O) $(GSTREAMER_ANDROID_CFLAGS)

# Creates a shared library including gstreamer, its plugins and all the dependencies
buildsharedlibrary: $(GSTREAMER_ANDROID_O)
    @$(HOST_ECHO) "GStreamer      : [LINK] => $(GSTREAMER_ANDROID_SO)"
    @$(GSTREAMER_ANDROID_CMD)

copyjavasource:
    @$(call host-mkdir,src/com/gstreamer)
    @$(call host-cp,$(GSTREAMER_NDK_BUILD_PATH)/GStreamer.java,src/com/gstreamer)

copyfontsres:
    @$(call host-mkdir,assets/fontconfig)
    @$(call host-mkdir,assets/fontconfig/fonts/truetype/)
    @$(call host-cp,$(GSTREAMER_NDK_BUILD_PATH)/fontconfig/fonts.conf,assets/fontconfig)
    @$(call host-cp,$(GSTREAMER_NDK_BUILD_PATH)/fontconfig/fonts/Ubuntu-R.ttf,assets/fontconfig/fonts/truetype)
enh commented 8 years ago

we need to see some output from "make V=1" so we can see what your command-line looks like and what NDK version you're running et etcetera. as i said above, i can't actually reproduce this warning with clang or gcc, with any -std setting, -Wall -Wextra or -pedantic, ...

shakirali2244 commented 8 years ago

@enh

I am using Streamer SDK 2013.6 (Congo) for Android ARM with android-ndk-r12b

$ ndk-build V=1
Android NDK: WARNING: APP_PLATFORM android-23 is larger than android:minSdkVersion 9 in ./AndroidManifest.xml    
make: -n: Command not found
/bin/sh: 0: Illegal option - 
/bin/sh: 0: Illegal option - 
/bin/sh: 0: Illegal option - 
/bin/sh: 0: Illegal option - 
/bin/sh: 0: Illegal option - 
/bin/sh: 0: Illegal option - 
/bin/sh: 0: Illegal option - 
/bin/sh: 0: Illegal option - 
/bin/sh: 0: Illegal option - 
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer_prebuilt.mk:65: warning: overriding commands for target `delsharedlib'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer_prebuilt.mk:65: warning: ignoring old commands for target `delsharedlib'
make: -n: Command not found
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:167: warning: overriding commands for target `genstatic'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:167: warning: ignoring old commands for target `genstatic'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:177: warning: overriding commands for target `gst-build/gstreamer_android.o'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:177: warning: ignoring old commands for target `gst-build/gstreamer_android.o'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:182: warning: overriding commands for target `buildsharedlibrary'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:182: warning: ignoring old commands for target `buildsharedlibrary'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:186: warning: overriding commands for target `copyjavasource'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:186: warning: ignoring old commands for target `copyjavasource'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:190: warning: overriding commands for target `copyfontsres'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:190: warning: ignoring old commands for target `copyfontsres'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer_prebuilt.mk:65: warning: overriding commands for target `delsharedlib'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer_prebuilt.mk:65: warning: ignoring old commands for target `delsharedlib'
make: -n: Command not found
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:167: warning: overriding commands for target `genstatic'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:167: warning: ignoring old commands for target `genstatic'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:177: warning: overriding commands for target `gst-build/gstreamer_android.o'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:177: warning: ignoring old commands for target `gst-build/gstreamer_android.o'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:182: warning: overriding commands for target `buildsharedlibrary'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:182: warning: ignoring old commands for target `buildsharedlibrary'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:186: warning: overriding commands for target `copyjavasource'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:186: warning: ignoring old commands for target `copyjavasource'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:190: warning: overriding commands for target `copyfontsres'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:190: warning: ignoring old commands for target `copyfontsres'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer_prebuilt.mk:65: warning: overriding commands for target `delsharedlib'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer_prebuilt.mk:65: warning: ignoring old commands for target `delsharedlib'
make: -n: Command not found
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:167: warning: overriding commands for target `genstatic'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:167: warning: ignoring old commands for target `genstatic'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:177: warning: overriding commands for target `gst-build/gstreamer_android.o'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:177: warning: ignoring old commands for target `gst-build/gstreamer_android.o'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:182: warning: overriding commands for target `buildsharedlibrary'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:182: warning: ignoring old commands for target `buildsharedlibrary'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:186: warning: overriding commands for target `copyjavasource'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:186: warning: ignoring old commands for target `copyjavasource'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:190: warning: overriding commands for target `copyfontsres'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:190: warning: ignoring old commands for target `copyfontsres'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer_prebuilt.mk:65: warning: overriding commands for target `delsharedlib'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer_prebuilt.mk:65: warning: ignoring old commands for target `delsharedlib'
make: -n: Command not found
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:167: warning: overriding commands for target `genstatic'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:167: warning: ignoring old commands for target `genstatic'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:177: warning: overriding commands for target `gst-build/gstreamer_android.o'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:177: warning: ignoring old commands for target `gst-build/gstreamer_android.o'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:182: warning: overriding commands for target `buildsharedlibrary'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:182: warning: ignoring old commands for target `buildsharedlibrary'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:186: warning: overriding commands for target `copyjavasource'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:186: warning: ignoring old commands for target `copyjavasource'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:190: warning: overriding commands for target `copyfontsres'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:190: warning: ignoring old commands for target `copyfontsres'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer_prebuilt.mk:65: warning: overriding commands for target `delsharedlib'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer_prebuilt.mk:65: warning: ignoring old commands for target `delsharedlib'
make: -n: Command not found
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:167: warning: overriding commands for target `genstatic'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:167: warning: ignoring old commands for target `genstatic'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:177: warning: overriding commands for target `gst-build/gstreamer_android.o'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:177: warning: ignoring old commands for target `gst-build/gstreamer_android.o'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:182: warning: overriding commands for target `buildsharedlibrary'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:182: warning: ignoring old commands for target `buildsharedlibrary'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:186: warning: overriding commands for target `copyjavasource'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:186: warning: ignoring old commands for target `copyjavasource'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:190: warning: overriding commands for target `copyfontsres'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:190: warning: ignoring old commands for target `copyfontsres'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer_prebuilt.mk:65: warning: overriding commands for target `delsharedlib'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer_prebuilt.mk:65: warning: ignoring old commands for target `delsharedlib'
make: -n: Command not found
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:167: warning: overriding commands for target `genstatic'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:167: warning: ignoring old commands for target `genstatic'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:177: warning: overriding commands for target `gst-build/gstreamer_android.o'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:177: warning: ignoring old commands for target `gst-build/gstreamer_android.o'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:182: warning: overriding commands for target `buildsharedlibrary'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:182: warning: ignoring old commands for target `buildsharedlibrary'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:186: warning: overriding commands for target `copyjavasource'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:186: warning: ignoring old commands for target `copyjavasource'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:190: warning: overriding commands for target `copyfontsres'
/home/shakir/android/gstreamer-sdk-android/share/gst-android/ndk-build//gstreamer.mk:190: warning: ignoring old commands for target `copyfontsres'
rm -f ./libs/arm64-v8a/lib*.so ./libs/armeabi/lib*.so ./libs/armeabi-v7a/lib*.so ./libs/mips/lib*.so ./libs/mips64/lib*.so ./libs/x86/lib*.so ./libs/x86_64/lib*.so
rm -f ./libs/arm64-v8a/gdbserver ./libs/armeabi/gdbserver ./libs/armeabi-v7a/gdbserver ./libs/mips/gdbserver ./libs/mips64/gdbserver ./libs/x86/gdbserver ./libs/x86_64/gdbserver
rm -f ./libs/arm64-v8a/gdb.setup ./libs/armeabi/gdb.setup ./libs/armeabi-v7a/gdb.setup ./libs/mips/gdb.setup ./libs/mips64/gdb.setup ./libs/x86/gdb.setup ./libs/x86_64/gdb.setup
GStreamer      : [GEN] => gst-build/gstreamer_android.c
/bin/sh: 1: i: not found
make: [genstatic] Error 127 (ignored)
/bin/sh: 1: i: not found
make: [genstatic] Error 127 (ignored)
/bin/sh: 1: i: not found
make: [genstatic] Error 127 (ignored)
/bin/sh: 1: i: not found
make: [genstatic] Error 127 (ignored)
GStreamer      : [COMPILE] => gst-build/gstreamer_android.c
In file included from /home/shakir/android/android-ndk-r12b/platforms/android-23/arch-arm64/usr/include/signal.h:37:0,
                 from /home/shakir/android/gstreamer-sdk-android/include/glib-2.0/glib/gbacktrace.h:35,
                 from /home/shakir/android/gstreamer-sdk-android/include/glib-2.0/glib.h:36,
                 from /home/shakir/android/gstreamer-sdk-android/include/gstreamer-0.10/gst/gst.h:27,
                 from gst-build/gstreamer_android.c:2:
/home/shakir/android/android-ndk-r12b/platforms/android-23/arch-arm64/usr/include/asm/sigcontext.h:44:2: error: unknown type name '__uint128_t'
  __uint128_t vregs[32];
  ^
gst-build/gstreamer_android.c:9:2: error: stray '@' in program
  @PLUGINS_DECLARATION@
  ^
gst-build/gstreamer_android.c:9:22: error: stray '@' in program
  @PLUGINS_DECLARATION@
                      ^
gst-build/gstreamer_android.c:12:2: error: stray '@' in program
  @G_IO_MODULES_DECLARE@
  ^
gst-build/gstreamer_android.c:9:3: error: unknown type name 'PLUGINS_DECLARATION'
  @PLUGINS_DECLARATION@
   ^
gst-build/gstreamer_android.c:12:23: error: stray '@' in program
  @G_IO_MODULES_DECLARE@
                       ^
gst-build/gstreamer_android.c:15:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'void'
 void
 ^
gst-build/gstreamer_android.c:18:2: error: stray '@' in program
  @PLUGINS_REGISTRATION@
  ^
gst-build/gstreamer_android.c:18:23: error: stray '@' in program
  @PLUGINS_REGISTRATION@
                       ^
gst-build/gstreamer_android.c: In function 'gst_android_load_gio_modules':
gst-build/gstreamer_android.c:25:2: error: stray '@' in program
  @G_IO_MODULES_LOAD@
  ^
gst-build/gstreamer_android.c:25:20: error: stray '@' in program
  @G_IO_MODULES_LOAD@
                    ^
gst-build/gstreamer_android.c:25:3: error: 'G_IO_MODULES_LOAD' undeclared (first use in this function)
  @G_IO_MODULES_LOAD@
   ^
gst-build/gstreamer_android.c:25:3: note: each undeclared identifier is reported only once for each function it appears in
gst-build/gstreamer_android.c:26:1: error: expected ';' before '}' token
 }
 ^
gst-build/gstreamer_android.c: In function 'gst_android_init':
gst-build/gstreamer_android.c:388:3: error: implicit declaration of function 'gst_android_register_static_plugins' [-Werror=implicit-function-declaration]
   gst_android_register_static_plugins ();
   ^
cc1: all warnings being treated as errors
make: *** [gst-build/gstreamer_android.o] Error 1
DanAlbert commented 8 years ago
make: -n: Command not found
/bin/sh: 0: Illegal option - 
/bin/sh: 0: Illegal option - 
/bin/sh: 0: Illegal option - 
/bin/sh: 0: Illegal option - 
/bin/sh: 0: Illegal option - 
/bin/sh: 0: Illegal option - 
/bin/sh: 0: Illegal option - 
/bin/sh: 0: Illegal option - 
/bin/sh: 0: Illegal option -

This is the part that looks completely broken to me.

Based on your first post, you're on Windows, right? Based on the above post, you're using cygwin?

Googling "make -n command not found" finds: http://stackoverflow.com/questions/13375635/compiling-gstreamer-sdk-for-android-on-windows-7

Ugh. Apparently we've had cygwin broken for a while and you're the first one to actually file a bug about it.

DanAlbert commented 8 years ago

Wow, just saw the date on that. Assuming he's right, it does appear to be the same issue though.

DanAlbert commented 8 years ago

Okay, a little more research makes it look like this isn't actually an issue with NDK+cygwin, but rather just that gstreamer isn't compatible with anything newer than NDK r9: http://stackoverflow.com/questions/30844238/unable-to-build-gstreamer-using-android-ndk

DanAlbert commented 8 years ago
gst-build/gstreamer_android.c:9:2: error: stray '@' in program
  @PLUGINS_DECLARATION@
  ^
GSTREAMER_ANDROID_C_IN        := $(GSTREAMER_NDK_BUILD_PATH)/gstreamer_android.c.in

So, that seems to confirm the feedback in that SO post. That definitely looks like a template source file that didn't get sed'd properly.

This all looks like bugs in gstreamer, not the NDK. You'll have to file bugs against them, but based on some of those SO posts and the dates on their Android docs, I think their NDK support might be abandoned...

shakirali2244 commented 8 years ago

@DanAlbert first post was on windows but not with cygwin apprently. cygwin gcc is not being used since I removed it from my path. Is it the integrated toolchain included in ndk.

For the second post , it is in ubuntu. but you can see it is a similar output

enh commented 7 years ago

fwiw, gstreamer did upgrade to r10e in 2015, removing the need for HOST_SED mentioned on that stackoverflow page: https://bugzilla.gnome.org/show_bug.cgi?id=750162

i'm here because i saw the __uint128_t error building strace 4.16 out of the box with NDK r15beta2. it turns out that if i use gcc it builds, but clang complains about __uint128_t unless i supply -std=gnu11 (which is confusing to me because i thought clang defaulted to gnu11 while gcc defaulted to gnu89).

enh commented 7 years ago

trying strace again:

/tmp/n-standalone-toolchain-arm64/bin/aarch64-linux-android-clang -DHAVE_CONFIG_H -I./linux/aarch64 -I./linux/aarch64 -I./linux -I./linux -I. -I. -DMPERS_IS_m32 -gdwarf-2 -c -m32 mpers-m32/struct_blk_user_trace_setup.c -o mpers-m32/struct_blk_user_trace_setup.o

so it's actually the -m32 aarch64 combo that's having trouble with __uint128_t.

i think i must have got muddled up last week because gcc seems to work but clang doesn't. that seems consistent with the clang source, too, which says you only get __uint128_t if you're LP64.

i think gcc gets away with it because we don't actually use this type, so it's never called upon to do anything but parse __uint128_t.

not sure what the right fix is here, because i don't know what -m32 aarch64 is even supposed to mean.

DanAlbert commented 7 years ago

I'm surprised the driver doesn't outright reject it. I didn't think that was supposed to work at all. We definitely don't copy the 32-bit libs into an aarch64 standalone toolchain.

enh commented 7 years ago

it certainly seems a very x86-centric assumption on the part of strace...

On Fri, May 5, 2017 at 4:34 PM, Dan Albert notifications@github.com wrote:

I'm surprised the driver doesn't outright reject it. I didn't think that was supposed to work at all. We definitely don't copy the 32-bit libs into an aarch64 standalone toolchain.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/android-ndk/ndk/issues/190#issuecomment-299598349, or mute the thread https://github.com/notifications/unsubscribe-auth/ACR2LR-KO3v9kdEuXlTCpYj7nJ5ffAMcks5r27H0gaJpZM4J3gig .

-- Elliott Hughes - http://who/enh - http://jessies.org/~enh/ Android native code/tools questions? Mail me/drop by/add me as a reviewer.

bsergean commented 7 years ago

I'm also seeing this, while trying to build luajit in 64 bits mode on Android. I have tried with gcc and clang and I got the same result.

...
CC        lj_lex.o
In file included from /tools/android/android-ndk/platforms/android-21/arch-arm64/usr/include/signal.h:37:0,
                 from lj_profile.c:28:
/tools/android/android-ndk/platforms/android-21/arch-arm64/usr/include/asm/sigcontext.h:44:2: error: unknown type name '__uint128_t'
  __uint128_t vregs[32];
  ^
enh commented 7 years ago

@bsergean that's probably not the same. why would luajit use -m32?

bsergean commented 7 years ago

Yes I was confused ... did the usual thing of googling my error message and ended up here. I needed to pass a -arch x86_64 to the compiler when compiling for android 64 bits. Snippet below in case someone end up here just like me. Our build script is a variation of such those scripts

    .... handle all arch
    elif [ "$arch" == "aarch64" ]; then
        # armv8a
        echo "[building aarch64]"

        NDKVER=$NDK/toolchains/aarch64-linux-android-4.9
        NDKP=$NDKVER/prebuilt/${host_os}-x86_64/bin/aarch64-linux-android-
        NDKF="--sysroot $NDK/platforms/android-$NDKABI/arch-arm64"

        TARGET_FLAGS="$NDKF"
        OUT_SUBDIR=armeabi-v8a
    fi;

    make clean
    make -j8 \
        HOST_CC="clang -m32 -arch x86_64" \
        CROSS=$NDKP \
        TARGET_SYS=Linux \
        TARGET_FLAGS="$TARGET_FLAGS"
DanAlbert commented 7 years ago

That script is very wrong. You'll have an easier time just using a standalone toolchain.

cmeng-git commented 6 years ago

I face a similar problem when using ndk-r16b to build libvpx-1.7.0 for "arm64-v8a" on ubuntu 16.04. libvpx uses configure option --sdk-path=${NDK} to define ndk version use. In fact I need to add below option to the configure option, otherwise ndk-r16b not even able to build all other ABIs: see; https://github.com/google/ExoPlayer/issues/3520 --extra-cflags="-isystem ${NDK}/sysroot/usr/include/${NDK_ABIARCH} -isystem ${NDK}/sysroot/usr/include"

With "arm64-v8a" build, CC throws the following errors

    [CC] vpx_dsp/prob.c.o
In file included from /opt/android/android-ndk-r15c/sysroot/usr/include/signal.h:35:0,
                 from /opt/android/android-ndk-r15c/sysroot/usr/include/sys/select.h:36,
                 from /opt/android/android-ndk-r15c/sysroot/usr/include/sys/time.h:37,
                 from /opt/android/android-ndk-r15c/sysroot/usr/include/time.h:33,
                 from /opt/android/android-ndk-r15c/sysroot/usr/include/pthread.h:37,
                 from ./vpx_ports/vpx_once.h:118,
                 from vpx_scale/vpx_scale_rtcd.c:13:
/opt/android/android-ndk-r15c/sysroot/usr/include/aarch64-linux-android/asm/sigcontext.h:44:3: error: unknown type name '__uint128_t'
   __uint128_t vregs[32];
   ^

Please refer to: https://github.com/cmeng-git/ffmpeg-android and use the following steps to reproduce the problem. a. git clone https://github.com/cmeng-git/ffmpeg-android.git ./ffmpeg-android b. cd ffmpeg-android c. export ANDROID_NDK= d. ./init_update_libs.sh d. ./ffmpeg-android_build.sh arm64-v8a

There is no typedef for '__uint128_t' any where in all ndk releases if I add --extra-cxxflags="-std=gnu11" to configure option it throws error: Requested extra CXXFLAGS '-std=gnu11' not supported by compiler

If you change to use ndk-r15c, and remove configure option --extra-cflags from vpx_build.sh then it builds arm64-v8a without any problem.

Note: libvpx still has problem building mips and mips64

rprichard commented 6 years ago

There is no typedef for '__uint128_t' any where in all ndk releases

__int128_t and __uint128_t are built into the compiler; they're not defined in a header.

When I follow your link, I see a command line:

/arm-linux-androideabi-gcc -march=armv8-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mfpu=neon -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing

arm-linux-androideabi-gcc is the 32-bit ARM gcc driver. The 64-bit gcc driver is named aarch64-linux-android-gcc.

cmeng-git commented 6 years ago

Yes, you are right. vpx configure default to use arm-linux-androideabi-gcc even the option specifies 64-bit arm TARGET="arm64-android-gcc".

May be this is the reason why the libvpx.a build for arm64-v8a when using ndk-r15c failed when it is used for ffmpeg build.

Look like there is a error in vpx configure file. Need to get back to vpx team for help.

I also try to use TARGET="armv8-linux-gcc", it picks the right cross compiler cc but failed ffmpeg-android/toolchain-android/bin/aarch64-linux-android-ld: error: cannot find -lpthread

enh commented 6 years ago

ffmpeg-android/toolchain-android/bin/aarch64-linux-android-ld: error: cannot find -lpthread

another configure error: Android has no libpthread --- it's all in libc.

cmeng-git commented 6 years ago

Thanks for the explanation. Can it be possible that the option TARGET="armv8-linux-gcc" is not meant for android OS but for cpu running with linux OS. However I came across online comment that -linux- is equally good for android build; Is this a correct assumption; as VPX does not offer mips nor mips64 android option.

stephenhines commented 6 years ago

armv8-linux-gcc doesn't necessarily make sense, as gcc is not normally part of the target name. Did you mean "gnu"? That would be a generic armv8 Linux target, but it would not work for Android. Android actually has a slightly different Linux ABI in some cases, so I would strongly suggest always using the Android-based target option when building for Android.

cmeng-git commented 6 years ago

Thanks for the clarifications. It really helps me to better understand the issues.

If you issues ./configure --help in libvpx-1.7.0 directory, it lists all the Targets option available. I also have reservation on the use of gcc tag for target options. I have already moved to use clang as recommended by android; a bit confusing with gcc tags.

On Fri, Mar 23, 2018 at 7:52 AM, stephenhines notifications@github.com wrote:

armv8-linux-gcc doesn't necessarily make sense, as gcc is not normally part of the target name. Did you mean "gnu"? That would be a generic armv8 Linux target, but it would not work for Android. Android actually has a slightly different Linux ABI in some cases, so I would strongly suggest always using the Android-based target option when building for Android.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/android-ndk/ndk/issues/190#issuecomment-375494846, or mute the thread https://github.com/notifications/unsubscribe-auth/AHl0NuJlXc4tK7M0l748p4Jh03GFWaDrks5thDkwgaJpZM4J3gig .

alexcohn commented 6 years ago

@cmeng-git

I have already moved to use clang as recommended by android

How exactly did you achieve this?

alexcohn commented 6 years ago

@enh

configure error: Android has no libpthread

It's not exactly a configure error: -lpthread was assumed because linux target was specified, not Android.

This discrepancy about -lpthread is very common. An easy workaround is to add an empty static library libpthread.a. I wish such small file could be added to official NDK distribution to avoid lots of confusion when developers switch to Android for the first time.

stephenhines commented 6 years ago

Linux vs. Android - While it might seem that adding a libpthread.a would make things easier, you have to remember that Android is indeed different from the generic Linux targets. There are slight ABI differences in some cases, and while using a generic Linux target might work, you are better off getting these kinds of configuration errors early (so that you can actually address them before they become a different type of problem).

cmeng-git commented 6 years ago

How exactly did you achieve this?

Please refer to https://github.com/cmeng-git/ffmpeg-android The use of clang is specified in settings.sh export CC="${CROSS_PREFIX}clang" export CXX="${CROSS_PREFIX}clang++" export AS="${CROSS_PREFIX}clang"

However the submodule configure must be able to detect the use of cross compiler and use these settings. In my earlier testing, it seems that libvpx does not use this env settings but always falls back to use gcc, In the case of ffmpeg, you can actually specify these settings in the configure settings.