The attached patches add support for DragonFly BSD. dragonfly-mesa70.patch
is applicable to both 7.0 branch and master,
dragonfly-mesa-autoconf.patch just adds autoconf support for master only.
7.0 branch is fully tested, master isn't due to need for too many stuff
from git (DRI2).
configs/dragonfly* files are written using FreeBSD files as templates,
differences are mainly various paths and the fact that -pthread is
deprecated in DragonFly. AMD64 isn't tested, because DragonFly AMD64 port
isn't functional yet (we hope to change it in near future).
The change in mklib is necesary because 'pkg-config --libs libdrm' returns
in my system "-Wl,-R/usr/pkg/lib -L/usr/pkg/lib -ldrm".
The changes in src/glut/glx/Makefile and src/glw/Makefile are made because
without this makedepend complained a lot about missing X11 headers.
regards,
--
Hasso Tepper
diff --git a/Makefile b/Makefile
index 0f58f4b..5715911 100644
--- a/Makefile
+++ b/Makefile
@@ -75,6 +75,10 @@ darwin-fat-32bit \
darwin-fat-all \
darwin-static \
darwin-static-x86ppc \
+dragonfly \
+dragonfly-dri \
+dragonfly-dri-amd64 \
+dragonfly-dri-x86 \
freebsd \
freebsd-dri \
freebsd-dri-amd64 \
diff --git a/bin/mklib b/bin/mklib
index 90bf834..257338e 100755
--- a/bin/mklib
+++ b/bin/mklib
@@ -111,6 +111,9 @@ do
# this is a special case (see bugzilla 10876)
DEPS="$DEPS $1"
;;
+ -Wl*)
+ DEPS="$DEPS $1"
+ ;;
'-pthread')
DEPS="$DEPS -pthread"
;;
@@ -198,7 +201,7 @@ fi
#
case $ARCH in
- 'Linux' | 'OpenBSD' | 'GNU' | GNU/*)
+ 'Linux' | 'OpenBSD' | 'DragonFly' | 'GNU' | GNU/*)
# we assume gcc
if [ "x$LINK" = "x" ] ; then
diff --git a/configs/dragonfly b/configs/dragonfly
new file mode 100644
index 0000000..97c10e3
--- /dev/null
+++ b/configs/dragonfly
@@ -0,0 +1,38 @@
+# Configuration for DragonFly
+
+include $(TOP)/configs/default
+
+CONFIG_NAME = DragonFly
+
+# Compiler and flags
+CC = cc
+CXX = c++
+MAKE = gmake
+
+OPT_FLAGS = -O2
+PIC_FLAGS = -fPIC
+
+DEFINES = -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE -DUSE_XSHM \
+ -DHZ=100
+
+X11_INCLUDES = -I/usr/pkg/include
+
+CFLAGS += $(WARN_FLAGS) $(OPT_FLAGS) $(PIC_FLAGS) $(DEFINES) $(X11_INCLUDES) \
+ -ffast-math -pedantic
+
+CXXFLAGS += $(WARN_FLAGS) $(OPT_FLAGS) $(PIC_FLAGS) $(DEFINES) $(X11_INCLUDES)
+
+GLUT_CFLAGS = -fexceptions
+
+# Work around aliasing bugs - developers should comment this out
+CFLAGS += -fno-strict-aliasing
+CXXFLAGS += -fno-strict-aliasing
+
+EXTRA_LIB_PATH = -L/usr/pkg/lib
+APP_LIB_DEPS = -L$(TOP)/$(LIB_DIR) $(EXTRA_LIB_PATH) -l$(GLUT_LIB) \
+ -l$(GLU_LIB) -l$(GL_LIB) -lXext -lXmu -lXi -lX11 -lm
+
+# Installation directories (for make install)
+INSTALL_DIR = /usr/pkg
+DRI_DRIVER_INSTALL_DIR = /usr/pkg/lib/modules/dri/
+
diff --git a/configs/dragonfly-dri b/configs/dragonfly-dri
new file mode 100644
index 0000000..cb96971
--- /dev/null
+++ b/configs/dragonfly-dri
@@ -0,0 +1,56 @@
+# -*-makefile-*-
+# Configuration for dragonfly-dri: DragonFly DRI hardware drivers
+
+include $(TOP)/configs/dragonfly
+
+CONFIG_NAME = dragonfly-dri
+
+# Compiler and flags
+CC = gcc
+CXX = g++
+WARN_FLAGS = -Wall
+OPT_FLAGS = -O -g
+
+EXPAT_INCLUDES = -I/usr/pkg/include
+X11_INCLUDES = -I/usr/pkg/include
+DEFINES = -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER \
+ -DGLX_DIRECT_RENDERING -DGLX_INDIRECT_RENDERING \
+ -DHAVE_ALIAS
+
+CFLAGS = $(WARN_FLAGS) $(OPT_FLAGS) $(PIC_FLAGS) -Wmissing-prototypes \
+ -std=c99 -Wundef -ffast-math $(ASM_FLAGS) $(X11_INCLUDES) $(DEFINES)
+
+CXXFLAGS = $(WARN_FLAGS) $(OPT_FLAGS) $(PIC_FLAGS) $(DEFINES) -Wall -ansi \
+ -pedantic $(ASM_FLAGS) $(X11_INCLUDES)
+
+# Work around aliasing bugs - developers should comment this out
+CFLAGS += -fno-strict-aliasing
+CXXFLAGS += -fno-strict-aliasing
+
+ASM_SOURCES =
+
+# Library/program dependencies
+LIBDRM_CFLAGS = `pkg-config --cflags libdrm`
+LIBDRM_LIB = `pkg-config --libs libdrm`
+DRI_LIB_DEPS = -L/usr/pkg/lib -lm -lpthread -lexpat $(LIBDRM_LIB)
+GL_LIB_DEPS = -L/usr/pkg/lib -lX11 -lXext -lXxf86vm -lXdamage -lXfixes \
+ -lm -lpthread $(LIBDRM_LIB)
+
+GLUT_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -L/usr/pkg/lib -lGLU -lGL -lX11 -lXmu \
+ -lXt -lXi -lm
+GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -L/usr/pkg/lib -lGL -lXt -lX11
+
+
+# Directories
+SRC_DIRS = glx/x11 mesa glu glut/glx glw
+DRIVER_DIRS = dri
+PROGRAM_DIRS =
+WINDOW_SYSTEM = dri
+
+DRM_SOURCE_PATH = $(TOP)/../drm
+
+# ffb and gamma are missing because they have not been converted to use the new
+# interface.
+DRI_DIRS = i810 i915 i965 mach64 mga r128 r200 r300 radeon tdfx \
+ unichrome savage sis
+
diff --git a/configs/dragonfly-dri-amd64 b/configs/dragonfly-dri-amd64
new file mode 100644
index 0000000..6c812da
--- /dev/null
+++ b/configs/dragonfly-dri-amd64
@@ -0,0 +1,10 @@
+# -*-makefile-*-
+# Configuration for dragonfly-dri-amd64: DragonFly DRI hardware drivers
+
+include $(TOP)/configs/dragonfly-dri
+
+CONFIG_NAME = dragonfly-dri-x86-64
+
+ASM_FLAGS = -DUSE_X86_64_ASM
+ASM_SOURCES = $(X86-64_SOURCES)
+ASM_API = $(X86-64_API)
diff --git a/configs/dragonfly-dri-amd64.orig b/configs/dragonfly-dri-amd64.orig
new file mode 100644
index 0000000..e69de29
diff --git a/configs/dragonfly-dri-x86 b/configs/dragonfly-dri-x86
new file mode 100644
index 0000000..1fefa80
--- /dev/null
+++ b/configs/dragonfly-dri-x86
@@ -0,0 +1,13 @@
+# -*-makefile-*-
+# Configuration for dragonfly-dri-x86: DragonFly DRI hardware drivers
+
+include $(TOP)/configs/dragonfly-dri
+
+CONFIG_NAME = dragonfly-dri-x86
+
+# Unnecessary on x86, generally.
+PIC_FLAGS =
+
+ASM_FLAGS = -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM
+ASM_SOURCES = $(X86_SOURCES)
+ASM_API = $(X86_API)
diff --git a/configs/dragonfly-dri-x86.orig b/configs/dragonfly-dri-x86.orig
new file mode 100644
index 0000000..e69de29
diff --git a/configs/dragonfly-dri.orig b/configs/dragonfly-dri.orig
new file mode 100644
index 0000000..e69de29
diff --git a/configs/dragonfly.orig b/configs/dragonfly.orig
new file mode 100644
index 0000000..e69de29
diff --git a/src/glut/glx/Makefile b/src/glut/glx/Makefile
index 9f99566..46185ce 100644
--- a/src/glut/glx/Makefile
+++ b/src/glut/glx/Makefile
@@ -126,6 +126,6 @@ depend: $(SOURCES)
@ echo "running $(MKDEP)"
@ touch depend
@ $(MKDEP) $(MKDEP_OPTIONS) -I$(TOP)/include $(SOURCES) \
- > /dev/null
+ $(X11_INCLUDES) > /dev/null
include depend
diff --git a/src/glw/Makefile b/src/glw/Makefile
index 727c583..8370e3b 100644
--- a/src/glw/Makefile
+++ b/src/glw/Makefile
@@ -61,7 +61,7 @@ $(TOP)/$(LIB_DIR)/$(GLW_LIB_NAME): $(OBJECTS)
depend: $(GLW_SOURCES)
touch depend
$(MKDEP) $(MKDEP_OPTIONS) -I$(TOP)/include $(GLW_SOURCES) \
- > /dev/null
+ $(X11_INCLUDES) > /dev/null
include depend
diff --git a/src/mesa/drivers/dri/common/xmlconfig.c b/src/mesa/drivers/dri/common/xmlconfig.c
index b635894..9f6f327 100644
--- a/src/mesa/drivers/dri/common/xmlconfig.c
+++ b/src/mesa/drivers/dri/common/xmlconfig.c
@@ -63,6 +63,9 @@ extern char *program_invocation_name, *program_invocation_short_name;
#elif defined(__NetBSD__) && defined(__NetBSD_Version) && (__NetBSD_Version >= 106000100)
# include <stdlib.h>
# define GET_PROGRAM_NAME() getprogname()
+#elif defined(__DragonFly__)
+# include <stdlib.h>
+# define GET_PROGRAM_NAME() getprogname()
#endif
#if !defined(GET_PROGRAM_NAME)
diff --git a/src/mesa/main/imports.c b/src/mesa/main/imports.c
index 2ecfbdc..54fdcb7 100644
--- a/src/mesa/main/imports.c
+++ b/src/mesa/main/imports.c
@@ -258,7 +258,7 @@ _mesa_memset16( unsigned short *dst, unsigned short val, size_t n )
void
_mesa_bzero( void *dst, size_t n )
{
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined(__DragonFly__)
bzero( dst, n );
#else
memset( dst, 0, n );
diff --git a/src/mesa/x86/common_x86.c b/src/mesa/x86/common_x86.c
index 0b2af0a..bbdebe0 100644
--- a/src/mesa/x86/common_x86.c
+++ b/src/mesa/x86/common_x86.c
@@ -38,7 +38,7 @@
#if defined(USE_SSE_ASM) && defined(__linux__)
#include <linux/version.h>
#endif
-#if defined(USE_SSE_ASM) && defined(__FreeBSD__)
+#if defined(USE_SSE_ASM) && (defined(__FreeBSD__) || defined(__DragonFly__))
#include <sys/types.h>
#include <sys/sysctl.h>
#endif
@@ -104,7 +104,7 @@ static LONG WINAPI ExceptionFilter(LPEXCEPTION_POINTERS exp)
static void check_os_sse_support( void )
{
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined(__DragonFly__)
{
int ret, enabled;
unsigned int len;
diff --git a/configure.ac b/configure.ac
index 48921e0..7db1830 100644
--- a/configure.ac
+++ b/configure.ac
@@ -510,7 +510,7 @@ if test "$mesa_driver" = dri; then
;;
esac
;;
- freebsd*)
+ freebsd* | dragonfly*)
DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
@@ -810,7 +810,7 @@ linux*)
;;
esac
;;
-freebsd*)
+freebsd* | dragonfly*)
PIC_FLAGS="-fPIC"
case "$host_cpu" in
i*86)
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Mesa3d-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev