mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#3932 Octave : Support Qt5
This commit is contained in:
parent
53ef8dbed9
commit
c7e5373aaa
@ -40,15 +40,6 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||
set (RPATH_COMMAND "-Wl,-rpath,'\\$$ORIGIN'")
|
||||
endif()
|
||||
|
||||
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
||||
set (QT_LIBRARY_POSTFIX 4)
|
||||
|
||||
if (CMAKE_CL_64)
|
||||
option(RESINSIGHT_OCTAVE_PLUGIN_32_BIT "Windows Only: Set 32-bit MSVC compiler environment while running mkoctfile" OFF)
|
||||
mark_as_advanced(FORCE RESINSIGHT_OCTAVE_PLUGIN_32_BIT)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# recreate the magic that CMake does for MacOS X frameworks in the
|
||||
# include list when we call mkoctfile as a custom command
|
||||
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
@ -80,44 +71,87 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
# Find location of Octave based on mkoctfile
|
||||
find_program(RESINSIGHT_OCTAVE_PLUGIN_MKOCTFILE mkoctfile)
|
||||
if(RESINSIGHT_OCTAVE_PLUGIN_MKOCTFILE)
|
||||
get_filename_component(RESINSIGHT_OCTAVE_BIN_DIR ${RESINSIGHT_OCTAVE_PLUGIN_MKOCTFILE} PATH)
|
||||
STRING(REPLACE "/bin" "" OCTAVE_HOME ${RESINSIGHT_OCTAVE_BIN_DIR})
|
||||
# TODO : Remove OCTAVE_HOME, replace with OCTAVE_ROOT_DIR
|
||||
SET(OCTAVE_HOME ${OCTAVE_ROOT_DIR})
|
||||
|
||||
message ("Compiling Octave plugins using : ${OCTAVE_MKOCTFILE}")
|
||||
|
||||
option(RESINSIGHT_OCTAVE_PLUGIN_QT "Compile Octave plugin using Qt located insided Octave root folder" OFF)
|
||||
if(RESINSIGHT_OCTAVE_PLUGIN_QT)
|
||||
|
||||
message(STATUS "Compiling Octave plugins using custom Qt located at ${OCTAVE_ROOT_DIR}")
|
||||
|
||||
if (EXISTS ${OCTAVE_ROOT_DIR}/qt5)
|
||||
SET(OCTAVE_QT_INCLUDE_DIR ${OCTAVE_ROOT_DIR}/qt5/include)
|
||||
SET(OCTAVE_QT_QTCORE_INCLUDE_DIR ${OCTAVE_ROOT_DIR}/qt5/include/QtCore)
|
||||
SET(OCTAVE_QT_QTNETWORK_INCLUDE_DIR ${OCTAVE_ROOT_DIR}/qt5/include/QtNetwork)
|
||||
SET(OCTAVE_QT_LIBRARY_DIR ${OCTAVE_ROOT_DIR}/qt5/lib)
|
||||
SET(OCTAVE_QT_QTCORE_LIB Qt5Core)
|
||||
SET(OCTAVE_QT_QTNETWORK_LIB Qt5Network)
|
||||
else ()
|
||||
SET(OCTAVE_QT_INCLUDE_DIR ${OCTAVE_ROOT_DIR}/include)
|
||||
SET(OCTAVE_QT_QTCORE_INCLUDE_DIR ${OCTAVE_ROOT_DIR}/include/QtCore)
|
||||
SET(OCTAVE_QT_QTNETWORK_INCLUDE_DIR ${OCTAVE_ROOT_DIR}/include/QtNetwork)
|
||||
SET(OCTAVE_QT_LIBRARY_DIR ${OCTAVE_ROOT_DIR}/lib)
|
||||
SET(OCTAVE_QT_QTCORE_LIB QtCore4)
|
||||
SET(OCTAVE_QT_QTNETWORK_LIB QtNetwork4)
|
||||
endif(EXISTS ${OCTAVE_ROOT_DIR}/qt5)
|
||||
|
||||
list (APPEND MKOCTFILE_INCLUDE_DIRS ${OCTAVE_QT_INCLUDE_DIR})
|
||||
list (APPEND MKOCTFILE_INCLUDE_DIRS ${OCTAVE_QT_QTCORE_INCLUDE_DIR})
|
||||
list (APPEND MKOCTFILE_INCLUDE_DIRS ${OCTAVE_QT_QTNETWORK_INCLUDE_DIR})
|
||||
|
||||
else()
|
||||
message(WARNING "Failed to find mkoctfile, no Octave plugins will be compiled. Please specify RESINSIGHT_OCTAVE_PLUGIN_MKOCTFILE")
|
||||
endif()
|
||||
|
||||
if (Qt5Core_FOUND)
|
||||
message(STATUS "Compiling Octave plugins using system Qt5")
|
||||
|
||||
set(RESINSIGHT_OCTAVE_PLUGIN_QMAKE "" CACHE FILEPATH "Windows Only: Set this equal to RESINSIGHT_OCTAVE_PLUGIN_MKOCTFILE")
|
||||
if(RESINSIGHT_OCTAVE_PLUGIN_QMAKE)
|
||||
get_filename_component(OCTAVE_QMAKE_DIR ${RESINSIGHT_OCTAVE_PLUGIN_QMAKE} PATH)
|
||||
SET(OCTAVE_QT_QTCORE_INCLUDE_DIR ${Qt5Core_INCLUDE_DIRS})
|
||||
SET(OCTAVE_QT_QTNETWORK_INCLUDE_DIR ${Qt5Network_INCLUDE_DIRS})
|
||||
SET(OCTAVE_QT_LIBRARY_DIR ${QT_LIBRARY_DIR})
|
||||
SET(OCTAVE_QT_QTCORE_LIB Qt5Core)
|
||||
SET(OCTAVE_QT_QTNETWORK_LIB Qt5Network)
|
||||
|
||||
STRING(REPLACE "/bin" "" OCTAVE_QT_ROOT ${OCTAVE_QMAKE_DIR})
|
||||
else()
|
||||
message(STATUS "Compiling Octave plugins using system Qt4 - include path located at ${QT_QMAKE_EXECUTABLE}")
|
||||
|
||||
message(STATUS "Compiling Octave plugins using custom Qt located at ${OCTAVE_QT_ROOT}")
|
||||
SET(OCTAVE_QT_QTCORE_INCLUDE_DIR ${QT_QTCORE_INCLUDE_DIR})
|
||||
SET(OCTAVE_QT_QTNETWORK_INCLUDE_DIR ${QT_QTNETWORK_INCLUDE_DIR})
|
||||
SET(OCTAVE_QT_LIBRARY_DIR ${QT_LIBRARY_DIR})
|
||||
|
||||
SET(OCTAVE_QT_INCLUDE_DIR ${OCTAVE_QT_ROOT}/include)
|
||||
SET(OCTAVE_QT_QTCORE_INCLUDE_DIR ${OCTAVE_QT_ROOT}/include/QtCore)
|
||||
SET(OCTAVE_QT_QTNETWORK_INCLUDE_DIR ${OCTAVE_QT_ROOT}/include/QtNetwork)
|
||||
SET(OCTAVE_QT_LIBRARY_DIR ${OCTAVE_QT_ROOT}/lib)
|
||||
else()
|
||||
set (RESINSIGHT_OCTAVE_PLUGIN_QMAKE ${QT_QMAKE_EXECUTABLE})
|
||||
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
||||
SET(OCTAVE_QT_QTCORE_LIB QtCore4)
|
||||
SET(OCTAVE_QT_QTNETWORK_LIB QtNetwork4)
|
||||
else()
|
||||
SET(OCTAVE_QT_QTCORE_LIB QtCore)
|
||||
SET(OCTAVE_QT_QTNETWORK_LIB QtNetwork)
|
||||
endif(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
||||
|
||||
message(STATUS "Compiling Octave plugins using system Qt - include path located at ${RESINSIGHT_OCTAVE_PLUGIN_QMAKE}")
|
||||
endif(Qt5Core_FOUND)
|
||||
|
||||
SET(OCTAVE_QT_INCLUDE_DIR ${QT_INCLUDE_DIR})
|
||||
SET(OCTAVE_QT_QTCORE_INCLUDE_DIR ${QT_QTCORE_INCLUDE_DIR})
|
||||
SET(OCTAVE_QT_QTNETWORK_INCLUDE_DIR ${QT_QTNETWORK_INCLUDE_DIR})
|
||||
SET(OCTAVE_QT_LIBRARY_DIR ${QT_LIBRARY_DIR})
|
||||
endif()
|
||||
list (APPEND MKOCTFILE_INCLUDE_DIRS ${OCTAVE_QT_QTCORE_INCLUDE_DIR})
|
||||
list (APPEND MKOCTFILE_INCLUDE_DIRS ${OCTAVE_QT_QTNETWORK_INCLUDE_DIR})
|
||||
|
||||
endif(RESINSIGHT_OCTAVE_PLUGIN_QT)
|
||||
|
||||
# Add socket interface source code folder
|
||||
list (APPEND MKOCTFILE_INCLUDE_DIRS ${ResInsight_SOURCE_DIR}/ApplicationCode/SocketInterface)
|
||||
|
||||
list (REMOVE_DUPLICATES MKOCTFILE_INCLUDE_DIRS)
|
||||
foreach (item ${MKOCTFILE_INCLUDE_DIRS})
|
||||
list (APPEND MKOCTFILE_INCLUDE_TEMP -I${item})
|
||||
endforeach (item)
|
||||
|
||||
string( REPLACE ";" " " MKOCTFILE_INCLUDE_TEMP "${MKOCTFILE_INCLUDE_TEMP}" )
|
||||
|
||||
# Use special command to avoid double quoting in add_custom_command()
|
||||
separate_arguments(MKOCTFILE_INCLUDE_COMMAND_STRING WINDOWS_COMMAND "${MKOCTFILE_INCLUDE_TEMP}")
|
||||
|
||||
|
||||
# Clear the list of binary oct files to be produced
|
||||
set(OCTAVE_BINARY_OCT_FILES)
|
||||
|
||||
if (RESINSIGHT_OCTAVE_PLUGIN_QMAKE AND RESINSIGHT_OCTAVE_PLUGIN_MKOCTFILE)
|
||||
if (OCTAVE_MKOCTFILE)
|
||||
foreach(srcFileName IN LISTS CPP_SOURCES)
|
||||
|
||||
if(NOT IS_ABSOLUTE "${srcFileName}")
|
||||
@ -129,27 +163,24 @@ if (RESINSIGHT_OCTAVE_PLUGIN_QMAKE AND RESINSIGHT_OCTAVE_PLUGIN_MKOCTFILE)
|
||||
set(octFileName "${CMAKE_CURRENT_BINARY_DIR}/${baseFilename}.oct")
|
||||
|
||||
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
||||
if (CMAKE_CL_64 AND RESINSIGHT_OCTAVE_PLUGIN_32_BIT)
|
||||
SET(RESINSIGHT_VCVARS_32BIT_CMD call "\"%VS100COMNTOOLS%../../VC/vcvarsall.bat\"" x86)
|
||||
endif()
|
||||
add_custom_command(
|
||||
OUTPUT "${octFileName}"
|
||||
COMMAND ${RESINSIGHT_VCVARS_32BIT_CMD}
|
||||
COMMAND set "OCTAVE_HOME=${OCTAVE_HOME}"
|
||||
COMMAND set "PATH=%OCTAVE_HOME%\\bin;%PATH%"
|
||||
COMMAND mkoctfile -I${OCTAVE_QT_QTNETWORK_INCLUDE_DIR}
|
||||
-I${OCTAVE_QT_QTCORE_INCLUDE_DIR}
|
||||
-I${OCTAVE_QT_INCLUDE_DIR}
|
||||
-I${ResInsight_SOURCE_DIR}/ApplicationCode/SocketInterface
|
||||
${RPATH_COMMAND} -L${OCTAVE_QT_LIBRARY_DIR} -lQtCore${QT_LIBRARY_POSTFIX} -lQtNetwork${QT_LIBRARY_POSTFIX}
|
||||
-o "${octFileName}" "${srcFileName}"
|
||||
COMMAND ${OCTAVE_MKOCTFILE}
|
||||
${MKOCTFILE_INCLUDE_COMMAND_STRING}
|
||||
${RPATH_COMMAND}
|
||||
-L${OCTAVE_QT_LIBRARY_DIR}
|
||||
-l${OCTAVE_QT_QTCORE_LIB}
|
||||
-l${OCTAVE_QT_QTNETWORK_LIB}
|
||||
-o "${octFileName}" "${srcFileName}"
|
||||
DEPENDS "${srcFileName}"
|
||||
COMMENT "===> Generating ${octFileName}"
|
||||
)
|
||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
add_custom_command(
|
||||
OUTPUT "${octFileName}"
|
||||
COMMAND ${RESINSIGHT_OCTAVE_PLUGIN_MKOCTFILE}
|
||||
COMMAND ${OCTAVE_MKOCTFILE}
|
||||
${QT_INCLUDES}
|
||||
${QT_FRAMEWORKS}
|
||||
-I${ResInsight_SOURCE_DIR}/ApplicationCode/SocketInterface
|
||||
@ -163,9 +194,14 @@ if (RESINSIGHT_OCTAVE_PLUGIN_QMAKE AND RESINSIGHT_OCTAVE_PLUGIN_MKOCTFILE)
|
||||
else()
|
||||
add_custom_command(
|
||||
OUTPUT "${octFileName}"
|
||||
COMMAND OCTAVE_HOME=${OCTAVE_HOME} ${RESINSIGHT_OCTAVE_PLUGIN_MKOCTFILE}
|
||||
-I${OCTAVE_QT_QTNETWORK_INCLUDE_DIR} -I${OCTAVE_QT_QTCORE_INCLUDE_DIR} -I${OCTAVE_QT_INCLUDE_DIR} -I${ResInsight_SOURCE_DIR}/ApplicationCode/SocketInterface ${RPATH_COMMAND}
|
||||
-L${OCTAVE_QT_LIBRARY_DIR} -lQtCore -lQtNetwork -o "${octFileName}" "${srcFileName}"
|
||||
COMMAND OCTAVE_HOME=${OCTAVE_HOME}
|
||||
${OCTAVE_MKOCTFILE}
|
||||
${MKOCTFILE_INCLUDE_COMMAND_STRING}
|
||||
${RPATH_COMMAND}
|
||||
-L${OCTAVE_QT_LIBRARY_DIR}
|
||||
-l${OCTAVE_QT_QTCORE_LIB}
|
||||
-l${OCTAVE_QT_QTNETWORK_LIB}
|
||||
-o "${octFileName}" "${srcFileName}"
|
||||
DEPENDS "${srcFileName}"
|
||||
COMMENT "===> Generating ${octFileName}"
|
||||
)
|
||||
@ -175,42 +211,21 @@ if (RESINSIGHT_OCTAVE_PLUGIN_QMAKE AND RESINSIGHT_OCTAVE_PLUGIN_MKOCTFILE)
|
||||
|
||||
endforeach()
|
||||
|
||||
add_custom_target(octave_plugins ALL DEPENDS
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetActiveCellProperty.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riSetActiveCellProperty.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetActiveCellInfo.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetMainGridDimensions.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetNNCConnections.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetNNCPropertyNames.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetDynamicNNCValues.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetStaticNNCValues.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetCurrentCase.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetCaseGroups.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetSelectedCases.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetSelectedCells.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetCases.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetTimeStepDates.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetTimeStepDays.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetGridDimensions.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetCoarseningInfo.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetCellCenters.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetActiveCellCenters.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetCellCorners.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetActiveCellCorners.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetGridProperty.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riSetGridProperty.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetGridPropertyForSelectedCells.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetPropertyNames.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetWellNames.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetWellStatus.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riGetWellCells.oct"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/riSetNNCProperty.oct"
|
||||
# Create depencedy string represeting the full path to all generated oct-files
|
||||
foreach (item ${CPP_SOURCES})
|
||||
string( REPLACE ".cpp" ".oct" item ${item})
|
||||
list (APPEND DEPENDENCY_STRING ${CMAKE_CURRENT_BINARY_DIR}/${item})
|
||||
endforeach (item)
|
||||
|
||||
#message("DEPENDENCY_STRING : ${DEPENDENCY_STRING}")
|
||||
|
||||
add_custom_target(octave_plugins ALL DEPENDS
|
||||
${DEPENDENCY_STRING}
|
||||
SOURCES
|
||||
${CPP_SOURCES}
|
||||
riSettings.h
|
||||
)
|
||||
|
||||
|
||||
# Copy Octave generated *.oct files to application folder, will make it possible to use Octave functions
|
||||
# directly from the location of the ResInsight binaries
|
||||
if (true)
|
||||
@ -259,6 +274,6 @@ if (RESINSIGHT_OCTAVE_PLUGIN_QMAKE AND RESINSIGHT_OCTAVE_PLUGIN_MKOCTFILE)
|
||||
)
|
||||
endif (RESINSIGHT_PRIVATE_INSTALL)
|
||||
|
||||
endif (RESINSIGHT_OCTAVE_PLUGIN_QMAKE AND RESINSIGHT_OCTAVE_PLUGIN_MKOCTFILE)
|
||||
endif (OCTAVE_MKOCTFILE)
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user