On Fri, 15 Mar 2019 13:20:50 +0100, Jaroslav Kysela wrote:
Dne 15. 03. 19 v 10:17 Chih-Wei Huang napsal(a):
This is the initial porting of alsa-lib 1.1.8 to Android.
Signed-off-by: Chih-Wei Huang cwhuang@linux.org.tw
android/Android.mk | 55 ++++++++++++ android/config.h | 217 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 272 insertions(+) create mode 100644 android/Android.mk create mode 100644 android/config.h
diff --git a/android/Android.mk b/android/Android.mk new file mode 100644 index 00000000..e12fd3a6 --- /dev/null +++ b/android/Android.mk @@ -0,0 +1,55 @@ +# +# Copyright (C) 2019 The Android-x86 Open Source Project +# +# Licensed under the GNU Lesser General Public License Version 2.1. +# You may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.gnu.org/licenses/lgpl.html +#
+LOCAL_PATH := $(dir $(call my-dir)) +include $(CLEAR_VARS)
+LOCAL_MODULE := libasound +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := SHARED_LIBRARIES
+intermediates := $(call local-generated-sources-dir)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)include $(LOCAL_PATH)android +LOCAL_EXPORT_C_INCLUDE_DIRS := $(intermediates)
+LOCAL_CFLAGS := -DPIC \
- -Wno-absolute-value -Wno-address-of-packed-member -Wno-missing-braces \
- -Wno-pointer-arith -Wno-sign-compare -Wno-unused-function \
- -Wno-unused-const-variable -Wno-unused-parameter -Wno-unused-variable \
- -finline-limit=300 -finline-functions -fno-inline-functions-called-once
+# list of files to be excluded +EXCLUDE_SRC_FILES := \
- src/alisp/alisp_snd.c \
- src/compat/hsearch_r.c \
- src/control/control_shm.c \
- src/pcm/pcm_d%.c \
- src/pcm/pcm_ladspa.c \
- src/pcm/pcm_shm.c \
- src/pcm/scopes/level.c \
+LOCAL_SRC_FILES := $(filter-out $(EXCLUDE_SRC_FILES),$(call all-c-files-under,src))
+GEN := $(intermediates)/alsa/asoundlib.h +$(GEN): $(LOCAL_PATH)configure.ac $(wildcard $(LOCAL_PATH)include/*.h)
- rm -rf $(@D); mkdir -p $(@D); cd $(@D); \
- ln -s ../../../../../../../../$(<D)/include/*.h .
- cat $(@D)/asoundlib-head.h > $@; \
- sed -n "/.*(#include <[ae].*.h>).*/s//\1/p" $< >> $@; \
- cat $(@D)/asoundlib-tail.h >> $@
- sed -n "/^AC_INIT.* ([0-9.]*))/s//#define SND_LIB_VERSION_STR "\1"/p" $< > $(@D)/version.h; \
- ln -sf alsa/version.h $(@D)/..
+LOCAL_GENERATED_SOURCES := $(GEN)
+LOCAL_SHARED_LIBRARIES := libdl
+include $(BUILD_SHARED_LIBRARY) diff --git a/android/config.h b/android/config.h new file mode 100644 index 00000000..53d50396 --- /dev/null +++ b/android/config.h @@ -0,0 +1,217 @@ +/* include/config.h. Generated from config.h.in by configure. */ +/* include/config.h.in. Generated from configure.ac by autoheader. */
+/* Directory with aload* device files */ +#define ALOAD_DEVICE_DIRECTORY "/dev/"
+/* directory containing ALSA configuration database */ +#define ALSA_CONFIG_DIR "/system/usr/share/alsa"
+/* Enable assert at error message handler */ +/* #undef ALSA_DEBUG_ASSERT */
+/* Directory with ALSA device files */ +#define ALSA_DEVICE_DIRECTORY "/dev/snd/"
+/* directory containing ALSA add-on modules */ +#define ALSA_PLUGIN_DIR "/system/usr/lib/alsa-lib"
+/* Build hwdep component */ +#define BUILD_HWDEP "1"
+/* Build mixer component */ +#define BUILD_MIXER "1"
+/* Build PCM component */ +#define BUILD_PCM "1"
+/* Build PCM adpcm plugin */ +#define BUILD_PCM_PLUGIN_ADPCM "1"
+/* Build PCM alaw plugin */ +#define BUILD_PCM_PLUGIN_ALAW "1"
+/* Build PCM lfloat plugin */ +#define BUILD_PCM_PLUGIN_LFLOAT "1"
+/* Build PCM mmap-emul plugin */ +#define BUILD_PCM_PLUGIN_MMAP_EMUL "1"
+/* Build PCM mulaw plugin */ +#define BUILD_PCM_PLUGIN_MULAW "1"
+/* Build PCM rate plugin */ +#define BUILD_PCM_PLUGIN_RATE "1"
+/* Build PCM route plugin */ +#define BUILD_PCM_PLUGIN_ROUTE "1"
+/* Build raw MIDI component */ +/* #undef BUILD_RAWMIDI */
+/* Build sequencer component */ +/* #undef BUILD_SEQ */
+/* Build DSP Topology component */ +#define BUILD_TOPOLOGY "1"
+/* Build UCM component */ +#define BUILD_UCM "1"
+/* Have clock gettime */ +#define HAVE_CLOCK_GETTIME 1
+/* Define to 1 if you have the <dlfcn.h> header file. */ +#define HAVE_DLFCN_H 1
+/* Define to 1 if you have the <endian.h> header file. */ +#define HAVE_ENDIAN_H 1
+/* Define to 1 if you have the <inttypes.h> header file. */ +#define HAVE_INTTYPES_H 1
+/* Have libdl */ +#define HAVE_LIBDL 1
+/* Have libpthread */ +#define HAVE_LIBPTHREAD 1
+/* Define to 1 if you have the `resmgr' library (-lresmgr). */ +/* #undef HAVE_LIBRESMGR */
+/* Have librt */ +/* #undef HAVE_LIBRT */
+/* Define to 1 if you have the <memory.h> header file. */ +#define HAVE_MEMORY_H 1
+/* Define if your pthreads implementation have PTHREAD_MUTEX_RECURSIVE */ +#define HAVE_PTHREAD_MUTEX_RECURSIVE /**/
+/* Avoid calculation in float */ +/* #undef HAVE_SOFT_FLOAT */
+/* Define to 1 if you have the <stdint.h> header file. */ +#define HAVE_STDINT_H 1
+/* Define to 1 if you have the <stdlib.h> header file. */ +#define HAVE_STDLIB_H 1
+/* Define to 1 if you have the <strings.h> header file. */ +#define HAVE_STRINGS_H 1
+/* Define to 1 if you have the <string.h> header file. */ +#define HAVE_STRING_H 1
+/* Define to 1 if you have the <sys/endian.h> header file. */ +/* #undef HAVE_SYS_ENDIAN_H */
+/* Define to 1 if you have the <sys/shm.h> header file. */ +#define HAVE_SYS_SHM_H 1
+/* Define to 1 if you have the <sys/stat.h> header file. */ +#define HAVE_SYS_STAT_H 1
+/* Define to 1 if you have the <sys/types.h> header file. */ +#define HAVE_SYS_TYPES_H 1
+/* Define to 1 if you have the <unistd.h> header file. */ +#define HAVE_UNISTD_H 1
+/* Define to 1 if you have the `uselocale' function. */ +#define HAVE_USELOCALE 1
+/* Enable use of wordexp */ +/* #undef HAVE_WORDEXP */
+/* Define to 1 if compiler supports __thread */ +#define HAVE___THREAD 1
+/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#define LT_OBJDIR ".libs/"
+/* No assert debug */ +/* #undef NDEBUG */
+/* Name of package */ +#define PACKAGE "alsa-lib"
+/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT ""
+/* Define to the full name of this package. */ +#define PACKAGE_NAME "alsa-lib"
+/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "alsa-lib"
+/* Define to the home page for this package. */ +#define PACKAGE_URL ""
+/* Max number of cards */ +#define SND_MAX_CARDS 32
+/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1
+/* Support /dev/aload* access for auto-loading */ +/* #undef SUPPORT_ALOAD */
+/* Support resmgr with alsa-lib */ +/* #undef SUPPORT_RESMGR */
+/* Disable thread-safe API functions */ +#define THREAD_SAFE_API "1"
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */ +#define TIME_WITH_SYS_TIME 1
+/* directory to put tmp socket files */ +#define TMPDIR "/tmp"
+/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# define _ALL_SOURCE 1 +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif +/* Enable threading extensions on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# define _POSIX_PTHREAD_SEMANTICS 1 +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# define _TANDEM_SOURCE 1 +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# define __EXTENSIONS__ 1 +#endif
+/* compiled with versioned symbols */ +/* #undef VERSIONED_SYMBOLS */
+/* Define to 1 if on MINIX. */ +/* #undef _MINIX */
+/* Define to 2 if the system does not provide POSIX.1 features except with
- this defined. */
+/* #undef _POSIX_1_SOURCE */
+/* Define to 1 if you need to in order for `stat' and other things to work. */ +/* #undef _POSIX_SOURCE */
+/* Toolchain Symbol Prefix */ +#define __SYMBOL_PREFIX ""
+/* Define to empty if `const' does not conform to ANSI C. */ +/* #undef const */
+/* Define to `__inline__' or `__inline' if that's what the C compiler
- calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus +/* #undef inline */ +#endif
I am afraid, but those changes do not belong to the universal source package. You may create an androidcompile script (something like gitcompile) with some reasonable defaults for configure / autoconf / automake.
If something is missing in the autoconf/automake files - just add it there.
Yes, otherwise we'd have to modify two places once when something needs to be changed, and that's error-prone.
Or moving to a modern build infrastructure instead of stone aged auto-tools would help for cross-platform builds?
thanks,
Takashi