vcgencmd: Apply ASLR
[platform/adaptation/broadcom/libomxil-vc4.git] / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.8)
2
3 project(vmcs_host_apps)
4
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}")
10
11 if(ARM64)
12    set(BUILD_MMAL FALSE)
13    set(BUILD_MMAL_APPS FALSE)
14 else()
15    set(BUILD_MMAL TRUE)
16    set(BUILD_MMAL_APPS TRUE)
17 endif()
18 set(vmcs_root ${PROJECT_SOURCE_DIR})
19 get_filename_component(VIDEOCORE_ROOT . ABSOLUTE)
20
21 set(VCOS_PTHREADS_BUILD_SHARED TRUE)
22
23 include(makefiles/cmake/global_settings.cmake)
24 include(makefiles/cmake/arm-linux.cmake)
25 include(makefiles/cmake/vmcs.cmake)
26
27 enable_language(ASM)
28
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)
41
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")
45 endif()
46
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)
53
54 # do we actually need this?
55 add_definitions(-D__VIDEOCORE4__)
56 add_definitions(-DTV_SUPPORTED_MODE_NO_DEPRECATED)
57
58 # add_definitions(-DKHRONOS_CLIENT_LOGGING)
59
60 # Check for OpenWF-C value set via command line
61 if(KHRONOS_EGL_PLATFORM MATCHES "openwfc")
62    add_definitions(-DKHRONOS_EGL_PLATFORM_OPENWFC)
63 endif()
64
65 # List of subsidiary CMakeLists
66 add_subdirectory(interface/vcos)
67 add_subdirectory(interface/vmcs_host)
68 add_subdirectory(interface/vchiq_arm)
69 if(NOT ARM64)
70    add_subdirectory(interface/khronos)
71 endif()
72
73 #add_subdirectory(opensrc/tools/lua)
74 if(BUILD_MMAL)
75    include_directories(interface/mmal)
76    add_subdirectory(interface/mmal)
77    add_subdirectory(containers)
78 endif()
79
80 # VidTex supports Android and Linux
81 if(BUILD_MMAL_APPS)
82 add_subdirectory(host_applications/android/apps/vidtex)
83 endif(BUILD_MMAL_APPS)
84
85 if(NOT ARM64)
86    add_subdirectory(middleware/openmaxil)
87 endif()
88
89 # 3d demo code
90 #if(NOT ANDROID)
91 #   add_subdirectory(thirdparty/applications/demos)
92 #   add_subdirectory(opensrc/applications/demos)
93 #endif()
94
95 #if(ENABLE_3D_TESTS)
96 #   add_subdirectory(thirdparty/applications/test)
97 #endif()
98
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)
103
104 # VMCS Host Applications
105 #add_subdirectory(host_applications/framework)
106
107 # add_subdirectory(interface/vchiq/test/win32)
108
109 # Apps and libraries supporting Camera Tuning Tool
110 #add_subdirectory(tools/inet_transport/linux)
111 #add_subdirectory(host_support/vcstandalone)
112
113 # add linux apps
114 add_subdirectory(host_applications/linux)
115 add_subdirectory(opensrc/helpers/libfdt)
116 add_subdirectory(helpers/dtoverlay)
117
118 set(vmcs_host_apps_VERSION_MAJOR 1)
119 set(vmcs_host_apps_VERSION_MINOR 0)
120
121 include_directories("${PROJECT_BINARY_DIR}")
122 include(FindPkgConfig QUIET)
123 if(PKG_CONFIG_FOUND)
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")
129         endforeach()
130 endif()
131 # Remove cache entry, if one added by command line
132 unset(KHRONOS_EGL_PLATFORM CACHE)