All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v4 0/7] Add support for AMD Catalyst graphics driver
@ 2016-08-05 14:53 Romain Perier
  2016-08-05 14:53 ` [Buildroot] [PATCH v4 1/7] support/download: Add support to pass options directly to downloaders Romain Perier
                   ` (6 more replies)
  0 siblings, 7 replies; 14+ messages in thread
From: Romain Perier @ 2016-08-05 14:53 UTC (permalink / raw)
  To: buildroot

The AMD Catalyst Proprietary Linux Graphics Driver 15.9 supports GPUs
AMD Radeon HD 5xxx and newer graphics. It requires at least glibc 2.2
or 2.3 and is compatible up to Xorg 1.17. This serie adds the required
changes to support this driver.

The fglrx kernel module is compatible up to Linux kernel 4.4 LTS.
All the graphical stack has been tested on a x86_64 system with an
AMD-GT40N (w/ Radeon HD 6290 GPU).

Romain Perier (7):
  support/download: Add support to pass options directly to downloaders
  pkg-download: Allow packages to pass generic options to download
    methods
  docs/manual: Document the variable $(PKG)_DL_OPTS
  package/amd-catalyst: Add AMD proprietary graphic stack support
  package/amd-catalyst: Add AMD cmdline tools
  package/amd-catalyst: Add support AMD CCCLE
  package/amd-catalyst: Add support for OpenCL

 docs/manual/adding-packages-generic.txt            |   7 +
 package/Config.in                                  |   1 +
 .../0001-Add-support-for-Linux-4.0.patch           |  45 ++++++
 .../0002-Add-support-for-Linux-4.1.patch           |  31 ++++
 .../0003-Add-support-for-Linux-4.2.patch           | 121 +++++++++++++++
 ...0004-Use-fpregs_active-instead-of-has_fpu.patch |  33 ++++
 ...-Use-a-local-copy-of-copy_xregs_to_kernel.patch |  79 ++++++++++
 .../0006-Add-support-for-Linux-4.4.patch           |  78 ++++++++++
 package/amd-catalyst/0007-remove-gpl-symbols.patch |  54 +++++++
 package/amd-catalyst/20-fglrx.conf                 |   4 +
 package/amd-catalyst/Config.in                     |  73 +++++++++
 package/amd-catalyst/amd-catalyst.hash             |   2 +
 package/amd-catalyst/amd-catalyst.mk               | 168 +++++++++++++++++++++
 package/amd-catalyst/gl.pc                         |  12 ++
 package/pkg-download.mk                            |  24 ++-
 support/download/bzr                               |   4 +-
 support/download/cp                                |   4 +-
 support/download/cvs                               |   4 +-
 support/download/git                               |   6 +-
 support/download/hg                                |   4 +-
 support/download/scp                               |   4 +-
 support/download/svn                               |   4 +-
 support/download/wget                              |   4 +-
 23 files changed, 749 insertions(+), 17 deletions(-)
 create mode 100644 package/amd-catalyst/0001-Add-support-for-Linux-4.0.patch
 create mode 100644 package/amd-catalyst/0002-Add-support-for-Linux-4.1.patch
 create mode 100644 package/amd-catalyst/0003-Add-support-for-Linux-4.2.patch
 create mode 100644 package/amd-catalyst/0004-Use-fpregs_active-instead-of-has_fpu.patch
 create mode 100644 package/amd-catalyst/0005-Use-a-local-copy-of-copy_xregs_to_kernel.patch
 create mode 100644 package/amd-catalyst/0006-Add-support-for-Linux-4.4.patch
 create mode 100644 package/amd-catalyst/0007-remove-gpl-symbols.patch
 create mode 100644 package/amd-catalyst/20-fglrx.conf
 create mode 100644 package/amd-catalyst/Config.in
 create mode 100644 package/amd-catalyst/amd-catalyst.hash
 create mode 100644 package/amd-catalyst/amd-catalyst.mk
 create mode 100644 package/amd-catalyst/gl.pc

-- 
2.8.1

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

* [Buildroot] [PATCH v4 1/7] support/download: Add support to pass options directly to downloaders
  2016-08-05 14:53 [Buildroot] [PATCH v4 0/7] Add support for AMD Catalyst graphics driver Romain Perier
@ 2016-08-05 14:53 ` Romain Perier
  2016-08-05 15:54   ` Yann E. MORIN
  2016-08-05 14:53 ` [Buildroot] [PATCH v4 2/7] pkg-download: Allow packages to pass generic options to download methods Romain Perier
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 14+ messages in thread
From: Romain Perier @ 2016-08-05 14:53 UTC (permalink / raw)
  To: buildroot

This adds support to pass options to the underlying command that is used
by downloader. Useful for retrieving data with server-side checking for
user login or passwords, use a proxy or use specific options for cloning
a repository via git and hg.

Signed-off-by: Romain Perier <romain.perier@free-electrons.com>
---

Changes in v4:
 - Rebased onto master
 - Pass "${@}" to "git clone --depth 1" too.

Changes in v3:
 - Don't use the variable ${dl_opts} to catch extra arguments
 - We prefer to use shift and "${@}", it does not introduce
   empty string when there are no extra parameters.

Changes in v2:
 - Replaced the variable $(PKG)_DL_REFERER by $(PKG)_DL_OPTS
 - Add modification to all downloaders

 support/download/bzr  | 4 +++-
 support/download/cp   | 4 +++-
 support/download/cvs  | 4 +++-
 support/download/git  | 6 ++++--
 support/download/hg   | 4 +++-
 support/download/scp  | 4 +++-
 support/download/svn  | 4 +++-
 support/download/wget | 4 +++-
 8 files changed, 25 insertions(+), 9 deletions(-)

diff --git a/support/download/bzr b/support/download/bzr
index e18b01f..75b7b41 100755
--- a/support/download/bzr
+++ b/support/download/bzr
@@ -26,6 +26,8 @@ repo="${2}"
 rev="${3}"
 basename="${4}"
 
+shift 4 # Get rid of our options
+
 # Caller needs to single-quote its arguments to prevent them from
 # being expanded a second time (in case there are spaces in them)
 _bzr() {
@@ -49,5 +51,5 @@ if [ ${bzr_version} -ge ${bzr_min_version} ]; then
 fi
 
 _bzr export ${verbose} --root="'${basename}/'" --format=tgz \
-    ${timestamp_opt} - "'${repo}'" -r "'${rev}'" \
+    ${timestamp_opt} - "${@}" "'${repo}'" -r "'${rev}'" \
     >"${output}"
diff --git a/support/download/cp b/support/download/cp
index 09ce3d1..0ee1f3b 100755
--- a/support/download/cp
+++ b/support/download/cp
@@ -28,10 +28,12 @@ shift $((OPTIND-1))
 output="${1}"
 source="${2}"
 
+shift 2 # Get rid of our options
+
 # Caller needs to single-quote its arguments to prevent them from
 # being expanded a second time (in case there are spaces in them)
 _localfiles() {
     eval ${LOCALFILES} "${@}"
 }
 
-_localfiles ${verbose} "'${source}'" "'${output}'"
+_localfiles ${verbose} "${@}""'${source}'" "'${output}'"
diff --git a/support/download/cvs b/support/download/cvs
index 7980389..50050ab 100755
--- a/support/download/cvs
+++ b/support/download/cvs
@@ -26,6 +26,8 @@ rev="${3}"
 rawname="${4}"
 basename="${5}"
 
+shift 5 # Get rid of our options
+
 # Caller needs to single-quote its arguments to prevent them from
 # being expanded a second time (in case there are spaces in them)
 _cvs() {
@@ -48,6 +50,6 @@ fi
 
 export TZ=UTC
 _cvs ${verbose} -z3 -d"'${repo}'" \
-     co -d "'${basename}'" ${select} "'${rev}'" -P "'${rawname}'"
+     co "${@}" -d "'${basename}'" ${select} "'${rev}'" -P "'${rawname}'"
 
 tar czf "${output}" "${basename}"
diff --git a/support/download/git b/support/download/git
index 416cd1b..281db61 100755
--- a/support/download/git
+++ b/support/download/git
@@ -30,6 +30,8 @@ repo="${2}"
 cset="${3}"
 basename="${4}"
 
+shift 4 # Get rid of our options
+
 # Caller needs to single-quote its arguments to prevent them from
 # being expanded a second time (in case there are spaces in them)
 _git() {
@@ -46,7 +48,7 @@ _git() {
 git_done=0
 if [ -n "$(_git ls-remote "'${repo}'" "'${cset}'" 2>&1)" ]; then
     printf "Doing shallow clone\n"
-    if _git clone ${verbose} --depth 1 -b "'${cset}'" "'${repo}'" "'${basename}'"; then
+    if _git clone ${verbose} "${@}" --depth 1 -b "'${cset}'" "'${repo}'" "'${basename}'"; then
         git_done=1
     else
         printf "Shallow clone failed, falling back to doing a full clone\n"
@@ -54,7 +56,7 @@ if [ -n "$(_git ls-remote "'${repo}'" "'${cset}'" 2>&1)" ]; then
 fi
 if [ ${git_done} -eq 0 ]; then
     printf "Doing full clone\n"
-    _git clone ${verbose} "'${repo}'" "'${basename}'"
+    _git clone ${verbose} "${@}" "'${repo}'" "'${basename}'"
 fi
 
 pushd "${basename}" >/dev/null
diff --git a/support/download/hg b/support/download/hg
index 25cb4e9..3af0169 100755
--- a/support/download/hg
+++ b/support/download/hg
@@ -25,13 +25,15 @@ repo="${2}"
 cset="${3}"
 basename="${4}"
 
+shift 4 # Get rid of our options
+
 # Caller needs to single-quote its arguments to prevent them from
 # being expanded a second time (in case there are spaces in them)
 _hg() {
     eval ${HG} "${@}"
 }
 
-_hg clone ${verbose} --noupdate "'${repo}'" "'${basename}'"
+_hg clone ${verbose} "${@}" --noupdate "'${repo}'" "'${basename}'"
 
 _hg archive ${verbose} --repository "'${basename}'" --type tgz \
             --prefix "'${basename}'" --rev "'${cset}'" \
diff --git a/support/download/scp b/support/download/scp
index 95cf502..825fd41 100755
--- a/support/download/scp
+++ b/support/download/scp
@@ -23,10 +23,12 @@ shift $((OPTIND-1))
 output="${1}"
 url="${2}"
 
+shift 2 # Get rid of our options
+
 # Caller needs to single-quote its arguments to prevent them from
 # being expanded a second time (in case there are spaces in them)
 _scp() {
     eval ${SCP} "${@}"
 }
 
-_scp ${verbose} "'${url}'" "'${output}'"
+_scp ${verbose} "${@}" "'${url}'" "'${output}'"
diff --git a/support/download/svn b/support/download/svn
index 4dcdd06..77abf3d 100755
--- a/support/download/svn
+++ b/support/download/svn
@@ -25,12 +25,14 @@ repo="${2}"
 rev="${3}"
 basename="${4}"
 
+shift 4 # Get rid of our options
+
 # Caller needs to single-quote its arguments to prevent them from
 # being expanded a second time (in case there are spaces in them)
 _svn() {
     eval ${SVN} "${@}"
 }
 
-_svn export ${verbose} "'${repo}@${rev}'" "'${basename}'"
+_svn export ${verbose} "${@}" "'${repo}@${rev}'" "'${basename}'"
 
 tar czf "${output}" "${basename}"
diff --git a/support/download/wget b/support/download/wget
index 0fc7ffa..768de90 100755
--- a/support/download/wget
+++ b/support/download/wget
@@ -23,10 +23,12 @@ shift $((OPTIND-1))
 output="${1}"
 url="${2}"
 
+shift 2 # Get rid of our options
+
 # Caller needs to single-quote its arguments to prevent them from
 # being expanded a second time (in case there are spaces in them)
 _wget() {
     eval ${WGET} "${@}"
 }
 
-_wget ${verbose} -O "'${output}'" "'${url}'"
+_wget ${verbose} "${@}" -O "'${output}'" "'${url}'"
-- 
2.8.1

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

* [Buildroot] [PATCH v4 2/7] pkg-download: Allow packages to pass generic options to download methods
  2016-08-05 14:53 [Buildroot] [PATCH v4 0/7] Add support for AMD Catalyst graphics driver Romain Perier
  2016-08-05 14:53 ` [Buildroot] [PATCH v4 1/7] support/download: Add support to pass options directly to downloaders Romain Perier
@ 2016-08-05 14:53 ` Romain Perier
  2016-08-05 14:53 ` [Buildroot] [PATCH v4 3/7] docs/manual: Document the variable $(PKG)_DL_OPTS Romain Perier
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 14+ messages in thread
From: Romain Perier @ 2016-08-05 14:53 UTC (permalink / raw)
  To: buildroot

Introduce a new package variable $(PKG)_DL_OPTS. When this variable
is defined, its value is passed to the downloader as options to
the underlying command. Packages can now retrieve archives from server
expecting logins and passwords, use referer url, proxy or specific
options for cloning a repository.

Signed-off-by: Romain Perier <romain.perier@free-electrons.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---

Changes in v4:
 - Add missing Reviewed-by tag

Changes in v2:
 - Replaced $(PKG)_DL_REFERER by $(PKG)_DL_OPTS
 - Add support for this options to all downloaders

 package/pkg-download.mk | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/package/pkg-download.mk b/package/pkg-download.mk
index 315203f..3b6561b 100644
--- a/package/pkg-download.mk
+++ b/package/pkg-download.mk
@@ -81,7 +81,8 @@ define DOWNLOAD_GIT
 		-- \
 		$($(PKG)_SITE) \
 		$($(PKG)_DL_VERSION) \
-		$($(PKG)_BASE_NAME)
+		$($(PKG)_BASE_NAME) \
+		$($(PKG)_DL_OPTS)
 endef
 
 # TODO: improve to check that the given PKG_DL_VERSION exists on the remote
