cmake_minimum_required(VERSION 2.6)
project(libril)

#add complie options
set(CMAKE_COMMON_FLAGS " -DANDROID_MULTI_SIM -DMTK_RIL -DMTK_IMS_CHANNEL_SUPPORT -D__unused= -Wall -D_LINUX -DRIL_SHLIB -DENABLE_TRM")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -fPIC -O2 -Wall ${CMAKE_COMMON_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fPIC -O2 -Wall -std=gnu++14 ${CMAKE_COMMON_FLAGS} -Wl,--no-undefined")

#add header files (-I -L)
include_directories("/usr/include/")
include_directories("/usr/include/netagent")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/rilmipc/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/rilmipc/framework/include/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/rilmipc/framework/include/base/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/rilmipc/framework/include/core/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/rilmipc/framework/port/android/include/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/rilmipc/telephony/data/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/rilmipc/telephony/sys/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/rilmipc/telephony/radio/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/rilmipc/telephony/sim/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/rilmipc/telephony/call/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/rilmipc/telephony/ecall/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/rilmipc/telephony/ss/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/rilmipc/telephony/sms/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/rilmipc/telephony/stk/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/rilmipc/telephony/network/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/rilmipc/telephony/ims/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../../platformlib/include/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../../include/librilmtk/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../../misc/nanopb-c/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../../platformlib/include/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../../platformlib/include/mtkpower/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../../platformlib/include/mtkrilutils/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../../platformlib/include/property/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../../platformlib/common/libmtkrilutils/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../../include/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../../platformlib/include/")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../../libratconfig/include/")
include_directories("${MIPC_MSG_INCDIR}/common")
include_directories("${MIPC_MSG_INCDIR}/msg")
include_directories("${MIPC_MSG_INCDIR}/external")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../../platformlib/libmipc/lib/include/api/")


#add source file
set(src_fils ril.cpp ril_event.cpp RilSocket.cpp RilSapSocket.cpp RpNwAdapter.cpp RpUtils.cpp
	rilmipc/framework/port/android/rfx_properties.cpp
	rilmipc/framework/base/RfxMessage.cpp
	rilmipc/framework/base/RfxDebugInfo.cpp
	rilmipc/framework/base/RfxVariant.cpp
	rilmipc/framework/base/RfxDefaultValueTable.cpp
	rilmipc/framework/core/Rfx.cpp
	rilmipc/framework/core/RfxObject.cpp
	rilmipc/framework/core/RfxClassInfo.cpp
	rilmipc/framework/core/RfxAction.cpp
	rilmipc/framework/core/RfxTimer.cpp
	rilmipc/framework/core/RfxAsyncSignal.cpp
	rilmipc/framework/core/RfxController.cpp
	rilmipc/framework/core/RfxControllerFactory.cpp
	rilmipc/framework/core/RfxDispatchThread.cpp
	rilmipc/framework/core/RfxMainThread.cpp
	rilmipc/framework/core/RfxRootController.cpp
	rilmipc/framework/core/RfxSlotRootController.cpp
	rilmipc/framework/core/RilParcelUtils.cpp
	rilmipc/framework/core/RfxStatusManager.cpp
	rilmipc/framework/core/RfxSignal.cpp
	rilmipc/telephony/data/RpDataController.cpp
	rilmipc/telephony/data/RmcDcUtility.cpp
	rilmipc/telephony/data/RmcDcPdnManager.cpp
	rilmipc/telephony/data/MipcUtils.cpp
	rilmipc/telephony/sys/RpSysController.cpp
	rilmipc/telephony/sys/RtcCapabilitySwitchChecker.cpp
	rilmipc/telephony/sys/RtcCapabilitySwitchUtil.cpp
	rilmipc/mipc_adapter.cpp
	rilmipc/telephony/radio/RpRadioController.cpp
	rilmipc/telephony/sim/RpSimController.cpp
	rilmipc/telephony/call/GsmUtil.cpp
	rilmipc/telephony/call/RpCallController.cpp
	rilmipc/telephony/ecall/RpEcallController.cpp
	rilmipc/telephony/ss/RpSsController.cpp
	rilmipc/telephony/ss/RpSsUtils.cpp
	rilmipc/telephony/sms/RpSmsController.cpp
	rilmipc/telephony/stk/RpStkController.cpp
	rilmipc/telephony/network/RpNwController.cpp
	rilmipc/telephony/ims/RpImsController.cpp
	rilmipc/mipc_adapter.cpp)

add_library(rilfusion SHARED ${src_fils})

set(link_libs pthread mipc_api stdc++ mtklog mtkrilutils protobuf-c-nano mtkpower mtkcutils mtkutils mtkbinder mtkproperty rt netagent uciwrapper)
target_link_libraries(rilfusion ${link_libs})

#install
install(TARGETS rilfusion
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
