HowTo compile on Mac
- You can simply download the finished application ('binary release');
- You compile it from a SVN source snapshot or stable release source.
- 1 Binary releases
- 2 Compiling from source
If you don't want to bother with installing and compiling all those tools and sources, then get one of the pre-compiled aMule applications. The official release is considered 'stable', but every now and then applications are built from the current source to allow more people to test new features or the like.
- Check the Mac forum for the most recent user posted binary: aMule forum
Now, to install the downloaded binary, just drag the aMule application to a folder of your choice (e.g., /Applications).
To start aMule, double-click the application icon.
Note: You might want to take a look at the Mac specific usage article.
Compiling from source
Compiling from source allows most current bug reports, because you can compile and test the SVN snapshot of the very day.
Get the sources and development tools
Step 1: Download and install Xcode
You will need at least version 2.1 of Xcode, a more recent version is preferable though. You can download the most recent version of Xcode from Apple, but you will need to sign up for a free-of-charge developer account first or log-in using your iTunes Store account.
- Get Xcode from http://developer.apple.com/tools/download
- "Member Site"->"Log In"->"Download Software"->"Developer Tools"->"Download Xcode Tools last release">"Install"
Step 2: Install MacPorts
MacPorts is an open source installer for lots of open source tools ported to Mac OS X. aMule needs a few of these tools to compile properly. Alternatively,
you can also use Fink to install these tools or (it seems that fink lacks many of the needed tools) you can install them manually .
- Download the most recent version of MacPorts
- Read MacPorts' documentation to learn how to install applications through MacPorts.
Syntax of most important commands
Packages list can be downloaded/updated through
$ sudo port selfupdate
Packages can be installed through
$ sudo port install package_name
and removed with
$ sudo port uninstall package_name
Port variants can be invoked with the plus sign:
$ sudo port install package_name +universal
Step 3: Install libraries and tools
This should be enough:
$ sudo port install automake binutils flex libpng libcryptopp gd2 libgeoip libupnp
Step 4: Compile wxMac
$ patch ~/Desktop/wxMac-2.8.10/src/mac/carbon/textctrl.cpp ~/Desktop/textctrl_optimization.diff
Note: This patch greatly increases performance of wxTextCtrl and prevents aMule from hanging under rapid logging.
leave a space after the command, than drag and drop the wxMac uncompressed folder into the Terminal window: the complete path of the folder will be printed on screen. For example:
$ cd ~/Desktop/wxMac-2.8.10/
Press enter. Now configure and compile the package with the command:
$ ./configure --disable-shared --enable-unicode --disable-debug --disable-debug_gdb --with-libiconv-prefix=/opt/local && make -j8
Note: The above command doesn't enable debug information. Debug informations allows you to submit a helpful stacktrace if aMule crashes or a sample if it hangs to the aMule developers. If you want to compile a debug version then you can use "--enable-debug --enable-debug_gdb" instead.
Step 5: Compile aMule
Download aMule source and extract archive into the same place of wxMac (i.e. your desktop if you are following out suggestion). Open a Terminal and type:
then leave a space and drag and drop aMule uncompressed folder whose path will be printed on screen, for example:
$ cd ~/Desktop/aMule-2.2.4
Press Enter. Now it's possible to configure the sources: there are several options that can be used to activate or deactivate feature during compiling. This is only an example, that provide a full feature aMule build:
$ ./configure --with-wx-config=../wxMac-2.8.10/wx-config --enable-optimize --with-crypto-prefix=/opt/local \ --with-gdlib-config=/opt/local/bin/gdlib-config --with-libiconv-prefix=/opt/local --enable-cas --enable-webserver \ --enable-amulecmd --enable-amule-gui --enable-wxcas --enable-alc --enable-alcc --enable-amule-daemon --enable-geoip \ --with-geoip-lib=/opt/local/lib --with-geoip-headers=/opt/local/include --enable-geoip-static --enable-debug
Take a look to the configure page for a complete list of options. You should pay attention to these elements:
- The given example enables debug informations. To disable them exchange the option --enable-debug with --disable-debug --enable-optimize.
- The option --with-wx-config must point to the correct relative path of the compiled wxMac. The example assumes that aMule and wxMac folders are in the same directory (i.e. your desktop). You should also correct the wxMac folder's name according to its version (in the example is 2.8.10).
- The option --with-crypto-prefix should point to /usr/local/cryptopp if you compiled Crypto++ starting from its source, out of MacPorts.
- IMPORTANT! It seems that Mac OS version of ld tool is not able to make static library. So if you plan to run/install your compiled aMule on other Mac which doesn't have MacPorts installed you MUST remove the --enable-geoip-static option to avoid a crash when the program starts.
Now it's time to make you packages with:
$ make -j8
You should find the aMule package in the same source folder.
APPENDIX: Universal Binary
Warning, this section should be hardly revised since it doesn't work at all!
If no specific options are added, the system compile the packages for the native architecture (i.e. i386 if you are using a Mac Intel or ppc for PowerPcs). If you plan to distribute your package or to use it on different platform you probably want to build a universal binary app.
To get a UB package you should
- Install all the libraries and tools (Step 3) through MacPorts invoking the +universal variant.
- Attache the option "--enable-universal_binary" to the configure command of wxMac (Step 4).
- Add the following options to the aMule config, if you are using Leopard (change "MacOSX10.5.sdk" to "MacOSX10.4.sdk" if you are using Tiger):
--disable-dependency-tracking \ CFLAGS="-arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.5.sdk" \ CXXFLAGS="-arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.5.sdk"