@@ -97,7 +98,8 @@ define DOWNLOAD_BZR
 		-- \
 		$($(PKG)_SITE) \
 		$($(PKG)_DL_VERSION) \
-		$($(PKG)_BASE_NAME)
+		$($(PKG)_BASE_NAME) \
+		$($(PKG)_DL_OPTS)
 endef
 
 define SOURCE_CHECK_BZR
@@ -112,7 +114,8 @@ define DOWNLOAD_CVS
 		$(call stripurischeme,$(call qstrip,$($(PKG)_SITE))) \
 		$($(PKG)_DL_VERSION) \
 		$($(PKG)_RAWNAME) \
-		$($(PKG)_BASE_NAME)
+		$($(PKG)_BASE_NAME) \
+		$($(PKG)_DL_OPTS)
 endef
 
 # Not all CVS servers support ls/rls, use login to see if we can connect
@@ -127,7 +130,8 @@ define DOWNLOAD_SVN
 		-- \
 		$($(PKG)_SITE) \
 		$($(PKG)_DL_VERSION) \
-		$($(PKG)_BASE_NAME)
+		$($(PKG)_BASE_NAME) \
+		$($(PKG)_DL_OPTS)
 endef
 
 define SOURCE_CHECK_SVN
@@ -143,7 +147,8 @@ define DOWNLOAD_SCP
 		-H $(PKGDIR)/$($(PKG)_RAWNAME).hash \
 		$(QUIET) \
 		-- \
-		'$(call stripurischeme,$(call qstrip,$(1)))'
+		'$(call stripurischeme,$(call qstrip,$(1)))' \
+		$($(PKG)_DL_OPTS)
 endef
 
 define SOURCE_CHECK_SCP
@@ -157,7 +162,8 @@ define DOWNLOAD_HG
 		-- \
 		$($(PKG)_SITE) \
 		$($(PKG)_DL_VERSION) \
-		$($(PKG)_BASE_NAME)
+		$($(PKG)_BASE_NAME) \
+		$($(PKG)_DL_OPTS)
 endef
 
 # TODO: improve to check that the given PKG_DL_VERSION exists on the remote
@@ -172,7 +178,8 @@ define DOWNLOAD_WGET
 		-H $(PKGDIR)/$($(PKG)_RAWNAME).hash \
 		$(QUIET) \
 		-- \
-		'$(call qstrip,$(1))'
+		'$(call qstrip,$(1))' \
+		$($(PKG)_DL_OPTS)
 endef
 
 define SOURCE_CHECK_WGET
@@ -185,7 +192,8 @@ define DOWNLOAD_LOCALFILES
 		-H $(PKGDIR)/$($(PKG)_RAWNAME).hash \
 		$(QUIET) \
 		-- \
-		$(call stripurischeme,$(call qstrip,$(1)))
+		$(call stripurischeme,$(call qstrip,$(1))) \
+		$($(PKG)_DL_OPTS)
 endef
 
 define SOURCE_CHECK_LOCALFILES
-- 
2.8.1

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

* [Buildroot] [PATCH v4 3/7] docs/manual: Document the variable $(PKG)_DL_OPTS
  2016-08-05 14:53 [Buildroot] [PATCH v4 0/7] Add support for AMD Catalyst graphics driver Romain Perier
  2016-08-05 14:53 ` [Buildroot] [PATCH v4 1/7] support/download: Add support to pass options directly to downloaders Romain Perier
  2016-08-05 14:53 ` [Buildroot] [PATCH v4 2/7] pkg-download: Allow packages to pass generic options to download methods Romain Perier
@ 2016-08-05 14:53 ` Romain Perier
  2016-08-05 14:53 ` [Buildroot] [PATCH v4 4/7] package/amd-catalyst: Add AMD proprietary graphic stack support Romain Perier
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 14+ messages in thread
From: Romain Perier @ 2016-08-05 14:53 UTC (permalink / raw)
  To: buildroot

This adds a description of the optional variable $(PKG)_DL_OPTS. When it
is set, this option passes additional options to the downloader.

Signed-off-by: Romain Perier <romain.perier@free-electrons.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---

Changes in v4:
 - Add Reviewed-by tag

Changes in v3:
 - Improve documentation

Changes in v2:
 - Don't include the example in the snippet of code
 - Replaced $(PKG)_DL_REFERER by $(PKG)_DL_OPTS

 docs/manual/adding-packages-generic.txt | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/docs/manual/adding-packages-generic.txt b/docs/manual/adding-packages-generic.txt
index ef895ec..51408e8 100644
--- a/docs/manual/adding-packages-generic.txt
+++ b/docs/manual/adding-packages-generic.txt
@@ -250,6 +250,13 @@ information is (assuming the package name is +libfoo+) :
     +LIBFOO_SITE=/opt/software/libfoo.tar.gz+ +
     +LIBFOO_SITE=$(TOPDIR)/../src/libfoo+
 
+* +LIBFOO_DL_OPTS+ is a space-separated list of additional options to
+  pass to the downloader. Useful for retrieving documents with
+  server-side checking for user logins and passwords, or to use a proxy.
+  All download methods valid for +LIBFOO_SITE_METHOD+ are supported;
+  valid options depend on the download method (consult the man page
+  for the respective download utilities).
+
 * +LIBFOO_EXTRA_DOWNLOADS+ is a space-separated list of additional
   files that Buildroot should download. If an entry contains +://+
   then Buildroot will assume it is a complete URL and will download
-- 
2.8.1

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

* [Buildroot] [PATCH v4 4/7] package/amd-catalyst: Add AMD proprietary graphic stack support
  2016-08-05 14:53 [Buildroot] [PATCH v4 0/7] Add support for AMD Catalyst graphics driver Romain Perier
                   ` (2 preceding siblings ...)
  2016-08-05 14:53 ` [Buildroot] [PATCH v4 3/7] docs/manual: Document the variable $(PKG)_DL_OPTS Romain Perier
