Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Server Code Submissions

Reply
 
Thread Tools Display Modes
  #1  
Old 04-29-2009, 04:18 PM
erde
Sarnak
 
Join Date: Sep 2006
Location: Germany
Posts: 82
Default autobuild for Linux, FreeBSD, OS X

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
Code:
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:
Code:
--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
Code:
wget http://quadfreunde-ergoldsbach.de/eqemu/eqbuild.tgz
unpack
Code:
tar xvzf eqbuild.tgz
run prepare.sh, this will remove all previous makefiles and create missing files.
Code:
sh prepare.sh
run
Code:
autoreconf -fi
create a directory for the build process
Code:
mkdir build
cd into the build directory
Code:
cd build
run configure
Code:
../configure --prefix=/path/to/install
This will build eqemu with the default options.

To enable bots configure with
Code:
../configure --enable-bots --prefix=/path/to/install
To set the loglevel to 3 "Status, Normal, and Error to console and logfile" do
Code:
../configure --with-loglevel=3 --prefix=/path/to/install
to compile simply do
Code:
make
to install everything
Code:
make install
Have fun!
__________________
"Yes, the artwork is awful. I am an engineer, not an artist " - David H. Eberly
Reply With Quote
  #2  
Old 04-29-2009, 10:36 PM
drakelord
Hill Giant
 
Join Date: Nov 2002
Location: NC, USA
Posts: 182
Default

Interesting. Is this something that has to be rebuilt with each revision, or will it automatically download new revision files?
__________________
Hmm.
Reply With Quote
  #3  
Old 04-30-2009, 12:23 AM
demonstar55
Demi-God
 
Join Date: Apr 2008
Location: MA
Posts: 1,165
Default

the archive has a folder called EMUShareMem, should be called EMuShareMem, otherwise seems to work
Reply With Quote
  #4  
Old 04-30-2009, 02:28 AM
erde
Sarnak
 
Join Date: Sep 2006
Location: Germany
Posts: 82
Default

Quote:
Originally Posted by demonstar55 View Post
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.

Quote:
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

Code:
configure --prefix=/path/to/install
make
make install
and you are done.
__________________
"Yes, the artwork is awful. I am an engineer, not an artist " - David H. Eberly
Reply With Quote
  #5  
Old 04-30-2009, 11:05 AM
Andrew80k
Dragon
 
Join Date: Feb 2007
Posts: 659
Default

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.
Reply With Quote
  #6  
Old 04-30-2009, 02:42 PM
cavedude's Avatar
cavedude
The PEQ Dude
 
Join Date: Apr 2003
Location: -
Posts: 1,988
Default

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!
Reply With Quote
  #7  
Old 03-06-2011, 02:52 PM
lanystvyl
Sarnak
 
Join Date: Jan 2010
Posts: 53
Default

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
Reply With Quote
  #8  
Old 03-06-2011, 09:34 PM
lanystvyl
Sarnak
 
Join Date: Jan 2010
Posts: 53
Default

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.

Code:
[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
Reply With Quote
  #9  
Old 03-06-2011, 11:03 PM
lerxst2112
Demi-God
 
Join Date: Aug 2010
Posts: 1,743
Default

It would appear you do not have the mysql development files installed, or it just didn't find them.
Reply With Quote
  #10  
Old 03-07-2011, 12:03 AM
lanystvyl
Sarnak
 
Join Date: Jan 2010
Posts: 53
Default

that worked i can run throug the steps., I can't figure out what to do next though.

thanks for the help!
Reply With Quote
  #11  
Old 03-07-2011, 08:59 AM
lanystvyl
Sarnak
 
Join Date: Jan 2010
Posts: 53
Default

Quote:
Originally Posted by lanystvyl View Post
that worked i can run through the steps., I can't figure out what to do next though.

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.
Reply With Quote
  #12  
Old 05-26-2011, 10:13 AM
orkim
Sarnak
 
Join Date: Sep 2008
Location: -
Posts: 31
Default

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
Reply With Quote
  #13  
Old 05-26-2011, 11:52 AM
orkim
Sarnak
 
Join Date: Sep 2008
Location: -
Posts: 31
Default

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:

Code:
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):

Code:
# 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
Reply With Quote
  #14  
Old 05-26-2011, 12:47 PM
orkim
Sarnak
 
Join Date: Sep 2008
Location: -
Posts: 31
Default

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:

Code:
## 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:

Code:
        questmgr.cpp \
        questmgr.h \
        QuestParserCollection.cpp \
        QuestParserCollection.h \
        QGlobals.cpp \
        QGlobals.h \
'autoreconf -fi', './configure', 'make'.. etc etc..

-orkim
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 06:04 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3