[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: SVGA Source Code



Hello Wooley,
            Thanks for your reply.
            Sorry for such a mail.
What I want to say is, I am Cross Compiling SVGALIB for ARM. For that I am using openembedded toolchain. I have really tried hard to compile svgalib package against ARM toolchain. For that I have disabled VESA support in Makefile.cfg. Also disabled svga utils. But Now the problem is I am facing while linking my application to vgalib. I am getting "undefined reference to outsb".

But When I tried to cross compile svgalib package with VESA support, I am getting following error:

"vga.c:34: /sys/vm86.h : No such file or directory"

I think if I am right, that file belongs to x86 architecture.

I have got some link of svgalib debian package for ARM. So I have contacted you, how svgalib package is cross compiled. What things I need to consider while cross compiling. I am attaching you my Makefile.cfg.


Regards,

Sanket Patange



On 03/16/2012 04:48 PM, Wookey wrote:
+++ Sanket [2012-03-16 12:21 +0530]:
Hello,
I'm having trouble understanding your question. Please clarify a
a little.

         I am compiling SVGA Source code for ARM against my
toolchain.
What 'SVGA Source code' exactly? Is it your own? Or something from
Debian?

What toolchain and what device are you compiling for?

Actually debian packages are not working on my filesystem.
What sort of 'not working' - what is the error/problem? What
filesystems are you using - one supplied with a dev board? Which
Debian packages (arm, armel, armhf)?

I am always getting " undefined reference to outsb".
When you iunstall a Debian pakcage or when you try to compile your
'SVGA Source'? I assume the latter.

insb and outsb are single instructions on x86 - they have to be
replaced by code on other platforms, to iterate over outb.

You may be trying to build x86 assembler on ARM which won't be
recognised, or you may just have failed to include the relevant
headers to provide these IO macros.

Please guide me regarding how to cross compile svga source code for
ARM.
We need more details of your problem to provide useful guidance.

Also provide me the SVGA Source Code.
If you are building it you must have it already - I don't understand
what you mean here.

Wookey
#----------------------------------------------------------------------
# SVGAlib Compile-time configuration file
#----------------------------------------------------------------------
# If you change ANYTHING in here you MUST 'make clean' and remake what
# you need.
#
# BEWARE! The toggle settings (INCLUDE_*_DRIVER and such) are set when
# the symbols are set. The value is pointless. Even setting a variable
# to n means yes!

MAJOR_VER = 1
MINOR_VER = 9.25
VERSION = $(MAJOR_VER).$(MINOR_VER)

#----------------------------------------------------------------------
# Kernel module Configuration Section
#----------------------------------------------------------------------
# Char major device used by module
SVGALIB_HELPER_MAJOR = 209

# Linux kernel includes
ifeq ($(S_KERNELRELEASE),)
S_KERNELRELEASE = $(shell uname -r)
endif

INCLUDEDIR = /lib/modules/$(S_KERNELRELEASE)/build/include

DIREXIST = $(shell if [ -e $(INCLUDEDIR) ] ; then echo OK ; fi)
ifneq ($(DIREXIST), OK)
INCLUDEDIR = /usr/include/linux
endif

ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)

#----------------------------------------------------------------------
# Configuration Section
#----------------------------------------------------------------------
# Source directory.
#srcdir = /usr/local/src/svgalib-$(VERSION)
SRCDIR = $(shell sh -c pwd)

CONFDIR = $(SRCDIR)/src/config

# Common prefix for installation directories.
# NOTE: This directory must exist when you start the install.
TOPDIR=
prefix = $(TOPDIR)/usr
exec_prefix = $(prefix)

# Directory where the shared stubs and static library will be installed.
libdir = $(exec_prefix)/lib

# Directory where the shared library will be installed.
sharedlibdir = $(exec_prefix)/lib

# Directory where the font and textmode utilities will be installed.
bindir = $(exec_prefix)/bin

# Directory where the run-time configuration files will be installed.
datadir = $(TOPDIR)/etc/vga

