PDA

View Full Version : autobuild for Linux, FreeBSD, OS X


erde
04-29-2009, 04:18 PM
I had some free time and thought it would be nice to have autobuild scripts for eqemu.
Ok, here it is! This will make the build process easier. For example to enable bots, simply configure with

configure --enable-bots --prefix=/path/to/install

thats it.

The build system is tested with
- Mac OS X 10.5.6 (Intel Mac)
- Debian GNU/Linux 5.0.1 32bit (Pentium 4)
- Debian GNU/Linux 5.0.1 64bit (Intel Quad Core)

Ok, some features:
- detect build system OS(Linux/FreeBSD/Darwin), architectur (32/64bit)
- detect mysql
- detect perl
- set install path
- installs all needed files!
- build options (Bots/Debug/LogLevel/Compile Warnings)

not yet implemented:
- detect libperl

here is a overview of the configure options:

--prefix path to install

--enable-debug Turn on debugging
--enable-warnings enable compile warnings
--enable-bots Turn on bots

--with-loglevel Set loglevel (default: 5)

// 0 <= Quiet mode Errors to file Status and Normal ignored
// 1 >= Status and Normal to console, Errors to file
// 2 >= Status, Normal, and Error to console and logfile
// 3 >= Lite debug
// 4 >= Medium debug
// 5 >= Debug release (Anything higher is not recommended for regular use)
// 6 == (Reserved for special builds) Login opcode debug All packets dumped
// 7 == (Reserved for special builds) Chat Opcode debug All packets dumped
// 8 == (Reserved for special builds) World opcode debug All packets dumped
// 9 == (Reserved for special builds) Zone Opcode debug All packets dumped
// 10 >= More than you ever wanted to know


Ok, now here is how it works:

cd into the EQEmulator Source directory

get the build system

wget http://quadfreunde-ergoldsbach.de/eqemu/eqbuild.tgz


unpack

tar xvzf eqbuild.tgz


run prepare.sh, this will remove all previous makefiles and create missing files.

sh prepare.sh


run

autoreconf -fi


create a directory for the build process

mkdir build


cd into the build directory

cd build


run configure

../configure --prefix=/path/to/install


This will build eqemu with the default options.

To enable bots configure with

../configure --enable-bots --prefix=/path/to/install


To set the loglevel to 3 "Status, Normal, and Error to console and logfile" do

../configure --with-loglevel=3 --prefix=/path/to/install


to compile simply do

make


to install everything

make install


Have fun!

drakelord
04-29-2009, 10:36 PM
Interesting. Is this something that has to be rebuilt with each revision, or will it automatically download new revision files?

demonstar55
04-30-2009, 12:23 AM
the archive has a folder called EMUShareMem, should be called EMuShareMem, otherwise seems to work

erde
04-30-2009, 02:28 AM
the archive has a folder called EMUShareMem, should be called EMuShareMem, otherwise seems to work

Thanks for testing! the archive contains now the newest files and i have renamed EMUSharedMem to the correct name.


Interesting. Is this something that has to be rebuilt with each revision, or will it automatically download new revision files?


No, this downloads nothing. Its just a build system so you dont have to be aware what makefile is used. Just do


configure --prefix=/path/to/install
make
make install


and you are done.

Andrew80k
04-30-2009, 11:05 AM
Dude, this is awesome. I have a script that I use to download and build everything but that is small potatoes compared to this. I may combine that with this to get a fully functional build.

cavedude
04-30-2009, 02:42 PM
I've been commissioned to take a look at this and possibly add it to the SVN, if that's alright, with you erde? This is exactly what *nix users of EQEmu have needed for some time!

erde
04-30-2009, 05:05 PM
I've been commissioned to take a look at this and possibly add it to the SVN, if that's alright, with you erde? This is exactly what *nix users of EQEmu have needed for some time!

Feel free to do what ever you want with this. I ve made this for the eqemu community.*

Kobaz
05-01-2009, 07:21 AM
Is there an option to over-ride the gcc, g++ and library versions? Auto-detection will fail on my system.

erde
05-01-2009, 10:32 AM
Is there an option to over-ride the gcc, g++ and library versions? Auto-detection will fail on my system.

You could try this:
CC=gcc-4.0 CPP=cpp-4.0 ../configure

