blob: 3d56859e4927a061cb6c82836bad72c85d4ba01a [file] [log] [blame]
cmake_minimum_required(VERSION 3.4.1)
include("../protobuf/protobuf.cmake")
set( MODPB64_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../external/modp_b64")
set( THIRDPARTY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../third_party")
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -Werror -Wthread-safety" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D _LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS -O3 -fPIC" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffunction-sections -fdata-sections" )
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -g0")
if (${CMAKE_BUILD_TYPE} STREQUAL "Release")
set( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--gc-sections,-s")
endif (${CMAKE_BUILD_TYPE} STREQUAL "Release")
set( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--hash-style=both" )
protobuf_generate_nano_c( ${CMAKE_CURRENT_SOURCE_DIR}/proto
proto/tuningfork.proto)
protobuf_generate_nano_c( ${CMAKE_CURRENT_SOURCE_DIR}/proto
proto/descriptor.proto)
include_directories(${PROTOBUF_NANO_SRC_DIR})
include_directories( ../../include )
include_directories( ../../src/swappy )
include_directories( ../common )
include_directories( ${MODPB64_DIR}/modp_b64)
include_directories( ${THIRDPARTY_DIR} )
include_directories( ${THIRDPARTY_DIR}/date/include )
include_directories(${PROTO_GENS_DIR})
# Needed for descriptor.pb.cc
add_definitions(-DPB_FIELD_16BIT)
set( TUNINGFORK_SRCS
crash_handler.cpp
histogram.cpp
prong.cpp
uploadthread.cpp
tuningfork.cpp
tuningfork_c.cpp
protobuf_util.cpp
annotation_util.cpp
tuningfork_extra.cpp
tuningfork_utils.cpp
tuningfork_settings.cpp
tuningfork_swappy.cpp
unity_tuningfork.cpp
fpdownload.cpp
ge_backend.cpp
ge_serializer.cpp
file_cache.cpp
web.cpp
jni_helper.cpp
jni_wrap.cpp
jnictx.cpp
debug_upload.cpp
${THIRDPARTY_DIR}/json11/json11.cpp
${MODPB64_DIR}/modp_b64.cc
${PROTO_GENS_DIR}/nano/tuningfork.pb.c
${PROTO_GENS_DIR}/nano/descriptor.pb.c)
add_library( tuningfork_static
STATIC ${TUNINGFORK_SRCS} ${PROTOBUF_NANO_SRCS})
set_target_properties( tuningfork_static PROPERTIES
COMPILE_OPTIONS "-DPROTOBUF_NANO" )
function(build_shared libname version)
add_library( ${libname}
SHARED ${TUNINGFORK_SRCS} ${PROTOBUF_NANO_SRCS})
set_target_properties( ${libname} PROPERTIES COMPILE_OPTIONS "-DPROTOBUF_NANO" )
target_link_libraries( ${libname}
android
log)
set_link_options(${libname} ${version})
endfunction()
build_shared( tuningfork "${CMAKE_CURRENT_LIST_DIR}/version.script")
build_shared( unitytuningfork "${CMAKE_CURRENT_LIST_DIR}/unity_version.script")