mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
345 lines
13 KiB
CMake
345 lines
13 KiB
CMake
###############################################################################
|
|
# This file defines the macros that ParaView-based clients can use of creating
|
|
# custom ParaView client builds with custom branding and configuration.
|
|
#
|
|
# build_paraview_client(
|
|
# # The name for this client. This is the name used for the executable created.
|
|
# paraview
|
|
#
|
|
# # Optional name for the application (If none is specified then the
|
|
# # client-name is used.
|
|
# APPLICATION_NAME "ParaView"
|
|
#
|
|
# # This is the title bar text. If none is provided the name will be used.
|
|
# TITLE "Kitware ParaView"
|
|
#
|
|
# # This is the organization name.
|
|
# ORGANIZATION "Kitware Inc."
|
|
#
|
|
# # PNG Image to be used for the Splash screen. If none is provided, default
|
|
# # ParaView splash screen will be shown.
|
|
# SPLASH_IMAGE "${CMAKE_CURRENT_SOURCE_DIR}/Splash.png"
|
|
#
|
|
# # Provide version information for the client.
|
|
# VERSION_MAJOR ${PARAVIEW_VERSION_MAJOR}
|
|
# VERSION_MINOR ${PARAVIEW_VERSION_MINOR}
|
|
# VERSION_PATCH ${PARAVIEW_VERSION_PATCH}
|
|
#
|
|
# # Icon to be used for the Mac bundle.
|
|
# BUNDLE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/Icon.icns"
|
|
#
|
|
# # Icon to be used for the Windows application.
|
|
# APPLICATION_ICON "${CMAKE_CURRENT_SOURCE_DIR}/Icon.ico"
|
|
#
|
|
# # Name of the class to use for the main window. If none is specified,
|
|
# # default QMainWindow will be used.
|
|
# PVMAIN_WINDOW QMainWindow-subclass
|
|
# PVMAIN_WINDOW_INCLUDE QMainWindow-subclass-header
|
|
#
|
|
# # Next specify the plugins that are needed to be built and loaded on startup
|
|
# # for this client to work. These must be specified in the order that they
|
|
# # should be loaded. The name is the name of the plugin specified in the
|
|
# # add_paraview_plugin call.
|
|
# # Currently, only client-based plugins are supported. i.e. no effort is made
|
|
# # to load the plugins on the server side when a new server connection is made.
|
|
# # That may be added in future, if deemed necessary.
|
|
# REQUIRED_PLUGINS PointSpritePlugin
|
|
#
|
|
# # Next specify the plugin that are not required, but if available, should be
|
|
# # loaded on startup. These must be specified in the order that they
|
|
# # should be loaded. The name is the name of the plugin specified in the
|
|
# # add_paraview_plugin call.
|
|
# # Currently, only client-based plugins are supported. i.e. no effort is made
|
|
# # to load the plugins on the server side when a new server connection is made.
|
|
# # That may be added in future, if deemed necessary.
|
|
# OPTIONAL_PLUGINS ClientGraphView ClientTreeView
|
|
#
|
|
# # Extra targets that this executable depends on. Useful only if you are
|
|
# # building extra libraries for your application.
|
|
# EXTRA_DEPENDENCIES blah1 blah2
|
|
#
|
|
# # GUI Configuration XMLs that are used to configure the client eg. readers,
|
|
# # writers, sources menu, filters menu etc.
|
|
# GUI_CONFIGURATION_XMLS <list of xml files>
|
|
#
|
|
# # The Qt compressed help file (*.qch) which provides the documentation for the
|
|
# # application. *.qch files are typically generated from *.qhp files using
|
|
# # the qhelpgenerator executable.
|
|
# COMPRESSED_HELP_FILE MyApp.qch
|
|
#
|
|
# # Additional source files.
|
|
# SOURCES <list of source files>
|
|
#
|
|
# # If this option is present, then this macro will create a library named
|
|
# # pq{Name}Initializer with all the source components generated by this macro
|
|
# # that the executable links against. Otherwise, for sake of simplicity no
|
|
# # extra library is created.
|
|
# MAKE_INITIALIZER_LIBRARY
|
|
#
|
|
# # Optionally specify install destinations. See CMake install() command
|
|
# # documentation for meaning of RUNTIME, LIBRARY, ARCHIVE, and BUNDLE.
|
|
# INSTALL_RUNTIME_DIR "bin"
|
|
# INSTALL_LIBRARY_DIR "lib/<appname>-<major>.<minor>"
|
|
# INSTALL_ARCHIVE_DIR "lib/<appname>-<major>.<minor>"
|
|
# INSTALL_BUNDLE_DIR "bin" # default is the INSTALL_RUNTIME_DIR
|
|
#
|
|
# # Deprecated. Use INSTALL_RUNTIME_DIR and INSTALL_BUNDLE_DIR instead.
|
|
# INSTALL_BIN_DIR "bin"
|
|
#
|
|
# # Deprecated. Use INSTALL_LIBRARY_DIR and INSTALL_ARCHIVE_DIR instead.
|
|
# INSTALL_LIB_DIR "lib"
|
|
# )
|
|
#
|
|
###############################################################################
|
|
include(pvForwardingExecutable)
|
|
|
|
FUNCTION(build_paraview_client BPC_NAME)
|
|
PV_PARSE_ARGUMENTS(BPC
|
|
"APPLICATION_NAME;TITLE;ORGANIZATION;SPLASH_IMAGE;VERSION_MAJOR;VERSION_MINOR;VERSION_PATCH;BUNDLE_ICON;APPLICATION_ICON;REQUIRED_PLUGINS;OPTIONAL_PLUGINS;PVMAIN_WINDOW;PVMAIN_WINDOW_INCLUDE;EXTRA_DEPENDENCIES;GUI_CONFIGURATION_XMLS;COMPRESSED_HELP_FILE;SOURCES;INSTALL_RUNTIME_DIR;INSTALL_LIBRARY_DIR;INSTALL_ARCHIVE_DIR;INSTALL_BUNDLE_DIR;INSTALL_BIN_DIR;INSTALL_LIB_DIR"
|
|
"MAKE_INITIALIZER_LIBRARY"
|
|
${ARGN}
|
|
)
|
|
|
|
# Version numbers are required. Throw an error is not set correctly.
|
|
IF (NOT DEFINED BPC_VERSION_MAJOR OR NOT DEFINED BPC_VERSION_MINOR OR NOT DEFINED BPC_VERSION_PATCH)
|
|
MESSAGE(ERROR
|
|
"VERSION_MAJOR, VERSION_MINOR and VERSION_PATCH must be specified")
|
|
ENDIF ()
|
|
|
|
# If no title is provided, make one up using the name.
|
|
pv_set_if_not_set(BPC_TITLE "${BPC_NAME}")
|
|
pv_set_if_not_set(BPC_APPLICATION_NAME "${BPC_NAME}")
|
|
pv_set_if_not_set(BPC_ORGANIZATION "Humanity")
|
|
if(NOT DEFINED BPC_INSTALL_RUNTIME_DIR AND DEFINED BPC_INSTALL_BIN_DIR)
|
|
set(BPC_INSTALL_RUNTIME_DIR "${BPC_INSTALL_BIN_DIR}")
|
|
endif()
|
|
if(NOT DEFINED BPC_INSTALL_LIBRARY_DIR AND DEFINED BPC_INSTALL_LIB_DIR)
|
|
set(BPC_INSTALL_LIBRARY_DIR "${BPC_INSTALL_LIB_DIR}")
|
|
endif()
|
|
if(NOT DEFINED BPC_INSTALL_BUNDLE_DIR AND DEFINED BPC_INSTALL_BIN_DIR)
|
|
set(BPC_INSTALL_BUNDLE_DIR "${BPC_INSTALL_BIN_DIR}")
|
|
endif()
|
|
pv_set_if_not_set(BPC_INSTALL_RUNTIME_DIR "bin")
|
|
pv_set_if_not_set(BPC_INSTALL_LIBRARY_DIR
|
|
"lib/${BPC_NAME}-${BPC_VERSION_MAJOR}.${BPC_VERSION_MINOR}")
|
|
pv_set_if_not_set(BPC_INSTALL_ARCHIVE_DIR
|
|
"lib/${BPC_NAME}-${BPC_VERSION_MAJOR}.${BPC_VERSION_MINOR}")
|
|
pv_set_if_not_set(BPC_INSTALL_BUNDLE_DIR "${BPC_INSTALL_RUNTIME_DIR}")
|
|
|
|
SET (branding_source_dir "${ParaView_CMAKE_DIR}")
|
|
|
|
# If APPLICATION_ICON is specified, use that for the windows executable.
|
|
IF (WIN32 AND BPC_APPLICATION_ICON)
|
|
FILE (WRITE "${CMAKE_CURRENT_BINARY_DIR}/Icon.rc"
|
|
"// Icon with lowest ID value placed first to ensure application icon\n"
|
|
"// remains consistent on all systems.\n"
|
|
"IDI_ICON1 ICON \"${BPC_APPLICATION_ICON}\"")
|
|
SET(exe_icon "${CMAKE_CURRENT_BINARY_DIR}/Icon.rc")
|
|
ENDIF ()
|
|
|
|
# executable_flags are used to pass options to add_executable(..) call such as
|
|
# WIN32 or MACOSX_BUNDLE
|
|
set (executable_flags)
|
|
|
|
# If BPC_BUNDLE_ICON is set, setup the macosx bundle.
|
|
IF (APPLE)
|
|
IF (BPC_BUNDLE_ICON)
|
|
GET_FILENAME_COMPONENT(bundle_icon_file "${BPC_BUNDLE_ICON}" NAME)
|
|
SET(apple_bundle_sources ${bundle_icon_file})
|
|
SET_SOURCE_FILES_PROPERTIES(
|
|
${BPC_BUNDLE_ICON}
|
|
PROPERTIES
|
|
MACOSX_PACKAGE_LOCATION Resources
|
|
)
|
|
ENDIF ()
|
|
|
|
IF(QT_MAC_USE_COCOA)
|
|
IF (IS_DIRECTORY "${QT_QTGUI_LIBRARY_RELEASE}")
|
|
GET_FILENAME_COMPONENT(qt_menu_nib
|
|
"${QT_QTGUI_LIBRARY_RELEASE}/Resources/qt_menu.nib"
|
|
REALPATH)
|
|
ELSE ()
|
|
GET_FILENAME_COMPONENT(qt_menu_nib
|
|
"${QT_LIBRARY_DIR}/Resources/qt_menu.nib"
|
|
REALPATH)
|
|
ENDIF ()
|
|
|
|
set(qt_menu_nib_sources
|
|
"${qt_menu_nib}/classes.nib"
|
|
"${qt_menu_nib}/info.nib"
|
|
"${qt_menu_nib}/keyedobjects.nib"
|
|
)
|
|
SET_SOURCE_FILES_PROPERTIES(
|
|
${qt_menu_nib_sources}
|
|
PROPERTIES
|
|
MACOSX_PACKAGE_LOCATION Resources/qt_menu.nib
|
|
)
|
|
ELSE()
|
|
set(qt_menu_nib_sources)
|
|
ENDIF()
|
|
|
|
SET(executable_flags MACOSX_BUNDLE)
|
|
ENDIF ()
|
|
|
|
IF(WIN32)
|
|
LINK_DIRECTORIES(${QT_LIBRARY_DIR})
|
|
set (executable_flags WIN32)
|
|
ENDIF()
|
|
|
|
# If splash image is not specified, use the standard ParaView splash image.
|
|
pv_set_if_not_set(BPC_SPLASH_IMAGE "${branding_source_dir}/branded_splash.png")
|
|
CONFIGURE_FILE("${BPC_SPLASH_IMAGE}"
|
|
${CMAKE_CURRENT_BINARY_DIR}/SplashImage.img COPYONLY)
|
|
SET (BPC_SPLASH_IMAGE ${CMAKE_CURRENT_BINARY_DIR}/SplashImage.img)
|
|
GET_FILENAME_COMPONENT(BPC_SPLASH_RESOURCE ${BPC_SPLASH_IMAGE} NAME)
|
|
SET (BPC_SPLASH_RESOURCE ":/${BPC_NAME}/${BPC_SPLASH_RESOURCE}")
|
|
|
|
pv_set_if_not_set(BPC_PVMAIN_WINDOW "QMainWindow")
|
|
pv_set_if_not_set(BPC_PVMAIN_WINDOW_INCLUDE "QMainWindow")
|
|
|
|
SET (BPC_HAS_GUI_CONFIGURATION_XMLS 0)
|
|
IF (BPC_GUI_CONFIGURATION_XMLS)
|
|
SET (BPC_HAS_GUI_CONFIGURATION_XMLS 1)
|
|
ENDIF ()
|
|
|
|
# Generate a resource file out of the splash image.
|
|
GENERATE_QT_RESOURCE_FROM_FILES(
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${BPC_NAME}_generated.qrc"
|
|
"/${BPC_NAME}" ${BPC_SPLASH_IMAGE})
|
|
|
|
GENERATE_QT_RESOURCE_FROM_FILES(
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${BPC_NAME}_configuration.qrc"
|
|
"/${BPC_NAME}/Configuration"
|
|
"${BPC_GUI_CONFIGURATION_XMLS}")
|
|
|
|
SET (ui_resources
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${BPC_NAME}_generated.qrc"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${BPC_NAME}_configuration.qrc"
|
|
)
|
|
set (ui_resource_init
|
|
" Q_INIT_RESOURCE(${BPC_NAME}_generated);\n Q_INIT_RESOURCE(${BPC_NAME}_configuration);\n")
|
|
|
|
|
|
IF (BPC_COMPRESSED_HELP_FILE)
|
|
# If a help collection file is specified, create a resource from it so that
|
|
# when the ParaView help system can locate it at runtime and show the
|
|
# appropriate help when the user asks for it. The
|
|
set (outfile "${CMAKE_CURRENT_BINARY_DIR}/${BPC_NAME}_help.qrc")
|
|
GENERATE_QT_RESOURCE_FROM_FILES("${outfile}"
|
|
"/${BPC_APPLICATION_NAME}/Documentation"
|
|
"${BPC_COMPRESSED_HELP_FILE};")
|
|
SET_SOURCE_FILES_PROPERTIES(${outfile}
|
|
PROPERTIES OBJECT_DEPENDS "${BPC_COMPRESSED_HELP_FILE}")
|
|
SET (ui_resources ${ui_resources} "${outfile}")
|
|
set (ui_resource_init
|
|
"${ui_resource_init} Q_INIT_RESOURCE(${BPC_NAME}_help);\n")
|
|
ENDIF ()
|
|
|
|
IF (PARAVIEW_QT_VERSION VERSION_GREATER "4")
|
|
QT5_ADD_RESOURCES(rcs_sources
|
|
${ui_resources}
|
|
)
|
|
ELSE ()
|
|
QT4_ADD_RESOURCES(rcs_sources
|
|
${ui_resources}
|
|
)
|
|
ENDIF ()
|
|
|
|
SOURCE_GROUP("Resources" FILES
|
|
${ui_resources}
|
|
${exe_icon}
|
|
)
|
|
|
|
SOURCE_GROUP("Generated" FILES
|
|
${rcs_sources}
|
|
)
|
|
|
|
CONFIGURE_FILE(${branding_source_dir}/branded_paraview_main.cxx.in
|
|
${CMAKE_CURRENT_BINARY_DIR}/${BPC_NAME}_main.cxx @ONLY)
|
|
CONFIGURE_FILE(${branding_source_dir}/branded_paraview_initializer.cxx.in
|
|
${CMAKE_CURRENT_BINARY_DIR}/pq${BPC_NAME}Initializer.cxx @ONLY)
|
|
CONFIGURE_FILE(${branding_source_dir}/branded_paraview_initializer.h.in
|
|
${CMAKE_CURRENT_BINARY_DIR}/pq${BPC_NAME}Initializer.h @ONLY)
|
|
|
|
# If BPC_MAKE_INITIALIZER_LIBRARY is set, then we are creating a separate
|
|
# library for the initializer, otherwise we don't create a separate library to
|
|
# keep things simple.
|
|
SET (EXE_SRCS pq${BPC_NAME}Initializer.cxx
|
|
${rcs_sources}
|
|
${BPC_SOURCES})
|
|
|
|
IF (BPC_MAKE_INITIALIZER_LIBRARY)
|
|
ADD_LIBRARY(pq${BPC_NAME}Initializer SHARED
|
|
${EXE_SRCS}
|
|
)
|
|
SET (EXE_SRCS)
|
|
TARGET_LINK_LIBRARIES(pq${BPC_NAME}Initializer
|
|
LINK_PRIVATE
|
|
pqApplicationComponents
|
|
vtkPVServerManagerApplication
|
|
${QT_QTMAIN_LIBRARY}
|
|
${BPC_EXTRA_DEPENDENCIES}
|
|
)
|
|
|
|
IF (PV_INSTALL_LIB_DIR)
|
|
INSTALL(TARGETS pq${BPC_NAME}Initializer
|
|
DESTINATION ${PV_INSTALL_LIB_DIR}
|
|
COMPONENT Runtime)
|
|
ENDIF ()
|
|
ENDIF ()
|
|
|
|
SET (PV_EXE_LIST ${BPC_NAME})
|
|
|
|
# needed to set up shared forwarding correctly.
|
|
pv_add_executable_with_forwarding2(pv_exe_suffix
|
|
"${PARAVIEW_LIBRARY_DIRS}"
|
|
"../${PARAVIEW_INSTALL_LIB_DIR}"
|
|
"${BPC_INSTALL_LIBRARY_DIR}"
|
|
${BPC_NAME}
|
|
${executable_flags}
|
|
${BPC_NAME}_main.cxx
|
|
${exe_icon}
|
|
${apple_bundle_sources}
|
|
${EXE_SRCS}
|
|
)
|
|
TARGET_LINK_LIBRARIES(${BPC_NAME}
|
|
LINK_PRIVATE
|
|
pqApplicationComponents
|
|
vtkPVServerManagerApplication
|
|
${QT_QTMAIN_LIBRARY}
|
|
${BPC_EXTRA_DEPENDENCIES}
|
|
)
|
|
|
|
IF (BPC_MAKE_INITIALIZER_LIBRARY)
|
|
TARGET_LINK_LIBRARIES(${BPC_NAME}
|
|
LINK_PRIVATE
|
|
pq${BPC_NAME}Initializer)
|
|
ENDIF ()
|
|
|
|
if (pv_exe_suffix)
|
|
install(TARGETS ${BPC_NAME}
|
|
RUNTIME DESTINATION "${BPC_INSTALL_LIBRARY_DIR}"
|
|
COMPONENT Runtime)
|
|
endif()
|
|
install(TARGETS ${BPC_NAME}${pv_exe_suffix}
|
|
RUNTIME DESTINATION "${BPC_INSTALL_RUNTIME_DIR}"
|
|
LIBRARY DESTINATION "${BPC_INSTALL_LIBRARY_DIR}"
|
|
ARCHIVE DESTINATION "${BPC_INSTALL_ARCHIVE_DIR}"
|
|
BUNDLE DESTINATION "${BPC_INSTALL_BUNDLE_DIR}"
|
|
COMPONENT Runtime)
|
|
|
|
IF (APPLE)
|
|
IF (BPC_BUNDLE_ICON)
|
|
SET_TARGET_PROPERTIES(${BPC_NAME} PROPERTIES
|
|
MACOSX_BUNDLE_ICON_FILE ${bundle_icon_file})
|
|
ENDIF ()
|
|
SET_TARGET_PROPERTIES(${BPC_NAME} PROPERTIES
|
|
MACOSX_BUNDLE_BUNDLE_NAME "${BPC_APPLICATION_NAME}")
|
|
ENDIF ()
|
|
|
|
IF (PARAVIEW_QT_VERSION VERSION_GREATER "4")
|
|
SET_TARGET_PROPERTIES(${BPC_NAME} PROPERTIES
|
|
COMPILE_FLAGS "${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")
|
|
ENDIF ()
|
|
ENDFUNCTION()
|