erde
05-01-2009, 10:33 AM
Update the archive! There was a problem with the --with-loglevel option

erde
05-03-2009, 02:46 AM
didnt work on fedora core 6 but an awesome tool none the less

can you tell me what doesnt work? maybe post the config.log

erde
05-03-2009, 06:10 AM
It looks like the m4 directory wasnt created. normally "autoreconf -fi" should create it.

could you rerun "autoreconf -fi" in the root source dir, if there is no m4 directory
create one with "mkdir m4" and try again.

Do you have libtool installed?

erde
05-03-2009, 06:39 AM
reran it didnt make the m4 dir but making it manually fixed it it looks like awesome job

I have update the archive with a new prepare.sh script, that creates the missing directory.

Currently in the works:
- options to specify the path to mysql_config
- cleanups
- comments

amraist
05-05-2009, 03:23 PM
does eqemu compile on freebsd?

erde
05-06-2009, 03:18 AM
does eqemu compile on freebsd?

It does, when i remember right there is one compile error, but not hard to fix.

chrisx
05-06-2009, 10:38 AM
This would have been awesome two weeks ago when I was configuring my server! I am going to try and redo this when I get time since I want to try out bots. Great Work!

erde
05-07-2009, 03:44 AM
Script update
- set the path to mysql_config works now
--with-mysql=/path/to/mysql_config

- found install bug
only eqemu_config.xml.full gets installed,
to prevent overwrite of an already edited config file

erde
12-15-2009, 03:08 PM
hi, i have updated this.