@ 2016-08-05 14:53 ` Romain Perier
  2016-08-05 22:00   ` Yann E. MORIN
  2016-08-05 14:53 ` [Buildroot] [PATCH v4 5/7] package/amd-catalyst: Add AMD cmdline tools Romain Perier
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 14+ messages in thread
From: Romain Perier @ 2016-08-05 14:53 UTC (permalink / raw)
  To: buildroot

This commits adds support for the AMD Catalyst Linux driver 15.9
(15.201.1151). It includes the fglrx kernel module with various fixes
to make it work with at least Linux kernel 4.4 LTS, the userspace OpenGL
stack and the xorg driver module.

Signed-off-by: Romain Perier <romain.perier@free-electrons.com>
---

Changes in v4:
 - Remove prompt for patching MODULE_LICENSE on the fly in the kernel module,
   we included a patch for removing code which depends on GPL symbols instead.
 - Split into multiple patches

Changes in v3:
 - Add a missing comma before the first argument of
   AMD_CATALYST_DRIVER_INSTALL_GL_LIBS, otherwise this function
   is skipped and does nothing.

 package/Config.in                                  |   1 +
 .../0001-Add-support-for-Linux-4.0.patch           |  45 ++++++++
 .../0002-Add-support-for-Linux-4.1.patch           |  31 ++++++
 .../0003-Add-support-for-Linux-4.2.patch           | 121 +++++++++++++++++++++
 ...0004-Use-fpregs_active-instead-of-has_fpu.patch |  33 ++++++
 ...-Use-a-local-copy-of-copy_xregs_to_kernel.patch |  79 ++++++++++++++
 .../0006-Add-support-for-Linux-4.4.patch           |  78 +++++++++++++
 package/amd-catalyst/0007-remove-gpl-symbols.patch |  54 +++++++++
 package/amd-catalyst/20-fglrx.conf                 |   4 +
 package/amd-catalyst/Config.in                     |  49 +++++++++
 package/amd-catalyst/amd-catalyst.hash             |   2 +
 package/amd-catalyst/amd-catalyst.mk               | 114 +++++++++++++++++++
 package/amd-catalyst/gl.pc                         |  12 ++
 13 files changed, 623 insertions(+)
 create mode 100644 package/amd-catalyst/0001-Add-support-for-Linux-4.0.patch
 create mode 100644 package/amd-catalyst/0002-Add-support-for-Linux-4.1.patch
 create mode 100644 package/amd-catalyst/0003-Add-support-for-Linux-4.2.patch
 create mode 100644 package/amd-catalyst/0004-Use-fpregs_active-instead-of-has_fpu.patch
 create mode 100644 package/amd-catalyst/0005-Use-a-local-copy-of-copy_xregs_to_kernel.patch
 create mode 100644 package/amd-catalyst/0006-Add-support-for-Linux-4.4.patch
 create mode 100644 package/amd-catalyst/0007-remove-gpl-symbols.patch
 create mode 100644 package/amd-catalyst/20-fglrx.conf
 create mode 100644 package/amd-catalyst/Config.in
 create mode 100644 package/amd-catalyst/amd-catalyst.hash
 create mode 100644 package/amd-catalyst/amd-catalyst.mk
 create mode 100644 package/amd-catalyst/gl.pc

diff --git a/package/Config.in b/package/Config.in
index 645fa29..281c632 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -344,6 +344,7 @@ endmenu
 	source "package/acpitool/Config.in"
 	source "package/aer-inject/Config.in"
 	source "package/am335x-pru-package/Config.in"
+	source "package/amd-catalyst/Config.in"
 	source "package/avrdude/Config.in"
 	source "package/bcache-tools/Config.in"
 	source "package/biosdevname/Config.in"
diff --git a/package/amd-catalyst/0001-Add-support-for-Linux-4.0.patch b/package/amd-catalyst/0001-Add-support-for-Linux-4.0.patch
new file mode 100644
index 0000000..a0db962
--- /dev/null
+++ b/package/amd-catalyst/0001-Add-support-for-Linux-4.0.patch
@@ -0,0 +1,45 @@
+From c35482bc0cc56b40263b74c3e58e42be867fd9f2 Mon Sep 17 00:00:00 2001
+From: Alberto Milone <alberto.milone@canonical.com>
+Date: Thu, 17 Sep 2015 15:41:46 +0200
+Subject: [PATCH] Add support for Linux 4.0
+
+Signed-off-by: Romain Perier <romain.perier@free-electrons.com>
+---
+ common/lib/modules/fglrx/build_mod/firegl_public.c | 5 +++++
+ common/lib/modules/fglrx/build_mod/kcl_str.c       | 4 ++++
+ 2 files changed, 9 insertions(+)
+
+diff --git a/common/lib/modules/fglrx/build_mod/firegl_public.c b/common/lib/modules/fglrx/build_mod/firegl_public.c
+index 677565d..6017e89 100755
+--- a/common/lib/modules/fglrx/build_mod/firegl_public.c
++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c
+@@ -285,6 +285,11 @@ MODULE_DEVICE_TABLE(pci, fglrx_pci_table);
+ 
+ MODULE_INFO(supported, "external");
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 20, 0)
++#define read_cr4()       __read_cr4()
++#define write_cr4(cr4)   __write_cr4(cr4)
++#endif
++
+ /* globals constants */
+ const char*         KCL_SYSINFO_OsVersionString = UTS_RELEASE;
+ const unsigned int  KCL_SYSINFO_PageSize        = PAGE_SIZE;
+diff --git a/common/lib/modules/fglrx/build_mod/kcl_str.c b/common/lib/modules/fglrx/build_mod/kcl_str.c
+index 2d89eb0..bacdb69 100755
+--- a/common/lib/modules/fglrx/build_mod/kcl_str.c
++++ b/common/lib/modules/fglrx/build_mod/kcl_str.c
+@@ -42,6 +42,10 @@
+ #include "kcl_type.h"
+ #include "kcl_str.h"
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 20, 0)
++#define strnicmp strncasecmp
++#endif
++
+ /** \brief Fill memory with a constant byte
+  *  \param s Pointer to memory
+  *  \param c Initializing value
+-- 
+2.8.1
+
diff --git a/package/amd-catalyst/0002-Add-support-for-Linux-4.1.patch b/package/amd-catalyst/0002-Add-support-for-Linux-4.1.patch
new file mode 100644
index 0000000..cc95916
--- /dev/null
+++ b/package/amd-catalyst/0002-Add-support-for-Linux-4.1.patch
@@ -0,0 +1,31 @@
+From e9c8ccb4c8c842042542b792c51f9a7ec6c85e06 Mon Sep 17 00:00:00 2001
+From: Alberto Milone <alberto.milone@canonical.com>
+Date: Thu, 17 Sep 2015 15:44:59 +0200
+Subject: [PATCH] Add support for Linux 4.1
+
+Signed-off-by: Romain Perier <romain.perier@free-electrons.com>
+---
+ common/lib/modules/fglrx/build_mod/firegl_public.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/common/lib/modules/fglrx/build_mod/firegl_public.c b/common/lib/modules/fglrx/build_mod/firegl_public.c
+index 6017e89..94778f1 100755
+--- a/common/lib/modules/fglrx/build_mod/firegl_public.c
++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c
+@@ -3508,10 +3508,12 @@ int ATI_API_CALL KCL_InstallInterruptHandler(
+         KCL_PUB_InterruptHandlerWrap,
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22)
+         ((useMSI) ? (SA_INTERRUPT) : (SA_SHIRQ)),
+-#else
++#elif LINUX_VERSION_CODE < KERNEL_VERSION(4,1,0)
+         //when MSI enabled. keep irq disabled when calling the action handler,
+         //exclude this IRQ from irq balancing (only on one CPU) 
+         ((useMSI) ? (IRQF_DISABLED) : (IRQF_SHARED)),    
++#else
++        ((useMSI) ? (0x0) : (IRQF_SHARED)),
+ #endif
+         dev_name,
+         context);
+-- 
+2.8.1
+
diff --git a/package/amd-catalyst/0003-Add-support-for-Linux-4.2.patch b/package/amd-catalyst/0003-Add-support-for-Linux-4.2.patch
new file mode 100644
index 0000000..7458162
--- /dev/null
+++ b/package/amd-catalyst/0003-Add-support-for-Linux-4.2.patch
@@ -0,0 +1,121 @@
+From e2e6c2dac2a0311a022208dd289374b832538329 Mon Sep 17 00:00:00 2001
+From: Alberto Milone <alberto.milone@canonical.com>
+Date: Tue, 14 Jul 2015 12:56:37 +0200
+Subject: [PATCH] Add support for Linux 4.2
+
+Deal with the FPU code renaming
+
+Signed-off-by: Romain Perier <romain.perier@free-electrons.com>
+---
+ common/lib/modules/fglrx/build_mod/firegl_public.c | 38 ++++++++++++++++++++++
+ 1 file changed, 38 insertions(+)
+
+diff --git a/common/lib/modules/fglrx/build_mod/firegl_public.c b/common/lib/modules/fglrx/build_mod/firegl_public.c
+index 94778f1..749ea51 100755
+--- a/common/lib/modules/fglrx/build_mod/firegl_public.c
++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c
+@@ -191,9 +191,17 @@
+ #include <linux/string.h>
+ #include <linux/gfp.h>
+ #include <linux/swap.h>
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0)
+ #include "asm/i387.h"
++#else
++#include <asm/fpu/api.h>
++#endif
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0)
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0)
+ #include <asm/fpu-internal.h>
++#else
++#include <asm/fpu/internal.h>
++#endif
+ #endif
+ 
+ #include "firegl_public.h"
+@@ -1711,6 +1719,9 @@ void ATI_API_CALL KCL_SetCurrentProcessState(KCL_ENUM_ProcessState state)
+ 
+ #if defined(__i386__) 
+ #ifndef __HAVE_ARCH_CMPXCHG
++#ifndef __xg
++#define __xg(x) ((volatile long *)(x))
++#endif
+ static inline 
+ unsigned long __fgl_cmpxchg(volatile void *ptr, unsigned long old,            
+                         unsigned long new, int size)                      
+@@ -1747,7 +1758,11 @@ unsigned long ATI_API_CALL kcl__cmpxchg(volatile void *ptr, unsigned long old,
+          unsigned long new, int size)
+ {
+ #ifndef __HAVE_ARCH_CMPXCHG
++#if defined(__i386__)
+     return __fgl_cmpxchg(ptr,old,new,size);
++#elif defined(__x86_64__)
++    return cmpxchg((unsigned long*)ptr,old,new);
++#endif
+ #else
+     /* On kernel version 2.6.34 passing a variable or unsupported size
+      * argument to the __cmpxchg macro causes the default-clause of a
+@@ -6443,21 +6458,36 @@ static int KCL_fpu_save_init(struct task_struct *tsk)
+    struct fpu *fpu = &tsk->thread.fpu;
+ 
+    if(static_cpu_has(X86_FEATURE_XSAVE)) {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0)
+       fpu_xsave(fpu);
+       if (!(fpu->state->xsave.xsave_hdr.xstate_bv & XSTATE_FP))
++#else
++      copy_xregs_to_kernel(&fpu->state.xsave);
++      if (!(fpu->state.xsave.header.xfeatures & XSTATE_FP))
++#endif
+ 	 return 1;
+    } else if (static_cpu_has(X86_FEATURE_FXSR)) {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0)
+ 	 fpu_fxsave(fpu);
++#else
++     copy_fxregs_to_kernel(fpu);
++#endif
+    } else {
+ 	 asm volatile("fnsave %[fx]; fwait"
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0)
+                   : [fx] "=m" (fpu->state->fsave));
++#else
++                  : [fx] "=m" (fpu->state.fsave));
++#endif
+ 	 return 0;
+    }
+ 
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0)
+    if (unlikely(fpu->state->fxsave.swd & X87_FSW_ES)) {
+ 	asm volatile("fnclex");
+ 	return 0;
+    }
++#endif
+    return 1;
+ }
+ #endif
+@@ -6469,8 +6499,12 @@ static int KCL_fpu_save_init(struct task_struct *tsk)
+ void ATI_API_CALL KCL_fpu_begin(void)
+ {
+ #ifdef CONFIG_X86_64
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0)
+     kernel_fpu_begin();
+ #else
++    __kernel_fpu_begin();
++#endif
++#else
+ #ifdef TS_USEDFPU
+     struct thread_info *cur_thread = current_thread_info();
+     struct task_struct *cur_task = get_current();
+@@ -6515,7 +6549,11 @@ void ATI_API_CALL KCL_fpu_begin(void)
+  */
+ void ATI_API_CALL KCL_fpu_end(void)
+ {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0)
+     kernel_fpu_end();
++#else
++    __kernel_fpu_end();
++#endif
+ }
+ 
+ /** Create new directory entry under "/proc/...."
+-- 
+2.8.1
+
diff --git a/package/amd-catalyst/0004-Use-fpregs_active-instead-of-has_fpu.patch b/package/amd-catalyst/0004-Use-fpregs_active-instead-of-has_fpu.patch
new file mode 100644
index 0000000..4d375b8
--- /dev/null
+++ b/package/amd-catalyst/0004-Use-fpregs_active-instead-of-has_fpu.patch
@@ -0,0 +1,33 @@
+From 7120f00015570a2e4d9b6532731960d509c71cba Mon Sep 17 00:00:00 2001
+From: Alberto Milone <alberto.milone@canonical.com>
+Date: Thu, 17 Sep 2015 15:48:30 +0200
+Subject: [PATCH] Use fpregs_active instead of has_fpu
+
+This is for Linux 4.2
+
+Thanks to Tim Gardner for the patch.
+
+Signed-off-by: Romain Perier <romain.perier@free-electrons.com>
+---
+ common/lib/modules/fglrx/build_mod/firegl_public.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/common/lib/modules/fglrx/build_mod/firegl_public.c b/common/lib/modules/fglrx/build_mod/firegl_public.c
+index 749ea51..4c1f9a5 100755
+--- a/common/lib/modules/fglrx/build_mod/firegl_public.c
++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c
+@@ -6528,7 +6528,11 @@ void ATI_API_CALL KCL_fpu_begin(void)
+     /* The thread structure is changed with the commit below for kernel 3.3:
+      * https://github.com/torvalds/linux/commit/7e16838d94b566a17b65231073d179bc04d590c8
+      */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)
++    if (cur_task->thread.fpu.fpregs_active)
++#else
+     if (cur_task->thread.fpu.has_fpu)
++#endif
+ #else
+     if (cur_task->thread.has_fpu)
+ #endif
+-- 
+2.8.1
+
diff --git a/package/amd-catalyst/0005-Use-a-local-copy-of-copy_xregs_to_kernel.patch b/package/amd-catalyst/0005-Use-a-local-copy-of-copy_xregs_to_kernel.patch
new file mode 100644
index 0000000..c9513ef
--- /dev/null
+++ b/package/amd-catalyst/0005-Use-a-local-copy-of-copy_xregs_to_kernel.patch
@@ -0,0 +1,79 @@
+From eb703737be5c91c1a0817351db8ec152c523c85d Mon Sep 17 00:00:00 2001
+From: Alberto Milone <alberto.milone@canonical.com>
+Date: Thu, 17 Sep 2015 15:49:46 +0200
+Subject: [PATCH] Use a local copy of copy_xregs_to_kernel
+
+This is needed for Linux 4.2.
+
+Thanks to Tim Gardner for the patch.
+
+Signed-off-by: Romain Perier <romain.perier@free-electrons.com>
+---
+ common/lib/modules/fglrx/build_mod/firegl_public.c | 44 +++++++++++++++++++++-
+ 1 file changed, 43 insertions(+), 1 deletion(-)
+
+diff --git a/common/lib/modules/fglrx/build_mod/firegl_public.c b/common/lib/modules/fglrx/build_mod/firegl_public.c
+index 4c1f9a5..bb67bba 100755
+--- a/common/lib/modules/fglrx/build_mod/firegl_public.c
++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c
+@@ -6443,6 +6443,48 @@ int ATI_API_CALL kcl_sscanf(const char * buf, const char * fmt, ...)
+     return i;
+ }
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)
++/*
++ * Save processor xstate to xsave area.
++ */
++static void _copy_xregs_to_kernel(struct xregs_state *xstate)
++{
++        u64 mask = -1;
++        u32 lmask = mask;
++        u32 hmask = mask >> 32;
++        int err = 0;
++
++        /*WARN_ON(!alternatives_patched);*/
++
++        /*
++         * If xsaves is enabled, xsaves replaces xsaveopt because
++         * it supports compact format and supervisor states in addition to
++         * modified optimization in xsaveopt.
++         *
++         * Otherwise, if xsaveopt is enabled, xsaveopt replaces xsave
++         * because xsaveopt supports modified optimization which is not
++         * supported by xsave.
++         *
++         * If none of xsaves and xsaveopt is enabled, use xsave.
++         */
++        alternative_input_2(
++                "1:"XSAVE,
++                XSAVEOPT,
++                X86_FEATURE_XSAVEOPT,
++                XSAVES,
++                X86_FEATURE_XSAVES,
++                [xstate] "D" (xstate), "a" (lmask), "d" (hmask) :
++                "memory");
++        asm volatile("2:\n\t"
++                     xstate_fault(err)
++                     : "0" (err)
++                     : "memory");
++
++        /* We should never fault when copying to a kernel buffer: */
++        WARN_ON_FPU(err);
++}
++#endif
++
+ /** \brief Generate UUID
+  *  \param buf pointer to the generated UUID
+  *  \return None
+@@ -6462,7 +6504,7 @@ static int KCL_fpu_save_init(struct task_struct *tsk)
+       fpu_xsave(fpu);
+       if (!(fpu->state->xsave.xsave_hdr.xstate_bv & XSTATE_FP))
+ #else
+-      copy_xregs_to_kernel(&fpu->state.xsave);
++      _copy_xregs_to_kernel(&fpu->state.xsave);
+       if (!(fpu->state.xsave.header.xfeatures & XSTATE_FP))
+ #endif
+ 	 return 1;
+-- 
+2.8.1
+
diff --git a/package/amd-catalyst/0006-Add-support-for-Linux-4.4.patch b/package/amd-catalyst/0006-Add-support-for-Linux-4.4.patch
new file mode 100644
index 0000000..104e2c5
--- /dev/null
+++ b/package/amd-catalyst/0006-Add-support-for-Linux-4.4.patch
@@ -0,0 +1,78 @@
+From 54b230e26a1889c08507e791ab043f8a4b4ff771 Mon Sep 17 00:00:00 2001
+From: Romain Perier <romain.perier@free-electrons.com>
+Date: Thu, 7 Jul 2016 14:40:53 +0200
+Subject: [PATCH] Add support for Linux 4.4
+
+It fixes various things like the use of seq_printf because its API
+changed. It also replaces the call to mtrr_add and mtrr_del by
+arch_phys_wc_add and arch_phys_wc_del because these symbols are
+no longer exported for Linux >= 4.3.x.
+
+Signed-off-by: Romain Perier <romain.perier@free-electrons.com>
+---
+ common/lib/modules/fglrx/build_mod/firegl_public.c | 21 +++++++++++++++++++++
+ 1 file changed, 21 insertions(+)
+
+diff --git a/common/lib/modules/fglrx/build_mod/firegl_public.c b/common/lib/modules/fglrx/build_mod/firegl_public.c
+index bb67bba..b4b2d30 100755
+--- a/common/lib/modules/fglrx/build_mod/firegl_public.c
++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c
+@@ -636,9 +636,16 @@ static int firegl_major_proc_read(struct seq_file *m, void* data)
+ 
+     len = snprintf(buf, request, "%d\n", major);
+ #else
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0)
++    seq_printf(m, "%d\n", major);
++    len = 0;
++#else
+     len = seq_printf(m, "%d\n", major);
+ #endif
+ 
++#endif
++
+     KCL_DEBUG1(FN_FIREGL_PROC, "return len=%i\n",len);
+ 
+     return len;
+@@ -3432,7 +3439,11 @@ int ATI_API_CALL KCL_MEM_MTRR_Support(void)
+ int ATI_API_CALL KCL_MEM_MTRR_AddRegionWc(unsigned long base, unsigned long size)
+ {
+ #ifdef CONFIG_MTRR
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0)
++    return arch_phys_wc_add(base, size);
++#else
+     return mtrr_add(base, size, MTRR_TYPE_WRCOMB, 1);
++#endif
+ #else /* !CONFIG_MTRR */
+     return -EPERM;
+ #endif /* !CONFIG_MTRR */
+@@ -3441,7 +3452,12 @@ int ATI_API_CALL KCL_MEM_MTRR_AddRegionWc(unsigned long base, unsigned long size
+ int ATI_API_CALL KCL_MEM_MTRR_DeleteRegion(int reg, unsigned long base, unsigned long size)
+ {
+ #ifdef CONFIG_MTRR
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0)
++    arch_phys_wc_del(reg);
++    return 0;
++#else
+     return mtrr_del(reg, base, size);
++#endif
+ #else /* !CONFIG_MTRR */
+     return -EPERM;
+ #endif /* !CONFIG_MTRR */
+@@ -6505,8 +6521,13 @@ static int KCL_fpu_save_init(struct task_struct *tsk)
+       if (!(fpu->state->xsave.xsave_hdr.xstate_bv & XSTATE_FP))
+ #else
+       _copy_xregs_to_kernel(&fpu->state.xsave);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,4,0)
++      if (!(fpu->state.xsave.header.xfeatures & XFEATURE_MASK_FP))
++#else
+       if (!(fpu->state.xsave.header.xfeatures & XSTATE_FP))
+ #endif
++
++#endif
+ 	 return 1;
+    } else if (static_cpu_has(X86_FEATURE_FXSR)) {
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0)
+-- 
+2.8.1
+
diff --git a/package/amd-catalyst/0007-remove-gpl-symbols.patch b/package/amd-catalyst/0007-remove-gpl-symbols.patch
new file mode 100644
index 0000000..d0094b0
--- /dev/null
+++ b/package/amd-catalyst/0007-remove-gpl-symbols.patch
@@ -0,0 +1,54 @@
+Author: Manuel R??ger <mrueg@gentoo.org>
+Date: Sat, 2 Jan 2016 17:24:30 +0100
+URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/x11-drivers/ati-drivers/files?id=179aa11ed2f1bd79cf1b190263c3a7a07279fc50
+
+Signed-off-by: Romain Perier <romain.perier@free-electrons.com>
+---
+--- a/common/lib/modules/fglrx/build_mod/firegl_public.c	2015-09-18 23:57:02.000000000 -0400
++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c	2015-09-18 23:57:11.000000000 -0400
+@@ -136,7 +136,6 @@
+ #include <asm/mman.h>
+ #include <asm/uaccess.h>
+ #include <asm/processor.h>
+-#include <asm/tlbflush.h> // for flush_tlb_page
+ #include <asm/cpufeature.h>
+ #ifdef CONFIG_MTRR
+ #include <asm/mtrr.h>
+@@ -251,6 +250,26 @@
+ #define WRITE_CR4(x)    write_cr4(x)
+ #endif
+ 
++#define __flush_tlb_one(addr) asm volatile("invlpg (%0)" ::"r" (addr) : "memory")
++#define __flush_tlb() native_write_cr3(native_read_cr3())
++
++static inline void __flush_tlb_all(void)
++{
++        if (cpu_has_pge)
++        {
++                unsigned long flags, cr4;
++                raw_local_irq_save(flags);
++                cr4 = native_read_cr4();
++                native_write_cr4(cr4 & ~X86_CR4_PGE);
++                native_write_cr4(cr4);
++                raw_local_irq_restore(flags);
++        }
++        else
++        {
++                __flush_tlb();
++        }
++}
++
+ // ============================================================
+ /* globals */
+ 
+--- a/common/lib/modules/fglrx/build_mod/kcl_acpi.c	2015-09-19 00:43:35.000000000 -0400
++++ b/common/lib/modules/fglrx/build_mod/kcl_acpi.c	2015-09-19 00:43:48.000000000 -0400
+@@ -868,7 +868,7 @@ void ATI_API_CALL KCL_ACPI_No_Hotplug(vo
+ #elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,17,0)
+     if(pdev)
+     {
+-#if (UTS_UBUNTU_RELEASE_ABI < 0 && LINUX_VERSION_CODE < KERNEL_VERSION(4,1,3)) || (UTS_UBUNTU_RELEASE_ABI >= 0 && UTS_UBUNTU_RELEASE_ABI < 26 && LINUX_VERSION_CODE <= KERNEL_VERSION(3,19,8))
++#if 0 && (UTS_UBUNTU_RELEASE_ABI < 0 && LINUX_VERSION_CODE < KERNEL_VERSION(4,1,3)) || (UTS_UBUNTU_RELEASE_ABI >= 0 && UTS_UBUNTU_RELEASE_ABI < 26 && LINUX_VERSION_CODE <= KERNEL_VERSION(3,19,8))
+        pci_ignore_hotplug(pdev);
+ #else
+        pdev->ignore_hotplug = 1;
diff --git a/package/amd-catalyst/20-fglrx.conf b/package/amd-catalyst/20-fglrx.conf
new file mode 100644
index 0000000..d83ff58
--- /dev/null
+++ b/package/amd-catalyst/20-fglrx.conf
@@ -0,0 +1,4 @@
+Section "Device"
+	Identifier "AMD Radeon GPU"
+	Driver "fglrx"
+EndSection
diff --git a/package/amd-catalyst/Config.in b/package/amd-catalyst/Config.in
new file mode 100644
index 0000000..c3c531c
--- /dev/null
+++ b/package/amd-catalyst/Config.in
@@ -0,0 +1,49 @@
+comment "amd-catalyst needs a glibc toolchain"
+	depends on BR2_i386 || BR2_x86_64
+	depends on !BR2_TOOLCHAIN_USES_GLIBC
+
+config BR2_PACKAGE_AMD_CATALYST
+	bool "amd-catalyst"
+	depends on BR2_i386 || BR2_x86_64
+	depends on BR2_TOOLCHAIN_USES_GLIBC
+	help
+	  The binary-only driver blob for AMD cards.
+	  This driver supports AMD Radeon HD 5xxx and newer graphics
+	  cards.
+
+	  http://www.amd.com/
+
+if BR2_PACKAGE_AMD_CATALYST
+
+comment "amd-catalyst needs a modular Xorg <= 1.17"
+	depends on !BR2_PACKAGE_XORG7 || !BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR || !BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_19
+
+config BR2_PACKAGE_AMD_CATALYST_XORG
+	bool "X.org drivers"
+	default y
+	depends on BR2_PACKAGE_XORG7
+	depends on BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR
+	depends on BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_19
+	select BR2_PACKAGE_XSERVER_XORG_SERVER_AIGLX
+	select BR2_PACKAGE_ACPID # runtime
+	# This package does not have standard GL headers
+	select BR2_PACKAGE_MESA3D_HEADERS
+	select BR2_PACKAGE_XLIB_LIBX11
+	select BR2_PACKAGE_XLIB_LIBXEXT
+	select BR2_PACKAGE_XLIB_LIBXCOMPOSITE
+	select BR2_PACKAGE_HAS_LIBGL
+
+if BR2_PACKAGE_AMD_CATALYST_XORG
+
+config BR2_PACKAGE_PROVIDES_LIBGL
+	default "amd-catalyst"
+
+endif
+
+config BR2_PACKAGE_AMD_CATALYST_MODULE
+	bool "fglrx kernel module"
+	depends on BR2_LINUX_KERNEL
+	help
+	  Builds and install the fglrx kernel module
+
+endif # BR2_PACKAGE_AMD_CATALYST
diff --git a/package/amd-catalyst/amd-catalyst.hash b/package/amd-catalyst/amd-catalyst.hash
new file mode 100644
index 0000000..9f9b0a3
--- /dev/null
+++ b/package/amd-catalyst/amd-catalyst.hash
@@ -0,0 +1,2 @@
+# Locally computed
+sha256	bf3e6e7d5c51db3d075410a3f116f865b82823debc1d66698d187249feec6a91	amd-catalyst-15.9-linux-installer-15.201.1151-x86.x86_64.zip
diff --git a/package/amd-catalyst/amd-catalyst.mk b/package/amd-catalyst/amd-catalyst.mk
new file mode 100644
index 0000000..cda8e75
--- /dev/null
+++ b/package/amd-catalyst/amd-catalyst.mk
@@ -0,0 +1,114 @@
+################################################################################
+#
+# amd-catalyst
+#
+################################################################################
+
+AMD_CATALYST_VERSION = 15.9
+AMD_CATALYST_VERBOSE_VER = 15.201.1151
+AMD_CATALYST_SITE = http://www2.ati.com/drivers/linux
+AMD_CATALYST_DL_OPTS = --referer='http://support.amd.com/en-us/kb-articles/Pages/latest-linux-beta-driver.aspx'
+AMD_CATALYST_SOURCE = amd-catalyst-$(AMD_CATALYST_VERSION)-linux-installer-$(AMD_CATALYST_VERBOSE_VER)-x86.x86_64.zip
+AMD_CATALYST_LICENSE = AMD Software License 
+AMD_CATALYST_LICENSE_FILES = LICENSE.txt
+AMD_CATALYST_INSTALL_STAGING = YES
+AMD_CATALYST_SUFFIX = $(if $(BR2_x86_64),_64)
+AMD_CATALYST_ARCH_DIR = $(@D)/arch/x86$(AMD_CATALYST_SUFFIX)
+AMD_CATALYST_LIB_SUFFIX = $(if $(BR2_x86_64),64)
+
+
+define AMD_CATALYST_EXTRACT_CMDS
+	unzip -q $(DL_DIR)/$(AMD_CATALYST_SOURCE) -d $(@D)
+	$(SHELL) $(@D)/AMD-Catalyst-$(AMD_CATALYST_VERSION)-Linux-installer-$(AMD_CATALYST_VERBOSE_VER)-x86.x86_64.run --extract $(@D)
+endef
+
+ifeq ($(BR2_PACKAGE_AMD_CATALYST_MODULE),y)
+AMD_CATALYST_MODULE_SUBDIRS = common/lib/modules/fglrx/build_mod/2.6.x
+AMD_CATALYST_MODULE_MAKE_OPTS =  \
+	CFLAGS_MODULE="-DCOMPAT_ALLOC_USER_SPACE=arch_compat_alloc_user_space"
+
+define AMD_CATALYST_CONFIGURE_CMDS
+	# The Makefile expects to have source in the folder 2.6.x
+	cp $(@D)/common/lib/modules/fglrx/build_mod/*.{c,h} \
+		$(@D)/common/lib/modules/fglrx/build_mod/2.6.x
+	# This static lib is required during the link
+	cp $(@D)/arch/x86$(AMD_CATALYST_SUFFIX)/lib/modules/fglrx/build_mod/libfglrx_ip.a \
+		$(@D)/common/lib/modules/fglrx/build_mod/2.6.x
+endef
+
+$(eval $(kernel-module))
+endif
+
+ifeq ($(BR2_PACKAGE_AMD_CATALYST_XORG), y)
+
+AMD_CATALYST_DEPENDENCIES += mesa3d-headers
+AMD_CATALYST_PROVIDES = libgl
+AMD_CATALYST_XPIC_DIR = $(@D)/xpic$(if $(BR2_x86_64),_64a)
+
+define AMD_CATALYST_INSTALL_GL_LIBS
+	$(INSTALL) -m 0644 $(AMD_CATALYST_ARCH_DIR)/usr/X11R6/lib$(AMD_CATALYST_LIB_SUFFIX)/fglrx/fglrx-libGL.so.1.2 \
+		$(1)/usr/lib
+	ln -sf fglrx-libGL.so.1.2 $(1)/usr/lib/libGL.so.1.2
+	ln -sf fglrx-libGL.so.1.2 $(1)/usr/lib/libGL.so.1
+	ln -sf fglrx-libGL.so.1.2 $(1)/usr/lib/libGL.so
+endef
+
+define AMD_CATALYST_INSTALL_STAGING_XORG
+	$(call AMD_CATALYST_INSTALL_GL_LIBS,$(STAGING_DIR))
+	$(INSTALL) -D -m 0644 package/amd-catalyst/gl.pc \
+		$(STAGING_DIR)/usr/lib/pkgconfig/gl.pc
+endef
+
+AMD_CATALYST_XORG_DRIVERS_FILES = modules/amdxmm.so \
+	modules/drivers/fglrx_drv.so \
+	modules/linux/libfglrxdrm.so
+
+define AMD_CATALYST_INSTALL_XORG
+# Xorg drivers
+	$(foreach f,$(AMD_CATALYST_XORG_DRIVERS_FILES), \
+		$(INSTALL) -D -m 0755 $(AMD_CATALYST_XPIC_DIR)/usr/X11R6/lib$(AMD_CATALYST_LIB_SUFFIX)/$(f) \
+		$(TARGET_DIR)/usr/lib/xorg/$(f)
+	)
+
+# Xorg is not able to detect the driver automatically
+	$(INSTALL) -D -m 0644 package/amd-catalyst/20-fglrx.conf \
+		$(TARGET_DIR)/etc/X11/xorg.conf.d/20-fglrx.conf
+
+
+# Common files: containing binary profiles about GPUs,
+# required by the fglrx_drv xorg driver
+	$(INSTALL) -d $(TARGET_DIR)/etc/ati
+ 	$(INSTALL) -m 0644 $(@D)/common/etc/ati/* $(TARGET_DIR)/etc/ati/
+
+# DRI and GLX xorg modules: by default DRI is activated,
+# these modules are required by the fglrx_drv.so xorg driver
+	$(INSTALL) -D -m 0644 $(AMD_CATALYST_ARCH_DIR)/usr/X11R6/lib$(AMD_CATALYST_LIB_SUFFIX)/modules/dri/fglrx_dri.so \
+		$(TARGET_DIR)/usr/lib/dri/fglrx_dri.so
+	$(INSTALL) -D -m 0644 $(AMD_CATALYST_XPIC_DIR)/usr/X11R6/lib$(AMD_CATALYST_LIB_SUFFIX)/modules/extensions/fglrx/fglrx-libglx.so \
+		$(TARGET_DIR)/usr/lib/xorg/modules/extensions/libglx.so
+	$(INSTALL) -D -m 0644 $(AMD_CATALYST_XPIC_DIR)/usr/X11R6/lib$(AMD_CATALYST_LIB_SUFFIX)/modules/glesx.so \
+		$(TARGET_DIR)/usr/lib/xorg/modules/glesx.so
+
+# Userspace GL libraries, also runtime dependency of most of the cmdline tools
+	$(INSTALL) -m 0644 $(AMD_CATALYST_ARCH_DIR)/usr/X11R6/lib$(AMD_CATALYST_LIB_SUFFIX)/*.so \
+		$(TARGET_DIR)/usr/lib/
+	$(call AMD_CATALYST_INSTALL_GL_LIBS,$(TARGET_DIR))
+
+# Runtime depedency required by libfglrxdrm.so
+	$(INSTALL) -m 0644 $(AMD_CATALYST_ARCH_DIR)/usr/lib$(AMD_CATALYST_LIB_SUFFIX)/libatiuki.so.1.0 \
+		$(TARGET_DIR)/usr/lib/
+	ln -sf libatiuki.so.1.0 \
+		$(TARGET_DIR)/usr/lib/libatiuki.so.1
+endef
+
+endif
+
+define AMD_CATALYST_INSTALL_STAGING_CMDS
+	$(call AMD_CATALYST_INSTALL_STAGING_XORG)
+endef
+
+define AMD_CATALYST_INSTALL_TARGET_CMDS
+	$(call AMD_CATALYST_INSTALL_XORG)
+endef
+
+$(eval $(generic-package))
diff --git a/package/amd-catalyst/gl.pc b/package/amd-catalyst/gl.pc
new file mode 100644
index 0000000..8729271
--- /dev/null
+++ b/package/amd-catalyst/gl.pc
@@ -0,0 +1,12 @@
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: gl
+Description: AMD Catalyst OpenGL library
+Version: 15.9
+Libs: -L${libdir} -lGL -lm -lXext -lX11 -ldl
+Cflags: -I${includedir}
+glx_tls: no
+
-- 
2.8.1

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

* [Buildroot] [PATCH v4 5/7] package/amd-catalyst: Add AMD cmdline tools
  2016-08-05 14:53 [Buildroot] [PATCH v4 0/7] Add support for AMD Catalyst graphics driver Romain Perier
                   ` (3 preceding siblings ...)
  2016-08-05 14:53 ` [Buildroot] [PATCH v4 4/7] package/amd-catalyst: Add AMD proprietary graphic stack support Romain Perier
@ 2016-08-05 14:53 ` Romain Perier
  2016-08-05 22:20   ` Yann E. MORIN
  2016-08-05 22:32   ` Yann E. MORIN
  2016-08-05 14:53 ` [Buildroot] [PATCH v4 6/7] package/amd-catalyst: Add support AMD CCCLE Romain Perier
  2016-08-05 14:54 ` [Buildroot] [PATCH v4 7/7] package/amd-catalyst: Add support for OpenCL Romain Perier
  6 siblings, 2 replies; 14+ messages in thread
