summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Engestrom <[email protected]>2018-11-23 17:04:25 +0000
committerEric Engestrom <[email protected]>2019-06-21 11:35:39 +0000
commit6a9dd62882b9e2b57394a192cc66e886128df026 (patch)
tree26cd400d6690085a87adc0c14e25d4fb9bd85230
parent1cbe2ad39442a48b96fff40a3a30c74ac5e4e4e6 (diff)
drisw: move build logic to build systems
Signed-off-by: Eric Engestrom <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
-rw-r--r--Android.common.mk5
-rw-r--r--meson.build2
-rwxr-xr-xscons/gallium.py3
-rw-r--r--src/gallium/winsys/sw/dri/dri_sw_winsys.c10
4 files changed, 13 insertions, 7 deletions
diff --git a/Android.common.mk b/Android.common.mk
index 36d97c52dd1..327f13f5a38 100644
--- a/Android.common.mk
+++ b/Android.common.mk
@@ -98,6 +98,11 @@ ifeq ($(filter 5 6 7 8 9, $(MESA_ANDROID_MAJOR_VERSION)),)
LOCAL_CFLAGS += -DHAVE_TIMESPEC_GET
endif
+# Android's libc began supporting shm in Oreo
+ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 26 && echo true),true)
+LOCAL_CFLAGS += -DHAVE_SYS_SHM_H
+endif
+
ifeq ($(strip $(MESA_ENABLE_ASM)),true)
ifeq ($(TARGET_ARCH),x86)
LOCAL_CFLAGS += \
diff --git a/meson.build b/meson.build
index 28689857dc3..d8a48bd6994 100644
--- a/meson.build
+++ b/meson.build
@@ -1036,7 +1036,7 @@ elif cc.has_header_symbol('sys/mkdev.h', 'major')
pre_args += '-DMAJOR_IN_MKDEV'
endif
-foreach h : ['xlocale.h', 'sys/sysctl.h', 'linux/futex.h', 'endian.h', 'dlfcn.h', 'execinfo.h']
+foreach h : ['xlocale.h', 'sys/sysctl.h', 'linux/futex.h', 'endian.h', 'dlfcn.h', 'execinfo.h', 'sys/shm.h']
if cc.compiles('#include <@0@>'.format(h), name : '@0@'.format(h))
pre_args += '-DHAVE_@0@'.format(h.to_upper().underscorify())
endif
diff --git a/scons/gallium.py b/scons/gallium.py
index 61bbeb2399f..c2713992b36 100755
--- a/scons/gallium.py
+++ b/scons/gallium.py
@@ -371,6 +371,9 @@ def generate(env):
if check_functions(env, ['timespec_get']):
cppdefines += ['HAVE_TIMESPEC_GET']
+ if check_header(env, 'sys/shm.h'):
+ cppdefines += ['HAVE_SYS_SHM_H']
+
if platform == 'windows':
cppdefines += [
'WIN32',
diff --git a/src/gallium/winsys/sw/dri/dri_sw_winsys.c b/src/gallium/winsys/sw/dri/dri_sw_winsys.c
index 3273813bf50..eacee295ee1 100644
--- a/src/gallium/winsys/sw/dri/dri_sw_winsys.c
+++ b/src/gallium/winsys/sw/dri/dri_sw_winsys.c
@@ -26,9 +26,7 @@
*
**************************************************************************/
-#if !defined(ANDROID) || ANDROID_API_LEVEL >= 26
-/* Android's libc began supporting shm in Oreo */
-#define HAVE_SHM
+#ifdef HAVE_SYS_SHM_H
#include <sys/ipc.h>
#include <sys/shm.h>
#endif
@@ -88,7 +86,7 @@ dri_sw_is_displaytarget_format_supported( struct sw_winsys *ws,
return TRUE;
}
-#ifdef HAVE_SHM
+#ifdef HAVE_SYS_SHM_H
static char *
alloc_shm(struct dri_sw_displaytarget *dri_sw_dt, unsigned size)
{
@@ -139,7 +137,7 @@ dri_sw_displaytarget_create(struct sw_winsys *winsys,
dri_sw_dt->shmid = -1;
-#ifdef HAVE_SHM
+#ifdef HAVE_SYS_SHM_H
if (ws->lf->put_image_shm)
dri_sw_dt->data = alloc_shm(dri_sw_dt, size);
#endif
@@ -166,7 +164,7 @@ dri_sw_displaytarget_destroy(struct sw_winsys *ws,
struct dri_sw_displaytarget *dri_sw_dt = dri_sw_displaytarget(dt);
if (dri_sw_dt->shmid >= 0) {
-#ifdef HAVE_SHM
+#ifdef HAVE_SYS_SHM_H
shmdt(dri_sw_dt->data);
shmctl(dri_sw_dt->shmid, IPC_RMID, 0);
#endif