View Full Version : 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:
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)
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.
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)
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.
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.