From: Romain Perier @ 2016-08-05 14:53 UTC (permalink / raw)
  To: buildroot

The AMD Catalyst driver includes some cmdline tools for displaying
specific infos about the GL stack or to test 3D, like fglxinfo
or fgl_gears. This commit adds support to install such tools.

Signed-off-by: Romain Perier <romain.perier@free-electrons.com>
---
 package/amd-catalyst/Config.in       |  5 +++++
 package/amd-catalyst/amd-catalyst.mk | 20 ++++++++++++++++++++
 2 files changed, 25 insertions(+)

diff --git a/package/amd-catalyst/Config.in b/package/amd-catalyst/Config.in
index c3c531c..0099e91 100644
--- a/package/amd-catalyst/Config.in
+++ b/package/amd-catalyst/Config.in
@@ -38,6 +38,11 @@ if BR2_PACKAGE_AMD_CATALYST_XORG
 config BR2_PACKAGE_PROVIDES_LIBGL
 	default "amd-catalyst"
 
+config BR2_PACKAGE_AMD_CATALYST_CMDLINE_TOOLS
+	bool "command-line configuration tools and utilities"
+	help
+	  Build the amd command line tools
+
 endif
 
 config BR2_PACKAGE_AMD_CATALYST_MODULE
diff --git a/package/amd-catalyst/amd-catalyst.mk b/package/amd-catalyst/amd-catalyst.mk
index cda8e75..5e1b90b 100644
--- a/package/amd-catalyst/amd-catalyst.mk
+++ b/package/amd-catalyst/amd-catalyst.mk
@@ -103,12 +103,32 @@ endef
 
 endif
 
+ifeq ($(BR2_PACKAGE_AMD_CATALYST_CMDLINE_TOOLS), y)
+AMD_CATALYST_CMDLINE_TOOLS_FILES = \
+	atiode \
+	atiodcli \
+	fgl_glxgears \
+	aticonfig \
+	amd-console-helper \
+	fglrxinfo
+
+define  AMD_CATALYST_INSTALL_CMDLINE_TOOLS
+	$(INSTALL) -m 0755 $(AMD_CATALYST_ARCH_DIR)/usr/sbin/atieventsd \
+		$(TARGET_DIR)/usr/sbin
+	$(foreach f,$(AMD_CATALYST_CMDLINE_TOOLS_FILES), \
+		$(INSTALL) -D -m 0755 $(AMD_CATALYST_ARCH_DIR)/usr/X11R6/bin/$(f) \
+			$(TARGET_DIR)/usr/bin/$(f)
+	)
+endef
+endif
+
 define AMD_CATALYST_INSTALL_STAGING_CMDS
 	$(call AMD_CATALYST_INSTALL_STAGING_XORG)
 endef
 
 define AMD_CATALYST_INSTALL_TARGET_CMDS
 	$(call AMD_CATALYST_INSTALL_XORG)
+	$(call AMD_CATALYST_INSTALL_CMDLINE_TOOLS)
 endef
 
 $(eval $(generic-package))
-- 
2.8.1

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

* [Buildroot] [PATCH v4 6/7] package/amd-catalyst: Add support AMD CCCLE
  2016-08-05 14:53 [Buildroot] [PATCH v4 0/7] Add support for AMD Catalyst graphics driver Romain Perier
                   ` (4 preceding siblings ...)
  2016-08-05 14:53 ` [Buildroot] [PATCH v4 5/7] package/amd-catalyst: Add AMD cmdline tools Romain Perier
@ 2016-08-05 14:53 ` Romain Perier
  2016-08-05 22:28   ` Yann E. MORIN
  2016-08-05 14:54 ` [Buildroot] [PATCH v4 7/7] package/amd-catalyst: Add support for OpenCL Romain Perier
  6 siblings, 1 reply; 14+ messages in thread
From: Romain Perier @ 2016-08-05 14:53 UTC (permalink / raw)
  To: buildroot

The AMD Catalyst Linux driver includes a graphical controler center for AMD
graphics accelerators, called Catalyst Controler Center. This commits
adds support to install this tool by adding a separated prompt.

Signed-off-by: Romain Perier <romain.perier@free-electrons.com>
---
 package/amd-catalyst/Config.in       | 13 +++++++++++++
 package/amd-catalyst/amd-catalyst.mk | 10 ++++++++++
 2 files changed, 23 insertions(+)

diff --git a/package/amd-catalyst/Config.in b/package/amd-catalyst/Config.in
index 0099e91..99676d3 100644
--- a/package/amd-catalyst/Config.in
+++ b/package/amd-catalyst/Config.in
@@ -43,6 +43,19 @@ config BR2_PACKAGE_AMD_CATALYST_CMDLINE_TOOLS
 	help
 	  Build the amd command line tools
 
+comment "Catalyst Control Center needs Qt4 with X11 and PNG support"
+	depends on !BR2_PACKAGE_QT || !BR2_PACKAGE_QT_X11 || BR2_PACKAGE_QT_NOPNG
+
+config BR2_PACKAGE_AMD_CATALYST_CCCLE
+	bool "Catalyst Control Center"
+	depends on BR2_USE_MMU && BR2_PACKAGE_QT && BR2_PACKAGE_QT_X11
+	select BR2_PACKAGE_PROCPS_NG # runtime
+	select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
+	select BR2_PACKAGE_QT_GUI_MODULE
+	select BR2_PACKAGE_QT_ACCESSIBILITY
+	help
+	  Installs the Catalyst Control Center, a Qt graphical tool to
+	  control AMD graphics accelerators.
 endif
 
 config BR2_PACKAGE_AMD_CATALYST_MODULE
diff --git a/package/amd-catalyst/amd-catalyst.mk b/package/amd-catalyst/amd-catalyst.mk
index 5e1b90b..ee3c2d6 100644
--- a/package/amd-catalyst/amd-catalyst.mk
+++ b/package/amd-catalyst/amd-catalyst.mk
@@ -122,6 +122,15 @@ define  AMD_CATALYST_INSTALL_CMDLINE_TOOLS
 endef
 endif
 
+ifeq ($(BR2_PACKAGE_AMD_CATALYST_CCCLE), y)
+define AMD_CATALYST_INSTALL_CCCLE
+	$(INSTALL) -m 0755 $(AMD_CATALYST_ARCH_DIR)/usr/X11R6/bin/amdcccle \
+		$(TARGET_DIR)/usr/bin/amdcccle
+	$(INSTALL) -m 0755 $(AMD_CATALYST_ARCH_DIR)/usr/sbin/amdnotifyui \
+		$(TARGET_DIR)/usr/sbin/amdnotifyui
+endef
+endif
+
 define AMD_CATALYST_INSTALL_STAGING_CMDS
 	$(call AMD_CATALYST_INSTALL_STAGING_XORG)
 endef
@@ -129,6 +138,7 @@ endef
 define AMD_CATALYST_INSTALL_TARGET_CMDS
 	$(call AMD_CATALYST_INSTALL_XORG)
 	$(call AMD_CATALYST_INSTALL_CMDLINE_TOOLS)
+	$(call AMD_CATALYST_INSTALL_CCCLE)
 endef
 
 $(eval $(generic-package))
-- 
2.8.1

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

* [Buildroot] [PATCH v4 7/7] package/amd-catalyst: Add support for OpenCL
  2016-08-05 14:53 [Buildroot] [PATCH v4 0/7] Add support for AMD Catalyst graphics driver Romain Perier
                   ` (5 preceding siblings ...)
  2016-08-05 14:53 ` [Buildroot] [PATCH v4 6/7] package/amd-catalyst: Add support AMD CCCLE Romain Perier
@ 2016-08-05 14:54 ` Romain Perier
  2016-08-05 22:47   ` Yann E. MORIN
  6 siblings, 1 reply; 14+ messages in thread
From: Romain Perier @ 2016-08-05 14:54 UTC (permalink / raw)
  To: buildroot

The AMD Catalyst Linux driver includes OpenCL libraries for GPGPU
computing. This commits adds support to install the binary blobs and ICD
profiles.

Signed-off-by: Romain Perier <romain.perier@free-electrons.com>
---
 package/amd-catalyst/Config.in       |  6 ++++++
 package/amd-catalyst/amd-catalyst.mk | 24 ++++++++++++++++++++++++
 2 files changed, 30 insertions(+)

diff --git a/package/amd-catalyst/Config.in b/package/amd-catalyst/Config.in
index 99676d3..856ff9b 100644
--- a/package/amd-catalyst/Config.in
+++ b/package/amd-catalyst/Config.in
@@ -64,4 +64,10 @@ config BR2_PACKAGE_AMD_CATALYST_MODULE
 	help
 	  Builds and install the fglrx kernel module
 
+config BR2_PACKAGE_AMD_CATALYST_OPENCL
+	bool "OpenCL support"
+	help
+	  Installs the OpenCL binary blobs and the ICD profile
+	  for GPGPU computing.
+
 endif # BR2_PACKAGE_AMD_CATALYST
diff --git a/package/amd-catalyst/amd-catalyst.mk b/package/amd-catalyst/amd-catalyst.mk
index ee3c2d6..64746bf 100644
--- a/package/amd-catalyst/amd-catalyst.mk
+++ b/package/amd-catalyst/amd-catalyst.mk
@@ -39,6 +39,29 @@ endef
 $(eval $(kernel-module))
 endif
 
+ifeq ($(BR2_PACKAGE_AMD_CATALYST_OPENCL),y)
+
+AMD_CATALYST_OCL_SUFFIX = $(if $(BR2_x86_64),64,32)
+AMD_CATALYST_OPENCL_FILES = \
+	usr/lib$(AMD_CATALYST_LIB_SUFFIX)/libOpenCL.so.1 \
+	usr/lib$(AMD_CATALYST_LIB_SUFFIX)/libaticalcl.so \
+	usr/lib$(AMD_CATALYST_LIB_SUFFIX)/libamdocl$(AMD_CATALYST_OCL_SUFFIX).so \
+	usr/lib$(AMD_CATALYST_LIB_SUFFIX)/libamdocl12cl$(AMD_CATALYST_OCL_SUFFIX).so
+
+define AMD_CATALYST_INSTALL_OPENCL
+	$(foreach f,$(AMD_CATALYST_OPENCL_FILES), \
+		$(INSTALL) -D -m 0755 $(AMD_CATALYST_ARCH_DIR)/$(f) $(TARGET_DIR)/$(f)
+	)
+	ln -sf libOpenCL.so.1 \
+		$(TARGET_DIR)/usr/lib/libOpenCL.so
+	$(INSTALL) -m 0755 $(AMD_CATALYST_ARCH_DIR)/usr/bin/clinfo \
+		$(TARGET_DIR)/usr/bin
+	$(INSTALL) -D -m 0644 $(AMD_CATALYST_ARCH_DIR)/etc/OpenCL/vendors/amdocl$(AMD_CATALYST_OCL_SUFFIX).icd \
+		$(TARGET_DIR)/etc/OpenCL/vendors/amdocl$(AMD_CATALYST_OCL_SUFFIX).icd
+endef
+
+endif
+
 ifeq ($(BR2_PACKAGE_AMD_CATALYST_XORG), y)
 
 AMD_CATALYST_DEPENDENCIES += mesa3d-headers
@@ -139,6 +162,7 @@ define AMD_CATALYST_INSTALL_TARGET_CMDS
 	$(call AMD_CATALYST_INSTALL_XORG)
 	$(call AMD_CATALYST_INSTALL_CMDLINE_TOOLS)
 	$(call AMD_CATALYST_INSTALL_CCCLE)
+	$(call AMD_CATALYST_INSTALL_OPENCL)
 endef
 
 $(eval $(generic-package))
-- 
2.8.1

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

* [Buildroot] [PATCH v4 1/7] support/download: Add support to pass options directly to downloaders
  2016-08-05 14:53 ` [Buildroot] [PATCH v4 1/7] support/download: Add support to pass options directly to downloaders Romain Perier
