1 cmake_minimum_required(VERSION 2.8)
3 project(vmcs_host_apps)
5 SET(PROJECT_VER_MAJOR 1)
6 SET(PROJECT_VER_MINOR 0)
7 SET(PROJECT_VER_PATCH 0)
8 SET(PROJECT_VER "${PROJECT_VER_MAJOR}.${PROJECT_VER_MINOR}.${PROJECT_VER_PATCH}")
9 SET(PROJECT_APIVER "${PROJECT_VER}")
13 set(BUILD_MMAL_APPS FALSE)
16 set(BUILD_MMAL_APPS TRUE)
18 set(vmcs_root ${PROJECT_SOURCE_DIR})
19 get_filename_component(VIDEOCORE_ROOT . ABSOLUTE)
21 set(VCOS_PTHREADS_BUILD_SHARED TRUE)
23 include(makefiles/cmake/global_settings.cmake)
24 include(makefiles/cmake/arm-linux.cmake)
25 include(makefiles/cmake/vmcs.cmake)
29 # Global include paths
30 include_directories(host_applications/framework)
31 include_directories(${PROJECT_SOURCE_DIR})
32 include_directories(interface/vcos/pthreads)
33 include_directories(interface/vmcs_host/linux)
34 include_directories(interface/vmcs_host)
35 include_directories(interface/vmcs_host/khronos)
36 include_directories(interface/khronos/include)
37 include_directories(${PROJECT_BINARY_DIR})
38 include_directories(interface/vchiq_arm)
39 #include_directories(tools/inet_transport)
40 include_directories(host_support/include)
42 # Global compiler flags
43 if(CMAKE_COMPILER_IS_GNUCC)
44 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-multichar -Wall -Wno-unused-but-set-variable -fPIC")
47 add_definitions(-D_REENTRANT)
48 add_definitions(-DUSE_VCHIQ_ARM -DVCHI_BULK_ALIGN=1 -DVCHI_BULK_GRANULARITY=1)
49 add_definitions(-DOMX_SKIP64BIT)
50 add_definitions(-DEGL_SERVER_DISPMANX)
51 add_definitions(-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64)
52 add_definitions(-D_GNU_SOURCE)
54 # do we actually need this?
55 add_definitions(-D__VIDEOCORE4__)
56 add_definitions(-DTV_SUPPORTED_MODE_NO_DEPRECATED)
58 # add_definitions(-DKHRONOS_CLIENT_LOGGING)
60 # Check for OpenWF-C value set via command line
61 if(KHRONOS_EGL_PLATFORM MATCHES "openwfc")
62 add_definitions(-DKHRONOS_EGL_PLATFORM_OPENWFC)
65 # List of subsidiary CMakeLists
66 add_subdirectory(interface/vcos)
67 add_subdirectory(interface/vmcs_host)
68 add_subdirectory(interface/vchiq_arm)
70 add_subdirectory(interface/khronos)
73 #add_subdirectory(opensrc/tools/lua)
75 include_directories(interface/mmal)
76 add_subdirectory(interface/mmal)
77 add_subdirectory(containers)
80 # VidTex supports Android and Linux
82 add_subdirectory(host_applications/android/apps/vidtex)
83 endif(BUILD_MMAL_APPS)
86 add_subdirectory(middleware/openmaxil)
91 # add_subdirectory(thirdparty/applications/demos)
92 # add_subdirectory(opensrc/applications/demos)
96 # add_subdirectory(thirdparty/applications/test)
99 # FIXME: we should use a pre-packaged version of freetype
100 # rather than the one included in the repo.
101 #add_subdirectory(opensrc/helpers/freetype)
102 #add_subdirectory(${PROJECT_SOURCE_DIR}/opensrc/helpers/fonts/ttf-bitstream-vera)
104 # VMCS Host Applications
105 #add_subdirectory(host_applications/framework)
107 # add_subdirectory(interface/vchiq/test/win32)
109 # Apps and libraries supporting Camera Tuning Tool
110 #add_subdirectory(tools/inet_transport/linux)
111 #add_subdirectory(host_support/vcstandalone)
114 add_subdirectory(host_applications/linux)
115 add_subdirectory(opensrc/helpers/libfdt)
116 add_subdirectory(helpers/dtoverlay)
118 set(vmcs_host_apps_VERSION_MAJOR 1)
119 set(vmcs_host_apps_VERSION_MINOR 0)
121 include_directories("${PROJECT_BINARY_DIR}")
122 include(FindPkgConfig QUIET)
124 # Produce a pkg-config file
125 foreach(PCFILE bcm_host.pc egl.pc glesv2.pc vg.pc brcmegl.pc brcmglesv2.pc brcmvg.pc vcsm.pc mmal.pc )
126 configure_file("pkgconfig/${PCFILE}.in" "${PCFILE}" @ONLY)
127 install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PCFILE}"
128 DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig")
131 # Remove cache entry, if one added by command line
132 unset(KHRONOS_EGL_PLATFORM CACHE)