PDA

View Full Version : Compiler Support


KLS
08-19-2014, 07:25 PM
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:

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

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.