@ 2016-08-05 15:54   ` Yann E. MORIN
  0 siblings, 0 replies; 14+ messages in thread
From: Yann E. MORIN @ 2016-08-05 15:54 UTC (permalink / raw)
  To: buildroot

Romain, All,

On 2016-08-05 16:53 +0200, Romain Perier spake thusly:
> This adds support to pass options to the underlying command that is used
> by downloader. Useful for retrieving data with server-side checking for
> user login or passwords, use a proxy or use specific options for cloning
> a repository via git and hg.
> 
> Signed-off-by: Romain Perier <romain.perier@free-electrons.com>

Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

Regards,
Yann E. MORIN.

> ---
> 
> Changes in v4:
>  - Rebased onto master
>  - Pass "${@}" to "git clone --depth 1" too.
> 
> Changes in v3:
>  - Don't use the variable ${dl_opts} to catch extra arguments
>  - We prefer to use shift and "${@}", it does not introduce
>    empty string when there are no extra parameters.
> 
> Changes in v2:
>  - Replaced the variable $(PKG)_DL_REFERER by $(PKG)_DL_OPTS
>  - Add modification to all downloaders
> 
>  support/download/bzr  | 4 +++-
>  support/download/cp   | 4 +++-
>  support/download/cvs  | 4 +++-
>  support/download/git  | 6 ++++--
>  support/download/hg   | 4 +++-
>  support/download/scp  | 4 +++-
>  support/download/svn  | 4 +++-
>  support/download/wget | 4 +++-
>  8 files changed, 25 insertions(+), 9 deletions(-)
> 
> diff --git a/support/download/bzr b/support/download/bzr
> index e18b01f..75b7b41 100755
> --- a/support/download/bzr
> +++ b/support/download/bzr
> @@ -26,6 +26,8 @@ repo="${2}"
>  rev="${3}"
>  basename="${4}"
>  
> +shift 4 # Get rid of our options
> +
>  # Caller needs to single-quote its arguments to prevent them from
>  # being expanded a second time (in case there are spaces in them)
>  _bzr() {
> @@ -49,5 +51,5 @@ if [ ${bzr_version} -ge ${bzr_min_version} ]; then
>  fi
>  
>  _bzr export ${verbose} --root="'${basename}/'" --format=tgz \
> -    ${timestamp_opt} - "'${repo}'" -r "'${rev}'" \
> +    ${timestamp_opt} - "${@}" "'${repo}'" -r "'${rev}'" \
>      >"${output}"
> diff --git a/support/download/cp b/support/download/cp
> index 09ce3d1..0ee1f3b 100755
> --- a/support/download/cp
> +++ b/support/download/cp
> @@ -28,10 +28,12 @@ shift $((OPTIND-1))
>  output="${1}"
>  source="${2}"
>  
> +shift 2 # Get rid of our options
> +
>  # Caller needs to single-quote its arguments to prevent them from
>  # being expanded a second time (in case there are spaces in them)
>  _localfiles() {
>      eval ${LOCALFILES} "${@}"
>  }
>  
> -_localfiles ${verbose} "'${source}'" "'${output}'"
> +_localfiles ${verbose} "${@}""'${source}'" "'${output}'"
> diff --git a/support/download/cvs b/support/download/cvs
> index 7980389..50050ab 100755
> --- a/support/download/cvs
> +++ b/support/download/cvs
> @@ -26,6 +26,8 @@ rev="${3}"
>  rawname="${4}"
>  basename="${5}"
>  
> +shift 5 # Get rid of our options
> +
>  # Caller needs to single-quote its arguments to prevent them from
>  # being expanded a second time (in case there are spaces in them)
>  _cvs() {
> @@ -48,6 +50,6 @@ fi
>  
>  export TZ=UTC
>  _cvs ${verbose} -z3 -d"'${repo}'" \
> -     co -d "'${basename}'" ${select} "'${rev}'" -P "'${rawname}'"
> +     co "${@}" -d "'${basename}'" ${select} "'${rev}'" -P "'${rawname}'"
>  
>  tar czf "${output}" "${basename}"
> diff --git a/support/download/git b/support/download/git
> index 416cd1b..281db61 100755
> --- a/support/download/git
> +++ b/support/download/git
> @@ -30,6 +30,8 @@ repo="${2}"
>  cset="${3}"
>  basename="${4}"
>  
> +shift 4 # Get rid of our options
> +
>  # Caller needs to single-quote its arguments to prevent them from
>  # being expanded a second time (in case there are spaces in them)
>  _git() {
> @@ -46,7 +48,7 @@ _git() {
>  git_done=0
>  if [ -n "$(_git ls-remote "'${repo}'" "'${cset}'" 2>&1)" ]; then
>      printf "Doing shallow clone\n"
> -    if _git clone ${verbose} --depth 1 -b "'${cset}'" "'${repo}'" "'${basename}'"; then
> +    if _git clone ${verbose} "${@}" --depth 1 -b "'${cset}'" "'${repo}'" "'${basename}'"; then
>          git_done=1
>      else
>          printf "Shallow clone failed, falling back to doing a full clone\n"
> @@ -54,7 +56,7 @@ if [ -n "$(_git ls-remote "'${repo}'" "'${cset}'" 2>&1)" ]; then
>  fi
>  if [ ${git_done} -eq 0 ]; then
>      printf "Doing full clone\n"
> -    _git clone ${verbose} "'${repo}'" "'${basename}'"
> +    _git clone ${verbose} "${@}" "'${repo}'" "'${basename}'"
>  fi
>  
>  pushd "${basename}" >/dev/null
> diff --git a/support/download/hg b/support/download/hg
> index 25cb4e9..3af0169 100755
> --- a/support/download/hg
> +++ b/support/download/hg
> @@ -25,13 +25,15 @@ repo="${2}"
>  cset="${3}"
>  basename="${4}"
>  
> +shift 4 # Get rid of our options
> +
>  # Caller needs to single-quote its arguments to prevent them from
>  # being expanded a second time (in case there are spaces in them)
>  _hg() {
>      eval ${HG} "${@}"
>  }
>  
> -_hg clone ${verbose} --noupdate "'${repo}'" "'${basename}'"
> +_hg clone ${verbose} "${@}" --noupdate "'${repo}'" "'${basename}'"
>  
>  _hg archive ${verbose} --repository "'${basename}'" --type tgz \
>              --prefix "'${basename}'" --rev "'${cset}'" \
> diff --git a/support/download/scp b/support/download/scp
> index 95cf502..825fd41 100755
> --- a/support/download/scp
> +++ b/support/download/scp
> @@ -23,10 +23,12 @@ shift $((OPTIND-1))
>  output="${1}"
>  url="${2}"
>  
> +shift 2 # Get rid of our options
> +
>  # Caller needs to single-quote its arguments to prevent them from
>  # being expanded a second time (in case there are spaces in them)
>  _scp() {
>      eval ${SCP} "${@}"
>  }
>  
> -_scp ${verbose} "'${url}'" "'${output}'"
> +_scp ${verbose} "${@}" "'${url}'" "'${output}'"
> diff --git a/support/download/svn b/support/download/svn
> index 4dcdd06..77abf3d 100755
> --- a/support/download/svn
> +++ b/support/download/svn
> @@ -25,12 +25,14 @@ repo="${2}"
>  rev="${3}"
>  basename="${4}"
>  
> +shift 4 # Get rid of our options
> +
>  # Caller needs to single-quote its arguments to prevent them from
>  # being expanded a second time (in case there are spaces in them)
>  _svn() {
>      eval ${SVN} "${@}"
>  }
>  
> -_svn export ${verbose} "'${repo}@${rev}'" "'${basename}'"
> +_svn export ${verbose} "${@}" "'${repo}@${rev}'" "'${basename}'"
>  
>  tar czf "${output}" "${basename}"
> diff --git a/support/download/wget b/support/download/wget
> index 0fc7ffa..768de90 100755
> --- a/support/download/wget
> +++ b/support/download/wget
> @@ -23,10 +23,12 @@ shift $((OPTIND-1))
>  output="${1}"
>  url="${2}"
>  
> +shift 2 # Get rid of our options
> +
>  # Caller needs to single-quote its arguments to prevent them from
>  # being expanded a second time (in case there are spaces in them)
>  _wget() {
>      eval ${WGET} "${@}"
>  }
>  
> -_wget ${verbose} -O "'${output}'" "'${url}'"
> +_wget ${verbose} "${@}" -O "'${output}'" "'${url}'"
> -- 
> 2.8.1
> 

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

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

* [Buildroot] [PATCH v4 4/7] package/amd-catalyst: Add AMD proprietary graphic stack support
  2016-08-05 14:53 ` [Buildroot] [PATCH v4 4/7] package/amd-catalyst: Add AMD proprietary graphic stack support Romain Perier
