Skip to content

Instantly share code, notes, and snippets.

@kosyak
Created October 6, 2016 18:39
Show Gist options
  • Save kosyak/6044c15b6863d6b78c4de147f9e10d00 to your computer and use it in GitHub Desktop.
Save kosyak/6044c15b6863d6b78c4de147f9e10d00 to your computer and use it in GitHub Desktop.
Plex Media Player cmake cross-compile toolchain
# rm -rf * && ../../cmake/bin/cmake -GNinja -DCMAKE_BUILD_TYPE=Debug -DQTROOT=/usr/local/qt5 -DCMAKE_INSTALL_PREFIX=/ .. && ninja -j8 && DESTDIR=/home/kosyak/src/rpi2/usr/local ninja install && rsync -avz /home/kosyak/src/rpi2/usr/local/bin plex:/usr/local && rsync -avz /home/kosyak/src/rpi2/usr/local/share plex:/usr/local
SET(DEVROOT $ENV{HOME}/src)
SET(PIROOT ${DEVROOT}/rpi2/sysroot)
SET(PITOOLS ${DEVROOT}/rpi2-tools)
SET(QTROOT /usr/local/qt5)
SET(CMAKE_INSTALL_PREFX /)
# ./builds/destdir/i686-linux-gnu/bin/arm-linux-gnueabihf-g++
SET(TOOLCHAIN_PREFIX ${DEVROOT}/gcc_build/builds/destdir/i686-linux-gnu)
# SET(TOOLCHAIN_PREFIX ${DEVROOT}/gcc-linaro-5.3.1-2016.05-i686_arm-linux-gnueabihf)
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_VERSION 1)
SET(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}/bin/arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}/bin/arm-linux-gnueabihf-g++)
SET(FLAGS "-Wl,-rpath-link,${PIROOT}/opt/vc/lib -Wl,-rpath-link,${PIROOT}/lib/arm-linux-gnueabihf -Wl,-rpath-link,${PIROOT}/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link,${PIROOT}/usr/local/lib")
UNSET(CMAKE_C_FLAGS CACHE)
UNSET(CMAKE_CXX_FLAGS CACHE)
SET(CMAKE_CXX_FLAGS ${FLAGS} CACHE STRING "" FORCE)
SET(CMAKE_C_FLAGS ${FLAGS} CACHE STRING "" FORCE)
SET(CMAKE_SYSROOT ${PIROOT})
SET(CMAKE_FIND_ROOT_PATH ${PIROOT})
# Where is the target environment
#SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --sysroot=${CMAKE_FIND_ROOT_PATH}")
#SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --sysroot=${CMAKE_FIND_ROOT_PATH}")
#SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} --sysroot=${CMAKE_FIND_ROOT_PATH}")
# Search for programs only in the build host directories
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# Search for libraries and headers only in the target directories
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
INCLUDE_DIRECTORIES(${PIROOT}/opt/vc/include)
INCLUDE_DIRECTORIES(${PIROOT}/opt/vc/include/interface/vcos/pthreads)
INCLUDE_DIRECTORIES(${PIROOT}/opt/vc/include/interface/vmcs_host/linux)
INCLUDE_DIRECTORIES(${PIROOT}/usr/include)
LINK_DIRECTORIES(${PIROOT}/opt/vc/lib)
LINK_DIRECTORIES(${PIROOT}/usr/lib/arm-linux-gnueabihf)
# Could NOT find MPV (missing: MPV_INCLUDE_DIR MPV_LIBRARY)
SET(MPV_INCLUDE_DIR ${PIROOT}/usr/local/include)
SET(MPV_LIBRARY ${PIROOT}/usr/local/lib/libmpv.so)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment