xref: /OK3568_Linux_fs/external/linux-rga/CMakeLists.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyuncmake_minimum_required(VERSION 3.5)
2*4882a593Smuzhiyun
3*4882a593Smuzhiyuninclude(${CMAKE_SOURCE_DIR}/cmake/utils.cmake)
4*4882a593Smuzhiyun
5*4882a593Smuzhiyunif (EXISTS ${BUILD_TOOLCHAINS_PATH})
6*4882a593Smuzhiyun    message("load ${BUILD_TOOLCHAINS_PATH}")
7*4882a593Smuzhiyun    include(${BUILD_TOOLCHAINS_PATH})
8*4882a593Smuzhiyunendif()
9*4882a593Smuzhiyun
10*4882a593Smuzhiyunproject(rga)
11*4882a593Smuzhiyun
12*4882a593Smuzhiyunif(NOT CMAKE_BUILD_TYPE)
13*4882a593Smuzhiyun    message("default to Release build for GCC builds")
14*4882a593Smuzhiyun    set(CMAKE_BUILD_TYPE Release CACHE STRING
15*4882a593Smuzhiyun        "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel."
16*4882a593Smuzhiyun        FORCE)
17*4882a593Smuzhiyunendif()
18*4882a593Smuzhiyun
19*4882a593Smuzhiyunif(CMAKE_BUILD_TARGET STREQUAL android_ndk)
20*4882a593Smuzhiyun    message("cmake build android ndk")
21*4882a593Smuzhiyun    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wno-error -DLOG_TAG=librga")
22*4882a593Smuzhiyun    add_compile_options(-DLINUX)
23*4882a593Smuzhiyun    add_compile_options(-DANDROID_VNDK)
24*4882a593Smuzhiyun    string(REPLACE "-DANDROID" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
25*4882a593Smuzhiyunendif()
26*4882a593Smuzhiyun
27*4882a593Smuzhiyunif(CMAKE_BUILD_TARGET STREQUAL buildroot)
28*4882a593Smuzhiyun    message("cmake build buildroot")
29*4882a593Smuzhiyun    set(CMAKE_CXX_FLAGS "-std=c++11 -O2 -pthread")
30*4882a593Smuzhiyun    add_compile_options(-DLINUX)
31*4882a593Smuzhiyunendif()
32*4882a593Smuzhiyun
33*4882a593Smuzhiyunif(CMAKE_BUILD_TARGET STREQUAL cmake_linux)
34*4882a593Smuzhiyun    message("RGA build with cmake")
35*4882a593Smuzhiyun    add_compile_options(-DLINUX)
36*4882a593Smuzhiyun    # TO support pass external CMAKE_CXX_FLAGS
37*4882a593Smuzhiyun    set(CMAKE_CXX_FLAGS_EXT "-std=c++11 -O2 -pthread -fdata-sections -ffunction-sections -fno-exceptions -fno-rtti")
38*4882a593Smuzhiyun
39*4882a593Smuzhiyun    if (NOT DEFINED CMAKE_C_COMPILER)
40*4882a593Smuzhiyun        message(FATAL_ERROR "RGA: CMAKE_C_COMPILER not define")
41*4882a593Smuzhiyun    endif()
42*4882a593Smuzhiyun
43*4882a593Smuzhiyun    if (NOT DEFINED CMAKE_CXX_COMPILER)
44*4882a593Smuzhiyun        message(FATAL_ERROR "RGA: CMAKE_CXX_COMPILER not define")
45*4882a593Smuzhiyun    endif()
46*4882a593Smuzhiyun
47*4882a593Smuzhiyunendif()
48*4882a593Smuzhiyun
49*4882a593Smuzhiyunif (BUILD_WITH_VERSION STREQUAL true)
50*4882a593Smuzhiyun    im2d_api_extract_version()
51*4882a593Smuzhiyunendif()
52*4882a593Smuzhiyun
53*4882a593Smuzhiyunset(IM2D_SRCS
54*4882a593Smuzhiyun    core/utils/android_utils/src/android_utils.cpp
55*4882a593Smuzhiyun    core/utils/drm_utils/src/drm_utils.cpp
56*4882a593Smuzhiyun    core/utils/utils.cpp
57*4882a593Smuzhiyun    core/RockchipRga.cpp
58*4882a593Smuzhiyun    core/GrallocOps.cpp
59*4882a593Smuzhiyun    core/NormalRga.cpp
60*4882a593Smuzhiyun    core/NormalRgaApi.cpp
61*4882a593Smuzhiyun    core/RgaUtils.cpp
62*4882a593Smuzhiyun    core/RgaApi.cpp
63*4882a593Smuzhiyun    core/rga_sync.cpp
64*4882a593Smuzhiyun    im2d_api/src/im2d_log.cpp
65*4882a593Smuzhiyun    im2d_api/src/im2d_impl.cpp
66*4882a593Smuzhiyun    im2d_api/src/im2d.cpp)
67*4882a593Smuzhiyun
68*4882a593Smuzhiyunset(IM2D_INCLUDE
69*4882a593Smuzhiyun    ./
70*4882a593Smuzhiyun    ./im2d_api
71*4882a593Smuzhiyun    ./include
72*4882a593Smuzhiyun    ./core
73*4882a593Smuzhiyun    ./core/hardware
74*4882a593Smuzhiyun    ./core/utils
75*4882a593Smuzhiyun    ./core/3rdparty/libdrm/include/drm
76*4882a593Smuzhiyun    hardware/libhardware/include/hardware
77*4882a593Smuzhiyun    hardware/libhardware/modules/gralloc
78*4882a593Smuzhiyun    system/core/liblog/includeNDROID_NDK_REVISION_REGEX
79*4882a593Smuzhiyun    system/core/libion/kernel-headers)
80*4882a593Smuzhiyun
81*4882a593Smuzhiyunset(IM2D_PUBLIC_HEADER
82*4882a593Smuzhiyun    im2d_api/im2d_version.h
83*4882a593Smuzhiyun    im2d_api/im2d_type.h
84*4882a593Smuzhiyun    im2d_api/im2d_buffer.h
85*4882a593Smuzhiyun    im2d_api/im2d_common.h
86*4882a593Smuzhiyun    im2d_api/im2d_single.h
87*4882a593Smuzhiyun    im2d_api/im2d_task.h
88*4882a593Smuzhiyun    im2d_api/im2d_mpi.h
89*4882a593Smuzhiyun    im2d_api/im2d_expand.h
90*4882a593Smuzhiyun    im2d_api/im2d.h
91*4882a593Smuzhiyun    im2d_api/im2d.hpp
92*4882a593Smuzhiyun    include/drmrga.h
93*4882a593Smuzhiyun    include/rga.h
94*4882a593Smuzhiyun    include/RgaApi.h
95*4882a593Smuzhiyun    include/RockchipRga.h
96*4882a593Smuzhiyun    include/RgaUtils.h
97*4882a593Smuzhiyun    include/RgaSingleton.h
98*4882a593Smuzhiyun    include/RgaMutex.h
99*4882a593Smuzhiyun    include/GrallocOps.h
100*4882a593Smuzhiyun)
101*4882a593Smuzhiyun
102*4882a593Smuzhiyunset(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_EXT} -DUN_NEED_GL")
103*4882a593Smuzhiyun
104*4882a593Smuzhiyun#build object
105*4882a593Smuzhiyunset(OBJECT_NAME ${PROJECT_NAME}-object)
106*4882a593Smuzhiyun
107*4882a593Smuzhiyunadd_library(${OBJECT_NAME} OBJECT ${IM2D_SRCS})
108*4882a593Smuzhiyun
109*4882a593Smuzhiyuntarget_include_directories(${OBJECT_NAME} PUBLIC ${IM2D_INCLUDE})
110*4882a593Smuzhiyun# Some older compilers need to explicitly set this property
111*4882a593Smuzhiyun# After setting this property, it can be used to generate a shared library
112*4882a593Smuzhiyunset_target_properties(${OBJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE 1)
113*4882a593Smuzhiyun
114*4882a593Smuzhiyun# build shared lib
115*4882a593Smuzhiyunset(SHARED_LIB_NAME ${PROJECT_NAME})
116*4882a593Smuzhiyun
117*4882a593Smuzhiyunadd_library(${SHARED_LIB_NAME} SHARED $<TARGET_OBJECTS:${OBJECT_NAME}>)
118*4882a593Smuzhiyun
119*4882a593Smuzhiyuntarget_include_directories(${SHARED_LIB_NAME} PUBLIC ${IM2D_INCLUDE})
120*4882a593Smuzhiyun
121*4882a593Smuzhiyunif(NOT DEFINED IM2D_API_VERSION)
122*4882a593Smuzhiyun    set_target_properties(${SHARED_LIB_NAME} PROPERTIES
123*4882a593Smuzhiyun        PUBLIC_HEADER "${IM2D_PUBLIC_HEADER}")
124*4882a593Smuzhiyunelse ()
125*4882a593Smuzhiyun    message("Generated im2d api version: v${IM2D_API_VERSION}")
126*4882a593Smuzhiyun    set_target_properties(${SHARED_LIB_NAME} PROPERTIES
127*4882a593Smuzhiyun        PUBLIC_HEADER "${IM2D_PUBLIC_HEADER}"
128*4882a593Smuzhiyun        VERSION ${IM2D_API_VERSION} SOVERSION ${IM2D_API_VERSION_MAJOR})
129*4882a593Smuzhiyunendif()
130*4882a593Smuzhiyun
131*4882a593Smuzhiyun# build static lib
132*4882a593Smuzhiyunset(STATIC_LIB_NAME ${PROJECT_NAME}-static)
133*4882a593Smuzhiyun
134*4882a593Smuzhiyunadd_library(${STATIC_LIB_NAME} STATIC $<TARGET_OBJECTS:${OBJECT_NAME}>)
135*4882a593Smuzhiyun
136*4882a593Smuzhiyuntarget_include_directories(${STATIC_LIB_NAME} PUBLIC ${IM2D_INCLUDE})
137*4882a593Smuzhiyunset_target_properties(${STATIC_LIB_NAME} PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
138*4882a593Smuzhiyun
139*4882a593Smuzhiyun# If cmake version is 3.5.1, FIXIT
140*4882a593Smuzhiyunif (NOT DEFINED CMAKE_INSTALL_LIBDIR)
141*4882a593Smuzhiyun    set(CMAKE_INSTALL_LIBDIR lib)
142*4882a593Smuzhiyunendif()
143*4882a593Smuzhiyun
144*4882a593Smuzhiyunif (NOT DEFINED CMAKE_INSTALL_INCLUDEDIR)
145*4882a593Smuzhiyun    set(CMAKE_INSTALL_INCLUDEDIR include)
146*4882a593Smuzhiyunendif()
147*4882a593Smuzhiyun
148*4882a593Smuzhiyuninstall(TARGETS ${SHARED_LIB_NAME}
149*4882a593Smuzhiyun        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
150*4882a593Smuzhiyun        PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
151*4882a593Smuzhiyuninstall(TARGETS  ${STATIC_LIB_NAME}
152*4882a593Smuzhiyun        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
153*4882a593Smuzhiyun
154*4882a593Smuzhiyun# build im2d api demo
155*4882a593Smuzhiyunadd_subdirectory(samples/im2d_api_demo)
156*4882a593Smuzhiyun#add_subdirectory(samples)
157