PageRenderTime 54ms CodeModel.GetById 29ms RepoModel.GetById 0ms app.codeStats 0ms

/tags/v5_7_2/src/CMakeLists.txt

#
CMake | 282 lines | 210 code | 22 blank | 50 comment | 14 complexity | 7ceafa11acea37451262fc1e9bab11de MD5 | raw file
Possible License(s): LGPL-2.0, BSD-3-Clause-No-Nuclear-License-2014, Apache-2.0, GPL-2.0
  1. # src/CMakeLists.txt for PLplot
  2. ###
  3. ### Process this file with cmake to produce Makefile
  4. ###
  5. # Copyright (C) 2006 Alan W. Irwin
  6. #
  7. # This file is part of PLplot.
  8. #
  9. # PLplot is free software; you can redistribute it and/or modify
  10. # it under the terms of the GNU Library General Public License as published
  11. # by the Free Software Foundation; version 2 of the License.
  12. #
  13. # PLplot is distributed in the hope that it will be useful,
  14. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. # GNU Library General Public License for more details.
  17. #
  18. # You should have received a copy of the GNU Library General Public License
  19. # along with PLplot; if not, write to the Free Software
  20. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  21. set(plplot${LIB_TAG}_LIB_SRCS
  22. pdfutils.c
  23. plargs.c
  24. plbox.c
  25. plcont.c
  26. plcore.c
  27. plctrl.c
  28. plcvt.c
  29. pldeprecated.c
  30. pldtik.c
  31. plfill.c
  32. plfreetype.c
  33. plhist.c
  34. plimage.c
  35. plline.c
  36. plmap.c
  37. plot3d.c
  38. plpage.c
  39. plsdef.c
  40. plshade.c
  41. plstdio.c
  42. plstripc.c
  43. plsym.c
  44. pltick.c
  45. plvpor.c
  46. plwind.c
  47. plbuf.c
  48. plgridd.c
  49. plvect.c
  50. )
  51. if(WIN32 AND BUILD_SHARED_LIBS)
  52. SET_SOURCE_FILES_PROPERTIES(${plplot${LIB_TAG}_LIB_SRCS}
  53. PROPERTIES COMPILE_FLAGS "-DMAKINGPLDLL -DUSINGCSADLL -DUSINGNNDLL" )
  54. endif(WIN32 AND BUILD_SHARED_LIBS)
  55. if(ENABLE_DYNDRIVERS)
  56. set_source_files_properties(
  57. plcore.c
  58. PROPERTIES COMPILE_FLAGS "-I${LTDL_INCLUDE_DIR}"
  59. )
  60. else(ENABLE_DYNDRIVERS)
  61. if(ENABLE_tcl)
  62. set(
  63. tclgenfiles
  64. ${CMAKE_BINARY_DIR}/bindings/tcl/tclgen.h
  65. ${CMAKE_BINARY_DIR}/bindings/tcl/tclgen_s.h
  66. ${CMAKE_BINARY_DIR}/bindings/tcl/tclgen.c
  67. )
  68. # Only need to set up this special command if either the tk and tkwin
  69. # non-dynamic devices are enabled (see below) since at build time
  70. # this special command is only fired in that case.
  71. add_custom_command(
  72. OUTPUT ${tclgenfiles}
  73. COMMAND ${TCL_TCLSH}
  74. ${CMAKE_SOURCE_DIR}/bindings/tcl/pltclgen.tcl
  75. ${CMAKE_SOURCE_DIR}/bindings/tcl
  76. DEPENDS
  77. ${CMAKE_SOURCE_DIR}/bindings/tcl/pltclgen.tcl
  78. ${CMAKE_SOURCE_DIR}/bindings/tcl/plapi.tpl
  79. ${CMAKE_SOURCE_DIR}/bindings/tcl/tclcmd.tpl
  80. WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/bindings/tcl
  81. )
  82. endif(ENABLE_tcl)
  83. # Static device drivers must be included in the core PLplot library.
  84. set(DRIVERS_RPATH)
  85. foreach(SOURCE_ROOT_NAME ${DRIVERS_LIST})
  86. #message("${SOURCE_ROOT_NAME}_SOURCE = ${${SOURCE_ROOT_NAME}_SOURCE}")
  87. set(plplot${LIB_TAG}_LIB_SRCS
  88. ${plplot${LIB_TAG}_LIB_SRCS}
  89. ${${SOURCE_ROOT_NAME}_SOURCE}
  90. )
  91. if(${SOURCE_ROOT_NAME}_COMPILE_FLAGS)
  92. set_source_files_properties(
  93. ${${SOURCE_ROOT_NAME}_SOURCE}
  94. PROPERTIES COMPILE_FLAGS ${${SOURCE_ROOT_NAME}_COMPILE_FLAGS}
  95. )
  96. set(libplplot${LIB_TAG}_COMPILE_FLAGS
  97. ${libplplot${LIB_TAG}_COMPILE_FLAGS}
  98. ${${SOURCE_ROOT_NAME}_COMPILE_FLAGS}
  99. )
  100. if(SOURCE_ROOT_NAME STREQUAL "tk")
  101. set_source_files_properties(
  102. ${${SOURCE_ROOT_NAME}_SOURCE}
  103. PROPERTIES OBJECT_DEPENDS ${tclgenfiles}
  104. )
  105. endif(SOURCE_ROOT_NAME STREQUAL "tk")
  106. if(SOURCE_ROOT_NAME STREQUAL "tkwin")
  107. set_source_files_properties(
  108. ${${SOURCE_ROOT_NAME}_SOURCE}
  109. PROPERTIES OBJECT_DEPENDS ${tclgenfiles}
  110. )
  111. endif(SOURCE_ROOT_NAME STREQUAL "tkwin")
  112. endif(${SOURCE_ROOT_NAME}_COMPILE_FLAGS)
  113. if(${SOURCE_ROOT_NAME}_RPATH)
  114. set(DRIVERS_RPATH ${DRIVERS_RPATH} ${${SOURCE_ROOT_NAME}_RPATH})
  115. endif(${SOURCE_ROOT_NAME}_RPATH)
  116. endforeach(SOURCE_ROOT_NAME ${DRIVERS_LIST})
  117. endif(ENABLE_DYNDRIVERS)
  118. include_directories(
  119. ${CMAKE_SOURCE_DIR}/include
  120. ${CMAKE_BINARY_DIR}
  121. ${CMAKE_BINARY_DIR}/include
  122. )
  123. add_library(plplot${LIB_TAG} ${plplot${LIB_TAG}_LIB_SRCS})
  124. add_dependencies(plplot${LIB_TAG} plhershey-unicode.h_built)
  125. set(LIB_INSTALL_RPATH ${LIB_DIR})
  126. if(ENABLE_DYNDRIVERS)
  127. set(libplplot${LIB_TAG}_LINK_LIBRARIES ${LTDL_LIBRARIES})
  128. #message("libplplot${LIB_TAG}_LINK_LIBRARIES = ${libplplot${LIB_TAG}_LINK_LIBRARIES}")
  129. #message("libplplot${LIB_TAG}_RPATH = ${libplplot${LIB_TAG}_RPATH}")
  130. set(LIB_INSTALL_RPATH ${LIB_INSTALL_RPATH} ${libplplot${LIB_TAG}_RPATH})
  131. else(ENABLE_DYNDRIVERS)
  132. set(libplplot${LIB_TAG}_LINK_LIBRARIES ${DRIVERS_LINK_FLAGS})
  133. set(LIB_INSTALL_RPATH ${LIB_INSTALL_RPATH} ${DRIVERS_RPATH})
  134. endif(ENABLE_DYNDRIVERS)
  135. # Transform "${libplplot${LIB_TAG}_LINK_LIBRARIES}" string to the
  136. # standard pkg-config form.
  137. pc_transform_link_flags(
  138. libplplot${LIB_TAG}_LINK_FLAGS
  139. "${libplplot${LIB_TAG}_LINK_LIBRARIES}"
  140. )
  141. if(MATH_LIB)
  142. set(
  143. libplplot${LIB_TAG}_LINK_LIBRARIES
  144. ${libplplot${LIB_TAG}_LINK_LIBRARIES}
  145. ${MATH_LIB}
  146. )
  147. set(
  148. libplplot${LIB_TAG}_LINK_FLAGS
  149. "${libplplot${LIB_TAG}_LINK_FLAGS} -l${MATH_LIB}"
  150. )
  151. endif(MATH_LIB)
  152. if(WITH_CSA)
  153. set(
  154. libplplot${LIB_TAG}_LINK_LIBRARIES
  155. ${libplplot${LIB_TAG}_LINK_LIBRARIES}
  156. csirocsa
  157. )
  158. set(
  159. libplplot${LIB_TAG}_LINK_FLAGS
  160. "${libplplot${LIB_TAG}_LINK_FLAGS} -lcsirocsa"
  161. )
  162. endif(WITH_CSA)
  163. if(HAVE_QHULL)
  164. set(
  165. libplplot${LIB_TAG}_LINK_LIBRARIES
  166. ${libplplot${LIB_TAG}_LINK_LIBRARIES}
  167. csironn
  168. )
  169. set(
  170. libplplot${LIB_TAG}_LINK_FLAGS
  171. "${libplplot${LIB_TAG}_LINK_FLAGS} -lcsironn -lqhull"
  172. )
  173. include_directories(
  174. ${QHULL_INCLUDE_DIRS}
  175. )
  176. endif(HAVE_QHULL)
  177. if(WITH_FREETYPE)
  178. set_source_files_properties(plfreetype.c PROPERTIES COMPILE_FLAGS "-I${FREETYPE_INCLUDE_DIR}")
  179. set(
  180. libplplot${LIB_TAG}_LINK_LIBRARIES
  181. ${libplplot${LIB_TAG}_LINK_LIBRARIES}
  182. ${FREETYPE_LIBRARIES}
  183. )
  184. # Convert to -L... -l... form.
  185. string(REGEX REPLACE "(/[^ ]*)/lib([^ ]*)\\.so" "-L\\1 -l\\2"
  186. _FREETYPE_LINK_FLAGS
  187. ${FREETYPE_LIBRARIES}
  188. )
  189. string(REGEX REPLACE "(/[^ ]*)/lib([^ ]*)\\.so" "-L\\1 -l\\2"
  190. FREETYPE_LINK_FLAGS
  191. ${_FREETYPE_LINK_FLAGS}
  192. )
  193. set(
  194. libplplot${LIB_TAG}_LINK_FLAGS
  195. "${libplplot${LIB_TAG}_LINK_FLAGS} ${FREETYPE_LINK_FLAGS}"
  196. )
  197. endif(WITH_FREETYPE)
  198. #message(STATUS
  199. #"libplplot${LIB_TAG}_LINK_LIBRARIES = ${libplplot${LIB_TAG}_LINK_LIBRARIES}"
  200. #)
  201. target_link_libraries(
  202. plplot${LIB_TAG}
  203. ${libplplot${LIB_TAG}_LINK_LIBRARIES}
  204. )
  205. set_target_properties(
  206. plplot${LIB_TAG}
  207. PROPERTIES
  208. SOVERSION ${plplot_SOVERSION}
  209. VERSION ${plplot_VERSION}
  210. INSTALL_RPATH "${LIB_INSTALL_RPATH}"
  211. INSTALL_NAME_DIR "${LIB_DIR}"
  212. )
  213. install(TARGETS plplot${LIB_TAG} DESTINATION ${LIB_DIR})
  214. #message("libplplot${LIB_TAG}_LINK_FLAGS = ${libplplot${LIB_TAG}_LINK_FLAGS}")
  215. string(REGEX REPLACE ";" " "
  216. libplplot${LIB_TAG}_COMPILE_FLAGS
  217. "${libplplot${LIB_TAG}_COMPILE_FLAGS}"
  218. )
  219. #message("libplplot${LIB_TAG}_COMPILE_FLAGS = ${libplplot${LIB_TAG}_COMPILE_FLAGS}")
  220. # Configure pkg-config *.pc file corresponding to libplplot${LIB_TAG}
  221. if(PKGCONFIG_EXECUTABLE)
  222. if(LIB_TAG)
  223. set(PC_PRECISION "double")
  224. else(LIB_TAG)
  225. set(PC_PRECISION "single")
  226. endif(LIB_TAG)
  227. # Each list element must consist of a colon-separated string with the
  228. # following fields which are parsed out in the foreach loop below and
  229. # used to configure the corresponding pkg-config *.pc file.
  230. # BINDING - ENABLE_${BINDING} keeps track of whether a
  231. # binding has been enabled (ON) or not (OFF).
  232. # Also, ${BINDING} used to determine PC_FILE_SUFFIX
  233. # which helps to determine name of configured
  234. # *.pc file.
  235. # PC_SHORT_NAME - Used in *.pc NAME: field
  236. # PC_LONG_NAME - Used in *.pc Description: field
  237. # PC_LIBRARY_NAME - Used in *.pc Libs: field
  238. # Also used to determine PC_LINK_FLAGS and
  239. # PC_COMPILE_FLAGS used in *.pc Libs: and Cflags:
  240. # fields.
  241. set(PC_DATA "c:::plplot${LIB_TAG}")
  242. string(REGEX REPLACE "^(.*):.*:.*:.*$" "\\1" BINDING ${PC_DATA})
  243. set(PC_FILE_SUFFIX "")
  244. set(PC_REQUIRES "")
  245. string(REGEX REPLACE "^.*:(.*):.*:.*$" "\\1" PC_SHORT_NAME ${PC_DATA})
  246. string(REGEX REPLACE "^.*:.*:(.*):.*$" "\\1" PC_LONG_NAME ${PC_DATA})
  247. string(REGEX REPLACE "^.*:.*:.*:(.*)$" "\\1" PC_LIBRARY_NAME ${PC_DATA})
  248. set(PC_LINK_FLAGS "${lib${PC_LIBRARY_NAME}_LINK_FLAGS}")
  249. set(PC_LINK_FLAGS "-l${PC_LIBRARY_NAME} ${PC_LINK_FLAGS}")
  250. set(PC_COMPILE_FLAGS "${lib${PC_LIBRARY_NAME}_COMPILE_FLAGS}")
  251. set(PC_CONFIGURED_FILE
  252. ${CMAKE_BINARY_DIR}/pkgcfg/plplot${LIB_TAG}${PC_FILE_SUFFIX}.pc
  253. )
  254. configure_file(
  255. ${CMAKE_SOURCE_DIR}/pkgcfg/plplot-template.pc.cmake
  256. ${PC_CONFIGURED_FILE}
  257. @ONLY
  258. )
  259. install(FILES ${PC_CONFIGURED_FILE} DESTINATION ${PKG_CONFIG_DIR})
  260. endif(PKGCONFIG_EXECUTABLE)