# set library output path
set(CURRENT_SOURCES
        common/logger.cpp
        common/MINHttpDef.cpp
        server/Server.cpp
        server/Service.cpp
        message/MINWebRequest.cpp
        message/MINWebResponse.cpp
        page/Dir.cpp
        page/MINWebPage.cpp
        tables/CityHash.cpp
        tables/NameTree.cpp
        tables/NameTreeEntry.cpp
        tables/NameTreeHashTable.cpp
        tables/NameTreeIterator.cpp
        tables/RPT.cpp
        tables/RPTEntry.cpp
        http/MINHttpServer.cpp
        http/MINHttpServerImpl.cpp
        http/MINHttpSession.cpp
        http/MINHttpSession.h
        server/FileCache.cpp
        base/MBase.cpp
        )

add_library(MINWebServer SHARED ${CURRENT_SOURCES})
add_library(MINWebServer_static STATIC ${CURRENT_SOURCES})

target_include_directories(MINWebServer
        INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(MINWebServer_static
        INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})

set_target_properties(MINWebServer_static PROPERTIES OUTPUT_NAME "MINWebServer")

##---------------- 以下为用CPack打包成deb包的内容 ----------------##
# 指定deb包的版本号
set(_VERSION_MAJOR 0)
set(_VERSION_MINOR 0)
set(_VERSION_PATCH 1)
set(CPACK_PACKAGE_VERSION_MAJOR "${_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${_VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${_VERSION_PATCH}")
# 指定CPack生成的是deb包（还可以是其他包如 <.7z> <.zip> 等）
set(CPACK_GENERATOR "DEB")
# 指定包名
set(CPACK_PACKAGE_NAME "libMINWebServer-dev")
# 指定程序名，就是程序安装后的名字
set(CPACK_DEBIAN_PACKAGE_NAME "MINWebServer")
# 指定运行的计算机架构
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64")
# 指定所需的依赖
# set(CPACK_DEBIAN_PACKAGE_DEPENDS "libgrpc++")
# 设置包作者的联系方式
set(CPACK_PACKAGE_CONTACT "qjm253@pku.edu.cn")
# 设置维护人
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "members of qjm253@pku.edu.cn")

# 设置依赖
set(CPACK_DEBIAN_PACKAGE_DEPENDS "cmake (>=2.6), libjsoncpp-dev (>=1.7.2), libboost-all-dev (>=1.58.0)")


install(TARGETS MINWebServer MINWebServer_static
        LIBRARY DESTINATION lib
        ARCHIVE DESTINATION lib
        COMPONENT libraries)

install(DIRECTORY base
        DESTINATION include/MINWebServer
        COMPONENT headers
        FILES_MATCHING PATTERN "*.h")
install(DIRECTORY server
        DESTINATION include/MINWebServer
        COMPONENT headers
        FILES_MATCHING PATTERN "*.h")
install(DIRECTORY common
        DESTINATION include/MINWebServer
        COMPONENT headers
        FILES_MATCHING PATTERN "*.h")
install(DIRECTORY message
        DESTINATION include/MINWebServer
        COMPONENT headers
        FILES_MATCHING PATTERN "*.h")
install(DIRECTORY utils
        DESTINATION include/MINWebServer
        COMPONENT headers
        FILES_MATCHING PATTERN "*.h")
install(DIRECTORY page
        DESTINATION include/MINWebServer
        COMPONENT headers
        FILES_MATCHING PATTERN "*.h")
install(DIRECTORY tables
        DESTINATION include/MINWebServer
        COMPONENT headers
        FILES_MATCHING PATTERN "*.h")
install(DIRECTORY http
        DESTINATION include/MINWebServer
        COMPONENT headers
        FILES_MATCHING PATTERN "*.h")

include(CPack)