Download (http://www.eqdaemons.de/?page_id=6)

erde
07-11-2010, 09:37 AM
adjusted to the current eqemu sources!

Download (http://www.eqdaemons.de/?page_id=6)

Gokor
09-04-2010, 02:41 PM
If you have time can you add a

make install-autostart

Which could create symlinks/service startup/stop scripts for a couple widely used distros. Maybe Redhat/Debian/Gentoo?

erde
02-07-2011, 10:03 AM
updated script's (http://www.eqdaemons.de/?page_id=6)

lanystvyl
03-06-2011, 02:52 PM
downloaded the eqbuild.tgz and extracted it to /home/lanys/eqemu/build I was able to run the prepare.sh file, i saw it add a few things to the build folder. but when I run autoreconf -fi I get an error;

[root@localhost build]# autoreconf -fi
configure.ac:13: error: possibly undefined macro: AC_DISABLE_STATIC
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
configure.ac:26: error: possibly undefined macro: AC_PROG_LIBTOOL
autoreconf: /usr/bin/autoconf failed with exit status: 1
[root@localhost build]#


I am running centOS 5 new install, have apache php perl and mysql running.

thanks for any help

lanystvyl
03-06-2011, 09:34 PM
fixed the above error now it just bombs out when i try to (make)

make[1]: *** [dbcore.o] Error 1
make[1]: Leaving directory `/home/lanys/eqemu/build/build/chatserver'
make: *** [all-recursive] Error 1

could use some help on this one

can do make clean - it runs through fine, but make still has an error.

[root@localhost build]# make
Making all in chatserver
make[1]: Entering directory `/home/lanys/eqemu/build/build/chatserver'
if g++ -DPACKAGE_NAME=\"eqemu\" -DPACKAGE_TARNAME=\"eqemu\" -DPACKAGE_VERSION=\"0.8.0\" -DPACKAGE_STRING=\"eqemu\ 0.8.0\" -DPACKAGE_BUGREPORT=\"http://www.eqemulator.net\" -DPACKAGE=\"eqemu\" -DVERSION=\"0.8.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DX86=1 -DHAVE_LIBPTHREAD=1 -I. -I../../chatserver -I/usr/include -I/usr/local/include -DCHAT -DIRC -DEMBPERL -DEMBPERL_PLUGIN -DHAS_UNION_SEMUN -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -I/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE -I/usr/include/mysql -DNO_PIDLOG -DSHAREMEM -DFIELD_ITEMS -DINVERSEXY -DCATCH_CRASH -DLINUX -Di386 -DEQDEBUG=5 -DBOTS=1 -O2 -MT BasePacket.o -MD -MP -MF ".deps/BasePacket.Tpo" -c -o BasePacket.o `test -f '../common/BasePacket.cpp' || echo '../../chatserver/'`../common/BasePacket.cpp; \
then mv -f ".deps/BasePacket.Tpo" ".deps/BasePacket.Po"; else rm -f ".deps/BasePacket.Tpo"; exit 1; fi
cc1plus: warning: command line option "-Wdeclaration-after-statement" is valid for C/ObjC but not for C++
if g++ -DPACKAGE_NAME=\"eqemu\" -DPACKAGE_TARNAME=\"eqemu\" -DPACKAGE_VERSION=\"0.8.0\" -DPACKAGE_STRING=\"eqemu\ 0.8.0\" -DPACKAGE_BUGREPORT=\"http://www.eqemulator.net\" -DPACKAGE=\"eqemu\" -DVERSION=\"0.8.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DX86=1 -DHAVE_LIBPTHREAD=1 -I. -I../../chatserver -I/usr/include -I/usr/local/include -DCHAT -DIRC -DEMBPERL -DEMBPERL_PLUGIN -DHAS_UNION_SEMUN -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -I/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE -I/usr/include/mysql -DNO_PIDLOG -DSHAREMEM -DFIELD_ITEMS -DINVERSEXY -DCATCH_CRASH -DLINUX -Di386 -DEQDEBUG=5 -DBOTS=1 -O2 -MT Condition.o -MD -MP -MF ".deps/Condition.Tpo" -c -o Condition.o `test -f '../common/Condition.cpp' || echo '../../chatserver/'`../common/Condition.cpp; \
then mv -f ".deps/Condition.Tpo" ".deps/Condition.Po"; else rm -f ".deps/Condition.Tpo"; exit 1; fi
cc1plus: warning: command line option "-Wdeclaration-after-statement" is valid for C/ObjC but not for C++
if g++ -DPACKAGE_NAME=\"eqemu\" -DPACKAGE_TARNAME=\"eqemu\" -DPACKAGE_VERSION=\"0.8.0\" -DPACKAGE_STRING=\"eqemu\ 0.8.0\" -DPACKAGE_BUGREPORT=\"http://www.eqemulator.net\" -DPACKAGE=\"eqemu\" -DVERSION=\"0.8.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DX86=1 -DHAVE_LIBPTHREAD=1 -I. -I../../chatserver -I/usr/include -I/usr/local/include -DCHAT -DIRC -DEMBPERL -DEMBPERL_PLUGIN -DHAS_UNION_SEMUN -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -I/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE -I/usr/include/mysql -DNO_PIDLOG -DSHAREMEM -DFIELD_ITEMS -DINVERSEXY -DCATCH_CRASH -DLINUX -Di386 -DEQDEBUG=5 -DBOTS=1 -O2 -MT CRC16.o -MD -MP -MF ".deps/CRC16.Tpo" -c -o CRC16.o `test -f '../common/CRC16.cpp' || echo '../../chatserver/'`../common/CRC16.cpp; \
then mv -f ".deps/CRC16.Tpo" ".deps/CRC16.Po"; else rm -f ".deps/CRC16.Tpo"; exit 1; fi
cc1plus: warning: command line option "-Wdeclaration-after-statement" is valid for C/ObjC but not for C++
if g++ -DPACKAGE_NAME=\"eqemu\" -DPACKAGE_TARNAME=\"eqemu\" -DPACKAGE_VERSION=\"0.8.0\" -DPACKAGE_STRING=\"eqemu\ 0.8.0\" -DPACKAGE_BUGREPORT=\"http://www.eqemulator.net\" -DPACKAGE=\"eqemu\" -DVERSION=\"0.8.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DX86=1 -DHAVE_LIBPTHREAD=1 -I. -I../../chatserver -I/usr/include -I/usr/local/include -DCHAT -DIRC -DEMBPERL -DEMBPERL_PLUGIN -DHAS_UNION_SEMUN -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -I/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE -I/usr/include/mysql -DNO_PIDLOG -DSHAREMEM -DFIELD_ITEMS -DINVERSEXY -DCATCH_CRASH -DLINUX -Di386 -DEQDEBUG=5 -DBOTS=1 -O2 -MT crc32.o -MD -MP -MF ".deps/crc32.Tpo" -c -o crc32.o `test -f '../common/crc32.cpp' || echo '../../chatserver/'`../common/crc32.cpp; \
then mv -f ".deps/crc32.Tpo" ".deps/crc32.Po"; else rm -f ".deps/crc32.Tpo"; exit 1; fi
cc1plus: warning: command line option "-Wdeclaration-after-statement" is valid for C/ObjC but not for C++
../../chatserver/../common/crc32.cpp:105:2: warning: #warning "Comment out i386 define if your arch isn't x86"
if g++ -DPACKAGE_NAME=\"eqemu\" -DPACKAGE_TARNAME=\"eqemu\" -DPACKAGE_VERSION=\"0.8.0\" -DPACKAGE_STRING=\"eqemu\ 0.8.0\" -DPACKAGE_BUGREPORT=\"http://www.eqemulator.net\" -DPACKAGE=\"eqemu\" -DVERSION=\"0.8.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DX86=1 -DHAVE_LIBPTHREAD=1 -I. -I../../chatserver -I/usr/include -I/usr/local/include -DCHAT -DIRC -DEMBPERL -DEMBPERL_PLUGIN -DHAS_UNION_SEMUN -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -I/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE -I/usr/include/mysql -DNO_PIDLOG -DSHAREMEM -DFIELD_ITEMS -DINVERSEXY -DCATCH_CRASH -DLINUX -Di386 -DEQDEBUG=5 -DBOTS=1 -O2 -MT dbcore.o -MD -MP -MF ".deps/dbcore.Tpo" -c -o dbcore.o `test -f '../common/dbcore.cpp' || echo '../../chatserver/'`../common/dbcore.cpp; \
then mv -f ".deps/dbcore.Tpo" ".deps/dbcore.Po"; else rm -f ".deps/dbcore.Tpo"; exit 1; fi
cc1plus: warning: command line option "-Wdeclaration-after-statement" is valid for C/ObjC but not for C++
../../chatserver/../common/dbcore.cpp:10:20: error: errmsg.h: No such file or directory
../../chatserver/../common/dbcore.cpp:11:26: error: mysqld_error.h: No such file or directory
In file included from ../../chatserver/../common/dbcore.cpp:13:
../../chatserver/../common/dbcore.h:9:19: error: mysql.h: No such file or directory
../../chatserver/../common/dbcore.h:25: error: ‘MYSQL_RES’ has not been declared
../../chatserver/../common/dbcore.h:28: error: ISO C++ forbids declaration of ‘MYSQL’ with no type
../../chatserver/../common/dbcore.h:28: error: expected ‘;’ before ‘*’ token
../../chatserver/../common/dbcore.h:30: error: expected `;' before ‘static’
../../chatserver/../common/dbcore.h:36: error: ‘MYSQL’ does not name a type
../../chatserver/../common/dbcore.cpp: In constructor ‘DBcore::DBcore()’:
../../chatserver/../common/dbcore.cpp:35: error: ‘mysql’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:35: error: ‘mysql_init’ was not declared in this scope
../../chatserver/../common/dbcore.cpp: In destructor ‘DBcore::~DBcore()’:
../../chatserver/../common/dbcore.cpp:45: error: ‘mysql’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:45: error: ‘mysql_close’ was not declared in this scope
../../chatserver/../common/dbcore.cpp: In member function ‘void DBcore::ping()’:
../../chatserver/../common/dbcore.cpp:139: error: ‘mysql’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:139: error: ‘mysql_ping’ was not declared in this scope
../../chatserver/../common/dbcore.cpp: At global scope:
../../chatserver/../common/dbcore.cpp:143: error: ‘MYSQL_RES’ has not been declared
../../chatserver/../common/dbcore.cpp: In member function ‘bool DBcore::RunQuery(const char*, int32, char*, int**, int32*, int32*, int32*, bool)’:
../../chatserver/../common/dbcore.cpp:158: error: ‘mysql’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:158: error: ‘mysql_real_query’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:159: error: ‘mysql_errno’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:159: error: ‘CR_SERVER_GONE_ERROR’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:161: error: ‘mysql_errno’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:161: error: ‘CR_SERVER_LOST’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:161: error: ‘CR_SERVER_GONE_ERROR’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:171: error: ‘MYSQL_ERRMSG_SIZE’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:171: error: ‘mysql_error’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:172: error: ‘mysql_error’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:180: error: ‘MYSQL_ERRMSG_SIZE’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:180: error: ‘mysql_error’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:188: error: ‘mysql_field_count’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:189: error: ‘mysql_store_result’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:197: error: ‘mysql_affected_rows’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:199: error: ‘mysql_insert_id’ was not declared in this scope
../../chatserver/../common/dbcore.cpp: In member function ‘int32 DBcore::DoEscapeString(char*, const char*, int32)’:
../../chatserver/../common/dbcore.cpp:238: error: ‘mysql’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:238: error: ‘mysql_real_escape_string’ was not declared in this scope
../../chatserver/../common/dbcore.cpp: In member function ‘bool DBcore::Open(int32*, char*)’:
../../chatserver/../common/dbcore.cpp:264: error: ‘mysql’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:264: error: ‘mysql_close’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:272: error: ‘CLIENT_FOUND_ROWS’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:274: error: ‘CLIENT_COMPRESS’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:276: error: ‘CLIENT_SSL’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:277: error: ‘mysql’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:277: error: ‘mysql_real_connect’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:283: error: ‘mysql_errno’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:285: error: ‘MYSQL_ERRMSG_SIZE’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:285: error: ‘mysql_errno’ was not declared in this scope
../../chatserver/../common/dbcore.cpp:285: error: ‘mysql_error’ was not declared in this scope
make[1]: *** [dbcore.o] Error 1
make[1]: Leaving directory `/home/lanys/eqemu/build/build/chatserver'
make: *** [all-recursive] Error 1

lerxst2112
03-06-2011, 11:03 PM
It would appear you do not have the mysql development files installed, or it just didn't find them.

lanystvyl
03-07-2011, 12:03 AM
that worked i can run throug the steps., I can't figure out what to do next though.

thanks for the help!

lanystvyl
03-07-2011, 08:59 AM
that worked i can run through the steps., I can't figure out what to do next though. :shock:

thanks for the help!

must have been really tired last night :P I found the compiled executable. Should be able to put every thing where it belongs.

Awesome script - all my issues where due to not having the right programs loaded, really great job.

orkim
05-26-2011, 10:13 AM
While working on a fresh SVN compile, I had some issues to work through.

Specifically, here's what I did to make the compile work:

prepare.sh needs to be updated. It did not remove these files:
./eqlaunch/makefile.vc2003
./world/makefile.vc2003
./EQEmuLoginServer/makefile
./EQEmuLoginServer/makefile.common
./ucs/makefile
./ucs/makefile.common
./zone/makefile.vc2003
./EMuShareMem/makefile.vc2003

Hand edited ./ucs/Makefile (this should be done with autocof I'm sure, but I didn't follow through editing those files):
old value: LIBS = -lpthread
new value: LIBS = -lpthread -ldl

Hand edited ./zone/Makefile (again, autoconf, but I got it working):
am_zone_OBJECTS = line
This was missing: "QuestParserCollection.$(OBJEXT)" so I added it.

Everything compiled and worked after these few edits. Just wanted to let you know for any updates that you might like to do.

-ork

orkim
05-26-2011, 11:52 AM
For anyone interested in adding the EQEmuLoginServer to the autobuild scripts, I spent a few minutes working this out. Read below for how I did it.

Before building, you must extract the proper library from the appropriate zip in the ./EQEmuLoginServer/login_utils/linux/ directory. Update ./EQEmuLoginServer/Makefile.am as follows:


DEFAULT_INCLUDES=
AM_CPPFLAGS = -DEQLOGIN -DCOMBINED $(MYSQL_INCLUDES)

EQEMULOBINSERVER_INC = -L.
EQEMULOGINSERVER_LIBS = -lEQEmuAuthCrypto -lcryptopp
bindir=$(prefix)

bin_PROGRAMS = EQEmuLoginServer

EQEmuLoginServer_LDFLAGS = $(MYSQL_LIBS) $(LDFLAGS) -ldl $(EQEMULOBINSERVER_INC) $(EQEMULOGINSERVER_LIBS)

EQEmuLoginServer_SOURCES = \
Client.cpp \
Client.h \
ClientManager.cpp \
ClientManager.h \
Config.cpp \
Config.h \
Database.h \
DatabaseMySQL.h \
DatabasePostgreSQL.h \
ErrorLog.cpp \
LoginServer.h \
Main.cpp \
ServerManager.cpp \
WorldServer.cpp \
DatabaseMySQL.cpp \
DatabasePostgreSQL.cpp \
EQCryptoAPI.h \
ErrorLog.h \
LoginStructures.h \
Options.h \
ServerManager.h \
WorldServer.h \
../common/BasePacket.cpp \
../common/Condition.cpp \
../common/CRC16.cpp \
../common/crc32.cpp \
../common/debug.cpp \
../common/debug.h \
../common/emu_opcodes.cpp \
../common/EmuTCPConnection.cpp \
../common/EmuTCPServer.cpp \
../common/EQPacket.cpp \
../common/EQStream.cpp \
../common/EQStreamFactory.cpp \
../common/logsys.cpp \
../common/logsys_eqemu.cpp \
../common/misc.cpp \
../common/MiscFunctions.cpp \
../common/Mutex.cpp \
../common/opcodemgr.cpp \
../common/packet_dump.cpp \
../common/packet_functions.cpp \
../common/rdtsc.cpp \
../common/TCPConnection.cpp \
../common/TCPServer.cpp \
../common/timeoutmgr.cpp \
../common/timer.cpp \
../common/unix.cpp


You must also update the ./configure.am just a bit to include this make file as (addition in red):


# AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([
Makefile
chatserver/Makefile
EMuShareMem/Makefile
EQEmuLoginServer/Makefile
eqlaunch/Makefile
mailserver/Makefile
ucs/Makefile
utils/Makefile
utils/defaults/Makefile
utils/defaults/templates/Makefile
utils/defaults/templates/TMimages/Makefile
world/Makefile
zone/Makefile
])


