All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] configure/Makefile.am: use pkg-config to discover libatomic_ops
@ 2018-02-06 21:19 Peter Seiderer
  2018-02-07 14:24 ` [PATCH libdrm] meson: use pkg-config to detect libatomic_ops Eric Engestrom
  2018-03-08 18:04 ` [PATCH] configure/Makefile.am: use pkg-config to discover libatomic_ops Emil Velikov
  0 siblings, 2 replies; 8+ messages in thread
From: Peter Seiderer @ 2018-02-06 21:19 UTC (permalink / raw)
  To: dri-devel; +Cc: Thomas Petazzoni, Bernd Kuhls

From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

The configure script currently tests the availability of libatomic_ops
by checking the presence of atomic_ops.h. While this is good enough as
an availability test, it is not sufficient as on some platforms,
libatomic_ops provides an actual shared library against which we
should be linked to access libatomic_ops functionality.

Therefore, we instead use PKG_CHECK_MODULES() to test the availability
of libatomic_ops. Besides testing its availability, this also fills in
the ATOMIC_OPS_LIBS variable with the list of libraries we need to
link with to use libatomic_ops.

All Mesa drivers that include xf86atomic.h have been updated to link
against ATOMIC_OPS_LIBS.

Of course, if we're not using libatomic_ops, ATOMIC_OPS_LIBS is empty,
and we don't link against it.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Seiderer <ps.report@gmx.net>
[Bernd: PKG_CHECK_MODULES should not fail when libatomic_ops is missing]
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
---
 amdgpu/Makefile.am    | 2 +-
 configure.ac          | 2 +-
 etnaviv/Makefile.am   | 3 ++-
 freedreno/Makefile.am | 3 ++-
 intel/Makefile.am     | 3 ++-
 nouveau/Makefile.am   | 2 +-
 omap/Makefile.am      | 2 +-
 radeon/Makefile.am    | 2 +-
 tegra/Makefile.am     | 2 +-
 9 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/amdgpu/Makefile.am b/amdgpu/Makefile.am
index a1b0d05c..b2bcceff 100644
--- a/amdgpu/Makefile.am
+++ b/amdgpu/Makefile.am
@@ -36,7 +36,7 @@ AM_CPPFLAGS = -DAMDGPU_ASIC_ID_TABLE=\"${libdrmdatadir}/amdgpu.ids\"
 libdrm_amdgpu_la_LTLIBRARIES = libdrm_amdgpu.la
 libdrm_amdgpu_ladir = $(libdir)
 libdrm_amdgpu_la_LDFLAGS = -version-number 1:0:0 -no-undefined
-libdrm_amdgpu_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@
+libdrm_amdgpu_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@ @ATOMIC_OPS_LIBS@
 
 libdrm_amdgpu_la_SOURCES = $(LIBDRM_AMDGPU_FILES)
 amdgpu_asic_id.lo: $(top_srcdir)/data/amdgpu.ids
diff --git a/configure.ac b/configure.ac
index 321ab2c0..1386d15c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -247,7 +247,7 @@ AC_CACHE_CHECK([for native atomic primitives], drm_cv_atomic_primitives, [
 					  ]],[[]])], [drm_cv_atomic_primitives="Intel"],[])
 
 	if test "x$drm_cv_atomic_primitives" = "xnone"; then
-		AC_CHECK_HEADER([atomic_ops.h], drm_cv_atomic_primitives="libatomic-ops")
+		PKG_CHECK_MODULES(ATOMIC_OPS, [atomic_ops], drm_cv_atomic_primitives="libatomic-ops", true)
 	fi
 
 	# atomic functions defined in <atomic.h> & libc on Solaris
diff --git a/etnaviv/Makefile.am b/etnaviv/Makefile.am
index be96ba86..669cf14f 100644
--- a/etnaviv/Makefile.am
+++ b/etnaviv/Makefile.am
@@ -12,7 +12,8 @@ libdrm_etnaviv_la_LDFLAGS = -version-number 1:0:0 -no-undefined
 libdrm_etnaviv_la_LIBADD = \
 	../libdrm.la \
 	@PTHREADSTUBS_LIBS@ \
-	@CLOCK_LIB@
+	@CLOCK_LIB@ \
+	@ATOMIC_OPS_LIBS@
 
 libdrm_etnaviv_la_SOURCES = $(LIBDRM_ETNAVIV_FILES)
 
diff --git a/freedreno/Makefile.am b/freedreno/Makefile.am
index cbb0d031..238407e3 100644
--- a/freedreno/Makefile.am
+++ b/freedreno/Makefile.am
@@ -14,7 +14,8 @@ libdrm_freedreno_la_LDFLAGS = -version-number 1:0:0 -no-undefined
 libdrm_freedreno_la_LIBADD = \
 	../libdrm.la \
 	@PTHREADSTUBS_LIBS@ \
-	@CLOCK_LIB@
+	@CLOCK_LIB@ \
+	@ATOMIC_OPS_LIBS@
 
 libdrm_freedreno_la_SOURCES = $(LIBDRM_FREEDRENO_FILES)
 if HAVE_FREEDRENO_KGSL
