Status of Mac and Windows ports

First, a reminder that I’m not a zcashco employee, but an independent developer, working on this stuff full time, and please help this effort with donations in BTC to: 1AsoFtYfV2mCpCS98Qf3ytKs8y9VSzZ4V5

I just merged the rc2 changes into my mac port. On rc1 we got all dependencies, including the ever fussy libsnark, to build, along with most of the main zcash source. I’m doing the first test build with the rc2 changes merged in right now as I type. GNU autoconf is still adding in include files a bit too aggressively, and I’ll be continuing to tune that. The deterministic build system zcashco is using for their linux builds has helped a lot so far in figuring out things to exclude on the mac. A full zcashd binary isn’t there yet, but we’re getting close.

On the Windows side of the house, I’ve successfully added a completely new native Windows builder to the dependency system zcash inherited from bitcoin (using mingw64 for the curious), which I intend to contribute back upstream to bitcoin to ease native, non-cross compiled builds of bitcoin (they build their Windows releases on linux, and native 64 bit Windows builds are still…problematic). I’ll be merging in the rc2 changes later today and seeing how a build goes.


Thank you for your work!

How did you fix this bug ?

tmp-invert_limb_table.s:46:1: error: unknown directive
.hidden __gmpn _invert _limb _table

During mpn compilation.

what stage of the build on what platform did you hit that on?

I’m on Sierra. It’s after compiling libgmp. Here is the last lines, hope that helps:

Making all in tests
Making all in .
make[4]: Nothing to be done for all-am'. Making all in devel make[4]: Nothing to be done for all’.
Making all in mpn
make[4]: Nothing to be done for all'. Making all in mpz make[4]: Nothing to be done for all’.
Making all in mpq
make[4]: Nothing to be done for all'. Making all in mpf make[4]: Nothing to be done for all’.
Making all in rand
make[4]: Nothing to be done for all'. Making all in misc make[4]: Nothing to be done for all’.
Making all in cxx
make[4]: Nothing to be done for `all’.
Making all in mpn

I suspect that the problem come from the fact that os x use 32-bit x86 assembly with 64-bit x86-64. But no idea how to fix it.

Basically, this last command fails fails:
gcc -m64 -DHAVE_CONFIG_H -I. -I… -D__GMP_WITHIN_GMP -I… -DOPERATION_fib_table -fPIC -pipe -O1 -c fib_table.c -o fib_table.o
m4 -DHAVE_CONFIG_H -D__GMP_WITHIN_GMP -DOPERATION_invert_limb_table invert_limb_table.asm >tmp-invert_limb_table.s
gcc -m64 -c -DHAVE_CONFIG_H -I. -I… -D__GMP_WITHIN_GMP -I… -DOPERATION_invert_limb_table -fPIC -pipe -O1 tmp-invert_limb_table.s -o invert_limb_table.o

Thank you for your help.

what’s your output of
gcc --version

It actually takes installing quite a few packages via brew (and the right gcc version!) and the Xcode command line tools from apple, and building via the script I use…all of which I don’t have time to write up at the moment. I’m busy trying to get the ports building all the way, and have yet to get any donations for the work…so I’m prioritizing getting binaries out asap versus docs right now, as I think I’ll probably get a lot more love in that direction once I have a release out, and ZEC is live on the 28th.

But if you happen to be a C++ expert, I’ll hold your hand in exchange for help with some C++ roadblocks I’ve hit that the zcashco core team don’t have time to address yet.

Unfortunately, I’m not a C++ expert. I have also installed few packages with brew (coreutils…) and wanted to give it a try. Don’t mind me, I was just asking in case the answer was straightforward. Will try to fix it by myself.
Good luck on your work, I’m sure donations will come once the binaries are out.

just in case:

gcc -version
Configured with: --prefix=/Applications/ --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 8.0.0 (clang-800.0.38)
Target: x86_64-apple-darwin16.0.0
Thread model: posix
InstalledDir: /Applications/
1 Like

@anon47418038 Any update for a mac port ? Thank you.

@Quent17 I’m waiting for rc3 to drop later today, they’ve made some changes in parts of the code that are being troublesome on both Mac and Windows, and I haven’t wanted to cherrypick commits, when last time they pushed a new release it helped portability a lot. I’ve been working on my automated build infrastructure (they don’t even attempt non-linux builds right now), and will be working on docs for others to help replicate my progress in the meantime, too.

1 Like

Ah, you’re building with Apple’s clang (they put in a wrapper script trying to be helpful named gcc).

I’m going to be posting Mac and Windows guides some time this week for those intrepid enough to want to help out on these ports.

Thank you for the heads up! I’m super interested since I don’t want to run a linux VM all the time just for zcash wallet.

Yeah, Mac and Windows users are super-bummed about not being able to have a non-linux wallet/fullnode right now…I gotta get setup guides up asap, as I need help with the C++ code that’s been added since the fork from bitcoin, which is what’s giving the compiler/linker fits on both platforms.

1 Like