1# vim: syntax=cmake 2cmake_minimum_required(VERSION 2.6.3) 3PROJECT(osal C CXX) 4INCLUDE(GNUInstallDirs) 5 6find_package(Threads) 7 8set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") 9set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_REENTRANT -D_GNU_SOURCE") 10set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64") 11set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") 12 13set(MPP_ALLOCATOR 14 allocator/allocator_std.c 15 allocator/allocator_ion.c 16 allocator/allocator_ext_dma.c 17 allocator/allocator_dma_heap.c 18 allocator/allocator_drm.c 19) 20 21set(MPP_DRIVER 22 driver/mpp_server.c 23 driver/mpp_device.c 24 driver/mpp_service.c 25 driver/vcodec_service.c 26 driver/mpp_vcodec_client.c 27) 28 29add_library(osal OBJECT 30 mpp_singleton.c 31 mpp_soc.c 32 mpp_platform.c 33 mpp_runtime.c 34 mpp_allocator.c 35 mpp_mem_pool.c 36 mpp_callback.c 37 mpp_eventfd.c 38 mpp_dmabuf.c 39 mpp_thread.c 40 mpp_compat.c 41 mpp_common.c 42 mpp_queue.c 43 mpp_trace.c 44 mpp_lock.c 45 mpp_time.c 46 mpp_list.c 47 mpp_mem.c 48 mpp_env.c 49 mpp_log.c 50 osal_2str.c 51 # Those files have a compiler marco protection, so only target 52 # OS will be built 53 android/os_mem.c 54 android/os_env.c 55 android/os_log.c 56 linux/os_mem.c 57 linux/os_env.c 58 linux/os_log.c 59 ${MPP_ALLOCATOR} 60 ${MPP_DRIVER} 61) 62 63target_link_libraries(osal ${CMAKE_THREAD_LIBS_INIT}) 64 65target_include_directories(osal PUBLIC 66 "${CMAKE_CURRENT_SOURCE_DIR}" 67 "${CMAKE_CURRENT_SOURCE_DIR}/inc" 68 "${CMAKE_CURRENT_SOURCE_DIR}/allocator" 69 "${CMAKE_CURRENT_SOURCE_DIR}/driver/inc" 70) 71 72set_target_properties(osal PROPERTIES FOLDER "osal") 73 74# leave those special platform here 75if(ANDROID) 76 add_definitions(-static) 77 # in Android pthread is in libc, also need liblog 78 # Android 14 requires libc++ not libstdc++ 79 if("${ANDROID_STL}" STREQUAL "c++_static") 80 target_link_libraries(osal log ${LIBM}) 81 else() 82 target_link_libraries(osal log stdc++ ${LIBM}) 83 endif() 84endif(ANDROID) 85 86# unit test 87add_subdirectory(test) 88