All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v2] libamcodec: New Package
@ 2016-06-01 21:16 Dagg
  2016-06-01 21:32 ` Thomas Petazzoni
  0 siblings, 1 reply; 5+ messages in thread
From: Dagg @ 2016-06-01 21:16 UTC (permalink / raw)
  To: buildroot

changes:

v1 -> v2:
 - use git repo as should.
 - add hash file.
 - add alsa-lib dependecy.
 - fix linkage errors.
 - use the correct env vars in makefile calls.

Signed-off-by: Dagg <daggs@gmx.com>
---
 package/Config.in                                  |  1 +
 .../0001-fix_non_cross_compile_env_vars.patch      | 23 +++++++++++++++
 package/libamcodec/Config.in                       | 12 ++++++++
 package/libamcodec/libamcodec.hash                 |  2 ++
 package/libamcodec/libamcodec.mk                   | 33 ++++++++++++++++++++++
 5 files changed, 71 insertions(+)
 create mode 100644 package/libamcodec/0001-fix_non_cross_compile_env_vars.patch
 create mode 100644 package/libamcodec/Config.in
 create mode 100644 package/libamcodec/libamcodec.hash
 create mode 100644 package/libamcodec/libamcodec.mk

diff --git a/package/Config.in b/package/Config.in
index 6c6a562..0a56070 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1074,6 +1074,7 @@ endmenu
 
 menu "Multimedia"
 	source "package/bitstream/Config.in"
+	source "package/libamcodec/Config.in"
 	source "package/libass/Config.in"
 	source "package/libbluray/Config.in"
 	source "package/libdcadec/Config.in"
diff --git a/package/libamcodec/0001-fix_non_cross_compile_env_vars.patch b/package/libamcodec/0001-fix_non_cross_compile_env_vars.patch
new file mode 100644
index 0000000..72dad18
--- /dev/null
+++ b/package/libamcodec/0001-fix_non_cross_compile_env_vars.patch
@@ -0,0 +1,23 @@
+--- a/amcodec/Makefile	2016-06-01 22:40:01.000000000 +0300
++++ b/amcodec/Makefile	2016-06-01 22:41:32.000000000 +0300
+@@ -7,13 +7,13 @@ QUITE_CMD=1
+ 
+ INSTALL_FLAGS=-m 755
+ 
+-CPP=g++
+-AS=as
+-AR=ar
+-LD=ld
+-NM=nm
+-STRIP=strip
+-OBJCOPY=objcopy
++CPP ?= g++
++AS ?= as
++AR ?= ar
++LD ?= ld
++NM ?= nm
++STRIP ?= strip
++OBJCOPY ?= objcopy
+ export CC CPP AS AR LD NM STRIP OBJCOPY
+ 
+ TOPDIR=$(shell pwd)
diff --git a/package/libamcodec/Config.in b/package/libamcodec/Config.in
new file mode 100644
index 0000000..35b63a6
--- /dev/null
+++ b/package/libamcodec/Config.in
@@ -0,0 +1,12 @@
+comment "libamcodec needs a toolchain w/ threads"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS
+
+config BR2_PACKAGE_LIBAMCODEC
+	bool "libamcodec"
+	depends on BR2_arm || BR2_aarch64
+	depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib
+	select BR2_PACKAGE_ALSA_LIB
+	help
+	    Interface library for Amlogic media codecs
+
+	    https://github.com/mdrjr/c2_aml_libs.git
diff --git a/package/libamcodec/libamcodec.hash b/package/libamcodec/libamcodec.hash
new file mode 100644
index 0000000..3a0055f
--- /dev/null
+++ b/package/libamcodec/libamcodec.hash
@@ -0,0 +1,2 @@
+# Locally computed
+sha256 44580255c63bde1544b1376bc8d33f73ef0c634afda5065455a01b77f6e2729b  libamcodec-ed1d8b8c54b05c1a02a8ee44c59744e4cbed3d8d.tar.gz
diff --git a/package/libamcodec/libamcodec.mk b/package/libamcodec/libamcodec.mk
new file mode 100644
index 0000000..4c300ed
--- /dev/null
+++ b/package/libamcodec/libamcodec.mk
@@ -0,0 +1,33 @@
+################################################################################
+#
+# libamcodec
+#
+################################################################################
+
+LIBAMCODEC_VERSION = ed1d8b8c54b05c1a02a8ee44c59744e4cbed3d8d
+LIBAMCODEC_SITE = $(call github,mdrjr,c2_aml_libs,$(LIBAMCODEC_VERSION))
+LIBAMCODEC_DEPENDENCIES = alsa-lib
+
+# this pkg uses a non standard prefix vars, so we need to use them.
+define LIBAMCODEC_BUILD_CMDS
+	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/amavutils M_PREFIX="$(STAGING_DIR)/usr"
+	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/amadec M_PREFIX="$(STAGING_DIR)/usr"
+	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/amcodec PREFIX="$(STAGING_DIR)"
+endef
+
+define LIBAMCODEC_INSTALL_STAGING_CMDS
+	$(INSTALL) -D -m 0755 $(@D)/amavutils/libamavutils.so $(STAGING_DIR)/usr/lib
+	$(INSTALL) -D -m 0555 $(@D)/amadec/libamadec.so $(STAGING_DIR)/usr/lib
+	$(INSTALL) -D -m 0555 $(@D)/amcodec/libamcodec.so $(STAGING_DIR)/usr/lib
+
+	mkdir -p $(STAGING_DIR)/usr/include/amcodec
+	cp -rf $(@D)/amcodec/include/* $(STAGING_DIR)/usr/include/amcodec
+endef
+
+define LIBAMCODEC_INSTALL_TARGET_CMDS
+	$(INSTALL) -D -m 0755 $(@D)/amavutils/libamavutils.so $(TARGET_DIR)/usr/lib
+	$(INSTALL) -D -m 0555 $(@D)/amadec/libamadec.so $(TARGET_DIR)/usr/lib
+	$(INSTALL) -D -m 0555 $(@D)/amcodec/libamcodec.so $(TARGET_DIR)/usr/lib
+endef
+									    
+$(eval $(generic-package))
-- 
2.8.3

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [Buildroot] [PATCH v2] libamcodec: New Package
  2016-06-01 21:16 [Buildroot] [PATCH v2] libamcodec: New Package Dagg
@ 2016-06-01 21:32 ` Thomas Petazzoni
  2016-06-02  5:15   ` daggs
  0 siblings, 1 reply; 5+ messages in thread
From: Thomas Petazzoni @ 2016-06-01 21:32 UTC (permalink / raw)
  To: buildroot

Hello,

Thanks for this new iteration!

On Thu,  2 Jun 2016 00:16:07 +0300, Dagg wrote:

> +-CPP=g++
> +-AS=as
> +-AR=ar
> +-LD=ld
> +-NM=nm
> +-STRIP=strip
> +-OBJCOPY=objcopy
> ++CPP ?= g++
> ++AS ?= as
> ++AR ?= ar
> ++LD ?= ld
> ++NM ?= nm
> ++STRIP ?= strip
> ++OBJCOPY ?= objcopy

This patch would not be needed if $(TARGET_CONFIGURE_OPTS) was passed
as a make option instead of in the make environment. I.e

	$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS)

instead of

	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE)

However, this also means that a number of other variables from your
package Makefile will be overridden, such as CFLAGS, CXXFLAGS, LDFLAGS,
etc. This sometimes causes some problems.

> +comment "libamcodec needs a toolchain w/ threads"
> +	depends on !BR2_TOOLCHAIN_HAS_THREADS

You need to replicate the architecture dependency here, so that the
comment is not needlessly displayed on architectures for which the
libamcodec option will anyway not be available, regardless of the
availability of thread support.

> +LIBAMCODEC_VERSION = ed1d8b8c54b05c1a02a8ee44c59744e4cbed3d8d
> +LIBAMCODEC_SITE = $(call github,mdrjr,c2_aml_libs,$(LIBAMCODEC_VERSION))
> +LIBAMCODEC_DEPENDENCIES = alsa-lib
> +
> +# this pkg uses a non standard prefix vars, so we need to use them.

# This package uses the M_PREFIX variable to construct the header and
# library paths used when compiling.

is probably a slightly better explanation.

> +define LIBAMCODEC_BUILD_CMDS
> +	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/amavutils M_PREFIX="$(STAGING_DIR)/usr"
> +	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/amadec M_PREFIX="$(STAGING_DIR)/usr"
> +	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/amcodec PREFIX="$(STAGING_DIR)"
> +endef
> +
> +define LIBAMCODEC_INSTALL_STAGING_CMDS
> +	$(INSTALL) -D -m 0755 $(@D)/amavutils/libamavutils.so $(STAGING_DIR)/usr/lib
> +	$(INSTALL) -D -m 0555 $(@D)/amadec/libamadec.so $(STAGING_DIR)/usr/lib
> +	$(INSTALL) -D -m 0555 $(@D)/amcodec/libamcodec.so $(STAGING_DIR)/usr/lib

Full destination path needed.

> +

Unneeded empty line (already mentioned by Vicente)

> +	mkdir -p $(STAGING_DIR)/usr/include/amcodec
> +	cp -rf $(@D)/amcodec/include/* $(STAGING_DIR)/usr/include/amcodec
> +endef
> +
> +define LIBAMCODEC_INSTALL_TARGET_CMDS
> +	$(INSTALL) -D -m 0755 $(@D)/amavutils/libamavutils.so $(TARGET_DIR)/usr/lib
> +	$(INSTALL) -D -m 0555 $(@D)/amadec/libamadec.so $(TARGET_DIR)/usr/lib
> +	$(INSTALL) -D -m 0555 $(@D)/amcodec/libamcodec.so $(TARGET_DIR)/usr/lib

Full destination path needed.

Thanks,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Buildroot] [PATCH v2] libamcodec: New Package
  2016-06-01 21:32 ` Thomas Petazzoni