Rerun 'autoreconf -fi' and then a './configure' and 'make' and the login server should be built properly.

-ork

orkim
05-26-2011, 12:47 PM
Follow up to my post to posts back. I took the time to edit the needed files in the build system to do the two problems I ran into automatically:

./configure.ac needs to be updated to reflect:


## Check for required libraries.
AC_CHECK_LIB( pthread, pthread_create, [],
[LDFLAGS="-pthread $LDFLAGS"
AC_TRY_LINK([char pthread_create();],
pthread_create();,
[], [AC_MSG_ERROR([Missing pthread])])
])

# dl
AC_CHECK_LIB( dl, dlopen, [],
[LDFLAGS="-ldl $LDFLAGS"
AC_TRY_LINK([char dlopen();],
dlopen();,
[], [AC_MSG_ERROR([Missing libdl])])
])

# Check for zlib
AC_CHECK_LIB( z, compress, [ZLIB=-lz],[AC_MSG_ERROR([Missing zlib])] )



./zone/Makefile.am needs to be updated to reflect:


questmgr.cpp \
questmgr.h \
QuestParserCollection.cpp \
QuestParserCollection.h \
QGlobals.cpp \
QGlobals.h \


'autoreconf -fi', './configure', 'make'.. etc etc..

-orkim

erde
06-24-2011, 04:28 AM
Hi,

