CMakeLists.txt 6.7 KB

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