@ 2016-06-02  5:15   ` daggs
  2016-06-02  7:20     ` Thomas Petazzoni
  0 siblings, 1 reply; 5+ messages in thread
From: daggs @ 2016-06-02  5:15 UTC (permalink / raw)
  To: buildroot

Greetings,
> Hello,
> 
> Thanks for this new iteration!
> 
> On Thu,  2 Jun 2016 00:16:07 +0300, Dagg wrote:
> 
> > +-CPP=g++
> > +-AS=as
> > +-AR=ar
> > +-LD=ld
> > +-NM=nm
> > +-STRIP=strip
> > +-OBJCOPY=objcopy
> > ++CPP ?= g++
> > ++AS ?= as
> > ++AR ?= ar
> > ++LD ?= ld
> > ++NM ?= nm
> > ++STRIP ?= strip
> > ++OBJCOPY ?= objcopy
> 
> This patch would not be needed if $(TARGET_CONFIGURE_OPTS) was passed
> as a make option instead of in the make environment. I.e
> 
> 	$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS)
> 
> instead of
> 
> 	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE)
> 
> However, this also means that a number of other variables from your
> package Makefile will be overridden, such as CFLAGS, CXXFLAGS, LDFLAGS,
> etc. This sometimes causes some problems.
seems like I've encountered such an issue,
using the format above resulted in missing includes error, e.g. local paths are not part of the flags.
what is the proper way to fix it?