@ 2016-08-05 22:00   ` Yann E. MORIN
  0 siblings, 0 replies; 14+ messages in thread
From: Yann E. MORIN @ 2016-08-05 22:00 UTC (permalink / raw)
  To: buildroot

Romain, All,

On 2016-08-05 16:53 +0200, Romain Perier spake thusly:
> This commits adds support for the AMD Catalyst Linux driver 15.9
> (15.201.1151). It includes the fglrx kernel module with various fixes
> to make it work with at least Linux kernel 4.4 LTS, the userspace OpenGL
> stack and the xorg driver module.
> 
> Signed-off-by: Romain Perier <romain.perier@free-electrons.com>
> ---
> 
> Changes in v4:
>  - Remove prompt for patching MODULE_LICENSE on the fly in the kernel module,
>    we included a patch for removing code which depends on GPL symbols instead.

Indeed, much better. We'll have to trust the Gentoo guys that they did
not simply and blindly copy the corresponding kernel code...

[--SNIP--]
> diff --git a/package/amd-catalyst/Config.in b/package/amd-catalyst/Config.in
> new file mode 100644
> index 0000000..c3c531c
> --- /dev/null
> +++ b/package/amd-catalyst/Config.in
> @@ -0,0 +1,49 @@
> +comment "amd-catalyst needs a glibc toolchain"
> +	depends on BR2_i386 || BR2_x86_64
> +	depends on !BR2_TOOLCHAIN_USES_GLIBC
> +
> +config BR2_PACKAGE_AMD_CATALYST
> +	bool "amd-catalyst"
> +	depends on BR2_i386 || BR2_x86_64
> +	depends on BR2_TOOLCHAIN_USES_GLIBC
> +	help
> +	  The binary-only driver blob for AMD cards.
> +	  This driver supports AMD Radeon HD 5xxx and newer graphics
> +	  cards.
> +
> +	  http://www.amd.com/
> +
> +if BR2_PACKAGE_AMD_CATALYST
> +
> +comment "amd-catalyst needs a modular Xorg <= 1.17"

Not really, it's only the X.org driver that needs it:

    comment "amd-catalyst X.org drivers needs a modular Xorg server <= 1.17"

> +	depends on !BR2_PACKAGE_XORG7 || !BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR || !BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_19

Please split long lines when they are > ~80 chars:

    depends on !BR2_PACKAGE_XORG7 \
            || !BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR \
            || !BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_19

> +config BR2_PACKAGE_AMD_CATALYST_XORG
> +	bool "X.org drivers"
> +	default y
> +	depends on BR2_PACKAGE_XORG7
> +	depends on BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR
> +	depends on BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_19
> +	select BR2_PACKAGE_XSERVER_XORG_SERVER_AIGLX
> +	select BR2_PACKAGE_ACPID # runtime
> +	# This package does not have standard GL headers
> +	select BR2_PACKAGE_MESA3D_HEADERS
> +	select BR2_PACKAGE_XLIB_LIBX11
> +	select BR2_PACKAGE_XLIB_LIBXEXT
> +	select BR2_PACKAGE_XLIB_LIBXCOMPOSITE

You select those three libs, but you do not depend on them at build
time. I suspect because they are only a runtime dependency, like acpid,
right?

In which case, please state so, and group runtime dependencies together.

> +	select BR2_PACKAGE_HAS_LIBGL
> +
> +if BR2_PACKAGE_AMD_CATALYST_XORG
> +
> +config BR2_PACKAGE_PROVIDES_LIBGL
> +	default "amd-catalyst"
> +
> +endif
> +
> +config BR2_PACKAGE_AMD_CATALYST_MODULE
> +	bool "fglrx kernel module"
> +	depends on BR2_LINUX_KERNEL
> +	help
> +	  Builds and install the fglrx kernel module

We usually also add a comment:

    comment "amd-catalyst kernel module needs a kernel to be built"
        depends on !BR2_LINUX_KERNEL

> +endif # BR2_PACKAGE_AMD_CATALYST
[--SNIP--]
> diff --git a/package/amd-catalyst/amd-catalyst.mk b/package/amd-catalyst/amd-catalyst.mk
> new file mode 100644
> index 0000000..cda8e75
> --- /dev/null
> +++ b/package/amd-catalyst/amd-catalyst.mk
> @@ -0,0 +1,114 @@
> +################################################################################
> +#
> +# amd-catalyst
> +#
> +################################################################################
> +
> +AMD_CATALYST_VERSION = 15.9
> +AMD_CATALYST_VERBOSE_VER = 15.201.1151
> +AMD_CATALYST_SITE = http://www2.ati.com/drivers/linux
> +AMD_CATALYST_DL_OPTS = --referer='http://support.amd.com/en-us/kb-articles/Pages/latest-linux-beta-driver.aspx'

I've just tried with:

    --referrer='http://support.amd.com/'

and it is enough to trick the server into delivering the archive.

> +AMD_CATALYST_SOURCE = amd-catalyst-$(AMD_CATALYST_VERSION)-linux-installer-$(AMD_CATALYST_VERBOSE_VER)-x86.x86_64.zip

Just out of curiosity: I've seen that there are other drivers; at least
I could see (and DL) radeon-crimson-15.12-15.302-151217a-297685e.zip.

Do you have an idea how different the GPUs are, if Catalyst is suposed
to suport the whole range, if we could also add radeon-crimson as
another package (later!), how they all play together? ;-)

> +AMD_CATALYST_ARCH_DIR = $(@D)/arch/x86$(AMD_CATALYST_SUFFIX)

Given that AMD_CATALYST_ARCH_DIR is only ever used to construct the path
$(AMD_CATALYST_ARCH_DIR)/usr/X11R6/lib$(AMD_CATALYST_LIB_SUFFIX) maybe
it should directly refer to that path, so you don't have to repeat it
again and again, and that would make the commands a little bit shorter.

[--SNIP--]
> +ifeq ($(BR2_PACKAGE_AMD_CATALYST_MODULE),y)
> +AMD_CATALYST_MODULE_SUBDIRS = common/lib/modules/fglrx/build_mod/2.6.x
> +AMD_CATALYST_MODULE_MAKE_OPTS =  \
> +	CFLAGS_MODULE="-DCOMPAT_ALLOC_USER_SPACE=arch_compat_alloc_user_space"
> +
> +define AMD_CATALYST_CONFIGURE_CMDS

Like you did for the userland stuff, I'd have made that a "separate" (by
lack of better word) macro, and called it from the reall _CONFIGURE_CMDS
outside of the module conditional:

    define AMD_CATALYST_PREPARE_MODULE
        blabla
    endef

and below, with the other traditional Buildroot macros:

    define AMD_CATALYST_CONFIGURE_CMDS
        $(AMD_CATALYST_PREPARE_MODULE)
    endef

This is purely cosmetics in this case, granted, as you don't have
anything else to configure, but makes the file look more coherent.

> +	# The Makefile expects to have source in the folder 2.6.x
> +	cp $(@D)/common/lib/modules/fglrx/build_mod/*.{c,h} \
> +		$(@D)/common/lib/modules/fglrx/build_mod/2.6.x
> +	# This static lib is required during the link
> +	cp $(@D)/arch/x86$(AMD_CATALYST_SUFFIX)/lib/modules/fglrx/build_mod/libfglrx_ip.a \
> +		$(@D)/common/lib/modules/fglrx/build_mod/2.6.x
> +endef
> +
> +$(eval $(kernel-module))
> +endif
> +
> +ifeq ($(BR2_PACKAGE_AMD_CATALYST_XORG), y)
> +
> +AMD_CATALYST_DEPENDENCIES += mesa3d-headers

I was gonna comment that they are not really a build dependency of this
package, as it provides only pre-built libraries.

However, the headers are needed by any package that wants to use libgl,
so they need to be installed bedfore any user of it, so the only way is
to have amd-catalyst depend on them, even if it does not them for
itself.

Maybe this would warrant a little comment?

> +AMD_CATALYST_PROVIDES = libgl
> +AMD_CATALYST_XPIC_DIR = $(@D)/xpic$(if $(BR2_x86_64),_64a)

Given that AMD_CATALYST_XPIC_DIR is only ever used to construct the path
$(AMD_CATALYST_XPIC_DIR)/usr/X11R6/lib$(AMD_CATALYST_LIB_SUFFIX) , maybe
it should directly refer to that path, so you don't have to repeat it
again and again, and that would make the commands a little bit shorter.

;-)

> +define AMD_CATALYST_INSTALL_GL_LIBS
> +	$(INSTALL) -m 0644 $(AMD_CATALYST_ARCH_DIR)/usr/X11R6/lib$(AMD_CATALYST_LIB_SUFFIX)/fglrx/fglrx-libGL.so.1.2 \
> +		$(1)/usr/lib
> +	ln -sf fglrx-libGL.so.1.2 $(1)/usr/lib/libGL.so.1.2
> +	ln -sf fglrx-libGL.so.1.2 $(1)/usr/lib/libGL.so.1
> +	ln -sf fglrx-libGL.so.1.2 $(1)/usr/lib/libGL.so
> +endef
> +
> +define AMD_CATALYST_INSTALL_STAGING_XORG
> +	$(call AMD_CATALYST_INSTALL_GL_LIBS,$(STAGING_DIR))
> +	$(INSTALL) -D -m 0644 package/amd-catalyst/gl.pc \
> +		$(STAGING_DIR)/usr/lib/pkgconfig/gl.pc
> +endef
> +
> +AMD_CATALYST_XORG_DRIVERS_FILES = modules/amdxmm.so \
> +	modules/drivers/fglrx_drv.so \
> +	modules/linux/libfglrxdrm.so
> +
> +define AMD_CATALYST_INSTALL_XORG
> +# Xorg drivers

Please indent comment inside a macro at the same level you indent the
code. Valid for below as well.

> +	$(foreach f,$(AMD_CATALYST_XORG_DRIVERS_FILES), \
> +		$(INSTALL) -D -m 0755 $(AMD_CATALYST_XPIC_DIR)/usr/X11R6/lib$(AMD_CATALYST_LIB_SUFFIX)/$(f) \
> +		$(TARGET_DIR)/usr/lib/xorg/$(f)
> +	)
> +
> +# Xorg is not able to detect the driver automatically
> +	$(INSTALL) -D -m 0644 package/amd-catalyst/20-fglrx.conf \
> +		$(TARGET_DIR)/etc/X11/xorg.conf.d/20-fglrx.conf
> +
> +
> +# Common files: containing binary profiles about GPUs,
> +# required by the fglrx_drv xorg driver
> +	$(INSTALL) -d $(TARGET_DIR)/etc/ati
> + 	$(INSTALL) -m 0644 $(@D)/common/etc/ati/* $(TARGET_DIR)/etc/ati/
> +
> +# DRI and GLX xorg modules: by default DRI is activated,
> +# these modules are required by the fglrx_drv.so xorg driver
> +	$(INSTALL) -D -m 0644 $(AMD_CATALYST_ARCH_DIR)/usr/X11R6/lib$(AMD_CATALYST_LIB_SUFFIX)/modules/dri/fglrx_dri.so \
> +		$(TARGET_DIR)/usr/lib/dri/fglrx_dri.so

This comes from the Xorg's 'modules' sub-dir, but is installed in
another location. Is that intended? Why should it not go into
$(TARGET_DIR)/usr/lib/xorg/modules/ ?

> +	$(INSTALL) -D -m 0644 $(AMD_CATALYST_XPIC_DIR)/usr/X11R6/lib$(AMD_CATALYST_LIB_SUFFIX)/modules/extensions/fglrx/fglrx-libglx.so \
> +		$(TARGET_DIR)/usr/lib/xorg/modules/extensions/libglx.so
> +	$(INSTALL) -D -m 0644 $(AMD_CATALYST_XPIC_DIR)/usr/X11R6/lib$(AMD_CATALYST_LIB_SUFFIX)/modules/glesx.so \
> +		$(TARGET_DIR)/usr/lib/xorg/modules/glesx.so

Maybe glesx could go in the AMD_CATALYST_XORG_DRIVERS_FILES since it
follows the same layout, no?

fglrx-libglx is not following this layout, so it has to have its own
separate command, indeed. Sigh.... :-(

> +# Userspace GL libraries, also runtime dependency of most of the cmdline tools
> +	$(INSTALL) -m 0644 $(AMD_CATALYST_ARCH_DIR)/usr/X11R6/lib$(AMD_CATALYST_LIB_SUFFIX)/*.so \
> +		$(TARGET_DIR)/usr/lib/
> +	$(call AMD_CATALYST_INSTALL_GL_LIBS,$(TARGET_DIR))
> +
> +# Runtime depedency required by libfglrxdrm.so

*dependency

> +	$(INSTALL) -m 0644 $(AMD_CATALYST_ARCH_DIR)/usr/lib$(AMD_CATALYST_LIB_SUFFIX)/libatiuki.so.1.0 \
> +		$(TARGET_DIR)/usr/lib/
> +	ln -sf libatiuki.so.1.0 \
> +		$(TARGET_DIR)/usr/lib/libatiuki.so.1

Whithout checking, that's because the SONAME of the library is
libatiuki.so.1, right? If so, why not installing it directly as its
SONAME rather than have an unncessary symlink?

Regards,
Yann E. MORIN.

> +endef
> +
> +endif
> +
> +define AMD_CATALYST_INSTALL_STAGING_CMDS
> +	$(call AMD_CATALYST_INSTALL_STAGING_XORG)
> +endef
> +
> +define AMD_CATALYST_INSTALL_TARGET_CMDS
> +	$(call AMD_CATALYST_INSTALL_XORG)
> +endef
> +
> +$(eval $(generic-package))

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

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

* [Buildroot] [PATCH v4 5/7] package/amd-catalyst: Add AMD cmdline tools
  2016-08-05 14:53 ` [Buildroot] [PATCH v4 5/7] package/amd-catalyst: Add AMD cmdline tools Romain Perier
@ 2016-08-05 22:20   ` Yann E. MORIN
  2016-08-05 22:32   ` Yann E. MORIN
  1 sibling, 0 replies; 14+ messages in thread
From: Yann E. MORIN @ 2016-08-05 22:20 UTC (permalink / raw)
  To: buildroot

Romain, All,

On 2016-08-05 16:53 +0200, Romain Perier spake thusly:
> The AMD Catalyst driver includes some cmdline tools for displaying
> specific infos about the GL stack or to test 3D, like fglxinfo
> or fgl_gears. This commit adds support to install such tools.
> 
> Signed-off-by: Romain Perier <romain.perier@free-electrons.com>

Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

(much easier to review in small patches, thanks! ;-) )

Regards,
Yann E. MORIN.

> ---
>  package/amd-catalyst/Config.in       |  5 +++++
>  package/amd-catalyst/amd-catalyst.mk | 20 ++++++++++++++++++++
>  2 files changed, 25 insertions(+)
> 
> diff --git a/package/amd-catalyst/Config.in b/package/amd-catalyst/Config.in
> index c3c531c..0099e91 100644
> --- a/package/amd-catalyst/Config.in
> +++ b/package/amd-catalyst/Config.in
> @@ -38,6 +38,11 @@ if BR2_PACKAGE_AMD_CATALYST_XORG
>  config BR2_PACKAGE_PROVIDES_LIBGL
>  	default "amd-catalyst"
>  
> +config BR2_PACKAGE_AMD_CATALYST_CMDLINE_TOOLS
> +	bool "command-line configuration tools and utilities"
> +	help
> +	  Build the amd command line tools
> +
>  endif
>  
>  config BR2_PACKAGE_AMD_CATALYST_MODULE
> diff --git a/package/amd-catalyst/amd-catalyst.mk b/package/amd-catalyst/amd-catalyst.mk
> index cda8e75..5e1b90b 100644
> --- a/package/amd-catalyst/amd-catalyst.mk
> +++ b/package/amd-catalyst/amd-catalyst.mk
> @@ -103,12 +103,32 @@ endef
>  
>  endif
>  
> +ifeq ($(BR2_PACKAGE_AMD_CATALYST_CMDLINE_TOOLS), y)
> +AMD_CATALYST_CMDLINE_TOOLS_FILES = \
> +	atiode \
> +	atiodcli \
> +	fgl_glxgears \
> +	aticonfig \
> +	amd-console-helper \
> +	fglrxinfo
> +
> +define  AMD_CATALYST_INSTALL_CMDLINE_TOOLS
> +	$(INSTALL) -m 0755 $(AMD_CATALYST_ARCH_DIR)/usr/sbin/atieventsd \
> +		$(TARGET_DIR)/usr/sbin
> +	$(foreach f,$(AMD_CATALYST_CMDLINE_TOOLS_FILES), \
> +		$(INSTALL) -D -m 0755 $(AMD_CATALYST_ARCH_DIR)/usr/X11R6/bin/$(f) \
> +			$(TARGET_DIR)/usr/bin/$(f)
> +	)
> +endef
> +endif
> +
>  define AMD_CATALYST_INSTALL_STAGING_CMDS
>  	$(call AMD_CATALYST_INSTALL_STAGING_XORG)
>  endef
>  
>  define AMD_CATALYST_INSTALL_TARGET_CMDS
>  	$(call AMD_CATALYST_INSTALL_XORG)
> +	$(call AMD_CATALYST_INSTALL_CMDLINE_TOOLS)
>  endef
>  
>  $(eval $(generic-package))
> -- 
> 2.8.1
> 

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

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

* [Buildroot] [PATCH v4 6/7] package/amd-catalyst: Add support AMD CCCLE
  2016-08-05 14:53 ` [Buildroot] [PATCH v4 6/7] package/amd-catalyst: Add support AMD CCCLE Romain Perier
@ 2016-08-05 22:28   ` Yann E. MORIN
  0 siblings, 0 replies; 14+ messages in thread
From: Yann E. MORIN @ 2016-08-05 22:28 UTC (permalink / raw)
  To: buildroot

Romain, All,

On 2016-08-05 16:53 +0200, Romain Perier spake thusly:
> The AMD Catalyst Linux driver includes a graphical controler center for AMD
> graphics accelerators, called Catalyst Controler Center. This commits
> adds support to install this tool by adding a separated prompt.
> 
> Signed-off-by: Romain Perier <romain.perier@free-electrons.com>
> ---
>  package/amd-catalyst/Config.in       | 13 +++++++++++++
>  package/amd-catalyst/amd-catalyst.mk | 10 ++++++++++
>  2 files changed, 23 insertions(+)
> 
> diff --git a/package/amd-catalyst/Config.in b/package/amd-catalyst/Config.in
> index 0099e91..99676d3 100644
> --- a/package/amd-catalyst/Config.in
> +++ b/package/amd-catalyst/Config.in
> @@ -43,6 +43,19 @@ config BR2_PACKAGE_AMD_CATALYST_CMDLINE_TOOLS
>  	help
>  	  Build the amd command line tools
>  
> +comment "Catalyst Control Center needs Qt4 with X11 and PNG support"
> +	depends on !BR2_PACKAGE_QT || !BR2_PACKAGE_QT_X11 || BR2_PACKAGE_QT_NOPNG
> +
> +config BR2_PACKAGE_AMD_CATALYST_CCCLE
> +	bool "Catalyst Control Center"
> +	depends on BR2_USE_MMU && BR2_PACKAGE_QT && BR2_PACKAGE_QT_X11

Please, do not mix architecture-related dependencies (MMU) with package
dependencies. Besides, you forgot to depend on !QT_NO_PNG:

    depends on BR2_USE_MMU
    depends on BR2_PACKAGE_QT
    depends on BR2_PACKAGE_QT_X11
    depends on !BR2_PACKAGE_QT_NOPNG

