[Mesa-dev] [PATCH] Haiku: convert to autotools
Eric Engestrom
eric.engestrom at imgtec.com
Tue Oct 24 12:46:50 UTC 2017
Hi,
I had a quick glance, but there's too much at once.
On Monday, 2017-10-23 17:58:46 +0200, Jerome Duval wrote:
> * configure.ac:
> -pthread is not available on Haiku.
> Haiku doesn't require --enable-dri
> build hgl on Haiku
> * egl/Makefile.am: define backendfiles for Haiku
> * src/gallium/Makefile.am: build winsys/sw/hgl, state_trackers/hgl and
> targets/haiku-softpipe on Haiku.
> * src/gallium/targets/haiku-softpipe: add Makefile.am
> * src/gallium/state_trackers/hgl: add Makefile.am
> * winsys/sw/hgl: add Makefile.am
> * src/hgl/Makefile.am: add Makefile.am
This list should be a hint: you're doing many things at once :P
Please split this into a series, roughly one patch per item in your
list.
When doing that, please pay attention to the order of your patches, so
that you don't break anything in the middle (configure.ac probably needs
to be the last patch for instance).
Side note: is Meson supported on Haiku? If it is, can you also wire it
up? Or would you be willing to test patches that do?
> ---
> configure.ac | 30 +++++++++-
> src/Makefile.am | 4 ++
> src/egl/Makefile.am | 20 ++++++-
> src/gallium/Makefile.am | 9 ++-
> src/gallium/state_trackers/hgl/Makefile.am | 39 ++++++++++++
> src/gallium/state_trackers/hgl/Makefile.sources | 3 +
> src/gallium/targets/haiku-softpipe/Makefile.am | 69 ++++++++++++++++++++++
> .../targets/haiku-softpipe/SoftwareRenderer.cpp | 2 +
> src/gallium/winsys/sw/hgl/Makefile.am | 34 +++++++++++
> src/gallium/winsys/sw/hgl/Makefile.sources | 3 +
> src/hgl/Makefile.am | 50 ++++++++++++++++
> src/hgl/Makefile.sources | 8 +++
> src/hgl/gl.pc.in | 11 ++++
> 13 files changed, 277 insertions(+), 5 deletions(-)
> create mode 100644 src/gallium/state_trackers/hgl/Makefile.am
> create mode 100644 src/gallium/state_trackers/hgl/Makefile.sources
> create mode 100644 src/gallium/targets/haiku-softpipe/Makefile.am
> create mode 100644 src/gallium/winsys/sw/hgl/Makefile.am
> create mode 100644 src/gallium/winsys/sw/hgl/Makefile.sources
> create mode 100644 src/hgl/Makefile.am
> create mode 100644 src/hgl/Makefile.sources
> create mode 100644 src/hgl/gl.pc.in
>
> diff --git a/configure.ac b/configure.ac
> index add3830..1d8efc5 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -272,6 +272,9 @@ case "$host_os" in
> *-android*)
> android=yes
> ;;
> +*haiku)
> + haiku=yes
> + ;;
> linux*|*-gnu*|gnu*|cygwin*)
> DEFINES="$DEFINES -D_GNU_SOURCE"
> ;;
> @@ -281,6 +284,7 @@ solaris*)
> esac
>
> AM_CONDITIONAL(HAVE_ANDROID, test "x$android" = xyes)
> +AM_CONDITIONAL(HAVE_HAIKU, test "x$haiku" = xyes)
>
> dnl
> dnl Check compiler flags
> @@ -863,12 +867,18 @@ dnl According to the manual when using pthreads, one should add -pthread to
> dnl both compile and link-time arguments.
> dnl In practise that should be sufficient for all platforms, since any
> dnl platforms build with GCC and Clang support the flag.
> -PTHREAD_LIBS="$PTHREAD_LIBS -pthread"
> +case "$host_os" in
> +haiku*)
> + ;;
> +* )
> + PTHREAD_LIBS="$PTHREAD_LIBS -pthread"
> + ;;
> +esac
>
> dnl pthread-stubs is mandatory on BSD platforms, due to the nature of the
> dnl project. Even then there's a notable issue as described in the project README
> case "$host_os" in
> -linux* | cygwin* | darwin* | solaris* | *-gnu* | gnu*)
> +linux* | cygwin* | darwin* | solaris* | *-gnu* | gnu* | haiku*)
> pthread_stubs_possible="no"
> ;;
> * )
> @@ -1518,7 +1528,12 @@ require_dri_shared_libs_and_glapi() {
> if test "x$enable_dri" != xyes; then
> # There is only a single backend which won't be build/used otherwise.
> # XXX: Revisit this as the egl/haiku is a thing.
> - AC_MSG_ERROR([$1 requires --enable-dri])
> + case "$host_os" in
> + haiku*)
> + ;;
> + *)
> + AC_MSG_ERROR([$1 requires --enable-dri]) ;;
> + esac
> fi
>
> if test "x$enable_shared_glapi" != xyes; then
> @@ -1748,6 +1763,10 @@ for plat in $platforms; do
> DEFINES="$DEFINES -DHAVE_ANDROID_PLATFORM"
> ;;
>
> + haiku)
> + DEFINES="$DEFINES -DHAVE_HAIKU_PLATFORM"
> + ;;
> +
> *)
> AC_MSG_ERROR([platform '$plat' does not exist])
> ;;
> @@ -2891,6 +2910,7 @@ AC_CONFIG_FILES([Makefile
> src/gallium/state_trackers/clover/Makefile
> src/gallium/state_trackers/dri/Makefile
> src/gallium/state_trackers/glx/xlib/Makefile
> + src/gallium/state_trackers/hgl/Makefile
> src/gallium/state_trackers/nine/Makefile
> src/gallium/state_trackers/omx_bellagio/Makefile
> src/gallium/state_trackers/osmesa/Makefile
> @@ -2901,6 +2921,7 @@ AC_CONFIG_FILES([Makefile
> src/gallium/targets/d3dadapter9/Makefile
> src/gallium/targets/d3dadapter9/d3d.pc
> src/gallium/targets/dri/Makefile
> + src/gallium/targets/haiku-softpipe/Makefile
> src/gallium/targets/libgl-xlib/Makefile
> src/gallium/targets/omx-bellagio/Makefile
> src/gallium/targets/opencl/Makefile
> @@ -2925,6 +2946,7 @@ AC_CONFIG_FILES([Makefile
> src/gallium/winsys/amdgpu/drm/Makefile
> src/gallium/winsys/svga/drm/Makefile
> src/gallium/winsys/sw/dri/Makefile
> + src/gallium/winsys/sw/hgl/Makefile
> src/gallium/winsys/sw/kms-dri/Makefile
> src/gallium/winsys/sw/null/Makefile
> src/gallium/winsys/sw/wrapper/Makefile
> @@ -2941,6 +2963,8 @@ AC_CONFIG_FILES([Makefile
> src/glx/windows/Makefile
> src/glx/windows/windowsdriproto.pc
> src/gtest/Makefile
> + src/hgl/Makefile
> + src/hgl/gl.pc
> src/intel/Makefile
> src/loader/Makefile
> src/mapi/Makefile
> diff --git a/src/Makefile.am b/src/Makefile.am
> index 5ef2d4f..7ef63f7 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -108,6 +108,10 @@ if HAVE_PLATFORM_WAYLAND
> SUBDIRS += egl/wayland/wayland-egl
> endif
>
> +if HAVE_HAIKU
> +SUBDIRS += hgl
> +endif
> +
> if HAVE_EGL
> SUBDIRS += egl
> endif
> diff --git a/src/egl/Makefile.am b/src/egl/Makefile.am
> index eeb745f..9b8528645 100644
> --- a/src/egl/Makefile.am
> +++ b/src/egl/Makefile.am
> @@ -52,6 +52,7 @@ libEGL_common_la_LIBADD = \
>
> dri2_backend_FILES =
> dri3_backend_FILES =
> +haiku_backend_FILES =
>
> if HAVE_PLATFORM_X11
> AM_CFLAGS += $(XCB_DRI2_CFLAGS)
> @@ -108,6 +109,22 @@ libEGL_common_la_LIBADD += $(ANDROID_LIBS)
> dri2_backend_FILES += drivers/dri2/platform_android.c
> endif
>
> +if HAVE_HAIKU
> +AM_CPPFLAGS = \
> + -I$(top_srcdir)/include \
> + -I$(top_srcdir)/include/HaikuGL \
> + -I$(top_srcdir)/src/egl/main \
> + -I$(top_srcdir)/src/ \
> + -D_EGL_BUILT_IN_DRIVER_HAIKU \
> + -D_EGL_NATIVE_PLATFORM=$(EGL_NATIVE_PLATFORM)
> +haiku_backend_FILES += drivers/haiku/egl_haiku.cpp
> +libEGL_common_la_LIBADD += $(top_builddir)/src/hgl/libGL.la
> +libEGL_common_la_SOURCES += \
> + $(haiku_backend_FILES)
> +
> +endif
> +
> +if !HAVE_HAIKU
> AM_CFLAGS += \
> -I$(top_srcdir)/src/loader \
> -I$(top_builddir)/src/egl/drivers/dri2 \
> @@ -151,6 +168,8 @@ g_egldispatchstubs.h: $(GLVND_GEN_DEPS)
> BUILT_SOURCES += g_egldispatchstubs.c g_egldispatchstubs.h
> CLEANFILES = $(BUILT_SOURCES)
>
> +endif
> +
> if USE_LIBGLVND
> AM_CFLAGS += \
> $(GLVND_CFLAGS)
> @@ -207,7 +226,6 @@ TESTS = egl-symbols-check \
> EXTRA_DIST = \
> $(TESTS) \
> SConscript \
> - drivers/haiku \
> main/egl.def \
> main/README.txt \
> $(GLVND_GEN_DEPS) \
> diff --git a/src/gallium/Makefile.am b/src/gallium/Makefile.am
> index ea20799..37800b9 100644
> --- a/src/gallium/Makefile.am
> +++ b/src/gallium/Makefile.am
> @@ -119,6 +119,10 @@ if HAVE_DRISW_KMS
> SUBDIRS += winsys/sw/kms-dri
> endif
>
> +if HAVE_HAIKU
> +SUBDIRS += winsys/sw/hgl
> +endif
> +
> SUBDIRS += winsys/sw/wrapper
>
> ##
> @@ -182,6 +186,10 @@ if HAVE_ST_NINE
> SUBDIRS += state_trackers/nine targets/d3dadapter9
> endif
>
> +if HAVE_HAIKU
> +SUBDIRS += state_trackers/hgl targets/haiku-softpipe
> +endif
> +
> ##
> ## Don't forget to bundle the remaining (non autotools) state-trackers/targets
> ##
> @@ -191,7 +199,6 @@ EXTRA_DIST += \
> state_trackers/README \
> state_trackers/wgl targets/libgl-gdi \
> targets/graw-gdi targets/graw-null targets/graw-xlib \
> - state_trackers/hgl targets/haiku-softpipe \
> tools
>
>
> diff --git a/src/gallium/state_trackers/hgl/Makefile.am b/src/gallium/state_trackers/hgl/Makefile.am
> new file mode 100644
> index 0000000..5b55be8
> --- /dev/null
> +++ b/src/gallium/state_trackers/hgl/Makefile.am
> @@ -0,0 +1,39 @@
> +# Copyright © 2017 Haiku, Inc. All rights reserved.
> +#
> +# Permission is hereby granted, free of charge, to any person obtaining a
> +# copy of this software and associated documentation files (the "Software"),
> +# to deal in the Software without restriction, including without limitation
> +# the rights to use, copy, modify, merge, publish, distribute, sublicense,
> +# and/or sell copies of the Software, and to permit persons to whom the
> +# Software is furnished to do so, subject to the following conditions:
> +#
> +# The above copyright notice and this permission notice (including the next
> +# paragraph) shall be included in all copies or substantial portions of the
> +# Software.
> +#
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
> +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
> +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
> +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
> +# DEALINGS IN THE SOFTWARE.
> +
> +include Makefile.sources
> +include $(top_srcdir)/src/gallium/Automake.inc
> +
> +
> +AM_CPPFLAGS = \
> + -I$(top_srcdir)/src \
> + -I$(top_srcdir)/src/mapi \
> + -I$(top_srcdir)/src/mesa \
> + -I$(top_srcdir)/include/HaikuGL \
> + $(GALLIUM_CFLAGS)
> +
> +noinst_LTLIBRARIES = libhgl.la
> +libhgl_la_LIBADD = -ltranslation
> +libhgl_la_SOURCES = $(common_SOURCES)
> +
> +
> +EXTRA_DIST = SConscript
> diff --git a/src/gallium/state_trackers/hgl/Makefile.sources b/src/gallium/state_trackers/hgl/Makefile.sources
> new file mode 100644
> index 0000000..3076ba3
> --- /dev/null
> +++ b/src/gallium/state_trackers/hgl/Makefile.sources
> @@ -0,0 +1,3 @@
> +common_SOURCES := \
> + hgl.c \
> + bitmap_wrapper.cpp
> diff --git a/src/gallium/targets/haiku-softpipe/Makefile.am b/src/gallium/targets/haiku-softpipe/Makefile.am
> new file mode 100644
> index 0000000..94599a3
> --- /dev/null
> +++ b/src/gallium/targets/haiku-softpipe/Makefile.am
> @@ -0,0 +1,69 @@
> +include $(top_srcdir)/src/gallium/Automake.inc
> +
> +AM_CPPFLAGS = \
> + -I$(top_srcdir)/src/mapi \
> + -I$(top_srcdir)/src/mesa \
> + -I$(top_srcdir)/src/mesa/main \
> + -I$(top_srcdir)/include/HaikuGL \
> + -I$(top_srcdir)/src/gallium/include \
> + -I$(top_srcdir)/src/gallium/winsys \
> + -I$(top_srcdir)/src/gallium/state_trackers/hgl \
> + -I/boot/system/develop/headers/private \
> + $(GALLIUM_TARGET_CFLAGS) \
> + $(DEFINES) \
> + -DGALLIUM_SOFTPIPE \
> + -DGALLIUM_RBUG \
> + -DGALLIUM_TRACE
> +
> +hswpipedir = ${libdir}/haiku
> +hswpipe_LTLIBRARIES = libswpipe.la
> +
> +libswpipe_la_SOURCES = \
> + GalliumContext.cpp \
> + SoftwareRenderer.cpp
> +
> +libswpipe_la_LDFLAGS = \
> + -shared \
> + -shrext .so \
> + -module \
> + -avoid-version \
> + $(GC_SECTIONS)
> +
> +libswpipe_la_LIBADD = \
> + $(top_builddir)/src/hgl/libGL.la \
> + $(top_builddir)/src/gallium/winsys/sw/hgl/libswhgl.la \
> + $(top_builddir)/src/gallium/state_trackers/hgl/libhgl.la \
> + $(top_builddir)/src/gallium/drivers/rbug/librbug.la \
> + $(top_builddir)/src/gallium/drivers/trace/libtrace.la \
> + $(top_builddir)/src/gallium/auxiliary/libgallium.la \
> + $(top_builddir)/src/mesa/libmesagallium.la \
> + $(top_builddir)/src/gallium/drivers/softpipe/libsoftpipe.la \
> + $(GALLIUM_COMMON_LIB_DEPS) \
> + -lnetwork
> +
> +EXTRA_DIST = \
> + SConscript
> +
> +TARGET_DRIVERS =
> +TARGET_CPPFLAGS =
> +TARGET_LIB_DEPS =
> +
> +include $(top_srcdir)/src/gallium/drivers/softpipe/Automake.inc
> +include $(top_srcdir)/src/gallium/drivers/llvmpipe/Automake.inc
> +include $(top_srcdir)/src/gallium/drivers/swr/Automake.inc
> +
> +
> +if HAVE_GALLIUM_LLVM
> +AM_CPPFLAGS += -DGALLIUM_LLVMPIPE
> +
> +libswpipe_la_LIBADD += $(LLVM_LIBS) \
> + $(top_builddir)/src/gallium/drivers/llvmpipe/libllvmpipe.la
> +libswpipe_la_LDFLAGS += $(LLVM_LDFLAGS)
> +endif
> +
> +if HAVE_GALLIUM_SWR
> +AM_CPPFLAGS += -DGALLIUM_SWR
> +
> +libswpipe_la_LIBADD += \
> + $(top_builddir)/src/gallium/drivers/swr/libmesaswr.la
> +endif
> diff --git a/src/gallium/targets/haiku-softpipe/SoftwareRenderer.cpp b/src/gallium/targets/haiku-softpipe/SoftwareRenderer.cpp
> index 18cb1ac..4e4888a 100644
> --- a/src/gallium/targets/haiku-softpipe/SoftwareRenderer.cpp
> +++ b/src/gallium/targets/haiku-softpipe/SoftwareRenderer.cpp
> @@ -33,6 +33,8 @@
>
> extern const char* color_space_name(color_space space);
>
> +#undef _EXPORT
> +#define _EXPORT __attribute__((__visibility__("default")))
>
> extern "C" _EXPORT BGLRenderer*
> instantiate_gl_renderer(BGLView *view, ulong opts, BGLDispatcher *dispatcher)
> diff --git a/src/gallium/winsys/sw/hgl/Makefile.am b/src/gallium/winsys/sw/hgl/Makefile.am
> new file mode 100644
> index 0000000..8e5d403
> --- /dev/null
> +++ b/src/gallium/winsys/sw/hgl/Makefile.am
> @@ -0,0 +1,34 @@
> +# Copyright © 2017 Haiku, Inc. All rights reserved.
> +#
> +# Permission is hereby granted, free of charge, to any person obtaining a
> +# copy of this software and associated documentation files (the "Software"),
> +# to deal in the Software without restriction, including without limitation
> +# the rights to use, copy, modify, merge, publish, distribute, sublicense,
> +# and/or sell copies of the Software, and to permit persons to whom the
> +# Software is furnished to do so, subject to the following conditions:
> +#
> +# The above copyright notice and this permission notice (including the next
> +# paragraph) shall be included in all copies or substantial portions of the
> +# Software.
> +#
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
> +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
> +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
> +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
> +# DEALINGS IN THE SOFTWARE.
> +
> +include Makefile.sources
> +include $(top_srcdir)/src/gallium/Automake.inc
> +
> +AM_CFLAGS = \
> + -I$(top_srcdir)/src/gallium/state_trackers/hgl \
> + $(GALLIUM_WINSYS_CFLAGS)
> +
> +noinst_LTLIBRARIES = libswhgl.la
> +
> +libswhgl_la_SOURCES = $(C_SOURCES)
> +
> +EXTRA_DIST = SConscript
> diff --git a/src/gallium/winsys/sw/hgl/Makefile.sources b/src/gallium/winsys/sw/hgl/Makefile.sources
> new file mode 100644
> index 0000000..52bfc88
> --- /dev/null
> +++ b/src/gallium/winsys/sw/hgl/Makefile.sources
> @@ -0,0 +1,3 @@
> +C_SOURCES := \
> + hgl_sw_winsys.c \
> + hgl_sw_winsys.h
> diff --git a/src/hgl/Makefile.am b/src/hgl/Makefile.am
> new file mode 100644
> index 0000000..f82602a
> --- /dev/null
> +++ b/src/hgl/Makefile.am
> @@ -0,0 +1,50 @@
> +# Copyright © 2017 Haiku, Inc. All rights reserved.
> +#
> +# Permission is hereby granted, free of charge, to any person obtaining a
> +# copy of this software and associated documentation files (the "Software"),
> +# to deal in the Software without restriction, including without limitation
> +# the rights to use, copy, modify, merge, publish, distribute, sublicense,
> +# and/or sell copies of the Software, and to permit persons to whom the
> +# Software is furnished to do so, subject to the following conditions:
> +#
> +# The above copyright notice and this permission notice (including the next
> +# paragraph) shall be included in all copies or substantial portions of the
> +# Software.
> +#
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> +# IN THE SOFTWARE.
> +
> +include Makefile.sources
> +
> +AM_CPPFLAGS = \
> + -I$(top_srcdir)/src \
> + -I$(top_srcdir)/src/mapi \
> + -I$(top_srcdir)/src/mesa \
> + -I$(top_srcdir)/src/mesa/main \
> + -I$(top_srcdir)/include/ \
> + -I$(top_srcdir)/include/HaikuGL \
> + -I/system/develop/headers/private \
> + -I$(top_builddir)/src/mapi \
> + $(DEFINES)
> +
> +
> +lib_LTLIBRARIES = libGL.la
> +
> +libGL_la_LIBADD = $(top_builddir)/src/mapi/glapi/libglapi.la -lbe
> +libGL_la_SOURCES = $(COMMON_SOURCES)
> +libGL_la_LDFLAGS = \
> + -no-undefined \
> + -version-number 1:0 \
> + $(BSYMBOLIC) \
> + $(GC_SECTIONS) \
> + $(LD_NO_UNDEFINED)
> +
> +pkgconfigdir = $(libdir)/pkgconfig
> +pkgconfig_DATA = gl.pc
> +
> +EXTRA_DIST =
> diff --git a/src/hgl/Makefile.sources b/src/hgl/Makefile.sources
> new file mode 100644
> index 0000000..5df230b
> --- /dev/null
> +++ b/src/hgl/Makefile.sources
> @@ -0,0 +1,8 @@
> +COMMON_SOURCES := \
> + GLView.cpp \
> + GLRenderer.cpp \
> + GLRendererRoster.cpp \
> + GLRendererRoster.h \
> + GLDispatcher.cpp \
> + GLDispatcher.h
> +
> diff --git a/src/hgl/gl.pc.in b/src/hgl/gl.pc.in
> new file mode 100644
> index 0000000..7577bae
> --- /dev/null
> +++ b/src/hgl/gl.pc.in
> @@ -0,0 +1,11 @@
> +prefix=@prefix@
> +exec_prefix=${prefix}
> +libdir=@libdir@
> +includedir=@includedir@
> +
> +Name: gl
> +Description: Mesa OpenGL library
> +Version: @PACKAGE_VERSION@
> +Libs: -L${libdir} -lGL
> +Libs.private: @GL_PC_LIB_PRIV@
> +Cflags: -I${includedir} @GL_PC_CFLAGS@
> --
> 2.7.4
>
More information about the mesa-dev
mailing list