> 
> > +comment "libamcodec needs a toolchain w/ threads"
> > +	depends on !BR2_TOOLCHAIN_HAS_THREADS
> 
> You need to replicate the architecture dependency here, so that the
> comment is not needlessly displayed on architectures for which the
> libamcodec option will anyway not be available, regardless of the
> availability of thread support.
> 
> > +LIBAMCODEC_VERSION = ed1d8b8c54b05c1a02a8ee44c59744e4cbed3d8d
> > +LIBAMCODEC_SITE = $(call github,mdrjr,c2_aml_libs,$(LIBAMCODEC_VERSION))
> > +LIBAMCODEC_DEPENDENCIES = alsa-lib
> > +
> > +# this pkg uses a non standard prefix vars, so we need to use them.
> 
> # This package uses the M_PREFIX variable to construct the header and
> # library paths used when compiling.
> 
> is probably a slightly better explanation.
> 
correct, done.

> > +define LIBAMCODEC_BUILD_CMDS
> > +	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/amavutils M_PREFIX="$(STAGING_DIR)/usr"
> > +	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/amadec M_PREFIX="$(STAGING_DIR)/usr"
> > +	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/amcodec PREFIX="$(STAGING_DIR)"
> > +endef
> > +
> > +define LIBAMCODEC_INSTALL_STAGING_CMDS
> > +	$(INSTALL) -D -m 0755 $(@D)/amavutils/libamavutils.so $(STAGING_DIR)/usr/lib
> > +	$(INSTALL) -D -m 0555 $(@D)/amadec/libamadec.so $(STAGING_DIR)/usr/lib
> > +	$(INSTALL) -D -m 0555 $(@D)/amcodec/libamcodec.so $(STAGING_DIR)/usr/lib
> 
> Full destination path needed.
> 
not sure what you mean by Full destination path needed, can you elaborate please?

> > +
> 
> Unneeded empty line (already mentioned by Vicente)
> 
done.

