1*4882a593Smuzhiyun# vim: syntax=cmake 2*4882a593Smuzhiyuncmake_minimum_required(VERSION 2.6.3) 3*4882a593SmuzhiyunPROJECT(osal C CXX) 4*4882a593SmuzhiyunINCLUDE(GNUInstallDirs) 5*4882a593Smuzhiyun 6*4882a593Smuzhiyunfind_package(Threads) 7*4882a593Smuzhiyun 8*4882a593Smuzhiyunset(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") 9*4882a593Smuzhiyunset(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_REENTRANT -D_GNU_SOURCE") 10*4882a593Smuzhiyunset(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64") 11*4882a593Smuzhiyunset(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") 12*4882a593Smuzhiyun 13*4882a593Smuzhiyunif (HAVE_DRM) 14*4882a593Smuzhiyun add_definitions(-DHAVE_DRM) 15*4882a593Smuzhiyun set(DRM_FILES allocator/allocator_drm.c) 16*4882a593Smuzhiyun message(STATUS "compile with drm support") 17*4882a593Smuzhiyunelse() 18*4882a593Smuzhiyun message(STATUS "compile without drm support") 19*4882a593Smuzhiyunendif() 20*4882a593Smuzhiyun 21*4882a593Smuzhiyunset(MPP_ALLOCATOR 22*4882a593Smuzhiyun allocator/allocator_std.c 23*4882a593Smuzhiyun allocator/allocator_ion.c 24*4882a593Smuzhiyun allocator/allocator_ext_dma.c 25*4882a593Smuzhiyun allocator/allocator_dma_heap.c 26*4882a593Smuzhiyun ${DRM_FILES} 27*4882a593Smuzhiyun) 28*4882a593Smuzhiyun 29*4882a593Smuzhiyunset(MPP_DRIVER 30*4882a593Smuzhiyun driver/mpp_server.cpp 31*4882a593Smuzhiyun driver/mpp_device.c 32*4882a593Smuzhiyun driver/mpp_service.c 33*4882a593Smuzhiyun driver/vcodec_service.c 34*4882a593Smuzhiyun) 35*4882a593Smuzhiyun 36*4882a593Smuzhiyunadd_library(osal STATIC 37*4882a593Smuzhiyun mpp_soc.cpp 38*4882a593Smuzhiyun mpp_platform.cpp 39*4882a593Smuzhiyun mpp_runtime.cpp 40*4882a593Smuzhiyun mpp_allocator.cpp 41*4882a593Smuzhiyun mpp_mem_pool.cpp 42*4882a593Smuzhiyun mpp_callback.cpp 43*4882a593Smuzhiyun mpp_eventfd.cpp 44*4882a593Smuzhiyun mpp_thread.cpp 45*4882a593Smuzhiyun mpp_compat.cpp 46*4882a593Smuzhiyun mpp_common.cpp 47*4882a593Smuzhiyun mpp_queue.cpp 48*4882a593Smuzhiyun mpp_trace.cpp 49*4882a593Smuzhiyun mpp_lock.cpp 50*4882a593Smuzhiyun mpp_time.cpp 51*4882a593Smuzhiyun mpp_list.cpp 52*4882a593Smuzhiyun mpp_mem.cpp 53*4882a593Smuzhiyun mpp_env.cpp 54*4882a593Smuzhiyun mpp_log.cpp 55*4882a593Smuzhiyun osal_2str.c 56*4882a593Smuzhiyun # Those files have a compiler marco protection, so only target 57*4882a593Smuzhiyun # OS will be built 58*4882a593Smuzhiyun android/os_allocator.c 59*4882a593Smuzhiyun android/os_mem.c 60*4882a593Smuzhiyun android/os_env.c 61*4882a593Smuzhiyun android/os_log.c 62*4882a593Smuzhiyun linux/os_allocator.c 63*4882a593Smuzhiyun linux/os_mem.c 64*4882a593Smuzhiyun linux/os_env.c 65*4882a593Smuzhiyun linux/os_log.cpp 66*4882a593Smuzhiyun windows/os_allocator.c 67*4882a593Smuzhiyun windows/os_mem.c 68*4882a593Smuzhiyun windows/os_env.c 69*4882a593Smuzhiyun windows/os_log.c 70*4882a593Smuzhiyun ${MPP_ALLOCATOR} 71*4882a593Smuzhiyun ${MPP_DRIVER} 72*4882a593Smuzhiyun) 73*4882a593Smuzhiyun 74*4882a593Smuzhiyuntarget_link_libraries(osal ${CMAKE_THREAD_LIBS_INIT}) 75*4882a593Smuzhiyun 76*4882a593Smuzhiyuntarget_include_directories(osal PUBLIC 77*4882a593Smuzhiyun "${CMAKE_CURRENT_SOURCE_DIR}" 78*4882a593Smuzhiyun "${CMAKE_CURRENT_SOURCE_DIR}/inc" 79*4882a593Smuzhiyun "${CMAKE_CURRENT_SOURCE_DIR}/allocator" 80*4882a593Smuzhiyun "${CMAKE_CURRENT_SOURCE_DIR}/driver/inc" 81*4882a593Smuzhiyun) 82*4882a593Smuzhiyun 83*4882a593Smuzhiyunset_target_properties(osal PROPERTIES FOLDER "osal") 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun# leave those special platform here 86*4882a593Smuzhiyunif(ANDROID) 87*4882a593Smuzhiyun add_definitions(-static) 88*4882a593Smuzhiyun # in Android pthread is in libc, also need liblog 89*4882a593Smuzhiyun target_link_libraries(osal log m) 90*4882a593Smuzhiyunendif(ANDROID) 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun# unit test 93*4882a593Smuzhiyunadd_subdirectory(test) 94