cmake_minimum_required(VERSION 2.6)

include_directories("${CMAKE_CURRENT_BINARY_DIR}/../" "${CMAKE_CURRENT_SOURCE_DIR}")

macro (add_iop _lib _src)
  string(LENGTH ${_lib} _lib_namelength)
  if(${_lib_namelength} GREATER 19)
    message(FATAL_ERROR "IOP name \"${_lib}\" is too long (${_lib_namelength} symbols), it should not be greater than 19 symbols.")
  endif(${_lib_namelength} GREATER 19)

  set(_input ${CMAKE_CURRENT_SOURCE_DIR}/${_src})
  set(_output ${CMAKE_CURRENT_BINARY_DIR}/introspection_${_src}) # keep ${_src} in the end to keep the file extension (c vs. cc)
  add_custom_command(
    DEPENDS ${_input} ${CMAKE_SOURCE_DIR}/src/common/introspection.h
    OUTPUT ${_output}
    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tools/introspection/
    COMMAND ${perl_BIN} ${CMAKE_SOURCE_DIR}/tools/introspection/parser.pl ${CMAKE_CURRENT_SOURCE_DIR}/../ ${_input} ${_output}
  )
  add_library(${_lib} MODULE ${_output})
  target_link_libraries(${_lib} ${LIBS})
  install(TARGETS  ${_lib} DESTINATION ${LIB_INSTALL}/darktable/plugins)
endmacro (add_iop)

add_iop(rawprepare "rawprepare.c")
add_iop(soften "soften.c")
add_iop(bloom "bloom.c")
add_iop(highpass "highpass.c")
add_iop(lowpass "lowpass.c")
add_iop(shadhi "shadhi.c")
add_iop(colorreconstruct "colorreconstruction.c")
add_iop(tonemap "tonemap.cc")
add_iop(tonecurve "tonecurve.c")
add_iop(colisa "colisa.c")
add_iop(gamma "gamma.c")
add_iop(temperature "temperature.c")
add_iop(colorcorrection "colorcorrection.c")
add_iop(exposure "exposure.c")
add_iop(equalizer "equalizer.c")
add_iop(colorbalance "colorbalance.c")
add_iop(colorin "colorin.c")
add_iop(colorout "colorout.c")
add_iop(clipping "clipping.c")
add_iop(sharpen "sharpen.c")
add_iop(dither "dither.c")
add_iop(monochrome "monochrome.c")
add_iop(basecurve "basecurve.c")
add_iop(colorzones "colorzones.c")
add_iop(highlights "highlights.c")
add_iop(velvia "velvia.c")
add_iop(vignette "vignette.c")
add_iop(splittoning "splittoning.c")
add_iop(grain "grain.c")
add_iop(clahe "clahe.c")
add_iop(bilateral "bilateral.cc")
add_iop(profile_gamma "profile_gamma.c")
add_iop(colortransfer "colortransfer.c")
add_iop(colormapping "colormapping.c")
add_iop(channelmixer "channelmixer.c")
add_iop(graduatednd "graduatednd.c")
add_iop(relight "relight.c")
add_iop(zonesystem "zonesystem.c")
add_iop(demosaic "demosaic.c")
add_iop(rotatepixels "rotatepixels.c")
add_iop(scalepixels "scalepixels.c")
add_iop(atrous "atrous.c")
add_iop(cacorrect "cacorrect.c")
add_iop(overexposed "overexposed.c")
add_iop(hotpixels "hotpixels.c")
add_iop(lowlight "lowlight.c")
add_iop(spots "spots.c")
add_iop(rawdenoise "rawdenoise.c")
add_iop(borders "borders.c")
add_iop(nlmeans "nlmeans.c")
add_iop(colorcontrast "colorcontrast.c")
add_iop(levels "levels.c")
add_iop(colorize "colorize.c")
add_iop(invert "invert.c")
add_iop(vibrance "vibrance.c")
add_iop(flip "flip.c")
add_iop(finalscale "finalscale.c")
add_iop(globaltonemap "globaltonemap.c")
add_iop(bilat "bilat.c")
add_iop(denoiseprofile "denoiseprofile.c")
add_iop(defringe "defringe.c")

if(RSVG2_FOUND)
  add_iop(watermark "watermark.c")
endif(RSVG2_FOUND)

if(LENSFUN_FOUND)
  add_iop(lens "lens.c")
endif(LENSFUN_FOUND)
