EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Development::Development (https://www.eqemulator.org/forums/forumdisplay.php?f=590)
-   -   Compiler Support (https://www.eqemulator.org/forums/showthread.php?t=38637)

KLS 08-19-2014 07:25 PM

Compiler Support
 
Just a heads up: sometime in the near future we will be dropping support for VS2010 and by extension building on Windows XP.

lerxst2112 08-19-2014 09:40 PM

Assuming this is due to C++11 requirements it might help people to know the minimum version of gcc required as well.

demonstar55 08-19-2014 10:09 PM

GCC 4.6 is the minimum. (Currently)

Clang, unsupported, although it might work with Perl 5.20+ or not building with Perl support ...

EDIT:

Code:

buildclang % ls bin
eqlaunch  export_client_files  import_client_files  libcommon.a  libluabind.a  queryserv  shared_memory  ucs  world  zone

yep, building without perl support now works for clang :D (although, I didn't actually test run the code ... don't feel like installing clang on my VM and my desktop doesn't actually have everything set up to actually run a server)

KLS 08-20-2014 03:01 AM

It's unfortunate Perl didn't compile with clang for so long, will be a while before 5.20 filters down =/

Secrets 08-20-2014 04:29 PM

VS2012 supports targeting Windows XP afaik.

lerxst2112 08-21-2014 12:55 AM

Quote:

Originally Posted by Secrets (Post 233118)
VS2012 supports targeting Windows XP afaik.

You can target XP, but you cannot install the 2012 IDE/compiler on Windows XP. Not sure about Vista, I think it's 7+, I can't actually find the 2012 requirements anymore on the Microsoft site.

amraist 10-01-2014 04:44 PM

I've managed to get it compiled with clang and perl.

There are a lot of patches that need to be in place for it to actually run though. There's a difference in the way gcc and clang process function arguments(basically they are reversed, left to right vs right to left).

For example the line is fine with GCC, but creates a segfault when compiled with clang:
Code:

if (RunQuery(query, MakeAnyLenString(&query, "SELECT count(slot) from aa_effects where aaid=%i", skill_id), errbuf, &result)) {
Code needs to be rewritten as follows
Code:

uint32 len_query = MakeAnyLenString(&query, "SELECT count(slot) from aa_effects where aaid=%i", skill_id);
if (RunQuery(query, len_query, errbuf, &result)) {

According to the c++ spec, the compiler is allowed to determine the order of parameter resolution.

As far as what I did to get Perl working correctly, I don't remember at this point, but I remember fighting with it, so I'm pretty sure I have that worked out. It's just been a while since I got it all working last. Might be just a simple change to the cmake files.

I can share my work if there is any interest.

KLS 10-01-2014 06:44 PM

Thanks for bringing that to my attention, we're slowly phasing out that style of query anyway at least.

Fixing perl appears to be needing to either update to a newer version or actually modifying the perl headers in some key spots to add spaces between identifiers.

rhyotte 10-01-2014 10:00 PM

Thank heavens for Lua!

amraist 10-02-2014 04:56 PM

I'm glad to hear those are going away... There are a lot of those queries I had to track down.

This is my fix for perl on FreeBSD. I'm pretty sure that's all I needed. I know I didn't change the headers, and I couldn't seem to find a version that it worked without that.

Code:

IF(UNIX)
IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
ADD_DEFINITIONS(-DFREEBSD)
+ ADD_DEFINITIONS(-Wno-reserved-user-defined-literal)
SET(FREEBSD TRUE)
ENDIF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
ENDIF(UNIX)


KLS 10-02-2014 09:09 PM

Aye the fix is recent (like 3 months ago recent) so it's unlikely to be in many repos.

Thanks for the flag fix, I'll be sure we get that in there.


All times are GMT -4. The time now is 03:12 AM.

Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.