Contents

cmake_minimum_required(VERSION 3.1.0)

set(PROJECT_NAME "plv8")
set(PROJECT_ID "plv8")

set(VENDOR "")

set(VERSION_MAJOR "3")
set(VERSION_MINOR "1")
set(VERSION_PATCH "0")

set(VERSION_FULL "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")

project("${PROJECT_ID}")

set(POSTGRESQL_DIR "${CMAKE_INSTALL_PREFIX}"
  CACHE PATH "PostgreSQL binary directory")
set(POSTGRESQL_VERSION "unknown"
  CACHE STRING "PostgreSQL version")

set(LIBRARY_NAME "lib${PROJECT_ID}")

set(EXTENSION_DIR "lib")
set(EXTENSION_DATA_DIR "share/extension")
set(DOCUMENT_DIR "share/${PROJECT_ID}")

set(SOURCES
  "coffee-script.cc"
  "livescript.cc"
  "../plv8.cc"
  "../plv8_func.cc"
  "../plv8_param.cc"
  "../plv8_type.cc")


include_directories(
  "${POSTGRESQL_DIR}/include/server/port/win32_msvc"
  "${POSTGRESQL_DIR}/include/server/port/win32"
  "${POSTGRESQL_DIR}/include/server"
  "${POSTGRESQL_DIR}/include"
  "vendor/v8/include"
  ".")

link_directories(
  "${POSTGRESQL_DIR}/lib")

add_library("${LIBRARY_NAME}" SHARED ${SOURCES})
set_target_properties("${LIBRARY_NAME}"
   PROPERTIES
   OUTPUT_NAME "${PROJECT_ID}")

set_source_files_properties(${SOURCES}
  PROPERTIES
  COMPILE_FLAGS "/EHsc")

target_link_libraries("${LIBRARY_NAME}"
  "postgres.lib"
  "vendor/v8/out.gn/x64.release/v8.dll"
  "vendor/v8/out.gn/x64.release/v8_libbase.dll"
  "vendor/v8/out.gn/x64.release/v8_libplatform.dll")

install(TARGETS "${LIBRARY_NAME}"
  DESTINATION "${EXTENSION_DIR}")

install(FILES
  "${PROJECT_ID}.control"
  DESTINATION "${EXTENSION_DATA_DIR}")

install(FILES
  "plcoffee.control"
  DESTINATION "${EXTENSION_DATA_DIR}")

install(FILES
  "plls.control"
  DESTINATION "${EXTENSION_DATA_DIR}")

install(FILES
  "${PROJECT_ID}--${VERSION_FULL}.sql"
  DESTINATION "${EXTENSION_DATA_DIR}")

install(FILES
  "plcoffee--${VERSION_FULL}.sql"
  DESTINATION "${EXTENSION_DATA_DIR}")

install(FILES
  "plls--${VERSION_FULL}.sql"
  DESTINATION "${EXTENSION_DATA_DIR}")

install(FILES
  "./vendor/v8/out.gn/x64.release/v8.dll"
  DESTINATION "bin")
install(FILES
  "./vendor/v8/out.gn/x64.release/v8_libbase.dll"
  DESTINATION "bin")
install(FILES
  "./vendor/v8/out.gn/x64.release/v8_libplatform.dll"
  DESTINATION "bin")

set(CPACK_GENERATOR "ZIP")
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY OFF)
set(CPACK_PACKAGE_VERSION_MAJOR "${VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${VERSION_MICRO}")
set(CPACK_PACKAGE_VENDOR "${VENDOR}")
if(CMAKE_CL_64)
  set(PLV8_SYSTEM_NAME "x64")
else()
  set(PLV8_SYSTEM_NAME "x86")
endif()
set(CPACK_PACKAGE_FILE_NAME
  "${PROJECT_ID}-${VERSION_FULL}-postgresql-${POSTGRESQL_VERSION}-${PLV8_SYSTEM_NAME}")

include(CPack)