X-Git-Url: https://git.ao2.it/libam7xxx.git/blobdiff_plain/6d8691adaf1b7f1ec3f443ebb5cf494f5981b235..f4c97d762218d109201a7c8c3f712be2f489b280:/HACKING.asciidoc?ds=sidebyside diff --git a/HACKING.asciidoc b/HACKING.asciidoc index 5b2937d..bf8cc28 100644 --- a/HACKING.asciidoc +++ b/HACKING.asciidoc @@ -5,13 +5,42 @@ libam7xxx uses the linux kernel coding style: http://kernel.org/doc/Documentation/CodingStyle +=== Getting and compiling libam7xxx + +libam7xxx depends on 'libusb-1.0' and optionally on 'libav' or 'ffmpeg' for +its example programs, the build system used is 'cmake'. + +On a Debian based system, the dependencies can be installed with this command: + + $ sudo aptitude install cmake \ + libusb-1.0-0-dev \ + libavformat-dev \ + libavcodec-dev \ + libavdevice-dev \ + libswscale-dev \ + libxcb1-dev + +With libav/ffmpeg version previous than 0.9 this patch is needed: +http://git.ao2.it/libam7xxx.git/blob_plain/refs/heads/debian:/debian/patches/0001-Revert-am7xxx-play-switch-to-avcodec_encode_video2.patch + +The library and the example programs can be compiled following these steps: + + $ git clone git://git.ao2.it/libam7xxx.git + $ cd libam7xxx + $ mkdir build + $ cd build + $ cmake ../ + $ make + +After that the example programs can be found in the +bin/+ subdirectory. + === Debug builds The suggested way to hack on the project is: $ mkdir build $ cd build - $ cmake ../ -DCMAKE_BUILD_TYPE=debug + $ cmake -D CMAKE_BUILD_TYPE=debug -D STRICT_COMPILATION_CHECKS=ON ../ $ make If you want to check the code with the ''sparse'' static analysis tool you @@ -19,6 +48,49 @@ can run: $ mkdir build $ cd build - $ cmake ../ -DCMAKE_C_COMPILER=cgcc + $ cmake -D CMAKE_C_COMPILER=cgcc ../ $ make +And for a pre-release check with a different compiler, which never hurts: + + $ mkdir build + $ cd build + $ cmake -D CMAKE_C_COMPILER=clang -D CMAKE_BUILD_TYPE=debug -D STRICT_COMPILATION_CHECKS=ON ../ + $ make + +=== Cross Builds + +If you want to build for MS Windows: + + $ sudo aptitude install mingw-w64 + $ mkdir build + $ cd build + $ wget -nv http://download.sourceforge.net/project/libusb/libusb-1.0/libusb-1.0.18/libusb-1.0.18-win.7z + $ 7z -olibusb-1.0.18-win x libusb-1.0.18-win.7z + $ wget -nv http://win32.libav.org/releases/libav-10.1-win32.7z + $ 7z -olibav-10.1-win32 x libav-10.1-win32.7z + $ cmake \ + -D GNU_HOST=i686-w64-mingw32 \ + -D CMAKE_TOOLCHAIN_FILE=../cmake_modules/mingw_cross_toolchain.cmake \ + -D CMAKE_INSTALL_PREFIX=libam7xxx-win/ \ + -D LIBUSB_1_INCLUDE_DIR=libusb-1.0.18-win/include/libusb-1.0 \ + -D LIBUSB_1_LIBRARY=libusb-1.0.18-win/MinGW32/dll/libusb-1.0.dll \ + -D FFMPEG_ROOT=$(pwd)/libav-10.1-win32/win32/usr \ + ../ + $ make + +After that you will find libam7xxx.dll in lib/ and picoproj.exe in the bin/ +directory. + +=== Valgrind + +You can run the test program under the http://valgrind.org/[valgrind] +dynamic analyzer by using a command like: + + $ valgrind --leak-check=full --show-reachable=yes --track-origins=yes \ + ./bin/picoproj -W 800 -H 480 -f my_image.jpg + +or, for am7xxx-play: + + $ valgrind --leak-check=full --show-reachable=yes --track-origins=yes \ + ./bin/am7xxx-play -f x11grab -i :0