Staredit Network > Forums > Modding Discussion > Topic: Compile SFmpq for Mac
Compile SFmpq for Mac
Aug 26 2010, 1:00 am
By: poiuy_qwert  

Aug 26 2010, 1:00 am poiuy_qwert Post #1

PyMS and ProTRG developer

Not many people will probably care, but I though I might as well share the information I have just in case someone is looking for info. These are the steps I took to fix some small compatibility errors and compile SFmpq on OS X:

1) Download SFmpqapi, SComp, bzip, and zlib
2) Replace #include <malloc.h> with #include <stdlib.h> in windows.cpp/.h, SMem.cpp/.h, and SFmpqapi.cpp/.h
3) Replace #include <windows.h> with #include "windows.h" in SFmpqapi.cpp/.h
4) Compile files in this order:
windows
SErr
SMem
explode
implode (there was a cast from unsigned char* to char* "error" on line 452 for me, easy fixes though)
huffman
crc32
wave
SComp
SFmpqapi
bzip (a simple "make" works to compile it. i needed to compile it or else I would get missing symbol errors, but didn't need to do this for zlib)
5) Compile it all together. I used:
g++ -dynamiclib -o SFmpq.dylib -lz windows.o SFmpqapi.o crc32.o explode.o huffman.o implode.o SComp.o SErr.o SMem.o wave.o bzip2/blocksort.o bzip2/compress.o bzip2/decompress.o bzip2/randtable.o bzip2/bzip2.o bzip2/bzlib.o bzip2/crctable.o bzip2/huffman.o


Thank you to ShadowFlare for making such an awesome dll (or dylib ;P)!




Sep 3 2010, 3:14 am ShadowFlare Post #2



I had fixed some occurrences of malloc.h already, but there was one remaining in the windows.h file, which I changed to stdlib.h just a few minutes ago.



None.

Sep 3 2010, 3:15 am Jack Post #3

>be faceless void >mfw I have no face

I might give a go at compiling this for linux, as I mostly use linux nowadays and every now and then could do with a working MPQ tool.
I'll let ya'll know how it goes.



Red classic.

"In short, their absurdities are so extreme that it is painful even to quote them."

Sep 3 2010, 3:56 am Jack Post #4

>be faceless void >mfw I have no face

Sorry for double post, but you might miss the edit:

In windows.h, you define __declspec twice.
Code
#define __declspec(dllimport)
#define __declspec(dllexport)

Why is this? It's throwing up an error when I try to compile windows.cpp.

And I also get this error:
Code
windows.cpp: In function ‘char* strdup(const char*)’:
windows.cpp:160: error: declaration of ‘char* strdup(const char*)’ throws different exceptions
windows.h:141: error: from previous declaration ‘char* strdup(const char*) throw ()’


I'm not very good at programming, so yeah :/



Red classic.

"In short, their absurdities are so extreme that it is painful even to quote them."

Sep 3 2010, 4:36 am ShadowFlare Post #5



At the time, I must not have realized that I didn't need a different one for each of those cases.

As for strdup, try removing it from windows.cpp/.h. Maybe I didn't used to have it including the header that defined it and now it is?

The last time I had tried compiling it in Linux was maybe when I had a computer with Red Hat Linux 7.something installed on another partition.

Post has been edited 1 time(s), last time on Sep 3 2010, 4:42 am by ShadowFlare.



None.

Options
  Back to forum
Please log in to reply to this topic or to report it.
Members in this topic: None.
[06:39 pm]
Vrael -- 6000 apm near perfect focus fire is yikes
[06:38 pm]
Vrael -- paralyze was metaphorically speaking, paralyzed
[06:38 pm]
Vrael -- wasnt even that really, they 6000 apm just made the terran army so much more value/$ that the extra economy didnt matter
[01:58 pm]
NudeRaider -- NudeRaider
NudeRaider shouted: Oh_Man nothing too special tbh. the human player wasn't ready to combat the push that stretched almost the whole map. So this game means nothing. We'll have to see how it goes once the humans have adjusted for its unorthodox strategies.
they basically lost most of their army in one big battle and didn't have the time and production to leverage the economic advantage and come back from that blow.
[01:55 pm]
NudeRaider -- Oh_Man
Oh_Man shouted: https://youtu.be/1vsTqNwHquE omg guys it's happening. ITS HAPPENING. EVERONY STAY CALM. STAY F:wob::wob:CKING CALM!
not sure why you are so hyped, when basically the same happened 7 years ago with AlphaStar on SC2.
[01:53 pm]
NudeRaider -- Oh_Man
Oh_Man shouted: 6000 apm XD, i dont even understand how it culd came back wen it was 5 base vs 2
nothing too special tbh. the human player wasn't ready to combat the push that stretched almost the whole map. So this game means nothing. We'll have to see how it goes once the humans have adjusted for its unorthodox strategies.
[10:59 am]
NimoStar -- "Sick" is the appropriate word for the disease that AI is foisting upon our society. Repent, ye sinners!
[06:32 am]
Ultraviolet -- that was pretty sick lol
[02:55 am]
Oh_Man -- 6000 apm XD, i dont even understand how it culd came back wen it was 5 base vs 2
[02:42 am]
Symmetry -- 'twas only a matter of time
Please log in to shout.


Members Online: Ultraviolet, O)FaRTy1billion[MM], Sie_Sayoka