However, for the MMU stuff, I wonder if it is really needed, as the
whole stuff depends on glibc, which is MMU-only anyway.

> +	select BR2_PACKAGE_PROCPS_NG # runtime
> +	select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS

I prefer when dependencies are logically ordered. Here, we need
BB_SHOW_OTHERS becasue we want to selec procps-ng, so:

    select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # procps-ng
    select BR2_PACKAGE_PROCPS_NG # runtime

(Technically, there is *no* difference; it's just easier to follow for
us mere humans. ;-) )

(Oh, did you add the MMU dependency because of procps-ng? Not needed,
since glibc is MMU-only.)

Except for those minor nits, that looks good! :-)

Regards,
Yann E. MORIN.

> +	select BR2_PACKAGE_QT_GUI_MODULE
> +	select BR2_PACKAGE_QT_ACCESSIBILITY
> +	help
> +	  Installs the Catalyst Control Center, a Qt graphical tool to
> +	  control AMD graphics accelerators.
>  endif
>  
>  config BR2_PACKAGE_AMD_CATALYST_MODULE
> diff --git a/package/amd-catalyst/amd-catalyst.mk b/package/amd-catalyst/amd-catalyst.mk
> index 5e1b90b..ee3c2d6 100644
> --- a/package/amd-catalyst/amd-catalyst.mk
> +++ b/package/amd-catalyst/amd-catalyst.mk
> @@ -122,6 +122,15 @@ define  AMD_CATALYST_INSTALL_CMDLINE_TOOLS
>  endef
>  endif
>  
> +ifeq ($(BR2_PACKAGE_AMD_CATALYST_CCCLE), y)
> +define AMD_CATALYST_INSTALL_CCCLE
> +	$(INSTALL) -m 0755 $(AMD_CATALYST_ARCH_DIR)/usr/X11R6/bin/amdcccle \
> +		$(TARGET_DIR)/usr/bin/amdcccle
> +	$(INSTALL) -m 0755 $(AMD_CATALYST_ARCH_DIR)/usr/sbin/amdnotifyui \
> +		$(TARGET_DIR)/usr/sbin/amdnotifyui
> +endef
> +endif
> +
>  define AMD_CATALYST_INSTALL_STAGING_CMDS
>  	$(call AMD_CATALYST_INSTALL_STAGING_XORG)
>  endef
> @@ -129,6 +138,7 @@ endef
>  define AMD_CATALYST_INSTALL_TARGET_CMDS
>  	$(call AMD_CATALYST_INSTALL_XORG)
>  	$(call AMD_CATALYST_INSTALL_CMDLINE_TOOLS)
> +	$(call AMD_CATALYST_INSTALL_CCCLE)
>  endef
>  
>  $(eval $(generic-package))
> -- 
> 2.8.1
> 

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

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

* [Buildroot] [PATCH v4 5/7] package/amd-catalyst: Add AMD cmdline tools
  2016-08-05 14:53 ` [Buildroot] [PATCH v4 5/7] package/amd-catalyst: Add AMD cmdline tools Romain Perier
  2016-08-05 22:20   ` Yann E. MORIN
@ 2016-08-05 22:32   ` Yann E. MORIN
  1 sibling, 0 replies; 14+ messages in thread
From: Yann E. MORIN @ 2016-08-05 22:32 UTC (permalink / raw)
  To: buildroot

Romain, All,

On 2016-08-05 16:53 +0200, Romain Perier spake thusly:
> The AMD Catalyst driver includes some cmdline tools for displaying
> specific infos about the GL stack or to test 3D, like fglxinfo
> or fgl_gears. This commit adds support to install such tools.
> 
> Signed-off-by: Romain Perier <romain.perier@free-electrons.com>
> ---
>  package/amd-catalyst/Config.in       |  5 +++++
>  package/amd-catalyst/amd-catalyst.mk | 20 ++++++++++++++++++++
>  2 files changed, 25 insertions(+)
> 
> diff --git a/package/amd-catalyst/Config.in b/package/amd-catalyst/Config.in
> index c3c531c..0099e91 100644
> --- a/package/amd-catalyst/Config.in
> +++ b/package/amd-catalyst/Config.in
> @@ -38,6 +38,11 @@ if BR2_PACKAGE_AMD_CATALYST_XORG
>  config BR2_PACKAGE_PROVIDES_LIBGL
>  	default "amd-catalyst"
>  
> +config BR2_PACKAGE_AMD_CATALYST_CMDLINE_TOOLS
> +	bool "command-line configuration tools and utilities"
> +	help
> +	  Build the amd command line tools
> +
>  endif
>  
>  config BR2_PACKAGE_AMD_CATALYST_MODULE
> diff --git a/package/amd-catalyst/amd-catalyst.mk b/package/amd-catalyst/amd-catalyst.mk
> index cda8e75..5e1b90b 100644
> --- a/package/amd-catalyst/amd-catalyst.mk
> +++ b/package/amd-catalyst/amd-catalyst.mk
> @@ -103,12 +103,32 @@ endef
>  
>  endif
>  
> +ifeq ($(BR2_PACKAGE_AMD_CATALYST_CMDLINE_TOOLS), y)
> +AMD_CATALYST_CMDLINE_TOOLS_FILES = \
> +	atiode \
> +	atiodcli \
> +	fgl_glxgears \
> +	aticonfig \
> +	amd-console-helper \
> +	fglrxinfo
> +
> +define  AMD_CATALYST_INSTALL_CMDLINE_TOOLS
> +	$(INSTALL) -m 0755 $(AMD_CATALYST_ARCH_DIR)/usr/sbin/atieventsd \

Ah, here you are using AMD_CATALYST_ARCH_DIR directly, so forget about
my comment in the previous patch: you need it as-is.

Still maybe you could have an option to refer to that long path, like:

    AMD_CATALYST_ARCH_LIB_DIR = $(AMD_CATALYST_ARCH_DIR)/usr/X11R6/lib$(AMD_CATALYST_LIB_SUFFIX)

Regards,
Yann E. MORIN.

> +		$(TARGET_DIR)/usr/sbin
> +	$(foreach f,$(AMD_CATALYST_CMDLINE_TOOLS_FILES), \
> +		$(INSTALL) -D -m 0755 $(AMD_CATALYST_ARCH_DIR)/usr/X11R6/bin/$(f) \
> +			$(TARGET_DIR)/usr/bin/$(f)
> +	)
> +endef
> +endif
> +
>  define AMD_CATALYST_INSTALL_STAGING_CMDS
>  	$(call AMD_CATALYST_INSTALL_STAGING_XORG)
>  endef
>  
>  define AMD_CATALYST_INSTALL_TARGET_CMDS
>  	$(call AMD_CATALYST_INSTALL_XORG)
> +	$(call AMD_CATALYST_INSTALL_CMDLINE_TOOLS)
>  endef
>  
>  $(eval $(generic-package))
> -- 
> 2.8.1
> 

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

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

* [Buildroot] [PATCH v4 7/7] package/amd-catalyst: Add support for OpenCL
  2016-08-05 14:54 ` [Buildroot] [PATCH v4 7/7] package/amd-catalyst: Add support for OpenCL Romain Perier
@ 2016-08-05 22:47   ` Yann E. MORIN
  0 siblings, 0 replies; 14+ messages in thread
From: Yann E. MORIN @ 2016-08-05 22:47 UTC (permalink / raw)
  To: buildroot

Romain, All,

On 2016-08-05 16:54 +0200, Romain Perier spake thusly:
> The AMD Catalyst Linux driver includes OpenCL libraries for GPGPU
> computing. This commits adds support to install the binary blobs and ICD
> profiles.
> 
> Signed-off-by: Romain Perier <romain.perier@free-electrons.com>
> ---
>  package/amd-catalyst/Config.in       |  6 ++++++
>  package/amd-catalyst/amd-catalyst.mk | 24 ++++++++++++++++++++++++
>  2 files changed, 30 insertions(+)
> 
> diff --git a/package/amd-catalyst/Config.in b/package/amd-catalyst/Config.in
> index 99676d3..856ff9b 100644
> --- a/package/amd-catalyst/Config.in
> +++ b/package/amd-catalyst/Config.in
> @@ -64,4 +64,10 @@ config BR2_PACKAGE_AMD_CATALYST_MODULE
>  	help
>  	  Builds and install the fglrx kernel module
>  
> +config BR2_PACKAGE_AMD_CATALYST_OPENCL
> +	bool "OpenCL support"
> +	help
> +	  Installs the OpenCL binary blobs and the ICD profile
> +	  for GPGPU computing.
> +
>  endif # BR2_PACKAGE_AMD_CATALYST
> diff --git a/package/amd-catalyst/amd-catalyst.mk b/package/amd-catalyst/amd-catalyst.mk
> index ee3c2d6..64746bf 100644
> --- a/package/amd-catalyst/amd-catalyst.mk
> +++ b/package/amd-catalyst/amd-catalyst.mk
> @@ -39,6 +39,29 @@ endef
>  $(eval $(kernel-module))
>  endif
>  
> +ifeq ($(BR2_PACKAGE_AMD_CATALYST_OPENCL),y)
> +
> +AMD_CATALYST_OCL_SUFFIX = $(if $(BR2_x86_64),64,32)
> +AMD_CATALYST_OPENCL_FILES = \
> +	usr/lib$(AMD_CATALYST_LIB_SUFFIX)/libOpenCL.so.1 \
> +	usr/lib$(AMD_CATALYST_LIB_SUFFIX)/libaticalcl.so \
> +	usr/lib$(AMD_CATALYST_LIB_SUFFIX)/libamdocl$(AMD_CATALYST_OCL_SUFFIX).so \
> +	usr/lib$(AMD_CATALYST_LIB_SUFFIX)/libamdocl12cl$(AMD_CATALYST_OCL_SUFFIX).so

So this means we're going to install files in /usr/lib32/ or /usr/lib64/
in the target. Although we do have those symlinks, I'm not a fan of it.

Why not:

    AMD_CATALYST_OPENCL_FILES = \
        libOpenCL.so.1 \
        libaticalcl.so etc...

and then...

> +define AMD_CATALYST_INSTALL_OPENCL
> +	$(foreach f,$(AMD_CATALYST_OPENCL_FILES), \
> +		$(INSTALL) -D -m 0755 $(AMD_CATALYST_ARCH_DIR)/$(f) $(TARGET_DIR)/$(f)

... have this:

    $(INSTALL) -D -m 0755 \
        $(AMD_CATALYST_ARCH_DIR)/usr/lib$(AMD_CATALYST_LIB_SUFFIX)/$(f) \
        $(TARGET_DIR)/usr/lib/$(f)

which seems cleaner to me.

> +	)
> +	ln -sf libOpenCL.so.1 \
> +		$(TARGET_DIR)/usr/lib/libOpenCL.so
> +	$(INSTALL) -m 0755 $(AMD_CATALYST_ARCH_DIR)/usr/bin/clinfo \
> +		$(TARGET_DIR)/usr/bin

When you install individual files, ensure the destination is a file:

    $(INSTALL) -m 0755 $(AMD_CATALYST_ARCH_DIR)/usr/bin/clinfo \
        $(TARGET_DIR)/usr/bin/clinfo

otherwise, if /usr/bin does not exist, it will made to be a file, with
the content of clinfo. Granted, this is highly improbable in your case,
if not impossible, but that's what we are doing everywhere else.

Regards,
Yann E. MORIN.

> +	$(INSTALL) -D -m 0644 $(AMD_CATALYST_ARCH_DIR)/etc/OpenCL/vendors/amdocl$(AMD_CATALYST_OCL_SUFFIX).icd \
> +		$(TARGET_DIR)/etc/OpenCL/vendors/amdocl$(AMD_CATALYST_OCL_SUFFIX).icd
> +endef
> +
> +endif
> +
>  ifeq ($(BR2_PACKAGE_AMD_CATALYST_XORG), y)
>  
>  AMD_CATALYST_DEPENDENCIES += mesa3d-headers
> @@ -139,6 +162,7 @@ define AMD_CATALYST_INSTALL_TARGET_CMDS
>  	$(call AMD_CATALYST_INSTALL_XORG)
>  	$(call AMD_CATALYST_INSTALL_CMDLINE_TOOLS)
>  	$(call AMD_CATALYST_INSTALL_CCCLE)
> +	$(call AMD_CATALYST_INSTALL_OPENCL)
>  endef
>  
>  $(eval $(generic-package))
> -- 
> 2.8.1
> 

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

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

end of thread, other threads:[~2016-08-05 22:47 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-08-05 14:53 [Buildroot] [PATCH v4 0/7] Add support for AMD Catalyst graphics driver Romain Perier
2016-08-05 14:53 ` [Buildroot] [PATCH v4 1/7] support/download: Add support to pass options directly to downloaders Romain Perier
2016-08-05 15:54   ` Yann E. MORIN
2016-08-05 14:53 ` [Buildroot] [PATCH v4 2/7] pkg-download: Allow packages to pass generic options to download methods Romain Perier
2016-08-05 14:53 ` [Buildroot] [PATCH v4 3/7] docs/manual: Document the variable $(PKG)_DL_OPTS Romain Perier
2016-08-05 14:53 ` [Buildroot] [PATCH v4 4/7] package/amd-catalyst: Add AMD proprietary graphic stack support Romain Perier
2016-08-05 22:00   ` Yann E. MORIN
2016-08-05 14:53 ` [Buildroot] [PATCH v4 5/7] package/amd-catalyst: Add AMD cmdline tools Romain Perier
2016-08-05 22:20   ` Yann E. MORIN
2016-08-05 22:32   ` Yann E. MORIN
2016-08-05 14:53 ` [Buildroot] [PATCH v4 6/7] package/amd-catalyst: Add support AMD CCCLE Romain Perier
2016-08-05 22:28   ` Yann E. MORIN
2016-08-05 14:54 ` [Buildroot] [PATCH v4 7/7] package/amd-catalyst: Add support for OpenCL Romain Perier
2016-08-05 22:47   ` Yann E. MORIN

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.