CMakeLists.txt 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. cmake_minimum_required(VERSION 2.6)
  2. # --- Set sources -------------------------------------------------------------
  3. set(ufofilter_SRCS
  4. ufo-scale-task.c
  5. ufo-padding-2d-task.c
  6. ufo-lamino-bp-task.c
  7. # ufo-filter-lamino-bp-generic.c
  8. #ufo-filter-3d-edf-writer.c
  9. #ufo-filter-padding-2d.c
  10. #ufo-filter-lamino-ramp.c
  11. #ufo-filter-lamino-ft-conv.c
  12. )
  13. set(ufofilter_KERNELS
  14. scale.cl
  15. lamino_bp_generic.cl
  16. padding_2d.cl
  17. lamino_ramp.cl
  18. lamino_ft_conv.cl
  19. )
  20. set(ufofilter_LIBS
  21. ${UFO_LIBRARIES}
  22. ${GLIB2_LIBRARIES}
  23. ${GOBJECT2_LIBRARIES}
  24. )
  25. set(ufofilter_HEADERS
  26. lamino-filter-def.h
  27. )
  28. link_directories(${UFO_LIBRARY_DIRS})
  29. # --- Target ------------------------------------------------------------------
  30. include_directories(${CMAKE_CURRENT_BINARY_DIR})
  31. get_property(LIB64 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS)
  32. set(LIB_INSTALL_DIR "lib${LIB_SUFFIX}/ufo")
  33. set(shared_objects "")
  34. set(documented_types "")
  35. set(all_targets)
  36. foreach(_src ${ufofilter_SRCS})
  37. # find plugin suffix
  38. string(REGEX REPLACE "ufo-([^ \\.]+)-task.*" "\\1" task "${_src}")
  39. # build string to get miscalleanous sources
  40. string(REPLACE "-" "_" _misc ${task})
  41. string(TOUPPER ${_misc} _misc_upper)
  42. # create an option name and add this to disable filters
  43. set(target_option "ENABLE_${_misc_upper}")
  44. option(${target_option} "Build filter ${task}" ON)
  45. if (${target_option})
  46. set(documented_types "${documented_types}\nufo_${_misc}_task_get_type")
  47. set(_misc "${_misc}_misc_SRCS")
  48. string(REPLACE "-" "" _targetname ${task})
  49. set(target "ufofilter${_targetname}")
  50. set(shared_objects "${shared_objects} -l${target}")
  51. # build single shared library per filter
  52. if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
  53. add_library(${target} MODULE ${_src} ${${_misc}})
  54. else()
  55. add_library(${target} SHARED ${_src} ${${_misc}})
  56. endif()
  57. target_link_libraries(${target} ${ufofilter_LIBS})
  58. list(APPEND all_targets ${target})
  59. install(TARGETS ${target}
  60. ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
  61. LIBRARY DESTINATION ${LIB_INSTALL_DIR})
  62. endif()
  63. endforeach()
  64. # copy kernels into $LIB_INSTALL_DIR
  65. foreach(_kernel ${ufofilter_KERNELS})
  66. configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${_kernel}
  67. ${CMAKE_CURRENT_BINARY_DIR}/${_kernel})
  68. install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${_kernel}
  69. DESTINATION ${LIB_INSTALL_DIR})
  70. endforeach()
  71. #copy aux headers into $LIB_INSTALL_DIR
  72. foreach(_header ${ufofilter_HEADERS})
  73. configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${_header}
  74. ${CMAKE_CURRENT_BINARY_DIR}/${_header})
  75. install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${_header}
  76. DESTINATION ${LIB_INSTALL_DIR})
  77. endforeach()
  78. # --- Build filter reference ---------------------------------------------------
  79. pkg_check_modules(GTK_DOC gtk-doc)
  80. if(GTK_DOC_FOUND)
  81. option(WITH_GTK_DOC "Build filter documentation" ON)
  82. if (WITH_GTK_DOC)
  83. get_directory_property(_current_include_dirs INCLUDE_DIRECTORIES)
  84. set(GTK_DOC_CFLAGS)
  85. foreach(_incl ${_current_include_dirs})
  86. set(GTK_DOC_CFLAGS "-I${_incl} ${GTK_DOC_CFLAGS}")
  87. endforeach()
  88. set(GTK_DOC_LDFLAGS)
  89. foreach(_lib ${ufofilter_LIBS})
  90. # check if we have an absolute library path
  91. if (NOT ${_lib} MATCHES "^[/]")
  92. set(GTK_DOC_LDFLAGS "-l${_lib} ${GTK_DOC_LDFLAGS}")
  93. endif()
  94. endforeach()
  95. find_program(GTK_DOC_SCAN gtkdoc-scan REQUIRED)
  96. find_program(GTK_DOC_SCANGOBJ gtkdoc-scangobj REQUIRED)
  97. find_program(GTK_DOC_MKDB gtkdoc-mkdb REQUIRED)
  98. find_program(GTK_DOC_MKHTML gtkdoc-mkhtml REQUIRED)
  99. set(doc_base "${CMAKE_CURRENT_BINARY_DIR}/../docs")
  100. set(doc_out "${doc_base}/reference")
  101. set(_xml_doc_input)
  102. foreach (_src ${ufofilter_SRCS})
  103. string(REPLACE ".c" ".xml" _xml_doc ${_src})
  104. list(APPEND _xml_doc_input "<xi:include href=\"xml/${_xml_doc}\"/>")
  105. endforeach()
  106. string(REPLACE ";" "\n" _xml_doc_input ${_xml_doc_input})
  107. configure_file("${CMAKE_CURRENT_SOURCE_DIR}/UfoFilters-docs.xml.in" "${doc_out}/UfoFilters-docs.xml")
  108. configure_file("${CMAKE_CURRENT_SOURCE_DIR}/scangobj.sh.in" "${doc_out}/scangobj.sh")
  109. configure_file("${CMAKE_CURRENT_SOURCE_DIR}/UfoFilters.types.in" "${doc_out}/UfoFilters.types")
  110. add_custom_command(OUTPUT ${doc_out}/UfoFilters-decl.txt
  111. COMMAND ${GTK_DOC_SCAN}
  112. --module=UfoFilters
  113. --source-dir=${CMAKE_CURRENT_SOURCE_DIR}/../src
  114. DEPENDS ${ufofilter_SRCS}
  115. WORKING_DIRECTORY ${doc_out})
  116. add_custom_command(OUTPUT ${doc_out}/UfoFilters.args
  117. COMMAND sh scangobj.sh
  118. DEPENDS ${ufofilter_SRCS} ${doc_out}/UfoFilters-decl.txt ${all_targets}
  119. WORKING_DIRECTORY ${doc_out})
  120. add_custom_command(OUTPUT ${doc_out}/sgml.stamp
  121. COMMAND ${GTK_DOC_MKDB}
  122. --module=UfoFilters
  123. --source-dir=${CMAKE_CURRENT_SOURCE_DIR}
  124. --output-format=xml
  125. DEPENDS ${ufofilter_SRCS} ${doc_out}/UfoFilters.args
  126. WORKING_DIRECTORY ${doc_out})
  127. add_custom_command(OUTPUT ${doc_base}/html.stamp
  128. COMMAND ${GTK_DOC_MKHTML}
  129. UfoFilters
  130. ${doc_out}/UfoFilters-docs.xml
  131. DEPENDS ${doc_out}/sgml.stamp
  132. WORKING_DIRECTORY ${doc_out})
  133. add_custom_target(reference ALL DEPENDS ${doc_base}/html.stamp)
  134. endif()
  135. endif(GTK_DOC_FOUND)