# Directory where the header files will be installed.
includedir = $(prefix)/include

# Directory where the man files will be installed.
mandir = $(prefix)/share/man

# Target binary format.
TARGET_FORMAT = elf

# Uncomment this to use lrmi-0.9, instead of 0.6
USE_LRMI_9 = y

# uncomment any of the following line to print some debug messages
# DEBUG = yes
# DEBUG_CONF = yes
# DEBUG_ACCEL = yes
# DEBUG_KEYBOARD = yes

# uncomment this if your compiler fails on compiling the assembler in
# src/vgaconvplanar.c, gl/inlstring.h, gl/line.c or gl/scale.c
NO_ASM = y

# uncomment if you want to set attribute controller and dac without delay
# This breaks original VGA, but seems to work on new cards.
NO_DELAY = y

# Uncomment this if you want root processes to be able to always get a new
# VC. Alas, some games misuse suid root privs and become root, svgalib cannot
# detect this and will allow Joe blow user to open a new virtual VC. If this
# annoys you, comment out the next line (which is the default already)
ROOT_VC_SHORTCUT = y

# Uncomment thit to use libc's memcpy, instead of simple while loop.
# Use demos/linearspeed to see which is faster to video memory.
LIBC_MEMCPY = y

# Uncomment this if you want to compile and install the static libs.
# INSTALLSTATICLIB = installstaticlib

# Comment this out if you don't want to install the shared libs.
# If you do not install the shared nor the static libs, 'make static'
# first to enforce just building the static lib, then the demos will
# use this local static library!
INSTALLSHAREDLIB = installsharedlib

# Comment this out if you want to keep old shared images. Old header files,
# library stubs and static libraries CANNOT be kept in public locations
# except when you rename them yourself.
# KEEPSHAREDLIBS = keep

# Comment this out if you don't want to compile and install the utilities.
#INSTALLUTILS = installutils

# Comment this out if you don't want to install the man pages by default
#INSTALLMAN = installman

# Remove the '# ' from one of the next two lines if you want to install the
# man pages compressed (with gzip) or not. If you comment out both lines,
# the Makefiles will try to figure out if your system supports gzipped man
# pages and install them when possible.

# MANFORMAT = compressed
# MANFORMAT = uncompressed

# This is the command to update the man pages whatis database.
# This is a slow command. If you are not very patient, simple
# comment out this line
# MAKEWHATIS = makewhatis # Beware, this will really need a few minutes!

# Comment this out if you use devfs or udev and don't want to make svga nodes
# INSTALLDEV = installdev

# Select which makefile to use to install the module, or comment both out if
# you are going to install the kernel module manually
#INSTALLMODULE = installmodule
# INSTALLMODULE = installmodule.alt

#
# Comment out any driver that you don't want included in the library.

# These drivers are obsolete and quite likely broken:

#INCLUDE_ET4000_DRIVER = y
#INCLUDE_OAK_DRIVER = y
#INCLUDE_EGA_DRIVER = y
#INCLUDE_MACH32_DRIVER = y
#INCLUDE_ET3000_DRIVER = y
#INCLUDE_GVGA6400_DRIVER = y
#INCLUDE_ATI_DRIVER = y

# End of obsolete drivers.

INCLUDE_CHIPS_DRIVER = y

INCLUDE_APM_DRIVER = y
INCLUDE_NV3_DRIVER = y
INCLUDE_G400_DRIVER = y
INCLUDE_R128_DRIVER = y
#INCLUDE_VESA_DRIVER = y
INCLUDE_MX_DRIVER = y
INCLUDE_RENDITION_DRIVER = y
INCLUDE_RAGE_DRIVER = y
INCLUDE_BANSHEE_DRIVER = y
INCLUDE_SIS_DRIVER = y
INCLUDE_I740_DRIVER = y
INCLUDE_I810_DRIVER = y
INCLUDE_LAGUNA_DRIVER = y
INCLUDE_TRIDENT_DRIVER = y
INCLUDE_SAVAGE_DRIVER = y
INCLUDE_MILLENNIUM_DRIVER = y
##INCLUDE_G450C2_DRIVER = y
INCLUDE_PM2_DRIVER = y
INCLUDE_UNICHROME_DRIVER = y

