# Copyright 2021 Xavier Warin
#           2021 Pierre Gruet
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject
# to the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
#

CMAKE_MINIMUM_REQUIRED(VERSION 3.5)
PROJECT(geners)

SET(GENERS_EXTRA_LIBS)
# ZLIB
#********************************
FIND_PACKAGE(ZLIB REQUIRED)
IF (ZLIB_FOUND)
    INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIRS})
    SET(GENERS_EXTRA_LIBS ${GENERS_EXTRA_LIBS} ${ZLIB_LIBRARIES})
ELSE (ZLIB_FOUND)
    MESSAGE("ZLIB NOT FOUND")
ENDIF (ZLIB_FOUND)
# BZ2LIB
FIND_PACKAGE(BZip2  REQUIRED)
IF (BZIP2_FOUND)
   INCLUDE_DIRECTORIES(${BZIP2_INCLUDE_DIR})
   SET(GENERS_EXTRA_LIBS ${GENERS_EXTRA_LIBS} ${BZIP2_LIBRARIES})
ELSE (BZIP2_FOUND)
    MESSAGE("BZip2 NOT FOUND")
ENDIF (BZIP2_FOUND)

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib 
    CACHE PATH "Output directory for static libraries.")

set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib
    CACHE PATH "Output directory for shared libraries.")

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
  CACHE PATH "Output directory for executables and DLL's.")



# SOURCE
SET(SOURCE_DIR_LIB ${PROJECT_SOURCE_DIR}/geners)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR})
FILE(GLOB SOURCE  ${SOURCE_DIR_LIB}/*.cc)
# Library
ADD_LIBRARY(genersDyn SHARED ${SOURCE})
ADD_LIBRARY(genersStat STATIC ${SOURCE})
TARGET_LINK_LIBRARIES(genersDyn ${GENERS_EXTRA_LIBS})
TARGET_LINK_LIBRARIES(genersStat ${GENERS_EXTRA_LIBS})

#install lib
INSTALL(TARGETS genersDyn DESTINATION "lib/${CMAKE_LIBRARY_ARCHITECTURE}")
INSTALL(TARGETS genersStat DESTINATION "lib/${CMAKE_LIBRARY_ARCHITECTURE}")

set_target_properties(genersDyn PROPERTIES
        OUTPUT_NAME geners
        VERSION ${VERSION_GENERS}
        SOVERSION ${SOVERSION_GENERS}
)

set_target_properties(genersStat PROPERTIES
        OUTPUT_NAME geners
)

# install headers
INSTALL(DIRECTORY geners
    DESTINATION "include"
    FILES_MATCHING
    PATTERN "*.hh"
    ${INSTALL_PERMISSIONS_SRC}
  )
INSTALL(DIRECTORY geners
    DESTINATION "include"
    FILES_MATCHING
    PATTERN "*.h"
    ${INSTALL_PERMISSIONS_SRC}
  )

INSTALL(DIRECTORY geners
    DESTINATION "include"
    FILES_MATCHING
    PATTERN "*.icc"
    ${INSTALL_PERMISSIONS_SRC}
  )