Mercurial repo: http://hg.codejunk.de/eqbuild/summary
current download http://hg.codejunk.de/eqbuild/archive/tip.tar.bz2

amraist
06-29-2011, 01:21 PM
I needed this patch to configure.ac in order to get it to work with FreeBSD
Index: configure.ac
================================================== =================
--- configure.ac (revision 370)
+++ configure.ac (revision 371)
@@ -158,7 +158,7 @@
])

# dl
-if test "$OSNAME" != "NetBSD"; then
+if test "$OSNAME" != "NetBSD" -a "$OSNAME" != "FreeBSD"; then
AC_CHECK_LIB( dl, dlopen, [],
[LDFLAGS="-ldl $LDFLAGS"
AC_TRY_LINK([char dlopen();],

erde
06-29-2011, 01:29 PM
I needed this patch to configure.ac in order to get it to work with FreeBSD
Index: configure.ac
================================================== =================
--- configure.ac (revision 370)
+++ configure.ac (revision 371)
@@ -158,7 +158,7 @@
])

# dl
-if test "$OSNAME" != "NetBSD"; then
+if test "$OSNAME" != "NetBSD" -a "$OSNAME" != "FreeBSD"; then
AC_CHECK_LIB( dl, dlopen, [],
[LDFLAGS="-ldl $LDFLAGS"
AC_TRY_LINK([char dlopen();],


added, thx