INCLUDE_NEO_DRIVER = y
INCLUDE_ET6000_DRIVER = y
INCLUDE_FBDEV_DRIVER = y

# These drivers are obsolete, but most likely still work:

INCLUDE_PARADISE_DRIVER = y
INCLUDE_ARK_DRIVER = y
INCLUDE_S3_DRIVER = y
INCLUDE_CIRRUS_DRIVER = y
INCLUDE_TVGA_DRIVER = y
INCLUDE_ALI_DRIVER = y


#
# Comment out any adapter you don't want to autodetect.
#
#INCLUDE_ET4000_DRIVER_TEST = y
INCLUDE_CIRRUS_DRIVER_TEST = y
INCLUDE_TVGA_DRIVER_TEST = y
INCLUDE_OAK_DRIVER_TEST = y
INCLUDE_EGA_DRIVER_TEST = y
INCLUDE_MACH32_DRIVER_TEST = y
INCLUDE_GVGA6400_DRIVER_TEST = y
INCLUDE_S3_DRIVER_TEST = y
INCLUDE_ET3000_DRIVER_TEST = y
INCLUDE_ARK_DRIVER_TEST = y
INCLUDE_ATI_DRIVER_TEST = y
INCLUDE_ALI_DRIVER_TEST = y
INCLUDE_CHIPS_DRIVER_TEST = y
INCLUDE_APM_DRIVER_TEST = y
INCLUDE_NV3_DRIVER_TEST = y
INCLUDE_G400_DRIVER_TEST = y
INCLUDE_R128_DRIVER_TEST = y
INCLUDE_ET6000_DRIVER_TEST = y
INCLUDE_MX_DRIVER_TEST = y
INCLUDE_TRIDENT_DRIVER_TEST = y
INCLUDE_PARADISE_DRIVER_TEST = y
INCLUDE_RAGE_DRIVER_TEST = y
INCLUDE_BANSHEE_DRIVER_TEST = y
INCLUDE_SIS_DRIVER_TEST = y
INCLUDE_I740_DRIVER_TEST = y
INCLUDE_I810_DRIVER_TEST = y
INCLUDE_LAGUNA_DRIVER_TEST = y
INCLUDE_NEO_DRIVER_TEST = y
INCLUDE_SAVAGE_DRIVER_TEST = y
INCLUDE_MILLENNIUM_DRIVER_TEST = y
INCLUDE_RENDITION_DRIVER_TEST = y
INCLUDE_PM2_DRIVER_TEST = y
INCLUDE_UNICHROME_DRIVER_TEST = y

INCLUDE_FBDEV_DRIVER_TEST = y

#Might be too dangerous:
#INCLUDE_VESA_DRIVER_TEST = y

#
# Comment out any dac support that you don't want included in the library.
#
# you must include SIERRA_DAC, if you include any of SCxxxx DACs.


INCLUDE_NORMAL_DAC = y
INCLUDE_S3_SDAC_DAC = y
INCLUDE_S3_GENDAC_DAC = y
INCLUDE_S3_TRIO64_DAC = y
INCLUDE_SIERRA_DAC = y
INCLUDE_SC15025_DAC = y
INCLUDE_ATT20C490_DAC = y
INCLUDE_ATT20C498_DAC = y
INCLUDE_ICW_DAC = y
INCLUDE_IBMRGB52x_DAC = y
INCLUDE_SC1148X_DAC = y
INCLUDE_ICS_GENDAC_DAC = y

