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.
[2026-6-04. : 3:42 am]
RIVE -- Hellooooo, Nurse
[2026-6-03. : 4:19 pm]
NudeRaider -- Hello World!
[2026-6-01. : 4:03 pm]
IskatuMesk -- no Hello World? No Hello . jpeg? Not even ddosing some government website? smh my head
[2026-5-31. : 10:02 pm]
Symmetry -- I was really just figuring out how to compile
[2026-5-31. : 10:02 pm]
Symmetry -- I didn't make it do anything
[2026-5-31. : 9:17 pm]
Ultraviolet -- hell yeah. did you have trouble making the button functional, or just haven't gotten there yet?
[2026-5-31. : 8:29 pm]
Symmetry -- I made the marine shoot lasers and gave the medic a nonfunctional button
[2026-5-31. : 8:07 pm]
Ultraviolet -- Symmetry
Symmetry shouted: I did my first EUD thing today. Feels like me finding arsenal at age 8 again
haha for sure. in some ways it's even more exciting because you can play EUD maps on regular battle.net, don't need to convince someone to download your mod to play with you. what did you do?
[2026-5-31. : 6:47 pm]
Symmetry -- I did my first EUD thing today. Feels like me finding arsenal at age 8 again
[2026-5-31. : 3:20 pm]
l)ark_ssj9kevin -- le reddit
Please log in to shout.


Members Online: Dem0n, jun3hong