set(DVDCSS_VERSION 1.2.10)

include_directories(${CMAKE_CURRENT_BINARY_DIR})

plex_find_headers(HEADERS dlfcn.h unistd.h sys/param.h limits.h pwd.h errno.h windows.h sys/ioctl.h linux/cdrom.h IOKit/storage/IODVDMediaBSDClient.h)

set(CAN_BUILD 1)
if(HAVE_SYS_IOCTL_H)
  if(HAVE_LINUX_CDROM_H)
    set(DVD_STRUCT_IN_LINUX_CDROM_H 1 CACHE BOOL "Using Linux DVD Support")
    set(HAVE_LINUX_DVD_STRUCT 1 CACHE BOOL "Have DVD struct under linux")
  elseif(HAVE_IOKIT_STORAGE_IODVDMEDIABSDCLIENT_H)
    set(DARWIN_DVD_IOCTL 1 CACHE BOOL "Using Darwin DVD Support")
  else(HAVE_LINUX_CDROM_H)
    message(STATUS "LIBDVDCSS: No DVD Support, disabling...")
    set(CAN_BUILD 0)
  endif(HAVE_LINUX_CDROM_H)
endif(HAVE_SYS_IOCTL_H)

configure_file(config_plex.h.in config.h)

add_definitions(-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DDVDCSS_DIST -DVERSION="${DVDCSS_VERSION}" -D_XBMC)
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${PLEX_LINK_WRAPPED}")

find_all_sources(src dvdcss_SRC)
list(REMOVE_ITEM dvdcss_SRC src/bsdi_ioctl.c src/bsdi_dvd.h)

if(CAN_BUILD)
  add_library(dvdcss STATIC ${dvdcss_SRC})
  
  add_library(dvdcss-${ARCH} MODULE ${dvdcss_SRC})
  target_link_libraries(dvdcss-${ARCH} wrapper)
  
  if(TARGET_COMMON_DARWIN)
    install(TARGETS dvdcss-${ARCH} DESTINATION ${RESOURCEPATH}/system/players/dvdplayer COMPONENT RUNTIME)
  elseif(TARGET_COMMON_LINUX OR TARGET_FREEBSD)
    install(TARGETS dvdcss-${ARCH} DESTINATION ${LIBPATH}/system/players/dvdplayer COMPONENT RUNTIME)
  elseif(TARGET_WIN32)
    install(TARGETS dvdcss RUNTIME DESTINATION ${RESOURCEPATH}/system/players/dvdplayer LIBRARY DESTINATION ${RESOURCEPATH}/system COMPONENT RUNTIME)
  endif(TARGET_COMMON_DARWIN)
endif(CAN_BUILD)
