POV-Ray : Newsgroups : povray.unix : New configure script Server Time
26 Dec 2024 15:18:31 EST (-0500)
  New configure script (Message 1 to 10 of 19)  
Goto Latest 10 Messages Next 9 Messages >>>
From: Nicolas Calimet
Subject: New configure script
Date: 9 Feb 2003 20:08:14
Message: <3E46FB7D.4060603@free.fr>
Hi all,

	The current auto-configuration scheme for POV-Ray (3.50c) is
undoubtly targetted towards Linux and gcc, which means a lot of its
initial potential is simply lost. The ./configure script and related
facilities were initially prepared by Mark Gordon for the UNIX version
of the first 3.5 release. As he mentionned in the docs, it was his
first trial with those GNU tools, and it proved to work well on Linux
architectures. However, since then all other *nix platforms have been
on their own.

	This is my attempt to make things evolve in this field. While
I already know there is room for improvement (see below), I post it
right now so that as many UNIX people as possible try it on their own
platform(s).
	For simplicity, please post feedback in the same thread. Future
version might be announced in different threads (but there won't be any
version number...).


NEW FEATURES
============

1) Any compilation flag is now checked at configuration time instead
    of being hard-written in the Makefile.
2) The src/optout.h file is modified automatically so that no hand-
    editing is required for updating the DISTRIBUTION_MESSAGE_2 field.
    This message is for now setup as "user@machine".
3) A --disable-shared option is added for linking with static libraries
    instead of shared libraries (default).


INSTALL
=======

	The configure script has been reworked with the last autoconf
(2.57) and automake (1.7.2) versions (but in principle you don't need
them on your systems). Several supporting files are also provided, so
the whole stuff is given as a .tar.gz file. You will need a **clean**
povray-3.50c distribution.

1) Download http://pov4grasp.free.fr/download/povray-3.50c-config.tar.gz
2) Go to the parent directory of your povray-3.50c source tree.
3) Unzip and untar the archive, e.g. 'tar xvzf povray-3.50c-config.tar.gz'

	The old files will be replaced by the new ones, and some will be
added to the original distribution. NOTE that the file src/optout.h must
be the original provided with the povray distrib, NOT the one you modified
yourself to update DISTRIBUTION_MESSAGE_2.

4) Type in './configure [options]'
5) Build with 'make' and install with 'make install'

	Type './configure --help' for a list of supported options.


SYSTEMS TESTED
==============

	I'm not root on any machine I have access to, so all softwares
I install are placed under my home directory using the --prefix option,
and an up-to-date environment variable LD_LIBRARYxx_PATH for loading the
shared libraries at runtime.

Linux 2.4
---------

gcc 3.2.2
GNU make 3.79.1
zlib 1.14
libpng 1.2.5
libjpeg 6b
libtiff 3.5.5

./configure --prefix=$HOME

(Running with LD_LIBRARY_PATH=$HOME/lib:/usr/lib)


IRIX 6.5
--------

gcc 3.2.1
GNU make 3.79
zlib 1.0.4
libpng 1.2.5
libjpeg 6b
libtiff 3.4beta037

./configure --prefix=$HOME --x-includes=/usr/include --x-libraries=/usr/lib32

(Running with LD_LIBRARYN32_PATH=$HOME/lib:/usr/freeware/lib)

On IRIX, X-windows is unfortunately not detected without the explicit --x-PATHS
given above.


KNOWN PROBLEMS AND FUTURE WORK
==============================

* Libpng seems to be an issue at least on IRIX. This configure script needs
   the lastest libpng-1.2.5 to work. Maybe 1.2.3 and 1.2.4 will work too, but
   I didn't test them. Older versions might fail when linking. At test must be
   added to detect which version is installed and which library name to link with.
   For now povray is linked with -lpng12 (not -lpng).

* Could also check the version of the other libraries; should stop when
   a particular library is not found, with an error message.

* I guess only GNU make will work correctly (untested others make's).

* An option should be provided to customize DISTRIBUTION_MESSAGE_2 instead
   of the default "user@machine" replacement.

* And other things I probably forget or need to be reported first !


	Hope it'll work for you  :o)

	Cheers,
	- NC


Post a reply to this message

From: Thorsten Froehlich
Subject: Re: New configure script
Date: 12 Feb 2003 09:52:07
Message: <3e4a5f97$1@news.povray.org>
In article <3E4### [at] freefr> , Nicolas Calimet <pov### [at] freefr>
wrote:

> SYSTEMS TESTED
> ==============
>
>  I'm not root on any machine I have access to, so all softwares
> I install are placed under my home directory using the --prefix option,
> and an up-to-date environment variable LD_LIBRARYxx_PATH for loading the
> shared libraries at runtime.

Hi,

If the platform is PowerPC (not to be confused with IBMs Power3 or Power4
also the instruction set is identical), I would suggest the following
platform specific options should be a good choice in *addition* to generic
optimization settings when using gcc on PowerPC:

-mpowerpc -mcpu=750 -mtune=7450 -mmultiple -mstring -mfused-madd

Note that the different parameters for mcpu and mtune are intentional:

The PPC 7450 processor has a much longer pipeline and thus scheduling for
that pipeline always yields good results even on processors with a shorter
pipeline.  On the other hand, most PowerPC processors only support the
instructions also found in the PPC 750 processor (aka G3).  That is why it
is selected in the mcpu parameter.  Using 7450 (aka G4+) in mcpu would make
the code incompatible with anything prior to the PPC 7400 (aka G4).  To be
precise, the vector instructions are new in the four digit model number
PowerPC processors (aka G4), but gcc cannot (as of February 2003) use them
automatically anyway! [trf]

If you want, add this to the makefile as note for those options to avoid
questions.

    Thorsten

____________________________________________________
Thorsten Froehlich
e-mail: mac### [at] povrayorg

I am a member of the POV-Ray Team.
Visit POV-Ray on the web: http://mac.povray.org


Post a reply to this message

From: Nicolas Calimet
Subject: Re: New configure script
Date: 12 Feb 2003 13:51:26
Message: <3E4A97AD.5050406@free.fr>
Hi Thorsten,

	What you propose is _exactly_ what I was looking for but forgot
to mention it in my initial post. That is: people who have experience in
tuning their own architecture should report their best set of compilation
flags, as well as other things.

> If the platform is PowerPC (not to be confused with IBMs Power3 or Power4
> also the instruction set is identical), I would suggest the following
> platform specific options should be a good choice in *addition* to generic
> optimization settings when using gcc on PowerPC:
> 
> -mpowerpc -mcpu=750 -mtune=7450 -mmultiple -mstring -mfused-madd

	So I will add a test for each of those flags in the machine-dependent
part of the configure script (as I have for intel/mips/ and some for sparc),
that is something like:

case "$build" in
   powerpc-*) flags tests here;;
esac

	However I'm not sure if "powerpc" is the correct machine type to
check for. Could you tell me what does report a `uname -m` command ?


> If you want, add this to the makefile as note for those options to avoid
> questions.

	I won't put them in the makefile since these tuning stuffs are
not "seen" in here (but only through CFLAGS and CXXFLAGS). Instead I can
put those comments into configure.ac which is the template for configure.
And also I can add proper credits for those tunings.

	So your proposal is included from now on  :o)

	Waiting for the next ideas !
	- NC


Post a reply to this message

From: Thorsten Froehlich
Subject: Re: New configure script
Date: 12 Feb 2003 18:16:10
Message: <3e4ad5ba$1@news.povray.org>
In article <3E4### [at] freefr> , Nicolas Calimet <pov### [at] freefr>
wrote:

>  However I'm not sure if "powerpc" is the correct machine type to
> check for. Could you tell me what does report a `uname -m` command ?

Well, "uname -m" isn't exactly useful on Mac OS X, unfortunately.  What you
get on Mac OS X is this...

[Thorstens-Computer:~] thorsten% uname -m
Power Macintosh
[Thorstens-Computer:~] thorsten%

However, "uname -p" returns useful and correct information that is portable,
but I have no clue how/if to use it in configure scripts (because I know
nothing about configure scripts)...

[Thorstens-Computer:~] thorsten% uname -p
powerpc
[Thorstens-Computer:~] thorsten%


    Thorsten


____________________________________________________
Thorsten Froehlich, Duisburg, Germany
e-mail: tho### [at] trfde

Visit POV-Ray on the web: http://mac.povray.org


Post a reply to this message

From: Thorsten Froehlich
Subject: Re: New configure script
Date: 12 Feb 2003 18:18:47
Message: <3e4ad657@news.povray.org>
In article <3E4### [at] freefr> , Nicolas Calimet <pov### [at] freefr>
wrote:

>  What you propose is _exactly_ what I was looking for but forgot
> to mention it in my initial post. That is: people who have experience in
> tuning their own architecture should report their best set of compilation
> flags, as well as other things.

I think Warp can contribute some useful Sparc flags for gcc as well as the
Sun compiler.

    Thorsten


PS: I can tell you that all known 64-bit compatibility problems have been
fixed in the current, not yet released 3.51 codebase.  So you may want to be
prepared to offer 64 bit compile options for those platforms that support
it.

____________________________________________________
Thorsten Froehlich, Duisburg, Germany
e-mail: tho### [at] trfde

Visit POV-Ray on the web: http://mac.povray.org


Post a reply to this message

From: Nicolas Calimet
Subject: Re: New configure script
Date: 12 Feb 2003 18:34:29
Message: <3E4ADA04.6030204@free.fr>
> [Thorstens-Computer:~] thorsten% uname -p
> powerpc

	I guess that's what I need. The configure file itself does
actually contain most of the things I need concerning platform names.
What I still cannot guess are the proper compilation flags for most
platforms.


Post a reply to this message

From: Nicolas Calimet
Subject: Re: New configure script
Date: 12 Feb 2003 18:40:04
Message: <3E4ADB53.5070405@free.fr>
> I think Warp can contribute some useful Sparc flags for gcc as well as the
> Sun compiler.

	Yeap, I was thinking of him for that particular task since I really
have a few data for these two archs  :o)

> PS: I can tell you that all known 64-bit compatibility problems have been
> fixed in the current, not yet released 3.51 codebase.  So you may want to be
> prepared to offer 64 bit compile options for those platforms that support
> it.

	Cool, so at least IRIX, Compaq Alpha and the future Athlon-64 will
benefit from it ! (maybe some Sun machines too ?)


Post a reply to this message

From: Warp
Subject: Re: New configure script
Date: 12 Feb 2003 19:03:55
Message: <3e4ae0eb@news.povray.org>
Nicolas Calimet <pov### [at] freefr> wrote:
>> I think Warp can contribute some useful Sparc flags for gcc as well as the
>> Sun compiler.

> 	Yeap, I was thinking of him for that particular task since I really
> have a few data for these two archs  :o)

  Unfortunately I haven't studied too much about those extra flags which
-O3 does not turn on. I have sometimes experimented with them, but they
usually make gcc to produce a corrupted binary (segmentation fault) or
a binary which shows no significant speed difference.
  I would say that "-O3 -ffast-math" is the best I know for gcc in sparc.

  This might have improved with latest versions of gcc, but I doubt it.

  As for cc (well, CC because we are compiling C++), "-fast" should be
enough. It makes the compiler to automatically turn on the best optimization
flags for the target artchitecture.

  That is, the choice of flags depends on the compiler. If the compiler
is "g++", then the flags should be "-O3 -ffast-math", but if the
compiler is "CC", then the flags should be "-fast".

-- 
#macro N(D)#if(D>99)cylinder{M()#local D=div(D,104);M().5,2pigment{rgb M()}}
N(D)#end#end#macro M()<mod(D,13)-6mod(div(D,13)8)-3,10>#end blob{
N(11117333955)N(4254934330)N(3900569407)N(7382340)N(3358)N(970)}//  - Warp -


Post a reply to this message

From: Christopher Endsley
Subject: Re: New configure script
Date: 13 Feb 2003 00:25:39
Message: <3e4b2c53@news.povray.org>
Nicolas Calimet wrote:

>> I think Warp can contribute some useful Sparc flags for gcc as well as
>> the Sun compiler.
> 
> Yeap, I was thinking of him for that particular task since I really
> have a few data for these two archs  :o)
> 
>> PS: I can tell you that all known 64-bit compatibility problems have been
>> fixed in the current, not yet released 3.51 codebase.  So you may want to
>> be prepared to offer 64 bit compile options for those platforms that
>> support it.
> 
> Cool, so at least IRIX, Compaq Alpha and the future Athlon-64 will
> benefit from it ! (maybe some Sun machines too ?)


Also if you have an Alpha you may also have installed the cpml math libary
which is specially written to take advantage of the Alpha's FPP. At the
moment I have to manually add that in before the -lm in the Makefile. It's
pretty much a replacement for the standard glibc math library. On the note
of CXXFLAGS, I use '-O3 -mcpu=ev56 -fomit-frame-pointer -fnroll-loops
-foptimize-sibling-calls -mno-soft-float -finline-functions
-fexpensive-optimizations -ffast-math'....don't know if all those are
needed but seems to work fine.

--Christopher


Post a reply to this message

From: Steve
Subject: Re: New configure script
Date: 13 Feb 2003 07:39:28
Message: <slrnb4n47h.rd5.steve@zeropps.org.uk>
On Thu, 13 Feb 2003 00:34:28 +0100, Nicolas Calimet wrote:
>> [Thorstens-Computer:~] thorsten% uname -p
>> powerpc
> 
> 	I guess that's what I need. The configure file itself does
> actually contain most of the things I need concerning platform names.
> What I still cannot guess are the proper compilation flags for most
> platforms.
> 

Another project where they're constantly bashing away at getting the best 
performance out of all types of processors when doing serious number 
crunching is GIMPS, (The Great Internet Mersenne Prime Search), so it may 
be an idea to d/l thier latest source and have a look at the configure 
script that they use:

http://www.mersenne.org/

-- 
#local i=.1;#local I=(i/i)/i;#local l=(i+i)/i;#local ll=(I/i)/l;box{<-ll,
-((I/I)+l),-ll><ll,-l,ll>pigment{checker scale l}finish{ambient((I/l)/I)+
(l/I)}}sphere{<i-i,l-l,(I/l)>l/l pigment{rgb((I/l)/I)}finish{reflection((
I/l)/I)-(l/I)specular(I/l)/I}}light_source{<I-l,I+I,(I-l)/l>l/l} // Steve


Post a reply to this message

Goto Latest 10 Messages Next 9 Messages >>>

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.