123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 |
- #!/bin/bash
- ## NOTE:
- ## I know this is not a clean way to check for some stuff
- ## and edit the Makefile, but hey, it does work!
- # Configure script for eAthena
- # Copyright (C) 2005 dontBR
- #
- # This program is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 2 of the License, or
- # (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program; if not, write to the Free Software
- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- # Default variables
- status_mmx="No"
- status_sse="No"
- status_sse2="No"
- status_sse3="No"
- status_pcre="No"
- prefix='/opt/eathena/'
- # Functions
- function check_sed {
- echo -n "Checking for sed... "
- if [ -f $(which sed) ]; then
- echo "yes"
- else
- echo "Error: sed not found in $PATH"
- exit 1
- fi
- }
- function check_gcc {
- echo -n "Checking for gcc... "
- if [ -f $(which gcc) ]; then
- echo "yes"
- else
- echo "Error: GCC not found in $PATH"
- exit 1
- fi
- }
- function check_make {
- echo -n "Checking for (g)make... "
- if [ -f $(which make) ]; then
- maker=make
- echo "yes"
- else if [ -f $(which gmake) ]; then
- maker=gmake
- echo "yes"
- else
- echo "Error: (g)make not found in $PATH"
- exit 1
- fi
- fi
- }
- function check_sockets {
- echo -n "Checking for sockets... "
- echo "#include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- int main(){
- }" > test_sockets.c
- if $(gcc test_sockets.c -o test_sockets); then
- echo "yes"
- rm -f test_sockets.c test_sockets
- else
- echo "Error: Unix sockets not found/working."
- exit 1
- rm -f test_sockets.c
- fi
- }
- function check_mysql_headers {
- echo -n "Checking for MySQL headers... "
- if [ -d /usr/local/lib/mysql ]; then # Default
- echo "yes"
- mysql_headers_path='/usr/local/lib/mysql'
- else
- if [ -d /usr/include/mysql ]; then # Gentoo/Debian/?
- echo "yes"
- mysql_headers_path='/usr/include/mysql'
- else
- echo "Error: MySQL headers not found."
- mysql_headers_path='Not found.'
- fi
- fi
- }
- function optimize {
- case $@ in
- mmx ) status_mmx="Yes" ;;
- sse ) status_sse="Yes" ;;
- sse2 ) status_sse2="Yes" ;;
- sse3 ) status_sse3="Yes" ;;
- all ) status_mmx="Yes"
- status_sse="Yes"
- status_sse2="Yes"
- status_sse3="Yes" ;;
- esac
- }
- function make_changes {
- if [ "$maker" != "make" ]; then
- sed -e 's,MAKE = make,MAKE = '$maker',g' Makefile -i
- fi
- if [ "$status_mmx" = "Yes" ]; then
- sed -e 's,# OPT += -mmmx,OPT += -mmmx,g' Makefile -i
- fi
- if [ "$status_sse" = "Yes" ]; then
- sed -e 's,# OPT += -msse,OPT += -msse,g' Makefile -i
- fi
- if [ "$status_sse2" = "Yes" ]; then
- sed -e 's,# OPT += -msse2,OPT += -msse2,g' Makefile -i
- fi
- if [ "$status_sse3" = "Yes" ]; then
- sed -e 's,# OPT += -msse3,OPT += -msse3,g' Makefile -i
- fi
- if [ "$status_pcre" = "Yes" ]; then
- sed -e 's,# OPT += -DPCRE_SUPPORT,OPT += -DPCRE_SUPPORT,g' Makefile -i
- fi
- if [ "$mysql_headers_path" != "/usr/local/lib/mysql" ] && [ "$mysql_headers_path" != "Not found." ]; then
- sed -e 's,LIBS += -L/usr/local/lib/mysql -lmysqlclient,LIBS += -L'$mysql_headers_path' -lmysqlclient,g' Makefile -i
- fi
- }
- function opt_check_pcre {
- echo -n "Checking for PCRE... "
- if [ -f /usr/local/lib/pcre.h ]; then
- echo "yes"
- status_pcre="Yes"
- else
- echo "Error: PCRE not found."
- status_pcre="No"
- fi
- }
- function make_report {
- echo "Configuration report:"
- echo eAthena
- echo
- echo Enable PCRE support..... : $status_pcre
- echo
- echo Enable MMX optimization. : $status_mmx
- echo Enable SSE optimization. : $status_sse
- echo Enable SSE2 optimization : $status_sse2
- echo Enable SSE3 optimization : $status_sse3
- echo
- echo MySQL headers path...... : $mysql_headers_path
- echo
- echo eAthena will be installed in $prefix
- echo Please type \'make txt\' or \'make sql\' now to compile eAthena.
- }
- function helptext {
- echo "eAthena Configure Script version 0.1"
- echo
- echo "Options:"
- echo
- echo " -h Display this help message and exit."
- echo " -d Enter debug mode."
- echo " -o Turn on optimization flags."
- echo " Supported:"
- echo " mmx"
- echo " sse"
- echo " sse2"
- echo " sse3"
- echo " all"
- echo " -e Enable PCRE support."
- echo " -p Root directory where eA is going to be installed."
- echo " DON'T FORGET THE LAST SLASH!"
- echo " For example:"
- echo " ./configure -p /usr/local/"
- echo " This will create /usr/local/bin/login-server,"
- echo " /usr/local/etc/eathena/save/account.txt, etc"
- echo " Default is /opt/eathena/"
- echo
- echo "Report bugs (about the configure script) to dontBR at the eAthena Support Board."
- }
- function make_installable {
- echo -e '' >> Makefile
- echo -e 'install: conf/%.conf conf/%.txt' >> Makefile
- echo -e ' $(shell mkdir -p '$prefix'bin/)' >> Makefile
- echo -e ' $(shell mkdir -p '$prefix'etc/eathena/)' >> Makefile
- echo -e ' $(shell mkdir -p '$prefix'var/log/eathena/)' >> Makefile
- echo -e ' $(shell mv save '$prefix'etc/eathena/save)' >> Makefile
- echo -e ' $(shell mv db '$prefix'etc/eathena/db)' >> Makefile
- echo -e ' $(shell mv conf '$prefix'etc/eathena/conf)' >> Makefile
- echo -e ' $(shell mv npc '$prefix'etc/eathena/npc)' >> Makefile
- echo -e ' $(shell mv log/* '$prefix'var/log/eathena/)' >> Makefile
- echo -e ' $(shell cp *-server* '$prefix'bin/)' >> Makefile
- echo -e ' $(shell cp ladmin '$prefix'bin/)' >> Makefile
- echo -e ' $(shell ln -s '$prefix'etc/eathena/save/ '$prefix'bin/)' >> Makefile
- echo -e ' $(shell ln -s '$prefix'etc/eathena/db/ '$prefix'bin/)' >> Makefile
- echo -e ' $(shell ln -s '$prefix'etc/eathena/conf/ '$prefix'bin/)' >> Makefile
- echo -e ' $(shell ln -s '$prefix'etc/eathena/npc/ '$prefix'bin/)' >> Makefile
- echo -e ' $(shell ln -s '$prefix'var/log/eathena/ '$prefix'bin/log)' >> Makefile
- echo '' >> Makefile
- echo -e 'bin-clean:' >> Makefile
- echo -e ' $(shell rm '$prefix'bin/login-server*)' >> Makefile
- echo -e ' $(shell rm '$prefix'bin/char-server*)' >> Makefile
- echo -e ' $(shell rm '$prefix'bin/map-server*)' >> Makefile
- echo -e ' $(shell rm '$prefix'bin/ladmin)' >> Makefile
- echo '' >> Makefile
- echo -e 'uninstall:' >> Makefile
- echo -e ' bin-clean' >> Makefile
- echo -e ' $(shell rm '$prefix'bin/save)' >> Makefile
- echo -e ' $(shell rm '$prefix'bin/db)' >> Makefile
- echo -e ' $(shell rm '$prefix'bin/conf)' >> Makefile
- echo -e ' $(shell rm '$prefix'bin/npc)' >> Makefile
- echo -e ' $(shell rm '$prefix'bin/log)' >> Makefile
- echo -e ' $(shell rm -rf '$prefix'etc/eathena)' >> Makefile
- echo -e ' $(shell rm -rf '$prefix'var/log/eathena)' >> Makefile
- }
- # Arguments
- while getopts ":hdo:ep:" opt; do
- case $opt in
- h ) helptext ; exit ;;
- d ) set -x ;;
- o ) optimize ${OPTARG} ;;
- e ) opt_check_pcre ;;
- p ) prefix=${OPTARG} ; [ -d ${OPTARG} ] || echo "The directory $prefix does not exist. Creating...";;
- esac
- done
- # Execution
- echo "eAthena configure script"
- echo "Note: This is ALPHA software! Do NOT use it on a production server!"
- echo
- echo "Checking for dependencies.."
- check_sed
- check_gcc
- check_make
- check_sockets
- check_mysql_headers
- make_changes
- make_installable
- echo
- make_report
- exit
|