/tags/v5_9_7/src/CMakeLists.txt
CMake | 385 lines | 290 code | 30 blank | 65 comment | 27 complexity | 66a13efeaba724bc5f9561f3b545a76c MD5 | raw file
Possible License(s): LGPL-2.0, BSD-3-Clause-No-Nuclear-License-2014, Apache-2.0, GPL-2.0
- # src/CMakeLists.txt for PLplot
- ###
- ### Process this file with cmake to produce Makefile
- ###
- # Copyright (C) 2006 Alan W. Irwin
- #
- # This file is part of PLplot.
- #
- # PLplot is free software; you can redistribute it and/or modify
- # it under the terms of the GNU Library General Public License as published
- # by the Free Software Foundation; version 2 of the License.
- #
- # PLplot is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU Library General Public License for more details.
- #
- # You should have received a copy of the GNU Library General Public License
- # along with PLplot; if not, write to the Free Software
- # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- set(plplot${LIB_TAG}_LIB_SRCS
- pdfutils.c
- plaffine.c
- plarc.c
- plargs.c
- plbox.c
- plcont.c
- plcore.c
- plctrl.c
- plcvt.c
- pldeprecated.c
- pldtik.c
- plf2ops.c
- plfill.c
- plfreetype.c
- plgradient.c
- plgset.c
- plhist.c
- plimage.c
- plline.c
- plmap.c
- plot3d.c
- plpage.c
- plsdef.c
- plshade.c
- plstdio.c
- plstripc.c
- plsym.c
- pltick.c
- plvpor.c
- plwind.c
- plbuf.c
- plgridd.c
- plvect.c
- mt19937ar.c
- pltime.c
- pllegend.c
- )
- if(LTDL_WIN32)
- set(plplot${LIB_TAG}_LIB_SRCS ${plplot${LIB_TAG}_LIB_SRCS} ltdl_win32.c)
- endif(LTDL_WIN32)
- if(BUILD_SHARED_LIBS)
- SET_SOURCE_FILES_PROPERTIES(${plplot${LIB_TAG}_LIB_SRCS}
- PROPERTIES COMPILE_FLAGS "-DUSINGDLL" )
- endif(BUILD_SHARED_LIBS)
- option(HERSHEY_FALLBACK "Hershey fallback for Unicode fonts" ON)
- if(NOT HERSHEY_FALLBACK)
- get_source_file_property(PLSYM_COMPILE_PROPS plsym.c COMPILE_FLAGS)
- if(NOT PLSYM_COMPILE_PROPS)
- set(PLSYM_COMPILE_PROPS)
- endif(NOT PLSYM_COMPILE_PROPS)
- set_source_files_properties(
- plsym.c
- PROPERTIES COMPILE_FLAGS "${PLSYM_COMPILE_PROPS} -DPL_TEST_FOR_MISSING_GLYPHS"
- )
- endif(NOT HERSHEY_FALLBACK)
- if(ENABLE_DYNDRIVERS)
- get_source_file_property(PLCORE_COMPILE_PROPS plcore.c COMPILE_FLAGS)
- # Deal with NOTFOUND case.
- if(NOT PLCORE_COMPILE_PROPS)
- set(PLCORE_COMPILE_PROPS)
- endif(NOT PLCORE_COMPILE_PROPS)
- set_source_files_properties(
- plcore.c
- PROPERTIES COMPILE_FLAGS "${PLCORE_COMPILE_PROPS} -I${LTDL_INCLUDE_DIR}"
- )
- else(ENABLE_DYNDRIVERS)
- if(ENABLE_tcl)
- set(
- tclgenfiles
- ${CMAKE_BINARY_DIR}/bindings/tcl/tclgen.h
- ${CMAKE_BINARY_DIR}/bindings/tcl/tclgen_s.h
- ${CMAKE_BINARY_DIR}/bindings/tcl/tclgen.c
- )
- # Only need to set up this special command if either the tk and tkwin
- # non-dynamic devices are enabled (see below) since at build time
- # this special command is only fired in that case.
- add_custom_command(
- OUTPUT ${tclgenfiles}
- COMMAND ${TCL_TCLSH}
- ${CMAKE_SOURCE_DIR}/bindings/tcl/pltclgen.tcl
- ${CMAKE_SOURCE_DIR}/bindings/tcl
- DEPENDS
- ${CMAKE_SOURCE_DIR}/bindings/tcl/pltclgen.tcl
- ${CMAKE_SOURCE_DIR}/bindings/tcl/plapi.tpl
- ${CMAKE_SOURCE_DIR}/bindings/tcl/tclcmd.tpl
- WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/bindings/tcl
- )
- endif(ENABLE_tcl)
- # Static device drivers must be included in the core PLplot library.
- set(DRIVERS_RPATH)
- foreach(SOURCE_ROOT_NAME ${DRIVERS_LIST})
- #message("${SOURCE_ROOT_NAME}_SOURCE = ${${SOURCE_ROOT_NAME}_SOURCE}")
- list(APPEND plplot${LIB_TAG}_LIB_SRCS ${${SOURCE_ROOT_NAME}_SOURCE})
- if(SOURCE_ROOT_NAME STREQUAL "qt")
- if(ANY_QT_DEVICE)
- # For this case libplot must have a target dependency on the
- # moc files generated in the binary include directory.
- set(qt_dependency moc_outfile_generated)
- # Set up Qt4-based build environment.
- include(${QT_USE_FILE})
- if(NOT QT_LIBRARIES)
- message(FATAL_ERROR "include(${QT_USE_FILE}) failed in src subdirectory.")
- endif(NOT QT_LIBRARIES)
- set(DRIVERS_LINK_FLAGS ${DRIVERS_LINK_FLAGS} ${QT_LIBRARIES})
-
- else(ANY_QT_DEVICE)
- message(FATAL_ERROR "Internal build system inconsistency. Attempt to build static qt device when ANY_QT_DEVICE is false.")
- endif(ANY_QT_DEVICE)
- endif(SOURCE_ROOT_NAME STREQUAL "qt")
-
- # qt device driver code within libplplot has some symbols that need to be
- # visible for qt_example in installed examples/c++ directory to link
- # properly.
- if(BUILD_SHARED_LIBS AND SOURCE_ROOT_NAME STREQUAL "qt")
- set(${SOURCE_ROOT_NAME}_COMPILE_FLAGS "${${SOURCE_ROOT_NAME}_COMPILE_FLAGS} -DUSINGDLL")
- endif(BUILD_SHARED_LIBS AND SOURCE_ROOT_NAME STREQUAL "qt")
- if(${SOURCE_ROOT_NAME}_COMPILE_FLAGS)
- set_source_files_properties(
- ${${SOURCE_ROOT_NAME}_SOURCE}
- PROPERTIES COMPILE_FLAGS ${${SOURCE_ROOT_NAME}_COMPILE_FLAGS}
- )
- set(libplplot${LIB_TAG}_COMPILE_FLAGS
- ${libplplot${LIB_TAG}_COMPILE_FLAGS}
- ${${SOURCE_ROOT_NAME}_COMPILE_FLAGS}
- )
- if(SOURCE_ROOT_NAME STREQUAL "tk")
- set_source_files_properties(
- ${${SOURCE_ROOT_NAME}_SOURCE}
- PROPERTIES OBJECT_DEPENDS ${tclgenfiles}
- )
- endif(SOURCE_ROOT_NAME STREQUAL "tk")
- if(SOURCE_ROOT_NAME STREQUAL "tkwin")
- set_source_files_properties(
- ${${SOURCE_ROOT_NAME}_SOURCE}
- PROPERTIES OBJECT_DEPENDS ${tclgenfiles}
- )
- endif(SOURCE_ROOT_NAME STREQUAL "tkwin")
- endif(${SOURCE_ROOT_NAME}_COMPILE_FLAGS)
- if(${SOURCE_ROOT_NAME}_RPATH)
- set(DRIVERS_RPATH ${DRIVERS_RPATH} ${${SOURCE_ROOT_NAME}_RPATH})
- endif(${SOURCE_ROOT_NAME}_RPATH)
- endforeach(SOURCE_ROOT_NAME ${DRIVERS_LIST})
- endif(ENABLE_DYNDRIVERS)
- include_directories(
- ${CMAKE_SOURCE_DIR}/include
- ${CMAKE_SOURCE_DIR}/lib/qsastime
- ${CMAKE_BINARY_DIR}
- ${CMAKE_BINARY_DIR}/include
- )
- add_library(plplot${LIB_TAG} ${plplot${LIB_TAG}_LIB_SRCS})
- add_dependencies(plplot${LIB_TAG} plhershey-unicode.h_built ${qt_dependency})
- set(LIB_INSTALL_RPATH ${LIB_DIR})
- if(ENABLE_DYNDRIVERS)
- set(libplplot${LIB_TAG}_LINK_LIBRARIES ${LTDL_LIBRARIES})
- #message("libplplot${LIB_TAG}_LINK_LIBRARIES = ${libplplot${LIB_TAG}_LINK_LIBRARIES}")
- #message("libplplot${LIB_TAG}_RPATH = ${libplplot${LIB_TAG}_RPATH}")
- set(LIB_INSTALL_RPATH ${LIB_INSTALL_RPATH} ${libplplot${LIB_TAG}_RPATH})
- else(ENABLE_DYNDRIVERS)
- set(libplplot${LIB_TAG}_LINK_LIBRARIES ${DRIVERS_LINK_FLAGS})
- set(LIB_INSTALL_RPATH ${LIB_INSTALL_RPATH} ${DRIVERS_RPATH})
- endif(ENABLE_DYNDRIVERS)
- #message("DEBUG: LIB_INSTALL_RPATH = ${LIB_INSTALL_RPATH}")
- if(MATH_LIB)
- set(
- libplplot${LIB_TAG}_LINK_LIBRARIES
- ${libplplot${LIB_TAG}_LINK_LIBRARIES}
- ${MATH_LIB}
- )
- endif(MATH_LIB)
- # Transform "${libplplot${LIB_TAG}_LINK_LIBRARIES}" string to the
- # standard pkg-config form.
- pkg_config_link_flags(
- libplplot${LIB_TAG}_LINK_FLAGS
- "${libplplot${LIB_TAG}_LINK_LIBRARIES}"
- )
- if(WITH_CSA)
- set(
- libplplot${LIB_TAG}_LINK_LIBRARIES
- ${libplplot${LIB_TAG}_LINK_LIBRARIES}
- csirocsa
- )
- set(
- libplplot${LIB_TAG}_LINK_FLAGS
- "${libplplot${LIB_TAG}_LINK_FLAGS} -lcsirocsa"
- )
- endif(WITH_CSA)
- if(HAVE_QHULL)
- set(
- libplplot${LIB_TAG}_LINK_LIBRARIES
- ${libplplot${LIB_TAG}_LINK_LIBRARIES}
- csironn
- )
- if(QHULL_RPATH)
- set(
- libplplot${LIB_TAG}_LINK_FLAGS
- "${libplplot${LIB_TAG}_LINK_FLAGS} -lcsironn -L${QHULL_RPATH} -lqhull"
- )
- else(QHULL_RPATH)
- set(
- libplplot${LIB_TAG}_LINK_FLAGS
- "${libplplot${LIB_TAG}_LINK_FLAGS} -lcsironn -lqhull"
- )
- endif(QHULL_RPATH)
- # Needed by plgridd.c.
- include_directories(
- ${QHULL_INCLUDE_DIRS}
- )
- # Needed by the traditional pkg-config approach for installed examples
- # as well as the new CMake-based build system for the installed examples.
- set(LIB_INSTALL_RPATH ${LIB_INSTALL_RPATH} ${QHULL_RPATH})
- endif(HAVE_QHULL)
- if(NOT ENABLE_DYNDRIVERS AND PLD_cgm)
- list(APPEND libplplot${LIB_TAG}_LINK_LIBRARIES nistcd)
- set(
- libplplot${LIB_TAG}_LINK_FLAGS
- "${libplplot${LIB_TAG}_LINK_FLAGS} -lnistcd"
- )
- include_directories(${CMAKE_SOURCE_DIR}/lib/nistcd)
- endif(NOT ENABLE_DYNDRIVERS AND PLD_cgm)
- set(
- libplplot${LIB_TAG}_LINK_LIBRARIES
- ${libplplot${LIB_TAG}_LINK_LIBRARIES}
- qsastime
- )
- set(
- libplplot${LIB_TAG}_LINK_FLAGS
- "${libplplot${LIB_TAG}_LINK_FLAGS} -lqsastime"
- )
- if(WITH_FREETYPE)
- get_source_file_property(PLFREETYPE_COMPILE_PROPS plfreetype.c COMPILE_FLAGS)
- # Deal with NOTFOUND case.
- if(NOT PLFREETYPE_COMPILE_PROPS)
- set(PLFREETYPE_COMPILE_PROPS)
- endif(NOT PLFREETYPE_COMPILE_PROPS)
- set_source_files_properties(plfreetype.c PROPERTIES COMPILE_FLAGS "${PLFREETYPE_COMPILE_PROPS} -I${FREETYPE_INCLUDE_DIR}")
- set(
- libplplot${LIB_TAG}_LINK_LIBRARIES
- ${libplplot${LIB_TAG}_LINK_LIBRARIES}
- ${FREETYPE_LIBRARIES}
- )
-
- # Convert to -L... -l... form.
- string(REGEX REPLACE "(/[^ ]*)/lib([^ ]*)\\.so" "-L\\1 -l\\2"
- _FREETYPE_LINK_FLAGS
- ${FREETYPE_LIBRARIES}
- )
- string(REGEX REPLACE "(/[^ ]*)/lib([^ ]*)\\.so" "-L\\1 -l\\2"
- FREETYPE_LINK_FLAGS
- ${_FREETYPE_LINK_FLAGS}
- )
- set(
- libplplot${LIB_TAG}_LINK_FLAGS
- "${libplplot${LIB_TAG}_LINK_FLAGS} ${FREETYPE_LINK_FLAGS}"
- )
- endif(WITH_FREETYPE)
- #message(STATUS
- #"libplplot${LIB_TAG}_LINK_LIBRARIES = ${libplplot${LIB_TAG}_LINK_LIBRARIES}"
- #)
- target_link_libraries(
- plplot${LIB_TAG}
- ${libplplot${LIB_TAG}_LINK_LIBRARIES}
- )
- if(USE_RPATH)
- set_target_properties(
- plplot${LIB_TAG}
- PROPERTIES
- SOVERSION ${plplot_SOVERSION}
- VERSION ${plplot_VERSION}
- INSTALL_RPATH "${LIB_INSTALL_RPATH}"
- INSTALL_NAME_DIR "${LIB_DIR}"
- )
- else(USE_RPATH)
- set_target_properties(
- plplot${LIB_TAG}
- PROPERTIES
- SOVERSION ${plplot_SOVERSION}
- VERSION ${plplot_VERSION}
- INSTALL_NAME_DIR "${LIB_DIR}"
- )
- endif(USE_RPATH)
- install(TARGETS plplot${LIB_TAG}
- EXPORT export_plplot
- ARCHIVE DESTINATION ${LIB_DIR}
- LIBRARY DESTINATION ${LIB_DIR}
- RUNTIME DESTINATION ${BIN_DIR}
- )
- # This exports information for every target in the whole build that
- # has the EXPORT export_plplot signature (as above) for the
- # install(TARGETS ... # command.
- install(EXPORT export_plplot DESTINATION ${DATA_DIR}/examples/cmake/modules)
- #message("libplplot${LIB_TAG}_LINK_FLAGS = ${libplplot${LIB_TAG}_LINK_FLAGS}")
- string(REGEX REPLACE ";" " "
- libplplot${LIB_TAG}_COMPILE_FLAGS
- "${libplplot${LIB_TAG}_COMPILE_FLAGS}"
- )
- #message("libplplot${LIB_TAG}_COMPILE_FLAGS = ${libplplot${LIB_TAG}_COMPILE_FLAGS}")
- # Configure pkg-config *.pc file corresponding to libplplot${LIB_TAG}
- if(PKG_CONFIG_EXECUTABLE)
- if(LIB_TAG)
- set(PC_PRECISION "double")
- else(LIB_TAG)
- set(PC_PRECISION "single")
- endif(LIB_TAG)
- # Each list element must consist of a colon-separated string with the
- # following fields which are parsed out in the foreach loop below and
- # used to configure the corresponding pkg-config *.pc file.
- # BINDING - ENABLE_${BINDING} keeps track of whether a
- # binding has been enabled (ON) or not (OFF).
- # Also, ${BINDING} used to determine PC_FILE_SUFFIX
- # which helps to determine name of configured
- # *.pc file.
- # PC_SHORT_NAME - Used in *.pc NAME: field
- # PC_LONG_NAME - Used in *.pc Description: field
- # PC_LIBRARY_NAME - Used in *.pc Libs: field
- # Also used to determine PC_LINK_FLAGS and
- # PC_COMPILE_FLAGS used in *.pc Libs: and Cflags:
- # fields.
- set(PC_DATA "c:::plplot${LIB_TAG}")
- string(REGEX REPLACE "^(.*):.*:.*:.*$" "\\1" BINDING ${PC_DATA})
- set(PC_FILE_SUFFIX "")
- set(PC_REQUIRES "")
- string(REGEX REPLACE "^.*:(.*):.*:.*$" "\\1" PC_SHORT_NAME ${PC_DATA})
- string(REGEX REPLACE "^.*:.*:(.*):.*$" "\\1" PC_LONG_NAME ${PC_DATA})
- string(REGEX REPLACE "^.*:.*:.*:(.*)$" "\\1" PC_LIBRARY_NAME ${PC_DATA})
- set(PC_LINK_FLAGS "${lib${PC_LIBRARY_NAME}_LINK_FLAGS}")
- set(PC_LINK_FLAGS "-l${PC_LIBRARY_NAME} ${PC_LINK_FLAGS}")
- set(PC_COMPILE_FLAGS "${lib${PC_LIBRARY_NAME}_COMPILE_FLAGS}")
- set(PC_CONFIGURED_FILE
- ${CMAKE_BINARY_DIR}/pkgcfg/plplot${LIB_TAG}${PC_FILE_SUFFIX}.pc
- )
- configure_file(
- ${CMAKE_SOURCE_DIR}/pkgcfg/plplot-template.pc.cmake
- ${PC_CONFIGURED_FILE}
- @ONLY
- )
- install(FILES ${PC_CONFIGURED_FILE} DESTINATION ${PKG_CONFIG_DIR})
- endif(PKG_CONFIG_EXECUTABLE)