diff --git a/intel/Makefile.am b/intel/Makefile.am
index c52e8c08..f3635a64 100644
--- a/intel/Makefile.am
+++ b/intel/Makefile.am
@@ -38,7 +38,8 @@ libdrm_intel_la_LDFLAGS = -version-number 1:0:0 -no-undefined
 libdrm_intel_la_LIBADD = ../libdrm.la \
 	@PTHREADSTUBS_LIBS@ \
 	@PCIACCESS_LIBS@ \
-	@CLOCK_LIB@
+	@CLOCK_LIB@ \
+	@ATOMIC_OPS_LIBS@
 
 libdrm_intel_la_SOURCES = $(LIBDRM_INTEL_FILES)
 
diff --git a/nouveau/Makefile.am b/nouveau/Makefile.am
index 344a8445..a4e6a78b 100644
--- a/nouveau/Makefile.am
+++ b/nouveau/Makefile.am
@@ -10,7 +10,7 @@ AM_CFLAGS = \
 libdrm_nouveau_la_LTLIBRARIES = libdrm_nouveau.la
 libdrm_nouveau_ladir = $(libdir)
 libdrm_nouveau_la_LDFLAGS = -version-number 2:0:0 -no-undefined
-libdrm_nouveau_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@
+libdrm_nouveau_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@ @ATOMIC_OPS_LIBS@
 
 libdrm_nouveau_la_SOURCES = $(LIBDRM_NOUVEAU_FILES)
 
diff --git a/omap/Makefile.am b/omap/Makefile.am
index 599bb9de..524afee3 100644
--- a/omap/Makefile.am
+++ b/omap/Makefile.am
@@ -7,7 +7,7 @@ AM_CFLAGS = \
 libdrm_omap_la_LTLIBRARIES = libdrm_omap.la
 libdrm_omap_ladir = $(libdir)
 libdrm_omap_la_LDFLAGS = -version-number 1:0:0 -no-undefined
-libdrm_omap_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@
+libdrm_omap_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@ @ATOMIC_OPS_LIBS@
 
 libdrm_omap_la_SOURCES = omap_drm.c
 
diff --git a/radeon/Makefile.am b/radeon/Makefile.am
index e2415314..c27d3c75 100644
--- a/radeon/Makefile.am
+++ b/radeon/Makefile.am
@@ -33,7 +33,7 @@ AM_CFLAGS = \
 libdrm_radeon_la_LTLIBRARIES = libdrm_radeon.la
 libdrm_radeon_ladir = $(libdir)
 libdrm_radeon_la_LDFLAGS = -version-number 1:0:1 -no-undefined
-libdrm_radeon_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@
+libdrm_radeon_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@ @ATOMIC_OPS_LIBS@
 
 libdrm_radeon_la_SOURCES = $(LIBDRM_RADEON_FILES)
 
diff --git a/tegra/Makefile.am b/tegra/Makefile.am
index fb40be55..12abe8c4 100644
--- a/tegra/Makefile.am
+++ b/tegra/Makefile.am
@@ -9,7 +9,7 @@ AM_CFLAGS = \
 libdrm_tegra_ladir = $(libdir)
 libdrm_tegra_la_LTLIBRARIES = libdrm_tegra.la
 libdrm_tegra_la_LDFLAGS = -version-number 0:0:0 -no-undefined
-libdrm_tegra_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@
+libdrm_tegra_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@ @ATOMIC_OPS_LIBS@
 
 libdrm_tegra_la_SOURCES = \
 	private.h \
-- 
2.16.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* [PATCH libdrm] meson: use pkg-config to detect libatomic_ops
  2018-02-06 21:19 [PATCH] configure/Makefile.am: use pkg-config to discover libatomic_ops Peter Seiderer
