Compiling CHDK under Mac OS X
Talk1this wiki
Building CHDK requires gcc 4.3.2 and the ARM GCC toolchain.
1. Install MacPorts - http://www.macports.org/install.php
2. Before you install gcc you'll need a working compiler, so Apple's dev. tool (from the installation CD) should be installed.
3. Install gcc v4.3.2. from the terminal, type -
sudo port install gcc43 (type the admin password as prompted) (this took several hours on my macbook pro)
4. Install arm-elf-gcc v4.3.2 with thumb interwork multilib support - from the terminal.
sudo port deactivate arm-elf-gcc # the above command may give an ignorable error - # port deactivate failed: Registry error: arm-elf-gcc not registered as installed & active" sudo port install arm-elf-gcc +interwork # the above command may give the fatal error # "ld: duplicate symbol _init_inline_once in libbackend.a(tree-inline.o) and # tree-inline.ocollect2: ld returned 1 exit status" # still working out how to fix this, but see http://trac.macports.org/ticket/20816 (leads to diff error)
5. make gcc v4.3.2 the default compiler.
cd /usr/bin rm gcc ln -s /opt/local/bin/gcc-mp-4.3 gcc
6. make arm-elf-gcc v4.3.2 default.
cd /usr/local/arm/bin rm arm-elf-gcc ln -s /opt/local/bin/arm-elf-gcc-4.3.2 arm-elf-gcc
From here, the directions for compiling under linux will work Compiling_CHDK_under_Linux although the directions for installing the compiler and cross compiler can be skipped.
Troubleshooting
Edit
If arm-elf-gcc doesn't compile, make sure you are using the latest version of MacPorts. To update it, type:
sudo port selfupdate
If that doesn't work, reinstall it from the website. If it gives you an error about libmpfr or something like that, type:
sudo port install mpfr
and try again.
Alternative Method
Edit
I was unable to get the above instructions working - I could install arm-elf-gcc but it failed to compile CHDK properly. Therefore I played around with the Linux instructions and managed to get something similar working on Mac OS X. I may have missed a step or two, but hopefully this is useful for someone.
1. Install the dependencies gmp, mpfr, libmpc and gettext (I used macports for this):
sudo port install gmp mpfr libmpc gettext
2. Download and extract the sources for binutils 2.17 and gcc 3.4.6 to a working directory.
3. Go into the binutils directory and configure and make:
cd binutils-2.17.90
./configure --srcdir=../binutils-2.17.90 --target=arm-elf --prefix=/install/path \
--disable-nls --disable-libssp --disable-intl --disable-werror
make
make install
cd ..
Replace /install/path with the path where you want it to be installed. I'm not sure why srcdir is set like that, I just copied it and as it worked I didn't try without, but maybe it is not needed. disable-werror is needed because there are some warnings when building with a recent version of gcc, and by default these are treated as errors and make the build fail.
4. Make sure /install/path/bin is in your PATH
5. Do the same with gcc, applying Vitaly's patch from CHDK:
cd gcc-3.4.6
patch -p0 < /path/to/chdk/tools/patches/gcc-3.4-arm.diff
./configure --srcdir=../gcc-3.4.6 --target=arm-elf --enable-multilib --enable-languages=c \
--enable-clocale=gnu --disable-libm --disable-libc --disable-threads --disable-nls \
--disable-libssp --disable-intl --disable-libiberty --with-cpu=arm9 --with-newlib \
--prefix=/install/path
make
make install
cd ..
5. The echo command on OS X does not understand the -e flag, so you have to modify chdk/tools/gensigs.sh script and change the last line from:
echo -e "\t{ NULL }\n};"
to:
echo " { NULL }"
echo "};"
6. Try compiling CHDK, hopefully it now works.