Patchwork Added package v86d which provides a real-mode helper for uvesafb driver.

login
register
mail settings
Submitter Dimitry Golubovsky
Date July 17, 2012, 3:17 a.m.
Message ID <1342495023-17145-1-git-send-email-golubovsky@gmail.com>
Download mbox | patch
Permalink /patch/171314/
State Superseded
Headers show

Comments

Dimitry Golubovsky - July 17, 2012, 3:17 a.m.
Signed-off-by: Dmitry <golubovsky@gmail.com>
---
 package/Config.in      |    1 +
 package/v86d/Config.in |    9 +++++++++
 package/v86d/v86d.mk   |   36 ++++++++++++++++++++++++++++++++++++
 3 files changed, 46 insertions(+), 0 deletions(-)
 create mode 100644 package/v86d/Config.in
 create mode 100644 package/v86d/v86d.mk
Thomas Petazzoni - July 17, 2012, 8:01 a.m.
Le Mon, 16 Jul 2012 23:17:03 -0400,
Dmitry <golubovsky@gmail.com> a écrit :

> +define V86D_BUILD_CMDS
> +	$(MAKE) CC="$(TARGET_CC) -D__i386__" LD="$(TARGET_LD)" -C $(@D) all
> +endef

Can you try using $(TARGET_CONFIGURE_OPTS) instead, so that CFLAGS and
al. are also passed?

Something like:

	$(MAKE) $(TARGET_CONFIGURE_OPTS) CFLAGS="$(TARGET_CFLAGS) -D__i386__" -C $(@D) all

I'm a bit surprised by the -D__i386__, because this is normally defined
by the compiler. Why is it needed?

See:

thomas@skate:/tmp$ cat toto.c 
#ifdef __i386__
#error "You are on x86"
#elif defined(__x86_64__)
#error "You are on x86-64"
#elif defined(__arm__)
#error "You are on ARM"
#endif
thomas@skate:/tmp$ ~/x-tools/ia32-2012.03/bin/i686-pc-linux-gnu-gcc -c toto.c 
toto.c:3:2: error: #error "You are on x86"
thomas@skate:/tmp$ ~/x-tools/ia32-2012.03/bin/i686-pc-linux-gnu-gcc -m64 -c toto.c 
toto.c:5:2: error: #error "You are on x86-64"
thomas@skate:/tmp$ ~/x-tools/arm-2011.03/bin/arm-none-linux-gnueabi-gcc -c toto.c 
toto.c:7:2: error: #error "You are on ARM"

Best regards,

Thomas
Dimitry Golubovsky - July 17, 2012, 9:38 a.m.
Thomas,

On Tue, Jul 17, 2012 at 4:01 AM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Le Mon, 16 Jul 2012 23:17:03 -0400,
> Dmitry <golubovsky@gmail.com> a écrit :
>
>> +define V86D_BUILD_CMDS
>> +     $(MAKE) CC="$(TARGET_CC) -D__i386__" LD="$(TARGET_LD)" -C $(@D) all
>> +endef
>
> Can you try using $(TARGET_CONFIGURE_OPTS) instead, so that CFLAGS and
> al. are also passed?

This patch some was discussed some time ago:

http://lists.busybox.net/pipermail/buildroot/2012-May/053825.html
http://lists.busybox.net/pipermail/buildroot/2012-May/053790.html
etc.

and other discussion in May. My initial patch missed installation
instructions, but that was fixed.

and I thouhgt we reached agreement.

>
> Something like:
>
>         $(MAKE) $(TARGET_CONFIGURE_OPTS) CFLAGS="$(TARGET_CFLAGS) -D__i386__" -C $(@D) all
>
> I'm a bit surprised by the -D__i386__, because this is normally defined
> by the compiler. Why is it needed?

Because of manually-written Makefile which somehow does not let these
flags through. I tried many ways.

I submitted this patch in May after many iterations, and I believe it
was just lost in space because of preparations for the May release.

http://lists.busybox.net/pipermail/buildroot/2012-May/053824.html

I am just resubmitting it again.

Thanks.

Patch

diff --git a/package/Config.in b/package/Config.in
index 99257b4..23583d2 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -238,6 +238,7 @@  source "package/unionfs/Config.in"
 source "package/usb_modeswitch/Config.in"
 source "package/usbmount/Config.in"
 source "package/usbutils/Config.in"
+source "package/v86d/Config.in"
 source "package/wipe/Config.in"
 source "package/xfsprogs/Config.in"
 endmenu
diff --git a/package/v86d/Config.in b/package/v86d/Config.in
new file mode 100644
index 0000000..ba1baca
--- /dev/null
+++ b/package/v86d/Config.in
@@ -0,0 +1,9 @@ 
+config BR2_PACKAGE_V86D
+	bool "v86d"
+	depends on (BR2_i386 || BR2_x86_64)
+	help
+	  v86d is the userspace helper that runs x86 code in an emulated
+	  environment. uvesafb will not work without v86d. v86d currently
+	  supports the x86 and amd64 (x86-64) architectures.
+
+	  http://dev.gentoo.org/~spock/projects/uvesafb/
diff --git a/package/v86d/v86d.mk b/package/v86d/v86d.mk
new file mode 100644
index 0000000..59187fc
--- /dev/null
+++ b/package/v86d/v86d.mk
@@ -0,0 +1,36 @@ 
+############################################
+#
+# v86d
+# 
+############################################
+
+V86D_VERSION = 0.1.10
+V86D_SOURCE = v86d-$(V86D_VERSION).tar.bz2
+V86D_SITE = http://dev.gentoo.org/~spock/projects/uvesafb/archive
+
+# The configure script autodetects the host architecture, 
+# and assumes the target architecture to be the same as the host,
+# so we must use the target architecture flags provided 
+# by Buildroot for proper cross-compilation. The x86emu 
+# configure option should be 'n' for i386, and 'y' for x86-64.
+
+X86EMU = $(if $(BR2_i386),n,y)
+
+# v86d's configure script is not autoconf-based.
+# GENTARGETS macro will be used rather than AUTOTARGETS.
+
+define V86D_CONFIGURE_CMDS
+	(cd $(@D) ; ./configure --with-debug=n --with-klibc=n --with-x86emu=$(X86EMU))
+endef
+
+# It is necessary to define __i386__ explicitly for successful compilation.
+
+define V86D_BUILD_CMDS
+	$(MAKE) CC="$(TARGET_CC) -D__i386__" LD="$(TARGET_LD)" -C $(@D) all
+endef
+
+define V86D_INSTALL_TARGET_CMDS
+	$(INSTALL) -D -m 0755 $(@D)/v86d $(TARGET_DIR)/sbin/v86d	
+endef
+
+$(eval $(call GENTARGETS))