cmake_minimum_required (VERSION 2.8.12)

project (open-vcdiff CXX C)
set (VERSION 0.8.4)
# For config.h.in to avoid generic define
set (OPEN_VCDIFF_VERSION ${VERSION})
set (PROJECT_SOVERSION 0)


# Configuration options
option (vcdiff_build_exec "Build vcdiff executable" ON)
option (vcdiff_use_system_gflags "Use system wide installed gflags" OFF)
option (vcdiff_use_system_gtest "Use system wide installed gtest" OFF)
option (BUILD_SHARED_LIBS "Request build of shared libraries." OFF)
option (BUILD_STATIC_LIBS "Request build of static libraries (default if BUILD_SHARED_LIBS is OFF)." OFF)
option (BUILD_TESTING "Enable build of the unit tests and their execution using CTest." OFF)

if (NOT BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS)
  set (BUILD_STATIC_LIBS ON)
endif ()

# Add subprojects first so we won't interfere with config.h.in

# Copy value. We'll override BUILD_TESTING for subprojects
set (vcdiff_build_tests ${BUILD_TESTING})

if (vcdiff_build_exec)
  set (GFLAGS_BUILD_gflags_LIB OFF)
  set (GFLAGS_BUILD_gflags_nothreads_LIB ON)
  set (GFLAGS_INSTALL_HEADERS OFF)
  set (GFLAGS_INSTALL_SHARED_LIBS OFF)
  set (GFLAGS_INSTALL_STATIC_LIBS OFF)
  set (BUILD_TESTING OFF)
  if (${vcdiff_use_system_gflags})
    find_library(gflags gflags)
  else()
    add_subdirectory (third_party/gflags)
  endif()
endif ()

include (CheckIncludeFiles)
check_include_files (ext/rope HAVE_EXT_ROPE)
check_include_files (getopt.h HAVE_GETOPT_H)
check_include_files (malloc.h HAVE_MALLOC_H)
check_include_files (sys/mman.h HAVE_SYS_MMAN_H)
check_include_files (sys/time.h HAVE_SYS_TIME_H)
check_include_files (unistd.h HAVE_UNISTD_H)
check_include_files (windows.h HAVE_WINDOWS_H)

include (CheckFunctionExists)
check_function_exists (gettimeofday HAVE_GETTIMEOFDAY)
check_function_exists (memalign HAVE_MEMALIGN)
check_function_exists (posix_memalign HAVE_POSIX_MEMALIGN)
check_function_exists (mprotect HAVE_MPROTECT)

configure_file (${PROJECT_SOURCE_DIR}/src/config.h.in ${PROJECT_BINARY_DIR}/config.h)
include_directories ("${PROJECT_BINARY_DIR}")

include_directories (${PROJECT_SOURCE_DIR}/src)
include_directories (${PROJECT_SOURCE_DIR}/src/zlib)

set (VCDCOM_SRC
  "src/google/format_extension_flags.h"
  "src/google/output_string.h"
  "src/addrcache.h"
  "src/checksum.h"
  "src/codetable.h"
  "src/logging.h"
  "src/unique_ptr.h"
  "src/varint_bigendian.h"
  "src/vcdiff_defs.h"
  "src/zlib/zlib.h"
  "src/zlib/zconf.h"
  "src/zlib/adler32.c"
  "src/addrcache.cc"
  "src/codetable.cc"
  "src/logging.cc"
  "src/varint_bigendian.cc"
)

set (VCDDEC_SRC
  "src/decodetable.cc"
  "src/headerparser.cc"
  "src/vcdecoder.cc"
)

set (VCDENC_SRC
  "src/blockhash.cc"
  "src/encodetable.cc"
  "src/instruction_map.cc"
  "src/jsonwriter.cc"
  "src/vcdiffengine.cc"
  "src/vcencoder.cc"
)

foreach (TYPE IN ITEMS STATIC SHARED)
  if (BUILD_${TYPE}_LIBS)
    add_library (vcdcom_${TYPE} ${TYPE} ${VCDCOM_SRC})
    set_target_properties (vcdcom_${TYPE} PROPERTIES
      OUTPUT_NAME vcdcom
      VERSION ${OPEN_VCDIFF_VERSION}
      SOVERSION ${PROJECT_SOVERSION})

    add_library (vcddec_${TYPE} ${TYPE} ${VCDDEC_SRC})
    set_target_properties (vcddec_${TYPE} PROPERTIES
      OUTPUT_NAME vcddec
      VERSION ${OPEN_VCDIFF_VERSION}
      SOVERSION ${PROJECT_SOVERSION})
    target_link_libraries (vcddec_${TYPE} vcdcom_${TYPE})

    add_library (vcdenc_${TYPE} ${TYPE} ${VCDENC_SRC})
    set_target_properties (vcdenc_${TYPE} PROPERTIES
      OUTPUT_NAME vcdenc
      VERSION ${OPEN_VCDIFF_VERSION}
      SOVERSION ${PROJECT_SOVERSION})
    target_link_libraries (vcdenc_${TYPE} vcdcom_${TYPE})

    install (TARGETS vcdcom_${TYPE} vcdenc_${TYPE} vcddec_${TYPE} DESTINATION lib)

  endif ()  # BUILD_${TYPE}_LIBS
endforeach ()

install (DIRECTORY src/google DESTINATION include)

# Setup aliases for next executable targets
if (BUILD_STATIC_LIBS)
  add_library (vcdcom ALIAS vcdcom_STATIC)
  add_library (vcddec ALIAS vcddec_STATIC)
  add_library (vcdenc ALIAS vcdenc_STATIC)
else ()
  add_library (vcdcom ALIAS vcdcom_SHARED)
  add_library (vcddec ALIAS vcddec_SHARED)
  add_library (vcdenc ALIAS vcdenc_SHARED)
endif()

if (vcdiff_build_exec)
  add_executable (vcdiff "src/vcdiff_main.cc")
  target_link_libraries (vcdiff vcddec vcdenc gflags)
  install (TARGETS vcdiff DESTINATION bin)
  install (FILES man/vcdiff.1 DESTINATION ${CMAKE_INSTALL_PREFIX}/share/man/man1)
endif ()

if (vcdiff_build_tests)
  enable_testing ()
  if (${vcdiff_use_system_gtest})
    find_package (GTest)
    if (${GTEST_FOUND})
      set (gtest_main ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBARY})
      include_directories(${GTEST_INCLUDE_DIRS})
    else()
      # On Debian it doens't install libgtest.a. Instead it provides sources in
      # /usr/src/gtest
      add_subdirectory (/usr/src/gtest gtest)
    endif()
  else()
    set (gtest_install OFF CACHE BOOL "Don't install gtest" FORCE)
    add_subdirectory (third_party/googletest/googletest)
  endif()

  add_executable (addrcache_test src/addrcache_test.cc)
  target_link_libraries (addrcache_test vcdcom gtest_main)
  add_test (addrcache_test addrcache_test)

  add_executable (blockhash_test src/blockhash_test.cc)
  target_link_libraries (blockhash_test vcdenc gtest_main)
  add_test (blockhash_test blockhash_test)

  add_executable (codetable_test src/codetable_test.cc)
  target_link_libraries (codetable_test vcdcom gtest_main)
  add_test (codetable_test codetable_test)

  add_executable (decodetable_test src/decodetable_test.cc)
  target_link_libraries (decodetable_test vcddec vcdcom gtest_main)
  add_test (decodetable_test decodetable_test)

  add_executable (encodetable_test src/encodetable_test.cc)
  target_link_libraries (encodetable_test vcdenc vcdcom gtest_main)
  add_test (encodetable_test encodetable_test)

  add_executable (headerparser_test src/headerparser_test.cc)
  target_link_libraries (headerparser_test vcddec vcdcom gtest_main)
  add_test (headerparser_test headerparser_test)

  add_executable (instruction_map_test src/instruction_map_test.cc)
  target_link_libraries (instruction_map_test vcdenc vcdcom gtest_main)
  add_test (instruction_map_test instruction_map_test)

  add_executable (output_string_test src/output_string_test.cc)
  target_link_libraries (output_string_test gtest_main)
  add_test (output_string_test output_string_test)

  add_executable (rolling_hash_test src/rolling_hash_test.cc)
  target_link_libraries (rolling_hash_test vcdcom gtest_main)
  add_test (rolling_hash_test rolling_hash_test)

  add_executable (varint_bigendian_test src/varint_bigendian_test.cc)
  target_link_libraries (varint_bigendian_test vcdcom gtest_main)
  add_test (varint_bigendian_test varint_bigendian_test)

  add_executable (vcdecoder1_test src/vcdecoder1_test.cc src/vcdecoder_test.cc)
  target_link_libraries (vcdecoder1_test vcddec gtest_main)
  add_test (vcdecoder1_test vcdecoder1_test)

  add_executable (vcdecoder2_test src/vcdecoder2_test.cc src/vcdecoder_test.cc)
  target_link_libraries (vcdecoder2_test vcddec gtest_main)
  add_test (vcdecoder2_test vcdecoder2_test)

  add_executable (vcdecoder3_test src/vcdecoder3_test.cc src/vcdecoder_test.cc)
  target_link_libraries (vcdecoder3_test vcddec gtest_main)
  add_test (vcdecoder3_test vcdecoder3_test)

  add_executable (vcdecoder4_test src/vcdecoder4_test.cc src/vcdecoder_test.cc)
  target_link_libraries (vcdecoder4_test vcddec gtest_main)
  add_test (vcdecoder4_test vcdecoder4_test)

  add_executable (vcdecoder5_test src/vcdecoder5_test.cc src/vcdecoder_test.cc)
  target_link_libraries (vcdecoder5_test vcddec gtest_main)
  add_test (vcdecoder5_test vcdecoder5_test)

  add_executable (vcdiffengine_test src/vcdiffengine_test.cc)
  target_link_libraries (vcdiffengine_test vcdenc vcdcom gtest_main)
  add_test (vcdiffengine_test vcdiffengine_test)

  add_executable (vcencoder_test src/vcencoder_test.cc)
  target_link_libraries (vcencoder_test vcddec vcdenc vcdcom gtest_main)
  add_test (vcencoder_test vcencoder_test)

  add_executable (jsonwriter_test src/jsonwriter_test.cc)
  target_link_libraries (jsonwriter_test vcdenc vcdcom gtest_main)
  add_test (jsonwriter_test jsonwriter_test)

  if (${UNIX})
    add_test (
      NAME vcdiff_test
      COMMAND ${PROJECT_SOURCE_DIR}/src/vcdiff_test.sh ${PROJECT_SOURCE_DIR})
  elseif (${WINDOWS})
    add_test (
      NAME vcdiff_test
      COMMAND ${PROJECT_SOURCE_DIR}/src/vcdiff_test.bat vcdiff)
  endif()

endif ()  # vcdiff_build_tests
