#
# Copyright (C) 2014-2019 Amlogic, Inc. All rights reserved.
#
# All information contained herein is Amlogic confidential.
#
# This software is provided to you pursuant to Software License Agreement
# (SLA) with Amlogic Inc ("Amlogic"). This software may be used
# only in accordance with the terms of this agreement.
#
# Redistribution and use in source and binary forms, with or without
# modification is strictly prohibited without prior written permission from
# Amlogic.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#

cmake_minimum_required(VERSION 3.11)

project(aribcaption_subtitle)

# 设置 C 标准
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++17 -pthread")

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)

# 查找所有源文件
set(aribcaption_subtitle_srcs
        include/aribcaption/aligned_alloc.hpp
        include/aribcaption/aribcaption.h
        include/aribcaption/aribcaption.hpp
        include/aribcaption/aribcc_export.h
        include/aribcaption/caption.h
        include/aribcaption/caption.hpp
        include/aribcaption/color.h
        include/aribcaption/color.hpp
        include/aribcaption/context.h
        include/aribcaption/context.hpp
        include/aribcaption/decoder.h
        include/aribcaption/decoder.hpp
        src/base/aligned_alloc.cpp
        src/base/always_inline.hpp
        src/base/cfstr_helper.hpp
        src/base/floating_helper.hpp
        src/base/language_code.hpp
        src/base/logger.cpp
        src/base/logger.hpp
        src/base/md5.c
        src/base/md5.h
        src/base/md5_helper.hpp
        src/base/result.hpp
        src/base/scoped_cfref.hpp
        src/base/scoped_com_initializer.hpp
        src/base/scoped_holder.hpp
        src/base/unicode_helper.hpp
        src/base/utf_helper.hpp
        src/base/wchar_helper.hpp
        src/common/caption_capi.cpp
        src/common/context.cpp
        src/common/context_capi.cpp
        src/decoder/b24_codesets.cpp
        src/decoder/b24_codesets.hpp
        src/decoder/b24_colors.cpp
        src/decoder/b24_colors.hpp
        src/decoder/b24_controlsets.hpp
        src/decoder/b24_conv_tables.hpp
        src/decoder/b24_drcs_conv.cpp
        src/decoder/b24_drcs_conv.hpp
        src/decoder/b24_gaiji_table.hpp
        src/decoder/b24_macros.hpp
        src/decoder/decoder.cpp
        src/decoder/decoder_capi.cpp
        src/decoder/decoder_impl.cpp
        src/decoder/decoder_impl.hpp
)

#Organize compilation macro control
add_definitions(-Werror) #Must keep this, never allow remove this flag!
add_definitions(-Wno-unused-parameter)
add_definitions(-Wno-unused-function)
add_definitions(-Wno-unused-variable)
add_definitions(-Wno-implicit-fallthrough)
add_definitions(-Wno-invalid-source-encoding) # not throw this when saw utf8 name
add_definitions(-D_REENTRANT)
add_definitions(-D_GNU_SOURCE)
add_definitions(-DENABLE_DVB=1)
add_definitions(-DENABLE_V4L=1)
add_definitions(-DENABLE_V4L2=1)
add_definitions(-DHAVE_ICONV=1)
#add_definitions(-DDEBUG_ANDROID)
#add_definitions(-DARIBCC_USE_FONTCONFIG)
#add_definitions(-DARIBCC_USE_FREETYPE)
add_definitions(-DARIBCC_IS_ANDROID)
add_definitions(-DARIBCC_CUSTOM_SPECIAL_DATA_CONVERSION)

#target_link_libraries(${aribcaption_subtitle} PUBLIC log)

# 添加静态库目标
add_library(aribcaption_subtitle_static STATIC ${aribcaption_subtitle_srcs})

# 设置目标属性
set_target_properties(aribcaption_subtitle_static PROPERTIES OUTPUT_NAME "aribcaption_subtitle")
install(TARGETS aribcaption_subtitle_static DESTINATION lib)
# Install decoder-related public headers
install(
    FILES
        ${CMAKE_CURRENT_SOURCE_DIR}/include/aribcaption/aribcc_export.h
        ${CMAKE_CURRENT_SOURCE_DIR}/include/aribcaption/aribcaption.h
        ${CMAKE_CURRENT_SOURCE_DIR}/include/aribcaption/aribcaption.hpp
        ${CMAKE_CURRENT_SOURCE_DIR}/include/aribcaption/caption.h
        ${CMAKE_CURRENT_SOURCE_DIR}/include/aribcaption/caption.hpp
        ${CMAKE_CURRENT_SOURCE_DIR}/include/aribcaption/color.h
        ${CMAKE_CURRENT_SOURCE_DIR}/include/aribcaption/color.hpp
        ${CMAKE_CURRENT_SOURCE_DIR}/include/aribcaption/context.h
        ${CMAKE_CURRENT_SOURCE_DIR}/include/aribcaption/context.hpp
        ${CMAKE_CURRENT_SOURCE_DIR}/include/aribcaption/decoder.h
        ${CMAKE_CURRENT_SOURCE_DIR}/include/aribcaption/decoder.hpp
    DESTINATION
        ${CMAKE_INSTALL_INCLUDEDIR}/aribcaption
)