@ 2018-02-07 14:24 ` Eric Engestrom
  2018-03-05 12:03   ` Eric Engestrom
  2018-03-08 18:04 ` [PATCH] configure/Makefile.am: use pkg-config to discover libatomic_ops Emil Velikov
  1 sibling, 1 reply; 8+ messages in thread
From: Eric Engestrom @ 2018-02-07 14:24 UTC (permalink / raw)
  To: dri-devel; +Cc: Thomas Petazzoni, Bernd Kuhls, Peter Seiderer

Signed-off-by: Eric Engestrom <eric.engestrom@imgtec.com>
---
 amdgpu/meson.build    | 2 +-
 etnaviv/meson.build   | 2 +-
 freedreno/meson.build | 2 +-
 intel/meson.build     | 2 +-
 meson.build           | 3 ++-
 nouveau/meson.build   | 2 +-
 omap/meson.build      | 2 +-
 radeon/meson.build    | 2 +-
 tegra/meson.build     | 2 +-
 9 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/amdgpu/meson.build b/amdgpu/meson.build
index 8b0452056e2513892c2c..7040ebab86e271022323 100644
--- a/amdgpu/meson.build
+++ b/amdgpu/meson.build
@@ -37,7 +37,7 @@ libdrm_amdgpu = shared_library(
   ],
   include_directories : [inc_root, inc_drm],
   link_with : libdrm,
-  dependencies : dep_pthread_stubs,
+  dependencies : [dep_pthread_stubs, dep_atomic_ops],
   version : '1.0.0',
   install : true,
 )
diff --git a/etnaviv/meson.build b/etnaviv/meson.build
index 1767733bd510efdaad86..ca2aa544c58924a15d8b 100644
--- a/etnaviv/meson.build
+++ b/etnaviv/meson.build
@@ -31,7 +31,7 @@ libdrm_etnaviv = shared_library(
   include_directories : [inc_root, inc_drm],
   link_with : libdrm,
   c_args : warn_c_args,
-  dependencies : [dep_pthread_stubs, dep_rt],
+  dependencies : [dep_pthread_stubs, dep_rt, dep_atomic_ops],
   version : '1.0.0',
   install : true,
 )
diff --git a/freedreno/meson.build b/freedreno/meson.build
index de6a413fa93e63c0ad4a..da993c10355578838f29 100644
--- a/freedreno/meson.build
+++ b/freedreno/meson.build
@@ -44,7 +44,7 @@ libdrm_freedreno = shared_library(
   [files_freedreno, config_file],
   c_args : warn_c_args,
   include_directories : [inc_root, inc_drm],
-  dependencies : [dep_valgrind, dep_pthread_stubs, dep_rt],
+  dependencies : [dep_valgrind, dep_pthread_stubs, dep_rt, dep_atomic_ops],
   link_with : libdrm,
   version : '1.0.0',
   install : true,
diff --git a/intel/meson.build b/intel/meson.build
index ad877274f8d488a80d54..42402f60e38cd5e7359f 100644
--- a/intel/meson.build
+++ b/intel/meson.build
@@ -29,7 +29,7 @@ libdrm_intel = shared_library(
   ],
   include_directories : [inc_root, inc_drm],
   link_with : libdrm,
-  dependencies : [dep_pciaccess, dep_pthread_stubs, dep_rt, dep_valgrind],
+  dependencies : [dep_pciaccess, dep_pthread_stubs, dep_rt, dep_valgrind, dep_atomic_ops],
   c_args : warn_c_args,
   version : '1.0.0',
   install : true,
diff --git a/meson.build b/meson.build
index a19e600c7475b2578e2d..f45c14a70baa2456582d 100644
--- a/meson.build
+++ b/meson.build
@@ -51,6 +51,7 @@ cc = meson.get_compiler('c')
 intel_atomics = false
 lib_atomics = false
 
+dep_atomic_ops = dependency('atomic_ops', required : false)
 if cc.compiles('''
     int atomic_add(int *i) { return __sync_add_and_fetch (i, 1); }
     int atomic_cmpxchg(int *i, int j, int k) { return __sync_val_compare_and_swap (i, j, k); }
@@ -58,7 +59,7 @@ if cc.compiles('''
     name : 'Intel Atomics')
   intel_atomics = true
   with_atomics = true
-elif cc.has_header('atomic_ops.h')
+elif dep_atomic_ops.found()
   lib_atomics = true
   with_atomics = true
 elif cc.has_function('atomic_cas_uint')
diff --git a/nouveau/meson.build b/nouveau/meson.build
index f031cd63b71bab9f7e7a..b8affd9ef776c99ba896 100644
--- a/nouveau/meson.build
+++ b/nouveau/meson.build
@@ -25,7 +25,7 @@ libdrm_nouveau = shared_library(
   c_args : warn_c_args,
   include_directories : [inc_root, inc_drm],
   link_with : libdrm,
-  dependencies : dep_threads,
+  dependencies : [dep_threads, dep_atomic_ops],
   version : '2.0.0',
   install : true,
 )
diff --git a/omap/meson.build b/omap/meson.build
index 1881087fb0d180b668d3..f89436f0e99970b381aa 100644
--- a/omap/meson.build
+++ b/omap/meson.build
@@ -24,7 +24,7 @@ libdrm_omap = shared_library(
   include_directories : [inc_root, inc_drm],
   c_args : warn_c_args,
   link_with : libdrm,
-  dependencies : [dep_pthread_stubs],
+  dependencies : [dep_pthread_stubs, dep_atomic_ops],
   version : '1.0.0',
   install : true,
 )
diff --git a/radeon/meson.build b/radeon/meson.build
index b02166fe87ea27470e4b..557a878042bb78df4096 100644
--- a/radeon/meson.build
+++ b/radeon/meson.build
@@ -31,7 +31,7 @@ libdrm_radeon = shared_library(
   c_args : warn_c_args,
   include_directories : [inc_root, inc_drm],
   link_with : libdrm,
-  dependencies : [dep_pthread_stubs],
+  dependencies : [dep_pthread_stubs, dep_atomic_ops],
   version : '1.0.1',
   install : true,
 )
diff --git a/tegra/meson.build b/tegra/meson.build
index 99fdd194f50aceb6858b..7ac815177718d301b76c 100644
--- a/tegra/meson.build
+++ b/tegra/meson.build
@@ -23,7 +23,7 @@ libdrm_tegra = shared_library(
   [files('tegra.c'), config_file],
   include_directories : [inc_root, inc_drm],
   link_with : libdrm,
-  dependencies : [dep_pthread_stubs],
+  dependencies : [dep_pthread_stubs, dep_atomic_ops],
   c_args : warn_c_args,
   version : '0.0.0',
   install : true,
-- 
Cheers,
  Eric

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: [PATCH libdrm] meson: use pkg-config to detect libatomic_ops
  2018-02-07 14:24 ` [PATCH libdrm] meson: use pkg-config to detect libatomic_ops Eric Engestrom
@ 2018-03-05 12:03   ` Eric Engestrom
  2018-03-08 18:10     ` Emil Velikov
  0 siblings, 1 reply; 8+ messages in thread
From: Eric Engestrom @ 2018-03-05 12:03 UTC (permalink / raw)
  To: dri-devel; +Cc: Thomas Petazzoni, Bernd Kuhls, Peter Seiderer

Ping? :)
Both for this patch and the equivalent autotools patch it replies to.

On Wednesday, 2018-02-07 14:24:33 +0000, Eric Engestrom wrote:
> Signed-off-by: Eric Engestrom <eric.engestrom@imgtec.com>
> ---
>  amdgpu/meson.build    | 2 +-
>  etnaviv/meson.build   | 2 +-
>  freedreno/meson.build | 2 +-
>  intel/meson.build     | 2 +-
>  meson.build           | 3 ++-
>  nouveau/meson.build   | 2 +-
>  omap/meson.build      | 2 +-
>  radeon/meson.build    | 2 +-
>  tegra/meson.build     | 2 +-
>  9 files changed, 10 insertions(+), 9 deletions(-)
> 
> diff --git a/amdgpu/meson.build b/amdgpu/meson.build
> index 8b0452056e2513892c2c..7040ebab86e271022323 100644
> --- a/amdgpu/meson.build
> +++ b/amdgpu/meson.build
> @@ -37,7 +37,7 @@ libdrm_amdgpu = shared_library(
>    ],
>    include_directories : [inc_root, inc_drm],
>    link_with : libdrm,
> -  dependencies : dep_pthread_stubs,
> +  dependencies : [dep_pthread_stubs, dep_atomic_ops],
>    version : '1.0.0',
>    install : true,
>  )
> diff --git a/etnaviv/meson.build b/etnaviv/meson.build
> index 1767733bd510efdaad86..ca2aa544c58924a15d8b 100644
> --- a/etnaviv/meson.build
> +++ b/etnaviv/meson.build
> @@ -31,7 +31,7 @@ libdrm_etnaviv = shared_library(
>    include_directories : [inc_root, inc_drm],
>    link_with : libdrm,
>    c_args : warn_c_args,
> -  dependencies : [dep_pthread_stubs, dep_rt],
> +  dependencies : [dep_pthread_stubs, dep_rt, dep_atomic_ops],
>    version : '1.0.0',
>    install : true,
>  )
> diff --git a/freedreno/meson.build b/freedreno/meson.build
> index de6a413fa93e63c0ad4a..da993c10355578838f29 100644
> --- a/freedreno/meson.build
> +++ b/freedreno/meson.build
> @@ -44,7 +44,7 @@ libdrm_freedreno = shared_library(
>    [files_freedreno, config_file],
>    c_args : warn_c_args,
>    include_directories : [inc_root, inc_drm],
> -  dependencies : [dep_valgrind, dep_pthread_stubs, dep_rt],
> +  dependencies : [dep_valgrind, dep_pthread_stubs, dep_rt, dep_atomic_ops],
>    link_with : libdrm,
>    version : '1.0.0',
>    install : true,
> diff --git a/intel/meson.build b/intel/meson.build
> index ad877274f8d488a80d54..42402f60e38cd5e7359f 100644
> --- a/intel/meson.build
> +++ b/intel/meson.build
> @@ -29,7 +29,7 @@ libdrm_intel = shared_library(
>    ],
>    include_directories : [inc_root, inc_drm],
>    link_with : libdrm,
> -  dependencies : [dep_pciaccess, dep_pthread_stubs, dep_rt, dep_valgrind],
> +  dependencies : [dep_pciaccess, dep_pthread_stubs, dep_rt, dep_valgrind, dep_atomic_ops],
>    c_args : warn_c_args,
>    version : '1.0.0',
>    install : true,
> diff --git a/meson.build b/meson.build
> index a19e600c7475b2578e2d..f45c14a70baa2456582d 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -51,6 +51,7 @@ cc = meson.get_compiler('c')
>  intel_atomics = false
>  lib_atomics = false
>  
> +dep_atomic_ops = dependency('atomic_ops', required : false)
>  if cc.compiles('''
>      int atomic_add(int *i) { return __sync_add_and_fetch (i, 1); }
>      int atomic_cmpxchg(int *i, int j, int k) { return __sync_val_compare_and_swap (i, j, k); }
> @@ -58,7 +59,7 @@ if cc.compiles('''
>      name : 'Intel Atomics')
>    intel_atomics = true
>    with_atomics = true

Change added here locally; there's no need to link again `dep_atomic_ops`
in this branch, although it doesn't hurt:

+	dep_atomic_ops = []

> -elif cc.has_header('atomic_ops.h')
> +elif dep_atomic_ops.found()
>    lib_atomics = true
>    with_atomics = true
>  elif cc.has_function('atomic_cas_uint')
> diff --git a/nouveau/meson.build b/nouveau/meson.build
> index f031cd63b71bab9f7e7a..b8affd9ef776c99ba896 100644
> --- a/nouveau/meson.build
> +++ b/nouveau/meson.build
> @@ -25,7 +25,7 @@ libdrm_nouveau = shared_library(
>    c_args : warn_c_args,
>    include_directories : [inc_root, inc_drm],
>    link_with : libdrm,
> -  dependencies : dep_threads,
> +  dependencies : [dep_threads, dep_atomic_ops],
>    version : '2.0.0',
>    install : true,
>  )
> diff --git a/omap/meson.build b/omap/meson.build
> index 1881087fb0d180b668d3..f89436f0e99970b381aa 100644
> --- a/omap/meson.build
> +++ b/omap/meson.build
> @@ -24,7 +24,7 @@ libdrm_omap = shared_library(
>    include_directories : [inc_root, inc_drm],
>    c_args : warn_c_args,
>    link_with : libdrm,
> -  dependencies : [dep_pthread_stubs],
> +  dependencies : [dep_pthread_stubs, dep_atomic_ops],
>    version : '1.0.0',
>    install : true,
>  )
> diff --git a/radeon/meson.build b/radeon/meson.build
> index b02166fe87ea27470e4b..557a878042bb78df4096 100644
> --- a/radeon/meson.build
> +++ b/radeon/meson.build
> @@ -31,7 +31,7 @@ libdrm_radeon = shared_library(
>    c_args : warn_c_args,
>    include_directories : [inc_root, inc_drm],
>    link_with : libdrm,
> -  dependencies : [dep_pthread_stubs],
> +  dependencies : [dep_pthread_stubs, dep_atomic_ops],
>    version : '1.0.1',
>    install : true,
>  )
> diff --git a/tegra/meson.build b/tegra/meson.build
> index 99fdd194f50aceb6858b..7ac815177718d301b76c 100644
> --- a/tegra/meson.build
> +++ b/tegra/meson.build
> @@ -23,7 +23,7 @@ libdrm_tegra = shared_library(
>    [files('tegra.c'), config_file],
>    include_directories : [inc_root, inc_drm],
>    link_with : libdrm,
> -  dependencies : [dep_pthread_stubs],
> +  dependencies : [dep_pthread_stubs, dep_atomic_ops],
>    c_args : warn_c_args,
>    version : '0.0.0',
>    install : true,
> -- 
> Cheers,
>   Eric
> 
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: [PATCH] configure/Makefile.am: use pkg-config to discover libatomic_ops
  2018-02-06 21:19 [PATCH] configure/Makefile.am: use pkg-config to discover libatomic_ops Peter Seiderer
  2018-02-07 14:24 ` [PATCH libdrm] meson: use pkg-config to detect libatomic_ops Eric Engestrom
@ 2018-03-08 18:04 ` Emil Velikov
  1 sibling, 0 replies; 8+ messages in thread
From: Emil Velikov @ 2018-03-08 18:04 UTC (permalink / raw)
  To: Peter Seiderer; +Cc: Thomas Petazzoni, Bernd Kuhls, ML dri-devel

On 6 February 2018 at 21:19, Peter Seiderer <ps.report@gmx.net> wrote:
> From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
>
> The configure script currently tests the availability of libatomic_ops
> by checking the presence of atomic_ops.h. While this is good enough as
> an availability test, it is not sufficient as on some platforms,
> libatomic_ops provides an actual shared library against which we
> should be linked to access libatomic_ops functionality.
>
> Therefore, we instead use PKG_CHECK_MODULES() to test the availability
> of libatomic_ops. Besides testing its availability, this also fills in
> the ATOMIC_OPS_LIBS variable with the list of libraries we need to
> link with to use libatomic_ops.
>
> All Mesa drivers that include xf86atomic.h have been updated to link
> against ATOMIC_OPS_LIBS.
>
> Of course, if we're not using libatomic_ops, ATOMIC_OPS_LIBS is empty,
> and we don't link against it.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Signed-off-by: Peter Seiderer <ps.report@gmx.net>
> [Bernd: PKG_CHECK_MODULES should not fail when libatomic_ops is missing]
> Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
> ---
>  amdgpu/Makefile.am    | 2 +-
>  configure.ac          | 2 +-
>  etnaviv/Makefile.am   | 3 ++-
>  freedreno/Makefile.am | 3 ++-
>  intel/Makefile.am     | 3 ++-
>  nouveau/Makefile.am   | 2 +-
>  omap/Makefile.am      | 2 +-
>  radeon/Makefile.am    | 2 +-
>  tegra/Makefile.am     | 2 +-
You're adding ATOMIC_OPS_LIBS to all the correct places, although
ATOMIC_OPS_CFLAGS seems to be missing.
Can you re-spin with that one added?

Thanks
Emil
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: [PATCH libdrm] meson: use pkg-config to detect libatomic_ops
  2018-03-05 12:03   ` Eric Engestrom
@ 2018-03-08 18:10     ` Emil Velikov
  2018-03-09 11:47       ` Eric Engestrom
  0 siblings, 1 reply; 8+ messages in thread
From: Emil Velikov @ 2018-03-08 18:10 UTC (permalink / raw)
  To: Eric Engestrom
  Cc: Thomas Petazzoni, Bernd Kuhls, Peter Seiderer, ML dri-devel

On 5 March 2018 at 12:03, Eric Engestrom <eric.engestrom@imgtec.com> wrote:
> Ping? :)
> Both for this patch and the equivalent autotools patch it replies to.
>
The autotools one needs the CFLAGS added - meson does it automatically for us.

> On Wednesday, 2018-02-07 14:24:33 +0000, Eric Engestrom wrote:
>> Signed-off-by: Eric Engestrom <eric.engestrom@imgtec.com>
>> ---
>>  amdgpu/meson.build    | 2 +-
>>  etnaviv/meson.build   | 2 +-
>>  freedreno/meson.build | 2 +-
>>  intel/meson.build     | 2 +-
>>  meson.build           | 3 ++-
>>  nouveau/meson.build   | 2 +-
>>  omap/meson.build      | 2 +-
>>  radeon/meson.build    | 2 +-
>>  tegra/meson.build     | 2 +-
>>  9 files changed, 10 insertions(+), 9 deletions(-)
>>
>> diff --git a/amdgpu/meson.build b/amdgpu/meson.build
>> index 8b0452056e2513892c2c..7040ebab86e271022323 100644
>> --- a/amdgpu/meson.build
>> +++ b/amdgpu/meson.build
>> @@ -37,7 +37,7 @@ libdrm_amdgpu = shared_library(
>>    ],
>>    include_directories : [inc_root, inc_drm],
>>    link_with : libdrm,
>> -  dependencies : dep_pthread_stubs,
>> +  dependencies : [dep_pthread_stubs, dep_atomic_ops],
>>    version : '1.0.0',
>>    install : true,
>>  )
>> diff --git a/etnaviv/meson.build b/etnaviv/meson.build
>> index 1767733bd510efdaad86..ca2aa544c58924a15d8b 100644
>> --- a/etnaviv/meson.build
>> +++ b/etnaviv/meson.build
>> @@ -31,7 +31,7 @@ libdrm_etnaviv = shared_library(
>>    include_directories : [inc_root, inc_drm],
>>    link_with : libdrm,
>>    c_args : warn_c_args,
>> -  dependencies : [dep_pthread_stubs, dep_rt],
>> +  dependencies : [dep_pthread_stubs, dep_rt, dep_atomic_ops],
>>    version : '1.0.0',
>>    install : true,
>>  )
>> diff --git a/freedreno/meson.build b/freedreno/meson.build
>> index de6a413fa93e63c0ad4a..da993c10355578838f29 100644
>> --- a/freedreno/meson.build
>> +++ b/freedreno/meson.build
>> @@ -44,7 +44,7 @@ libdrm_freedreno = shared_library(
>>    [files_freedreno, config_file],
>>    c_args : warn_c_args,
>>    include_directories : [inc_root, inc_drm],
>> -  dependencies : [dep_valgrind, dep_pthread_stubs, dep_rt],
>> +  dependencies : [dep_valgrind, dep_pthread_stubs, dep_rt, dep_atomic_ops],
>>    link_with : libdrm,
>>    version : '1.0.0',
>>    install : true,
>> diff --git a/intel/meson.build b/intel/meson.build
>> index ad877274f8d488a80d54..42402f60e38cd5e7359f 100644
>> --- a/intel/meson.build
>> +++ b/intel/meson.build
>> @@ -29,7 +29,7 @@ libdrm_intel = shared_library(
>>    ],
>>    include_directories : [inc_root, inc_drm],
>>    link_with : libdrm,
>> -  dependencies : [dep_pciaccess, dep_pthread_stubs, dep_rt, dep_valgrind],
>> +  dependencies : [dep_pciaccess, dep_pthread_stubs, dep_rt, dep_valgrind, dep_atomic_ops],
>>    c_args : warn_c_args,
>>    version : '1.0.0',
>>    install : true,
>> diff --git a/meson.build b/meson.build
>> index a19e600c7475b2578e2d..f45c14a70baa2456582d 100644
>> --- a/meson.build
>> +++ b/meson.build
>> @@ -51,6 +51,7 @@ cc = meson.get_compiler('c')
>>  intel_atomics = false
>>  lib_atomics = false
>>
>> +dep_atomic_ops = dependency('atomic_ops', required : false)
>>  if cc.compiles('''
>>      int atomic_add(int *i) { return __sync_add_and_fetch (i, 1); }
>>      int atomic_cmpxchg(int *i, int j, int k) { return __sync_val_compare_and_swap (i, j, k); }
>> @@ -58,7 +59,7 @@ if cc.compiles('''
>>      name : 'Intel Atomics')
>>    intel_atomics = true
>>    with_atomics = true
>
> Change added here locally; there's no need to link again `dep_atomic_ops`
> in this branch, although it doesn't hurt:
>
> +       dep_atomic_ops = []
>
The dummy dep_atomic_ops is needed for almost all cases in the if/else
ladder. The exception being the .found() case.

With that
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>

-Emil
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: [PATCH libdrm] meson: use pkg-config to detect libatomic_ops
  2018-03-08 18:10     ` Emil Velikov
@ 2018-03-09 11:47       ` Eric Engestrom
  2018-03-09 15:48         ` Emil Velikov
  0 siblings, 1 reply; 8+ messages in thread
From: Eric Engestrom @ 2018-03-09 11:47 UTC (permalink / raw)
  To: Emil Velikov; +Cc: Thomas Petazzoni, Bernd Kuhls, Peter Seiderer, ML dri-devel

On Thursday, 2018-03-08 18:10:03 +0000, Emil Velikov wrote:
> On 5 March 2018 at 12:03, Eric Engestrom <eric.engestrom@imgtec.com> wrote:
> > Ping? :)
> > Both for this patch and the equivalent autotools patch it replies to.
> >
> The autotools one needs the CFLAGS added - meson does it automatically for us.

I'll let Peter re-spin his patch, but I might push the meson one before
his lands.

> 
> > On Wednesday, 2018-02-07 14:24:33 +0000, Eric Engestrom wrote:
> >> Signed-off-by: Eric Engestrom <eric.engestrom@imgtec.com>
> >> ---
> >>  amdgpu/meson.build    | 2 +-
> >>  etnaviv/meson.build   | 2 +-
> >>  freedreno/meson.build | 2 +-
> >>  intel/meson.build     | 2 +-
> >>  meson.build           | 3 ++-
> >>  nouveau/meson.build   | 2 +-
> >>  omap/meson.build      | 2 +-
> >>  radeon/meson.build    | 2 +-
> >>  tegra/meson.build     | 2 +-
> >>  9 files changed, 10 insertions(+), 9 deletions(-)
> >>
> >> diff --git a/amdgpu/meson.build b/amdgpu/meson.build
> >> index 8b0452056e2513892c2c..7040ebab86e271022323 100644
> >> --- a/amdgpu/meson.build
> >> +++ b/amdgpu/meson.build
> >> @@ -37,7 +37,7 @@ libdrm_amdgpu = shared_library(
> >>    ],
> >>    include_directories : [inc_root, inc_drm],
> >>    link_with : libdrm,
> >> -  dependencies : dep_pthread_stubs,
> >> +  dependencies : [dep_pthread_stubs, dep_atomic_ops],
> >>    version : '1.0.0',
> >>    install : true,
> >>  )
> >> diff --git a/etnaviv/meson.build b/etnaviv/meson.build
> >> index 1767733bd510efdaad86..ca2aa544c58924a15d8b 100644
> >> --- a/etnaviv/meson.build
> >> +++ b/etnaviv/meson.build
> >> @@ -31,7 +31,7 @@ libdrm_etnaviv = shared_library(
> >>    include_directories : [inc_root, inc_drm],
> >>    link_with : libdrm,
> >>    c_args : warn_c_args,
> >> -  dependencies : [dep_pthread_stubs, dep_rt],
> >> +  dependencies : [dep_pthread_stubs, dep_rt, dep_atomic_ops],
> >>    version : '1.0.0',
> >>    install : true,
> >>  )
> >> diff --git a/freedreno/meson.build b/freedreno/meson.build
> >> index de6a413fa93e63c0ad4a..da993c10355578838f29 100644
> >> --- a/freedreno/meson.build
> >> +++ b/freedreno/meson.build
> >> @@ -44,7 +44,7 @@ libdrm_freedreno = shared_library(
> >>    [files_freedreno, config_file],
> >>    c_args : warn_c_args,
> >>    include_directories : [inc_root, inc_drm],
> >> -  dependencies : [dep_valgrind, dep_pthread_stubs, dep_rt],
> >> +  dependencies : [dep_valgrind, dep_pthread_stubs, dep_rt, dep_atomic_ops],
> >>    link_with : libdrm,
> >>    version : '1.0.0',
> >>    install : true,
> >> diff --git a/intel/meson.build b/intel/meson.build
> >> index ad877274f8d488a80d54..42402f60e38cd5e7359f 100644
> >> --- a/intel/meson.build
> >> +++ b/intel/meson.build
> >> @@ -29,7 +29,7 @@ libdrm_intel = shared_library(
> >>    ],
> >>    include_directories : [inc_root, inc_drm],
> >>    link_with : libdrm,
> >> -  dependencies : [dep_pciaccess, dep_pthread_stubs, dep_rt, dep_valgrind],
> >> +  dependencies : [dep_pciaccess, dep_pthread_stubs, dep_rt, dep_valgrind, dep_atomic_ops],
> >>    c_args : warn_c_args,
> >>    version : '1.0.0',
> >>    install : true,
> >> diff --git a/meson.build b/meson.build
> >> index a19e600c7475b2578e2d..f45c14a70baa2456582d 100644
> >> --- a/meson.build
> >> +++ b/meson.build
> >> @@ -51,6 +51,7 @@ cc = meson.get_compiler('c')
> >>  intel_atomics = false
> >>  lib_atomics = false
> >>
> >> +dep_atomic_ops = dependency('atomic_ops', required : false)
> >>  if cc.compiles('''
> >>      int atomic_add(int *i) { return __sync_add_and_fetch (i, 1); }
> >>      int atomic_cmpxchg(int *i, int j, int k) { return __sync_val_compare_and_swap (i, j, k); }
> >> @@ -58,7 +59,7 @@ if cc.compiles('''
> >>      name : 'Intel Atomics')
> >>    intel_atomics = true
> >>    with_atomics = true
> >
> > Change added here locally; there's no need to link again `dep_atomic_ops`
> > in this branch, although it doesn't hurt:
> >
> > +       dep_atomic_ops = []
> >
> The dummy dep_atomic_ops is needed for almost all cases in the if/else
> ladder. The exception being the .found() case.

Actually, because of the way the `if` chain is written, the dep_atomic_ops
has to be created before the list; in the `if` cases before this one,
that dep might exist, but we don't need it. In the branch that uses it,
if we got in the branch then it exists, and we need it. In the branches
after that, it doesn't exist and we don't need it either.

That means that only up to that branch can it contain anything;
afterwards, it's empty anyway.

And like I said, it only has the effect of maybe on the branches before
adding unused flags to the compiler & linker, which shouldn't have any
effect anyway.

> 
> With that
> Reviewed-by: Emil Velikov <emil.velikov@collabora.com>

With the explanation, does your r-b stand for the current version?
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: [PATCH libdrm] meson: use pkg-config to detect libatomic_ops
  2018-03-09 11:47       ` Eric Engestrom
@ 2018-03-09 15:48         ` Emil Velikov
  2018-03-09 16:57           ` Eric Engestrom
  0 siblings, 1 reply; 8+ messages in thread
From: Emil Velikov @ 2018-03-09 15:48 UTC (permalink / raw)
  To: Eric Engestrom
  Cc: Thomas Petazzoni, Bernd Kuhls, Peter Seiderer, ML dri-devel

On 9 March 2018 at 11:47, Eric Engestrom <eric.engestrom@imgtec.com> wrote:

>> > +       dep_atomic_ops = []
>> >
>> The dummy dep_atomic_ops is needed for almost all cases in the if/else
>> ladder. The exception being the .found() case.
>
> Actually, because of the way the `if` chain is written, the dep_atomic_ops
> has to be created before the list; in the `if` cases before this one,
> that dep might exist, but we don't need it. In the branch that uses it,
> if we got in the branch then it exists, and we need it. In the branches
> after that, it doesn't exist and we don't need it either.
>
> That means that only up to that branch can it contain anything;
> afterwards, it's empty anyway.
>
> And like I said, it only has the effect of maybe on the branches before
> adding unused flags to the compiler & linker, which shouldn't have any
> effect anyway.
>
Let me see if I get this right:

You're saying that when dep_atomic_ops.found() == false, the
dep_atomic_ops dependency listed in the respective will expand to
no-op.
I wasn't quite sure if that's the case, hence my pedantic suggestion ;-)

Makes sense though, rb still stands.

Thanks Eric!

-Emil
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: [PATCH libdrm] meson: use pkg-config to detect libatomic_ops
  2018-03-09 15:48         ` Emil Velikov
@ 2018-03-09 16:57           ` Eric Engestrom
  0 siblings, 0 replies; 8+ messages in thread
From: Eric Engestrom @ 2018-03-09 16:57 UTC (permalink / raw)
  To: Emil Velikov; +Cc: Thomas Petazzoni, Bernd Kuhls, Peter Seiderer, ML dri-devel

On Friday, 2018-03-09 15:48:51 +0000, Emil Velikov wrote:
> On 9 March 2018 at 11:47, Eric Engestrom <eric.engestrom@imgtec.com> wrote:
> 
> >> > +       dep_atomic_ops = []
> >> >
> >> The dummy dep_atomic_ops is needed for almost all cases in the if/else
> >> ladder. The exception being the .found() case.
> >
> > Actually, because of the way the `if` chain is written, the dep_atomic_ops
> > has to be created before the list; in the `if` cases before this one,
> > that dep might exist, but we don't need it. In the branch that uses it,
> > if we got in the branch then it exists, and we need it. In the branches
> > after that, it doesn't exist and we don't need it either.
> >
> > That means that only up to that branch can it contain anything;
> > afterwards, it's empty anyway.
> >
> > And like I said, it only has the effect of maybe on the branches before
> > adding unused flags to the compiler & linker, which shouldn't have any
> > effect anyway.
> >
> Let me see if I get this right:
> 
> You're saying that when dep_atomic_ops.found() == false, the
> dep_atomic_ops dependency listed in the respective will expand to
> no-op.
> I wasn't quite sure if that's the case, hence my pedantic suggestion ;-)

Exactly :)

> 
> Makes sense though, rb still stands.

OK, pushing in a minute

> 
> Thanks Eric!
> 
> -Emil
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

end of thread, other threads:[~2018-03-09 16:58 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-06 21:19 [PATCH] configure/Makefile.am: use pkg-config to discover libatomic_ops Peter Seiderer
2018-02-07 14:24 ` [PATCH libdrm] meson: use pkg-config to detect libatomic_ops Eric Engestrom
2018-03-05 12:03   ` Eric Engestrom
2018-03-08 18:10     ` Emil Velikov
2018-03-09 11:47       ` Eric Engestrom
2018-03-09 15:48         ` Emil Velikov
2018-03-09 16:57           ` Eric Engestrom
2018-03-08 18:04 ` [PATCH] configure/Makefile.am: use pkg-config to discover libatomic_ops Emil Velikov

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.