280 changes: 149 additions & 131 deletions src/plugins/grass/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
ADD_SUBDIRECTORY(modules)
ADD_SUBDIRECTORY(scripts)

ADD_DEFINITIONS(-DGRASS_BASE=\\\"${GRASS_PREFIX}\\\")
#ADD_DEFINITIONS(-DGRASS_BASE=\\\"${GRASS_PREFIX}\\\")
ADD_DEFINITIONS(-DHAVE_OPENPTY=${HAVE_OPENPTY})
ADD_DEFINITIONS("-DGRASS_EXPORT=${DLLIMPORT} -DGRASS_LIB_EXPORT=${DLLIMPORT}")

Expand All @@ -18,96 +18,96 @@ ENDIF (WIN32)
# Files

SET (GRASS_PLUGIN_SRCS
qgsgrassplugin.cpp
qgsgrassselect.cpp
qgsgrassbrowser.cpp
qgsgrassedit.cpp
qgsgrassedittools.cpp
qgsgrasstools.cpp
qgsgrassmodel.cpp
qgsgrassmapcalc.cpp
qgsgrassmodule.cpp
qgsgrassnewmapset.cpp
qgsgrassattributes.cpp
qgsgrassregion.cpp
qgsgrassutils.cpp
qgsgrassplugin.cpp
qgsgrassselect.cpp
qgsgrassbrowser.cpp
qgsgrassedit.cpp
qgsgrassedittools.cpp
qgsgrasstools.cpp
qgsgrassmodel.cpp
qgsgrassmapcalc.cpp
qgsgrassmodule.cpp
qgsgrassnewmapset.cpp
qgsgrassattributes.cpp
qgsgrassregion.cpp
qgsgrassutils.cpp
)


SET (GRASS_PLUGIN_UIS
qgsgrasstoolsbase.ui
qgsgrassselectbase.ui
qgsgrasseditbase.ui
qgsgrassmapcalcbase.ui
qgsgrassmodulebase.ui
qgsgrassnewmapsetbase.ui
qgsgrassattributesbase.ui
qgsgrassregionbase.ui
../../ui/qgsprojectionselectorbase.ui
qgsgrasstoolsbase.ui
qgsgrassselectbase.ui
qgsgrasseditbase.ui
qgsgrassmapcalcbase.ui
qgsgrassmodulebase.ui
qgsgrassnewmapsetbase.ui
qgsgrassattributesbase.ui
qgsgrassregionbase.ui
../../ui/qgsprojectionselectorbase.ui
)

SET (GRASS_PLUGIN_MOC_HDRS
qgsgrassplugin.h
qgsgrassselect.h
qgsgrassbrowser.h
qgsgrassedit.h
qgsgrasstools.h
qgsgrassmodel.h
qgsgrassmapcalc.h
qgsgrassmodule.h
qgsgrassnewmapset.h
qgsgrassattributes.h
qgsgrassregion.h
qgsgrassutils.h
qgsgrassedittools.h
qgsgrassplugin.h
qgsgrassselect.h
qgsgrassbrowser.h
qgsgrassedit.h
qgsgrasstools.h
qgsgrassmodel.h
qgsgrassmapcalc.h
qgsgrassmodule.h
qgsgrassnewmapset.h
qgsgrassattributes.h
qgsgrassregion.h
qgsgrassutils.h
qgsgrassedittools.h
)

IF(NOT WIN32)
SET (GRASS_PLUGIN_SRCS ${GRASS_PLUGIN_SRCS}
qgsgrassshell.cpp
qtermwidget/BlockArray.cpp
qtermwidget/Emulation.cpp
qtermwidget/Filter.cpp
qtermwidget/History.cpp
qtermwidget/KeyboardTranslator.cpp
qtermwidget/Pty.cpp
qtermwidget/Screen.cpp
qtermwidget/ScreenWindow.cpp
qtermwidget/Session.cpp
qtermwidget/ShellCommand.cpp
qtermwidget/TerminalCharacterDecoder.cpp
qtermwidget/TerminalDisplay.cpp
qtermwidget/Vt102Emulation.cpp
qtermwidget/k3process.cpp
qtermwidget/k3processcontroller.cpp
qtermwidget/konsole_wcwidth.cpp
qtermwidget/kpty.cpp
qtermwidget/qtermwidget.cpp
)

SET (GRASS_PLUGIN_MOC_HDRS ${GRASS_PLUGIN_MOC_HDRS}
qgsgrassshell.h
qtermwidget/Emulation.h
qtermwidget/Filter.h
qtermwidget/Pty.h
qtermwidget/ScreenWindow.h
qtermwidget/Session.h
qtermwidget/TerminalDisplay.h
qtermwidget/Vt102Emulation.h
qtermwidget/k3process.h
qtermwidget/k3processcontroller.h
qtermwidget/qtermwidget.h
)
SET (GRASS_PLUGIN_SRCS ${GRASS_PLUGIN_SRCS}
qgsgrassshell.cpp
qtermwidget/BlockArray.cpp
qtermwidget/Emulation.cpp
qtermwidget/Filter.cpp
qtermwidget/History.cpp
qtermwidget/KeyboardTranslator.cpp
qtermwidget/Pty.cpp
qtermwidget/Screen.cpp
qtermwidget/ScreenWindow.cpp
qtermwidget/Session.cpp
qtermwidget/ShellCommand.cpp
qtermwidget/TerminalCharacterDecoder.cpp
qtermwidget/TerminalDisplay.cpp
qtermwidget/Vt102Emulation.cpp
qtermwidget/k3process.cpp
qtermwidget/k3processcontroller.cpp
qtermwidget/konsole_wcwidth.cpp
qtermwidget/kpty.cpp
qtermwidget/qtermwidget.cpp
)

SET (GRASS_PLUGIN_MOC_HDRS ${GRASS_PLUGIN_MOC_HDRS}
qgsgrassshell.h
qtermwidget/Emulation.h
qtermwidget/Filter.h
qtermwidget/Pty.h
qtermwidget/ScreenWindow.h
qtermwidget/Session.h
qtermwidget/TerminalDisplay.h
qtermwidget/Vt102Emulation.h
qtermwidget/k3process.h
qtermwidget/k3processcontroller.h
qtermwidget/qtermwidget.h
)

IF ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
SET_SOURCE_FILES_PROPERTIES(
${CMAKE_CURRENT_BINARY_DIR}/qtermwidget/moc_Pty.cxx
qtermwidget/Pty.cpp
qtermwidget/Session.cpp
qtermwidget/kpty.cpp
qtermwidget/k3process.cpp
PROPERTIES COMPILE_FLAGS "-Wno-overloaded-virtual -Wno-mismatched-tags"
)
SET_SOURCE_FILES_PROPERTIES(
${CMAKE_CURRENT_BINARY_DIR}/qtermwidget/moc_Pty.cxx
qtermwidget/Pty.cpp
qtermwidget/Session.cpp
qtermwidget/kpty.cpp
qtermwidget/k3process.cpp
PROPERTIES COMPILE_FLAGS "-Wno-overloaded-virtual -Wno-mismatched-tags"
)
ENDIF ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
ENDIF(NOT WIN32)

Expand All @@ -124,68 +124,86 @@ QT4_WRAP_CPP (GRASS_PLUGIN_MOC_SRCS ${GRASS_PLUGIN_MOC_HDRS})

QT4_ADD_RESOURCES(GRASS_PLUGIN_RCC_SRCS ${GRASS_PLUGIN_RCCS})

########################################################
# build lib

ADD_LIBRARY (grassplugin MODULE
${GRASS_PLUGIN_SRCS}
${GRASS_PLUGIN_MOC_SRCS}
${GRASS_PLUGIN_UIS_H}
${GRASS_PLUGIN_RCC_SRCS}
)

INCLUDE_DIRECTORIES(
..
${CMAKE_CURRENT_BINARY_DIR}
../../core
../../core/raster
../../gui
../../providers/grass
${CMAKE_CURRENT_BINARY_DIR}/../../ui
${GRASS_INCLUDE_DIR}
${GDAL_INCLUDE_DIR}
${PROJ_INCLUDE_DIR}
${GEOS_INCLUDE_DIR}
qtermwidget
..
${CMAKE_CURRENT_BINARY_DIR}
../../core
../../core/raster
../../gui
../../providers/grass
${CMAKE_CURRENT_BINARY_DIR}/../../ui
${GDAL_INCLUDE_DIR}
${PROJ_INCLUDE_DIR}
${GEOS_INCLUDE_DIR}
qtermwidget
)

TARGET_LINK_LIBRARIES(grassplugin
qgisgrass
qgis_gui
${OPENPTY_LIBRARY}
)
FOREACH(GRASS_BUILD_VERSION 6) # GRASS 6 and GRASS 7
IF(GRASS_FOUND${GRASS_BUILD_VERSION})
SET(GRASS_PREFIX ${GRASS_PREFIX${GRASS_BUILD_VERSION}})
SET(GRASS_MAJOR_VERSION ${GRASS_MAJOR_VERSION${GRASS_BUILD_VERSION}})
SET(GRASS_MINOR_VERSION ${GRASS_MINOR_VERSION${GRASS_BUILD_VERSION}})

IF (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
TARGET_LINK_LIBRARIES(grassplugin ulog)
ENDIF (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
GET_PROPERTY(INCLUDE_DIRECTORIES DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)
LIST(APPEND INCLUDE_DIRECTORIES ${GRASS_INCLUDE_DIR${GRASS_BUILD_VERSION}})

# override default path where built files are put to allow running qgis without installing
# the binary goes under libexec subdir
SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${QGIS_OUTPUT_DIRECTORY}/${QGIS_LIBEXEC_SUBDIR}/grass/bin)
ADD_LIBRARY (grassplugin${GRASS_BUILD_VERSION} MODULE
${GRASS_PLUGIN_SRCS}
${GRASS_PLUGIN_MOC_SRCS}
${GRASS_PLUGIN_UIS_H}
${GRASS_PLUGIN_RCC_SRCS}
)

ADD_EXECUTABLE(qgis.g.browser ${GRASS_BROWSER_SRCS})
SET_TARGET_PROPERTIES(grassplugin${GRASS_BUILD_VERSION} PROPERTIES
INCLUDE_DIRECTORIES "${INCLUDE_DIRECTORIES}"
COMPILE_FLAGS "-DGRASS_BASE=\\\"${GRASS_PREFIX}\\\""
)

TARGET_LINK_LIBRARIES (qgis.g.browser
${QT_QTGUI_LIBRARY}
${QT_QTCORE_LIBRARY}
)
TARGET_LINK_LIBRARIES(grassplugin${GRASS_BUILD_VERSION}
qgisgrass${GRASS_BUILD_VERSION}
qgis_gui
${OPENPTY_LIBRARY}
)

########################################################
# Install
IF (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
TARGET_LINK_LIBRARIES(grassplugin${GRASS_BUILD_VERSION} ulog)
ENDIF (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")

INSTALL(TARGETS grassplugin
RUNTIME DESTINATION ${QGIS_PLUGIN_DIR}
LIBRARY DESTINATION ${QGIS_PLUGIN_DIR})
# override default path where built files are put to allow running qgis without installing
# the binary goes under libexec subdir
SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${QGIS_OUTPUT_DIRECTORY}/${QGIS_LIBEXEC_SUBDIR}/grass/bin)


FILE (GLOB GMLS *.gml)
INSTALL (FILES ${GMLS}
DESTINATION ${QGIS_DATA_DIR}/grass)
ADD_EXECUTABLE(qgis.g.browser${GRASS_BUILD_VERSION} ${GRASS_BROWSER_SRCS})

INSTALL (FILES themes/default/grass_arrow.svg themes/default/grass_plus.svg themes/default/grass_arrow.png themes/default/grass_plus.png
DESTINATION ${QGIS_DATA_DIR}/grass/modules)
SET_TARGET_PROPERTIES(qgis.g.browser${GRASS_BUILD_VERSION} PROPERTIES
INCLUDE_DIRECTORIES "${INCLUDE_DIRECTORIES}"
COMPILE_FLAGS "-DGRASS_BASE=\\\"${GRASS_PREFIX}\\\""
)

INSTALL(TARGETS qgis.g.browser
RUNTIME DESTINATION ${QGIS_LIBEXEC_DIR}/grass/bin
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)
TARGET_LINK_LIBRARIES (qgis.g.browser${GRASS_BUILD_VERSION}
${QT_QTGUI_LIBRARY}
${QT_QTCORE_LIBRARY}
)

########################################################
# Install

INSTALL(TARGETS grassplugin${GRASS_BUILD_VERSION}
RUNTIME DESTINATION ${QGIS_PLUGIN_DIR}
LIBRARY DESTINATION ${QGIS_PLUGIN_DIR})


FILE (GLOB GMLS *.gml)
INSTALL (FILES ${GMLS}
DESTINATION ${QGIS_DATA_DIR}/grass)

INSTALL (FILES themes/default/grass_arrow.svg themes/default/grass_plus.svg themes/default/grass_arrow.png themes/default/grass_plus.png
DESTINATION ${QGIS_DATA_DIR}/grass/modules)

INSTALL(TARGETS qgis.g.browser${GRASS_BUILD_VERSION}
RUNTIME DESTINATION ${QGIS_LIBEXEC_DIR}/grass/bin
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)
ENDIF(GRASS_FOUND${GRASS_BUILD_VERSION})
ENDFOREACH(GRASS_BUILD_VERSION 6 7)
2 changes: 1 addition & 1 deletion src/plugins/grass/qgsgrassmodule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1625,7 +1625,7 @@ void QgsGrassModule::run()
mOutputTextBrowser->clear();

QProcessEnvironment environment = QProcessEnvironment::systemEnvironment();
environment.insert( "GRASS_HTML_BROWSER", QgsApplication::libexecPath() + "grass/bin/qgis.g.browser" );
environment.insert( "GRASS_HTML_BROWSER", QgsGrassUtils::htmlBrowserPath() );

// Warning: it is not useful to write requested region to WIND file and
// reset then to original beacuse it is reset before
Expand Down
25 changes: 12 additions & 13 deletions src/plugins/grass/qgsgrassplugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,10 @@ extern "C"
#include <grass/version.h>
}

static const QString pluginVersion = QObject::tr( "Version 0.1" );
static const QString pluginName = QObject::tr( "GRASS %1" ).arg( GRASS_VERSION_MAJOR );
static const QString pluginDescription = QObject::tr( "GRASS %1 (Geographic Resources Analysis Support System)" ).arg( GRASS_VERSION_MAJOR );
static const QString pluginCategory = QObject::tr( "Plugins" );
static const QString pluginVersion = QObject::tr( "Version 2.0" );
static const QString pluginIcon = ":/images/themes/default/grass/grass_tools.png";

/**
Expand All @@ -58,11 +61,7 @@ static const QString pluginIcon = ":/images/themes/default/grass/grass_tools.png
* @param theQgisInterFace Pointer to the QGIS interface object
*/
QgsGrassPlugin::QgsGrassPlugin( QgisInterface * theQgisInterFace )
: pluginNameQString( tr( "GrassVector" ) )
, pluginVersionQString( tr( "0.1" ) )
, pluginDescriptionQString( tr( "GRASS layer" ) )
, pluginCategoryQString( tr( "Plugins" ) )
, mToolBarPointer( 0 )
: mToolBarPointer( 0 )
, qGisInterface( theQgisInterFace )
, mCanvas( 0 )
, mRegionAction( 0 )
Expand Down Expand Up @@ -95,22 +94,22 @@ QgsGrassPlugin::~QgsGrassPlugin()
/* Following functions return name, description, version, and type for the plugin */
QString QgsGrassPlugin::name()
{
return pluginNameQString;
return pluginName;
}

QString QgsGrassPlugin::version()
{
return pluginVersionQString;
return pluginVersion;
}

QString QgsGrassPlugin::description()
{
return pluginDescriptionQString;
return pluginDescription;
}

QString QgsGrassPlugin::category()
{
return pluginCategoryQString;
return pluginCategory;
}

void QgsGrassPlugin::help()
Expand Down Expand Up @@ -973,19 +972,19 @@ QGISEXTERN QgisPlugin * classFactory( QgisInterface * theQgisInterfacePointer )
// the class may not yet be insantiated when this method is called.
QGISEXTERN QString name()
{
return QObject::tr( "GRASS" );
return pluginName;
}

// Return the description
QGISEXTERN QString description()
{
return QObject::tr( "GRASS layer" );
return pluginDescription;
}

// Return the category
QGISEXTERN QString category()
{
return QObject::tr( "Plugins" );
return pluginCategory;
}

// Return the type (either UI or MapLayer plugin)
Expand Down
8 changes: 0 additions & 8 deletions src/plugins/grass/qgsgrassplugin.h
Original file line number Diff line number Diff line change
Expand Up @@ -136,14 +136,6 @@ class QgsGrassPlugin : public QObject, public QgisPlugin
void setTransform();
void editClosed();
private:
//! Name of the plugin
QString pluginNameQString;
//! Version
QString pluginVersionQString;
//! Descrption of the plugin
QString pluginDescriptionQString;
//! Category of the plugin
QString pluginCategoryQString;
//! Pointer to our toolbar
QToolBar *mToolBarPointer;
//! Pointer to the QGIS interface object
Expand Down
3 changes: 2 additions & 1 deletion src/plugins/grass/qgsgrassshell.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#include "qgsgrass.h"
#include "qgsconfig.h"

#include "qgsgrassutils.h"
#include "qgsgrassshell.h"

extern "C"
Expand Down Expand Up @@ -100,7 +101,7 @@ void QgsGrassShell::initTerminal( QTermWidget *terminal )
env << "TERM=vt100";
env << "GISRC_MODE_MEMORY";
// TODO: we should check if these environment variable were set by user before QGIS was started
env << "GRASS_HTML_BROWSER=" + QgsApplication::libexecPath() + "grass/bin/qgis.g.browser";
env << "GRASS_HTML_BROWSER=" + QgsGrassUtils::htmlBrowserPath() ;
env << "GRASS_WISH=wish";
env << "GRASS_TCLSH=tclsh";
env << "GRASS_PYTHON=python";
Expand Down
2 changes: 1 addition & 1 deletion src/plugins/grass/qgsgrasstools.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ void QgsGrassTools::runModule( QString name, bool direct )
if ( name == "shell" )
{
#ifdef Q_OS_WIN
QgsGrass::putEnv( "GRASS_HTML_BROWSER", QgsApplication::libexecPath() + "grass/bin/qgis.g.browser" );
QgsGrass::putEnv( "GRASS_HTML_BROWSER", QgsGrassUtils::htmlBrowserPath() );
if ( !QProcess::startDetached( getenv( "COMSPEC" ) ) )
{
QMessageBox::warning( 0, "Warning", tr( "Cannot start command shell (%1)" ).arg( getenv( "COMSPEC" ) ) );
Expand Down
7 changes: 7 additions & 0 deletions src/plugins/grass/qgsgrassutils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
#include "qgsgrass.h"

#include "qgisinterface.h"
#include "qgsapplication.h"
#include "qgslogger.h"

#include <QFileInfo>
Expand Down Expand Up @@ -65,6 +66,12 @@ bool QgsGrassUtils::itemExists( QString element, QString item )
return fi.exists();
}


QString QgsGrassUtils::htmlBrowserPath()
{
return QgsApplication::libexecPath() + "grass/bin/qgis.g.browser" + QString::number( QgsGrass::versionMajor() );
}

QgsGrassElementDialog::QgsGrassElementDialog( QWidget *parent )
: QObject()
, mDialog( 0 )
Expand Down
2 changes: 2 additions & 0 deletions src/plugins/grass/qgsgrassutils.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ class QgsGrassUtils
// Check if element exists in current mapset
static bool itemExists( QString element, QString item );

//! Get path to custom HTML browser starter executable
static QString htmlBrowserPath();
};

/*! \class QgsGrassElementDialog
Expand Down
300 changes: 160 additions & 140 deletions src/providers/grass/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
ADD_DEFINITIONS(-DGRASS_BASE=\\\"${GRASS_PREFIX}\\\")

#ADD_DEFINITIONS(-DGRASS_BASE=\\\"${GRASS_PREFIX}\\\")
########################################################
# Build

INCLUDE_DIRECTORIES(
../../core
../../core/raster
${GRASS_INCLUDE_DIR}
${GDAL_INCLUDE_DIR}
${PROJ_INCLUDE_DIR}
${GEOS_INCLUDE_DIR}
Expand All @@ -17,59 +15,167 @@ INCLUDE_DIRECTORIES(
#
# GRASS library
#

QT4_WRAP_CPP(GRASS_PROVIDER_MOC_SRCS qgsgrassprovider.h)
ADD_LIBRARY(qgisgrass SHARED qgsgrass.cpp qgsgrassfeatureiterator.cpp qgsgrassprovider.cpp ${GRASS_PROVIDER_MOC_SRCS})

SET_TARGET_PROPERTIES(qgisgrass PROPERTIES
CLEAN_DIRECT_OUTPUT 1
FRAMEWORK 1
FRAMEWORK_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}"
MACOSX_FRAMEWORK_INFO_PLIST "${CMAKE_SOURCE_DIR}/mac/framework.info.plist.in"
MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${COMPLETE_VERSION}
MACOSX_FRAMEWORK_IDENTIFIER org.qgis.qgis2_grass
COMPILE_FLAGS "\"-DGRASS_LIB_EXPORT=${DLLEXPORT}\" \"-DGRASS_EXPORT=${DLLIMPORT}\"" )

IF (APPLE)
SET_TARGET_PROPERTIES(qgisgrass PROPERTIES
LINK_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}"
FOREACH(GRASS_BUILD_VERSION 6 7) # GRASS 6 and GRASS 7
IF(GRASS_FOUND${GRASS_BUILD_VERSION})
SET(GRASS_PREFIX ${GRASS_PREFIX${GRASS_BUILD_VERSION}})
SET(GRASS_MAJOR_VERSION ${GRASS_MAJOR_VERSION${GRASS_BUILD_VERSION}})
SET(GRASS_MINOR_VERSION ${GRASS_MINOR_VERSION${GRASS_BUILD_VERSION}})

GET_PROPERTY(INCLUDE_DIRECTORIES DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)
LIST(APPEND INCLUDE_DIRECTORIES ${GRASS_INCLUDE_DIR${GRASS_BUILD_VERSION}})

QT4_WRAP_CPP(GRASS_PROVIDER_MOC_SRCS qgsgrassprovider.h)

ADD_LIBRARY(qgisgrass${GRASS_BUILD_VERSION} SHARED qgsgrass.cpp qgsgrassfeatureiterator.cpp qgsgrassprovider.cpp ${GRASS_PROVIDER_MOC_SRCS})

SET_TARGET_PROPERTIES(qgisgrass${GRASS_BUILD_VERSION} PROPERTIES
CLEAN_DIRECT_OUTPUT 1
FRAMEWORK 1
FRAMEWORK_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}"
MACOSX_FRAMEWORK_INFO_PLIST "${CMAKE_SOURCE_DIR}/mac/framework.info.plist.in"
MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${COMPLETE_VERSION}
MACOSX_FRAMEWORK_IDENTIFIER org.qgis.qgis2_grass
INCLUDE_DIRECTORIES "${INCLUDE_DIRECTORIES}"
COMPILE_FLAGS "-DGRASS_BASE=\\\"${GRASS_PREFIX}\\\" \"-DGRASS_LIB_EXPORT=${DLLEXPORT}\" \"-DGRASS_EXPORT=${DLLIMPORT}\""
)
ENDIF (APPLE)

#generate unversioned libs for android
IF (NOT ANDROID)
SET_TARGET_PROPERTIES(qgisgrass PROPERTIES
VERSION ${COMPLETE_VERSION}
SOVERSION ${COMPLETE_VERSION}
IF (APPLE)
SET_TARGET_PROPERTIES(qgisgrass${GRASS_BUILD_VERSION} PROPERTIES
LINK_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}"
)
ENDIF (APPLE)

#generate unversioned libs for android
IF (NOT ANDROID)
SET_TARGET_PROPERTIES(qgisgrass${GRASS_BUILD_VERSION} PROPERTIES
VERSION ${COMPLETE_VERSION}
SOVERSION ${COMPLETE_VERSION}
)
ENDIF (NOT ANDROID)

IF (GRASS_MAJOR_VERSION LESS 7 )
SET(GRASS_TARGET_LINK_LIBRARIES${GRASS_BUILD_VERSION}
qgis_core
${GRASS_LIBRARY${GRASS_BUILD_VERSION}_gis}
${GRASS_LIBRARY${GRASS_BUILD_VERSION}_vect}
${GRASS_LIBRARY${GRASS_BUILD_VERSION}_dbmibase}
${GRASS_LIBRARY${GRASS_BUILD_VERSION}_dbmiclient}
${GRASS_LIBRARY${GRASS_BUILD_VERSION}_gproj}
)
ELSE (GRASS_MAJOR_VERSION LESS 7 )
SET(GRASS_TARGET_LINK_LIBRARIES${GRASS_BUILD_VERSION}
qgis_core
${GRASS_LIBRARY${GRASS_BUILD_VERSION}_gis}
${GRASS_LIBRARY${GRASS_BUILD_VERSION}_vector}
${GRASS_LIBRARY${GRASS_BUILD_VERSION}_raster}
${GRASS_LIBRARY${GRASS_BUILD_VERSION}_dbmibase}
${GRASS_LIBRARY${GRASS_BUILD_VERSION}_dbmiclient}
${GRASS_LIBRARY${GRASS_BUILD_VERSION}_gproj}
)
ENDIF (GRASS_MAJOR_VERSION LESS 7 )

TARGET_LINK_LIBRARIES(qgisgrass${GRASS_BUILD_VERSION} ${GRASS_TARGET_LINK_LIBRARIES${GRASS_BUILD_VERSION}})

IF (APPLE)
SET_TARGET_PROPERTIES(qgisgrass${GRASS_BUILD_VERSION} PROPERTIES BUILD_WITH_INSTALL_RPATH TRUE)
ENDIF (APPLE)

#
# GRASS vector provider
#
ADD_LIBRARY(grassprovider${GRASS_BUILD_VERSION} MODULE qgsgrassprovidermodule.cpp)
SET_TARGET_PROPERTIES(grassprovider${GRASS_BUILD_VERSION} PROPERTIES
COMPILE_FLAGS "-DGRASS_BASE=\\\"${GRASS_PREFIX}\\\" \"-DGRASS_EXPORT=${DLLEXPORT}\" \"-DGRASS_LIB_EXPORT=${DLLIMPORT}\""
INCLUDE_DIRECTORIES "${INCLUDE_DIRECTORIES}"
)
ENDIF (NOT ANDROID)

IF (GRASS_MAJOR_VERSION LESS 7 )
SET(GRASS_TARGET_LINK_LIBRARIES
qgis_core
${GRASS_LIBRARY_gis}
${GRASS_LIBRARY_vect}
${GRASS_LIBRARY_dbmibase}
${GRASS_LIBRARY_dbmiclient}
${GRASS_LIBRARY_gproj}
TARGET_LINK_LIBRARIES(grassprovider${GRASS_BUILD_VERSION} qgisgrass${GRASS_BUILD_VERSION})

#
# grass raster provider
#
QT4_WRAP_CPP(GRASS_RASTERPROVIDER_MOC_SRCS qgsgrassrasterprovider.h)
ADD_LIBRARY(grassrasterprovider${GRASS_BUILD_VERSION} MODULE qgsgrassrasterprovider.cpp ${GRASS_RASTERPROVIDER_MOC_SRCS})
SET_TARGET_PROPERTIES(grassrasterprovider${GRASS_BUILD_VERSION} PROPERTIES
COMPILE_FLAGS "-DGRASS_BASE=\\\"${GRASS_PREFIX}\\\" \"-DGRASS_EXPORT=${DLLEXPORT}\" \"-DGRASS_LIB_EXPORT=${DLLIMPORT}\""
INCLUDE_DIRECTORIES "${INCLUDE_DIRECTORIES}"
)
TARGET_LINK_LIBRARIES(grassrasterprovider${GRASS_BUILD_VERSION} qgisgrass${GRASS_BUILD_VERSION} qgis_core)

# override default path where built files are put to allow running qgis without installing
# the modules go under libexec subdir
SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${QGIS_OUTPUT_DIRECTORY}/${QGIS_LIBEXEC_SUBDIR}/grass/modules)

#
# grass raster display module
#
ADD_EXECUTABLE(qgis.d.rast${GRASS_BUILD_VERSION} qgis.d.rast.c)
IF (GRASS_MAJOR_VERSION LESS 7 )
TARGET_LINK_LIBRARIES(qgis.d.rast${GRASS_BUILD_VERSION}
${GRASS_LIBRARY${GRASS_BUILD_VERSION}_gis}
${GRASS_LIBRARY${GRASS_BUILD_VERSION}_datetime}
${GDAL_LIBRARY}
)
ELSE (GRASS_MAJOR_VERSION LESS 7 )
TARGET_LINK_LIBRARIES(qgis.d.rast${GRASS_BUILD_VERSION}
${GRASS_LIBRARY${GRASS_BUILD_VERSION}_gis}
${GRASS_LIBRARY${GRASS_BUILD_VERSION}_datetime}
${GRASS_LIBRARY${GRASS_BUILD_VERSION}_raster}
${GDAL_LIBRARY}
)
ENDIF (GRASS_MAJOR_VERSION LESS 7 )
SET_TARGET_PROPERTIES(qgis.d.rast${GRASS_BUILD_VERSION} PROPERTIES
INCLUDE_DIRECTORIES "${INCLUDE_DIRECTORIES}"
)
ELSE (GRASS_MAJOR_VERSION LESS 7 )
SET(GRASS_TARGET_LINK_LIBRARIES
qgis_core
${GRASS_LIBRARY_gis}
${GRASS_LIBRARY_vector}
${GRASS_LIBRARY_raster}
${GRASS_LIBRARY_dbmibase}
${GRASS_LIBRARY_dbmiclient}
${GRASS_LIBRARY_gproj}
)
ENDIF (GRASS_MAJOR_VERSION LESS 7 )

TARGET_LINK_LIBRARIES(qgisgrass ${GRASS_TARGET_LINK_LIBRARIES})
#
# grass info module
#
ADD_EXECUTABLE(qgis.g.info${GRASS_BUILD_VERSION} qgis.g.info.c)
IF (GRASS_MAJOR_VERSION LESS 7 )
TARGET_LINK_LIBRARIES(qgis.g.info${GRASS_BUILD_VERSION}
${GRASS_LIBRARY${GRASS_BUILD_VERSION}_gis}
${GRASS_LIBRARY${GRASS_BUILD_VERSION}_datetime}
${GRASS_LIBRARY${GRASS_BUILD_VERSION}_gproj}
${GDAL_LIBRARY}
)
ELSE (GRASS_MAJOR_VERSION LESS 7 )
TARGET_LINK_LIBRARIES(qgis.g.info${GRASS_BUILD_VERSION}
${GRASS_LIBRARY${GRASS_BUILD_VERSION}_gis}
${GRASS_LIBRARY${GRASS_BUILD_VERSION}_datetime}
${GRASS_LIBRARY${GRASS_BUILD_VERSION}_gproj}
${GRASS_LIBRARY${GRASS_BUILD_VERSION}_raster}
${GDAL_LIBRARY}
)
ENDIF (GRASS_MAJOR_VERSION LESS 7 )
IF (UNIX)
TARGET_LINK_LIBRARIES(qgis.g.info${GRASS_BUILD_VERSION} m)
ENDIF (UNIX)
SET_TARGET_PROPERTIES(qgis.g.info${GRASS_BUILD_VERSION} PROPERTIES
INCLUDE_DIRECTORIES "${INCLUDE_DIRECTORIES}"
)

########################################################
# Install

INSTALL(TARGETS qgisgrass${GRASS_BUILD_VERSION}
RUNTIME DESTINATION ${QGIS_BIN_DIR}
LIBRARY DESTINATION ${QGIS_LIB_DIR}
FRAMEWORK DESTINATION ${QGIS_FW_SUBDIR})

INSTALL(TARGETS grassprovider${GRASS_BUILD_VERSION}
RUNTIME DESTINATION ${QGIS_PLUGIN_DIR}
LIBRARY DESTINATION ${QGIS_PLUGIN_DIR})

IF (APPLE)
SET_TARGET_PROPERTIES(qgisgrass PROPERTIES BUILD_WITH_INSTALL_RPATH TRUE)
ENDIF (APPLE)
INSTALL(TARGETS grassrasterprovider${GRASS_BUILD_VERSION}
RUNTIME DESTINATION ${QGIS_PLUGIN_DIR}
LIBRARY DESTINATION ${QGIS_PLUGIN_DIR})

INSTALL(TARGETS qgis.d.rast${GRASS_BUILD_VERSION} qgis.g.info${GRASS_BUILD_VERSION}
RUNTIME DESTINATION ${QGIS_LIBEXEC_DIR}/grass/modules
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)
ENDIF(GRASS_FOUND${GRASS_BUILD_VERSION})
ENDFOREACH(GRASS_BUILD_VERSION 6 7)

#
# Fake GRASS gis library
Expand Down Expand Up @@ -547,94 +653,8 @@ IF(WITH_GRASS_DIRECT)
TARGET_LINK_LIBRARIES(${FAKE_LIB_GRASS_GIS}
qgis_core
)
ENDIF(WITH_GRASS_DIRECT)

#
# GRASS vector provider
#

ADD_LIBRARY(grassprovider MODULE qgsgrassprovidermodule.cpp)
SET_TARGET_PROPERTIES(grassprovider PROPERTIES COMPILE_FLAGS "\"-DGRASS_EXPORT=${DLLEXPORT}\" \"-DGRASS_LIB_EXPORT=${DLLIMPORT}\"" )
TARGET_LINK_LIBRARIES(grassprovider qgisgrass)

#
# grass raster provider
#

QT4_WRAP_CPP(GRASS_RASTERPROVIDER_MOC_SRCS qgsgrassrasterprovider.h)
ADD_LIBRARY(grassrasterprovider MODULE qgsgrassrasterprovider.cpp ${GRASS_RASTERPROVIDER_MOC_SRCS})
SET_TARGET_PROPERTIES(grassrasterprovider PROPERTIES COMPILE_FLAGS "\"-DGRASS_EXPORT=${DLLEXPORT}\" \"-DGRASS_LIB_EXPORT=${DLLIMPORT}\"" )
TARGET_LINK_LIBRARIES(grassrasterprovider qgisgrass qgis_core)

# override default path where built files are put to allow running qgis without installing
# the modules go under libexec subdir
SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${QGIS_OUTPUT_DIRECTORY}/${QGIS_LIBEXEC_SUBDIR}/grass/modules)

#
# grass raster display module
#
ADD_EXECUTABLE(qgis.d.rast qgis.d.rast.c)
IF (GRASS_MAJOR_VERSION LESS 7 )
TARGET_LINK_LIBRARIES(qgis.d.rast
${GRASS_LIBRARY_gis}
${GRASS_LIBRARY_datetime}
${GDAL_LIBRARY}
)
ELSE (GRASS_MAJOR_VERSION LESS 7 )
TARGET_LINK_LIBRARIES(qgis.d.rast
${GRASS_LIBRARY_gis}
${GRASS_LIBRARY_datetime}
${GRASS_LIBRARY_raster}
${GDAL_LIBRARY}
)
ENDIF (GRASS_MAJOR_VERSION LESS 7 )

#
# grass info module
#

ADD_EXECUTABLE(qgis.g.info qgis.g.info.c)
IF (GRASS_MAJOR_VERSION LESS 7 )
TARGET_LINK_LIBRARIES(qgis.g.info
${GRASS_LIBRARY_gis}
${GRASS_LIBRARY_datetime}
${GRASS_LIBRARY_gproj}
${GDAL_LIBRARY}
)
ELSE (GRASS_MAJOR_VERSION LESS 7 )
TARGET_LINK_LIBRARIES(qgis.g.info
${GRASS_LIBRARY_gis}
${GRASS_LIBRARY_datetime}
${GRASS_LIBRARY_gproj}
${GRASS_LIBRARY_raster}
${GDAL_LIBRARY}
)
ENDIF (GRASS_MAJOR_VERSION LESS 7 )
IF (UNIX)
TARGET_LINK_LIBRARIES(qgis.g.info m)
ENDIF (UNIX)

########################################################
# Install

INSTALL(TARGETS qgisgrass
RUNTIME DESTINATION ${QGIS_BIN_DIR}
LIBRARY DESTINATION ${QGIS_LIB_DIR}
FRAMEWORK DESTINATION ${QGIS_FW_SUBDIR})

INSTALL(TARGETS ${FAKE_LIB_GRASS_GIS}
RUNTIME DESTINATION ${QGIS_PLUGIN_DIR}
LIBRARY DESTINATION ${QGIS_PLUGIN_DIR})

INSTALL(TARGETS grassprovider
RUNTIME DESTINATION ${QGIS_PLUGIN_DIR}
LIBRARY DESTINATION ${QGIS_PLUGIN_DIR})

INSTALL(TARGETS grassrasterprovider
RUNTIME DESTINATION ${QGIS_PLUGIN_DIR}
LIBRARY DESTINATION ${QGIS_PLUGIN_DIR})

INSTALL(TARGETS qgis.d.rast qgis.g.info
RUNTIME DESTINATION ${QGIS_LIBEXEC_DIR}/grass/modules
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)
INSTALL(TARGETS ${FAKE_LIB_GRASS_GIS}
RUNTIME DESTINATION ${QGIS_PLUGIN_DIR}
LIBRARY DESTINATION ${QGIS_PLUGIN_DIR})
ENDIF(WITH_GRASS_DIRECT)
1 change: 1 addition & 0 deletions src/providers/grass/qgsgrass.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1276,6 +1276,7 @@ QProcess GRASS_LIB_EXPORT *QgsGrass::startModule( QString gisdbase, QString loca
QgsDebugMsg( QString( "gisdbase = %1 location = %2" ).arg( gisdbase ).arg( location ) );
QProcess *process = new QProcess();

module += QString::number( QgsGrass::versionMajor() );
#ifdef Q_OS_WIN
module += ".exe";
#endif
Expand Down
2 changes: 1 addition & 1 deletion src/providers/grass/qgsgrassprovidermodule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,7 @@ QGISEXTERN QString providerKey()
*/
QGISEXTERN QString description()
{
return QString( "GRASS data provider" );
return QString( "GRASS %1 vector provider" ).arg( GRASS_VERSION_MAJOR );
}

/**
Expand Down
2 changes: 1 addition & 1 deletion src/providers/grass/qgsgrassrasterprovider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
#define ERROR(message) QgsError(message,"GRASS provider")

static QString PROVIDER_KEY = "grassraster";
static QString PROVIDER_DESCRIPTION = "GRASS raster provider";
static QString PROVIDER_DESCRIPTION = QString( "GRASS %1 raster provider" ).arg( GRASS_VERSION_MAJOR );

QgsGrassRasterProvider::QgsGrassRasterProvider( QString const & uri )
: QgsRasterDataProvider( uri )
Expand Down