432 lines
10 KiB
Bash
432 lines
10 KiB
Bash
#!/bin/sh
|
|
|
|
# Raydium - CQFD Corp.
|
|
# http://raydium.org/
|
|
# License: GPL - GNU General Public License, see "gpl.txt" file.
|
|
|
|
# This script will configure Raydium and download, configure and build
|
|
# dependencies if needed. See --help argument.
|
|
|
|
# build file
|
|
# $1 is the test name, will be put in the log
|
|
# $2 is file content
|
|
# $3 is gcc's options
|
|
test_build()
|
|
{
|
|
echo -ne "* Testing $1..."
|
|
|
|
echo "" >> configure.log
|
|
echo " Testing $1" >> configure.log
|
|
echo " ====================" >> configure.log
|
|
echo "$2" > configure.c
|
|
gcc -g configure.c -Wall -o configure.bin $3 >> configure.log 2>> configure.log
|
|
|
|
if [ "$?" != "0" ]; then
|
|
echo " build: failed"
|
|
rm configure.c
|
|
return 1
|
|
fi
|
|
|
|
./configure.bin >> configure.log
|
|
ret=$?
|
|
|
|
if [ "$ret" = "0" ]; then
|
|
echo "OK"
|
|
fi
|
|
|
|
if [ "$ret" != "0" ]; then
|
|
echo " run: failed"
|
|
fi
|
|
rm configure.c configure.bin
|
|
return $ret
|
|
|
|
}
|
|
|
|
exit_if_error()
|
|
{
|
|
if [ $1 != 0 ]; then
|
|
echo " $2"
|
|
exit 1
|
|
else
|
|
return 0
|
|
fi
|
|
}
|
|
|
|
usage_print()
|
|
{
|
|
echo "Quick configure script for Raydium 3D Game Engine"
|
|
echo " --help this text"
|
|
echo " --force-ode-install Force ODE local reinstall"
|
|
echo " --force-php-install Force PHP 5 local reinstall"
|
|
echo " --ode-cvs Use ODE CVS version"
|
|
echo " --disable-x Disable X/GL/GLU test (server)"
|
|
exit 0
|
|
}
|
|
|
|
ode_install()
|
|
{
|
|
echo "* Installing ODE..."
|
|
if [ -d "ode" ]; then
|
|
echo " Old ode/ directory detected. removing it..."
|
|
rm -rf ode
|
|
fi
|
|
|
|
if [ $force_ode == "false" ]; then
|
|
if [ -e "raydium/ode/lib/libode.a" ]; then
|
|
echo " ODE install detected. If you want to reinstall, add --force-ode-install."
|
|
return 0
|
|
fi
|
|
else
|
|
rm -rf raydium/ode
|
|
fi
|
|
|
|
# download
|
|
if [ $ode_cvs = "true" ]; then
|
|
echo " Downloading from CVS ..."
|
|
cvs -d:pserver:anonymous:@cvs.sourceforge.net:/cvsroot/opende login
|
|
exit_if_error "$?" "No CVS client installed, or network problem"
|
|
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/opende co -r UNSTABLE -P raydium/ode
|
|
exit_if_error "$?" "CVS server error ? Try manual install (http://ode.org)"
|
|
else
|
|
echo " Downloading 'stable CVS' version from Raydium website ..."
|
|
if [ -f "raydium/ode.tar.gz" ]; then
|
|
rm -f raydium/ode.tar.gz
|
|
fi
|
|
wget -O raydium/ode.tar.gz http://freeway.raydium.org/data/stable_mirrors/ode.tar.gz
|
|
exit_if_error "$?" "Error downloading."
|
|
|
|
# uncompress
|
|
echo " Uncompressing ..."
|
|
cd raydium
|
|
tar xzf ode.tar.gz
|
|
ret=$?
|
|
cd - > /dev/null
|
|
exit_if_error "$ret" "tar not found, or corrupted archive"
|
|
fi
|
|
|
|
# configure (step 1)
|
|
echo '
|
|
# Raydium ODE autoconfig
|
|
PLATFORM=unix-gcc
|
|
PRECISION=SINGLE
|
|
BUILD=release
|
|
WINDOWS16=0
|
|
OPCODE_DIRECTORY=OPCODE
|
|
' > raydium/ode/config/user-settings
|
|
|
|
# configure (step 2)
|
|
echo " Configuring ..."
|
|
echo "Configuring ODE" >> configure.log
|
|
echo "===============" >> configure.log
|
|
cd raydium/ode
|
|
make configure 2>>../../configure.log >>../../configure.log
|
|
ret=$?
|
|
cd - > /dev/null
|
|
exit_if_error "$?" "ODE configuration failed (see configure.log)"
|
|
|
|
echo '
|
|
#ifndef dEpsilon
|
|
#define dEpsilon FLT_EPSILON
|
|
#endif
|
|
' >> raydium/ode/include/ode/config.h
|
|
|
|
# build
|
|
echo " Building ..."
|
|
echo "Building ODE" >> configure.log
|
|
echo "============" >> configure.log
|
|
cd raydium/ode
|
|
make 2>>../../configure.log >>../../configure.log
|
|
ret=$?
|
|
cd - > /dev/null
|
|
exit_if_error "$?" "ODE Build failed (see configure.log)"
|
|
|
|
# deleting
|
|
echo " Deleting tarball"
|
|
if [ -f "raydium/ode.tar.gz" ]; then
|
|
rm -f raydium/ode.tar.gz
|
|
fi
|
|
}
|
|
|
|
php_install()
|
|
{
|
|
echo "* Installing PHP5 ..."
|
|
if [ -d "php" ]; then
|
|
echo " Old PHP install detected, removing."
|
|
rm -rf php
|
|
fi
|
|
|
|
if [ $force_php == "false" ]; then
|
|
if [ -e "raydium/php/libs/libphp5.a" ]; then
|
|
echo " PHP install detected. If you want to reinstall, add --force-php-install."
|
|
return 0
|
|
fi
|
|
else
|
|
rm -rf raydium/php
|
|
fi
|
|
|
|
# test bison
|
|
echo " Testing 'bison' ..."
|
|
bison --version > /dev/null 2>&1
|
|
exit_if_error "$?" "bison not found in path. Please install bison to compile PHP"
|
|
|
|
# test libcurl
|
|
echo " Testing 'libcurl' ..."
|
|
curl-config --version > /dev/null 2>&1
|
|
exit_if_error "$?" "curl-config not found in path. Please install 'libcurl-devel' to compile PHP"
|
|
|
|
# test libxml2
|
|
echo " Testing 'libxml2' ..."
|
|
xml2-config --version > /dev/null 2>&1
|
|
exit_if_error "$?" "xml2-config not found in path. Please install 'libxml2-devel' to compile PHP"
|
|
|
|
# download
|
|
echo " Downloading latest PHP5 ..."
|
|
wget -O raydium/php-latest.tar.gz http://snaps.php.net/php5.2-latest.tar.gz
|
|
exit_if_error "$?" "wget not found, or network error"
|
|
|
|
# uncompress
|
|
echo " Uncompressing ..."
|
|
cd raydium
|
|
tar xzf php-latest.tar.gz
|
|
ret=$?
|
|
cd - > /dev/null
|
|
exit_if_error "$ret" "tar not found, or corrupted archive"
|
|
|
|
# rename
|
|
php=`ls -dt raydium/php5*`
|
|
echo " Renaming $php to raydium/php/ ..."
|
|
mv "$php" "raydium/php"
|
|
exit_if_error "$?" "Is this script up to date ?"
|
|
|
|
# configure
|
|
echo " Configuring PHP ..."
|
|
echo "Configuring PHP" >> configure.log
|
|
echo "===============" >> configure.log
|
|
cd raydium/php
|
|
./configure --enable-embed=static --with-zlib --enable-ftp --enable-static=zlib --with-curl \
|
|
--disable-simplexml --disable-xmlreader --disable-xmlwriter --enable-soap \
|
|
>>../../configure.log 2>>../../configure.log
|
|
ret=$?
|
|
cd - > /dev/null
|
|
exit_if_error "$ret" "PHP configure failed (missing libs ?). See configure.log"
|
|
|
|
# compile
|
|
echo " Building PHP..."
|
|
echo "Building PHP" >> configure.log
|
|
echo "============" >> configure.log
|
|
cd raydium/php
|
|
make >>../../configure.log 2>>../../configure.log
|
|
ret=$?
|
|
cd - > /dev/null
|
|
exit_if_error "$ret" "PHP build failed, see configure.log"
|
|
|
|
# deleting
|
|
echo " Deleting tar.gz ..."
|
|
rm -f raydium/php-latest.tar.gz
|
|
}
|
|
|
|
|
|
####### Main
|
|
|
|
for i in "$@"; do
|
|
if [ $i = "--help" ]; then
|
|
usage_print
|
|
fi
|
|
done
|
|
|
|
ode_cvs="false"
|
|
for i in "$@"; do
|
|
if [ $i = "--ode-cvs" ]; then
|
|
ode_cvs="true"
|
|
fi
|
|
done
|
|
|
|
disable_x="no"
|
|
for i in "$@"; do
|
|
if [ $i = "--disable-x" ]; then
|
|
disable_x="yes"
|
|
fi
|
|
done
|
|
|
|
force_ode="false"
|
|
for i in "$@"; do
|
|
if [ $i = "--force-ode-install" ]; then
|
|
force_ode="true"
|
|
fi
|
|
done
|
|
|
|
force_php="false"
|
|
for i in "$@"; do
|
|
if [ $i = "--force-php-install" ]; then
|
|
force_php="true"
|
|
fi
|
|
done
|
|
|
|
# empty log
|
|
rm configure.log 2>> /dev/null
|
|
|
|
# Check ODE installation
|
|
ode_install
|
|
|
|
# Check PHP installation
|
|
php_install
|
|
|
|
# Test compiler
|
|
file='int main(void) { return 0; }'
|
|
test_build "gcc" "$file" ""
|
|
exit_if_error "$?" "GNU C Compiler (GCC) is missing"
|
|
|
|
# Test OpenGL
|
|
file='
|
|
#include <GL/gl.h>
|
|
int main(void) { if(0) glVertex3f(0,0,0); return 0; }'
|
|
test_build "OpenGL" "$file" "-L/usr/X11R6/lib/ -lGL"
|
|
exit_if_error "$?" "You must install opengl-devel package"
|
|
|
|
# Test GLU
|
|
file='#include <GL/gl.h>
|
|
#include <GL/glu.h>
|
|
int main(void) { return 0; }'
|
|
test_build "GLU" "$file" "-L/usr/X11R6/lib/ -lGL -lGLU"
|
|
exit_if_error "$?" "You must install glu-devel package"
|
|
|
|
# Full GL/GLU test, looking for hardware accel
|
|
if [ $disable_x = "no" ]; then
|
|
file='
|
|
// define a dummy Raydium background for myglut :
|
|
#define RAYDIUM_RENDERING_WINDOW 0
|
|
#define RAYDIUM_RENDERING_FULLSCREEN 1
|
|
#define RAYDIUM_RENDERING_NONE 2
|
|
#define DONT_INCLUDE_HEADERS
|
|
#define raydium_log printf
|
|
#define __rayapi
|
|
#define __global
|
|
signed char raydium_key[256];
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include "raydium/myglut.c"
|
|
int main(int argc, char **argv) {
|
|
char *r;
|
|
glutInit(&argc,argv);
|
|
myglutCreateWindow(320,240,RAYDIUM_RENDERING_WINDOW,"GL test");
|
|
|
|
r=(char *)glGetString(GL_RENDERER);
|
|
if(!strcmp(r,"Mesa GLX Indirect"))
|
|
{
|
|
fprintf(stderr,"WARNING ! Mesa Software renderer detected !");
|
|
fprintf(stdout,"WARNING ! Mesa Software renderer detected !");
|
|
}
|
|
return 0; }
|
|
'
|
|
test_build "GL/GLU hardware support" "$file" "-L/usr/X11R6/lib/ -lGL -lGLU"
|
|
exit_if_error "$?" "Full GL test failed, see configure.log"
|
|
else
|
|
echo " DISABLED";
|
|
fi
|
|
|
|
# GLEW ("The OpenGL Extension Wrangler Library")
|
|
file='
|
|
#include <GL/glew.h>
|
|
#include <GL/gl.h>
|
|
#include <GL/glu.h>
|
|
int main(void) { glewInit(); return 0; }'
|
|
test_build "GLEW" "$file" "-L/usr/X11R6/lib/ -lGL -lGLU -lGLEW"
|
|
exit_if_error "$?" "You must install libglew devel package"
|
|
|
|
|
|
# OpenAL
|
|
file="
|
|
#include <AL/al.h>
|
|
#include <AL/alc.h>
|
|
#include <AL/alut.h>
|
|
#include <time.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <sys/time.h>
|
|
#include <sys/types.h>
|
|
#include <unistd.h>
|
|
int main(int argc, char **argv) {
|
|
ALCdevice *dev;
|
|
const ALubyte *initstr=(const ALubyte *) \"'( ( devices '( native null ) ) )\";
|
|
dev=alcOpenDevice(initstr);
|
|
sleep(1);
|
|
alcCloseDevice(dev);
|
|
return 0; }"
|
|
test_build "OpenAL" "$file" "-lopenal"
|
|
exit_if_error "$?" "openal-devel is required. Official CVS may be a good idea"
|
|
|
|
# OpenAL 1.1
|
|
file="
|
|
#include <AL/al.h>
|
|
#include <AL/alc.h>
|
|
#include <AL/alut.h>
|
|
#include <time.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <sys/time.h>
|
|
#include <sys/types.h>
|
|
#include <unistd.h>
|
|
int main(int argc, char **argv) {
|
|
ALCdevice *dev;
|
|
const ALubyte *initstr=(const ALubyte *) \"'( ( devices '( native null ) ) )\";
|
|
dev=alcOpenDevice(initstr);
|
|
sleep(1);
|
|
#ifndef ALUT_API_MAJOR_VERSION
|
|
#error ALUT for OpenAL 1.1 is required
|
|
#endif
|
|
alcCloseDevice(dev);
|
|
return 0; }"
|
|
test_build "OpenAL 1.1 and ALUT" "$file" "-lopenal -lalut"
|
|
exit_if_error "$?" "Cannot find OpenAL 1.1 and ALUT. You can try to remove -lalut from Makefile and/or *comp*sh scripts, but Raydium with OpenAL 1.0 is not supported."
|
|
|
|
# OGG/Vorbis
|
|
file='
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <math.h>
|
|
#include <vorbis/codec.h>
|
|
#include <vorbis/vorbisfile.h>
|
|
int main(void){
|
|
FILE *fp;
|
|
OggVorbis_File vf;
|
|
fp=fopen(".","r");
|
|
if(ov_open(fp, &vf, NULL, 0) < 0) { exit(0); }
|
|
// should never hit this !
|
|
ov_clear(&vf);
|
|
return(0);
|
|
}'
|
|
# -logg seems useless ...
|
|
test_build "Ogg/Vorbis" "$file" "-lvorbis -lvorbisfile -logg"
|
|
exit_if_error "$?" "ogg and vorbis devels are required (libogg,libvorbis and libvorbisfile)"
|
|
|
|
# libjpeg
|
|
file='
|
|
#include <stdio.h>
|
|
#include <jpeglib.h>
|
|
|
|
int main(void)
|
|
{
|
|
struct jpeg_decompress_struct cinfo;
|
|
struct jpeg_error_mgr jerr;
|
|
JSAMPARRAY buffer;
|
|
int row_stride;
|
|
long count;
|
|
|
|
cinfo.err=jpeg_std_error(&jerr);
|
|
jpeg_create_decompress(&cinfo);
|
|
jpeg_destroy_decompress(&cinfo);
|
|
|
|
return 0;
|
|
}
|
|
'
|
|
test_build "libjpeg" "$file" "-ljpeg"
|
|
exit_if_error "$?" "libjpeg-devel not available."
|
|
|
|
##### End of tests
|
|
|
|
echo
|
|
echo "- Build system seems ready -"
|
|
echo "- Use \"make\" to build Raydium, and try: \"./odyncomp.sh test6.c\""
|
|
echo "- You can also use \"./ocomp.sh test6.c\" for a quick direct test"
|