> > +	mkdir -p $(STAGING_DIR)/usr/include/amcodec
> > +	cp -rf $(@D)/amcodec/include/* $(STAGING_DIR)/usr/include/amcodec
> > +endef
> > +
> > +define LIBAMCODEC_INSTALL_TARGET_CMDS
> > +	$(INSTALL) -D -m 0755 $(@D)/amavutils/libamavutils.so $(TARGET_DIR)/usr/lib
> > +	$(INSTALL) -D -m 0555 $(@D)/amadec/libamadec.so $(TARGET_DIR)/usr/lib
> > +	$(INSTALL) -D -m 0555 $(@D)/amcodec/libamcodec.so $(TARGET_DIR)/usr/lib
> 
> Full destination path needed.
> 
the same as above.

> Thanks,
> 
> Thomas

Dagg.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Buildroot] [PATCH v2] libamcodec: New Package
  2016-06-02  5:15   ` daggs
@ 2016-06-02  7:20     ` Thomas Petazzoni
  2016-06-02 14:39       ` daggs
  0 siblings, 1 reply; 5+ messages in thread
From: Thomas Petazzoni @ 2016-06-02  7:20 UTC (permalink / raw)
  To: buildroot

Hello,

On Thu, 2 Jun 2016 07:15:54 +0200, daggs wrote:

> > However, this also means that a number of other variables from your
> > package Makefile will be overridden, such as CFLAGS, CXXFLAGS, LDFLAGS,
> > etc. This sometimes causes some problems.  
> seems like I've encountered such an issue,
> using the format above resulted in missing includes error, e.g. local paths are not part of the flags.
> what is the proper way to fix it?

In the package Makefile, whenever there is:

CFLAGS = foo
LDFLAGS = foo

change it to:

override CFLAGS += foo
override LDFLAGS += foo

> > > +	$(INSTALL) -D -m 0755 $(@D)/amavutils/libamavutils.so $(STAGING_DIR)/usr/lib
> > > +	$(INSTALL) -D -m 0555 $(@D)/amadec/libamadec.so $(STAGING_DIR)/usr/lib
> > > +	$(INSTALL) -D -m 0555 $(@D)/amcodec/libamcodec.so $(STAGING_DIR)/usr/lib  
> > 
> > Full destination path needed.
> >   
> not sure what you mean by Full destination path needed, can you elaborate please?

   $(STAGING_DIR)/usr/lib/libavmavutils.so

as opposed to

   $(STAGING_DIR)/usr/lib

as you're doing currently.

If you do:

   $(INSTALL) -D -m 0555 $(@D)/amcodec/libamcodec.so $(STAGING_DIR)/usr/lib

and $(STAGING_DIR)/usr/lib doesn't already exists as a directory, then
libamcodec.so will be copied as a file named "lib" under
$(STAGING_DIR)/usr.

Best regards,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Buildroot] [PATCH v2] libamcodec: New Package
  2016-06-02  7:20     ` Thomas Petazzoni
@ 2016-06-02 14:39       ` daggs
  0 siblings, 0 replies; 5+ messages in thread
From: daggs @ 2016-06-02 14:39 UTC (permalink / raw)
  To: buildroot

Greetings,

> Hello,
> 
> On Thu, 2 Jun 2016 07:15:54 +0200, daggs wrote:
> 
> > > However, this also means that a number of other variables from your
> > > package Makefile will be overridden, such as CFLAGS, CXXFLAGS, LDFLAGS,
> > > etc. This sometimes causes some problems.  
> > seems like I've encountered such an issue,
> > using the format above resulted in missing includes error, e.g. local paths are not part of the flags.
> > what is the proper way to fix it?
> 
> In the package Makefile, whenever there is:
> 
> CFLAGS = foo
> LDFLAGS = foo
> 
> change it to:
> 
> override CFLAGS += foo
> override LDFLAGS += foo
thanks, it worked for amavutils and amadec.

the problem is with amcodec which doesn't seems to respect it.
from what I can understand, the makefile do does this: include $(SRCTREE)/rules.mk
and in rules.mk I see that it does this:  $(MAKE) -C ${1} -f ${SRCTREE}/depends.mk;\
this seems to reverts the CFLAGS and LDFLAGS back to their default.
have you encountered such issue before?

> 
> > > > +	$(INSTALL) -D -m 0755 $(@D)/amavutils/libamavutils.so $(STAGING_DIR)/usr/lib
> > > > +	$(INSTALL) -D -m 0555 $(@D)/amadec/libamadec.so $(STAGING_DIR)/usr/lib
> > > > +	$(INSTALL) -D -m 0555 $(@D)/amcodec/libamcodec.so $(STAGING_DIR)/usr/lib  
> > > 
> > > Full destination path needed.
> > >   
> > not sure what you mean by Full destination path needed, can you elaborate please?
> 
>    $(STAGING_DIR)/usr/lib/libavmavutils.so
> 
> as opposed to
> 
>    $(STAGING_DIR)/usr/lib
> 
> as you're doing currently.
> 
> If you do:
> 
>    $(INSTALL) -D -m 0555 $(@D)/amcodec/libamcodec.so $(STAGING_DIR)/usr/lib
> 
> and $(STAGING_DIR)/usr/lib doesn't already exists as a directory, then
> libamcodec.so will be copied as a file named "lib" under
> $(STAGING_DIR)/usr.
> 
> Best regards,
> 
> Thomas
done.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2016-06-02 14:39 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-01 21:16 [Buildroot] [PATCH v2] libamcodec: New Package Dagg
2016-06-01 21:32 ` Thomas Petazzoni
2016-06-02  5:15   ` daggs
2016-06-02  7:20     ` Thomas Petazzoni
2016-06-02 14:39       ` daggs

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.