#
# Comment out any dac you don't want to autodetect.
# (not all dacs can be autodetected, at this time)
#
INCLUDE_S3_SDAC_DAC_TEST = y
INCLUDE_S3_GENDAC_DAC_TEST = y
INCLUDE_SC15025_DAC_TEST = y
INCLUDE_ATT20C490_DAC_TEST = y
INCLUDE_IBMRGB52x_DAC_TEST = y
INCLUDE_SC1148X_DAC_TEST = y
INCLUDE_ICS_GENDAC_DAC_TEST = y

# LRMI - disbaled for non i386
LRMI = lrmi

# Location of the svgalib configuration file.
SVGALIB_CONFIG_FILE = $(datadir)/libvga.config

# Defining DYNAMIC enables runtime parsing of the file defined by
# ET4000_REGS (usually /etc/libvga.et4000) for the et4000 
# driver. See et4000/README for details. Commenting this out again
# saves binary space.
#
# If you just want to use the et4000.regs in the source directory,
# comment out the definition of DYNAMIC.  DYNAMIC allows development of new
# resolutions without recompiling.
DYNAMIC = y
ET4000_REGS = $(datadir)/libvga.et4000

# The EGA driver may load additional modes (SuperEGA cards) like the
# et4000 driver does. Just define the configuration file below.
# [This should be taken with a grain of salt, EGA is untested.]
#EGA_REGS = $(datadir)/libvga.ega

# Defining USE_CLOCKS will cause the ET4000 driver to measure clock
# frequencies (they are not actually used yet).
#USE_CLOCKS = y

# Uncomment to allow mouse type overrides
ALLOW_MOUSE_OVERRIDE = y

#----------------------------------------------------------------------
# Compiler Section
#----------------------------------------------------------------------

# Compiler used.
PC	 = arm

#ifndef CC
	CC	= arm-angstrom-linux-gnueabi-gcc
##endif


ifndef CFLAGS
	OPTIMIZE = -fomit-frame-pointer -O2 -fno-strength-reduce -pipe
else
	OPTIMIZE := $(CFLAGS)
endif

# You might want to add -m386 here if you have a recently installed 
# (486 configured) compiler on a 386. The only real difference is the
# generous alignment padding of function entry-points for the 486.
WARN     = -Wall -Wstrict-prototypes
INCLUDES = -I$(srcdir)/include -I.
CFLAGS   = $(WARN) $(DLLFLAGS) $(INCLUDES) $(OPTIMIZE) $(DEFINES) 
LDFLAGS   = -s

# additional flags for shared lib.
DLLFLAGS = -fPIC -DPIC

# Utilites used.
AR	  = ar
INSTALL_PROGRAM	= install -sm755
INSTALL_SCRIPT	= install -m755
INSTALL_SHLIB	= install -m755
INSTALL_DATA	= install -m644

ifneq ($(ARCH),i386)
	NO_ASM = y
#	INCLUDE_VESA_DRIVER=

	INCLUDE_CHIPS_DRIVER=
	INCLUDE_ET4000_DRIVER=
	INCLUDE_MACH32_DRIVER=
	INCLUDE_NEO_DRIVER=
	INCLUDE_TVGA_DRIVER=
	INCLUDE_I810_DRIVER=
	LRMI=
endif

ifeq ($(ARCH),ppc)
	INCLUDE_S3_DRIVER=
endif

ifneq ($(INCLUDE_S3_DRIVER),y)
	INCLUDE_NORMAL_DAC =
	INCLUDE_S3_SDAC_DAC =
	INCLUDE_S3_GENDAC_DAC =
	INCLUDE_S3_TRIO64_DAC =
	INCLUDE_SIERRA_DAC =
	INCLUDE_SC15025_DAC =
	INCLUDE_ATT20C490_DAC =
	INCLUDE_ATT20C498_DAC =
	INCLUDE_ICW_DAC =
	INCLUDE_IBMRGB52x_DAC =
	INCLUDE_SC1148X_DAC =
endif

ifeq ($(NO_HELPER),y)
	INSTALLDEV = 
	INSTALLMODULE =
endif

Reply to: