Commit 579a3749 authored by John Tourtellott's avatar John Tourtellott
Browse files

Add cmake files and update to build cumulus library

Includes adding cJSON source files for now (TBD replace with Nlohmann json).
Note this lib and binary only require Qt (not paraview)
parent b36a9dc1
cmake_minimum_required(VERSION 3.12)
project(ace3p-extension VERSION 1.0)
option(BUILD_SHARED_LIBS "Build CMB using shared libraries" ON)
# Set the directory where the binaries will be stored
include(GNUInstallDirs)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
set(CMAKE_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
# Add our Cmake directory to the module search path
list(APPEND CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMake)
option(ENABLE_TESTING "Enable Testing" OFF)
if (ENABLE_TESTING)
include(CTest)
include(TestingMacros)
endif()
# Nlohmann json
find_package(nlohmann_json REQUIRED)
# Find smtk
find_package(smtk REQUIRED)
if(WIN32 AND MSVC)
#setup windows exception handling so we can compile properly with boost
#enabled
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc")
#quiet warnings about printf being potentially unsafe
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4996")
#quiet warnings about truncating decorated name
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4503")
add_definitions(-DBOOST_ALL_NO_LIB)
endif()
# Build libs
add_subdirectory(smtk)
add_subdirectory(cumulus)
add_subdirectory(jobspanel)
find_package(Qt5 REQUIRED COMPONENTS Core Gui Network Widgets)
include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/girderfilebrowser")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/girderfilebrowser/ui")
set(CMAKE_AUTOUIC_SEARCH_PATHS
"${CMAKE_CURRENT_SOURCE_DIR}/ui"
)
set(ui_files
ui/jobtablewidget.ui
ui/mainwindow.ui
ui/logindialog.ui
ui/cumuluswidget.ui
# Mandatory girder file browser files
girderfilebrowser/ui/girderfilebrowserdialog.ui
# Optional girder file browser files (for stand-alone executable)
girderfilebrowser/ui/girderlogindialog.ui
)
set(src
......@@ -28,13 +24,7 @@ set(src
cumuluswidget.cxx
mainwindow.cxx
pqCumulusJobsPanel.cxx
# Mandatory girder file browser files
girderfilebrowser/girderfilebrowserfetcher.cxx
girderfilebrowser/ui/girderfilebrowserdialog.cxx
girderfilebrowser/ui/girderfilebrowserlistview.cxx
# Optional girder file browser files (for stand-alone executable)
girderfilebrowser/girderauthenticator.cxx
girderfilebrowser/ui/girderlogindialog.cxx
cJSON.c
)
#add moc files
......@@ -47,18 +37,6 @@ set(mochdrs
jobview.h
mainwindow.h
pqCumulusJobsPanel.h
# Mandatory girder file browser files
girderfilebrowser/girderfilebrowserfetcher.h
girderfilebrowser/ui/girderfilebrowserdialog.h
girderfilebrowser/ui/girderfilebrowserlistview.h
# Optional girder file browser files (for stand-alone executable)
girderfilebrowser/girderauthenticator.h
girderfilebrowser/ui/girderlogindialog.h
)
#resource files
set(resources
girderfilebrowser/resources.qrc
)
set(CMAKE_AUTOUIC 1)
......@@ -70,84 +48,46 @@ set(hdrs
cumuluswidget.h
job.h
logindialog.h
cJSON.h
)
#extension library
add_library(smtkCumulusExt
add_library(smtkCumulus
${src}
${hdrs}
${mochdrs}
${ui_files}
${resources}
)
smtk_public_headers(smtkCumulusExt ${hdrs})
smtk_public_headers(smtkCumulus ${hdrs})
#we need to add the location of the moc files to the include dir
target_include_directories(smtkCumulusExt PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
target_include_directories(smtkCumulus PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
target_include_directories(smtkCumulus PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
$<INSTALL_INTERFACE:include>
)
#publicly link to smtkCore
target_link_libraries(smtkCumulusExt LINK_PUBLIC
target_link_libraries(smtkCumulus LINK_PUBLIC
smtkCore
Qt5::Core
Qt5::Gui
Qt5::Network
Qt5::Widgets
)
smtk_export_header(smtkCumulusExt Exports.h)
smtk_export_header(smtkCumulus Exports.h)
#install the library and exports
smtk_install_library(smtkCumulusExt)
smtk_install_library(smtkCumulus)
#standalone cumulus executable
add_executable(cumulus MACOSX_BUNDLE
main.cxx
)
#standalone girder file browser executable for debugging
add_executable(girderfilebrowser MACOSX_BUNDLE WIN32
girderfilebrowser/girderfilebrowser.cxx
)
set_target_properties(cumulus PROPERTIES AUTOMOC TRUE)
set_target_properties(girderfilebrowser PROPERTIES AUTOMOC TRUE)
target_link_libraries(cumulus
smtkCumulusExt
cJSON
smtkCumulus
)
target_link_libraries(girderfilebrowser
smtkCumulusExt
)
if(SMTK_ENABLE_PARAVIEW_SUPPORT)
add_paraview_dock_window(cumulusJobsPanelIfaces cumulusJobsPanelIfaceSrcs
CLASS_NAME pqCumulusJobsPanel
)
list(APPEND PLUGIN_DOCK_IFACES ${cumulusJobsPanelIfaces})
list(APPEND PLUGIN_DOCK_IFACES_SRCS ${cumulusJobsPanelIfaceSrcs})
unset(CMAKE_AUTOMOC)
add_paraview_plugin(
smtkPQCumulusJobsPlugin "1.0"
GUI_INTERFACES
${PLUGIN_ACTION_IFACES}
${PLUGIN_AUTOSTART_IFACES}
${PLUGIN_PROXY_IFACES}
${PLUGIN_DOCK_IFACES}
GUI_SOURCES
${Headers}
${Sources}
${PLUGIN_MOC_SRCS}
${PLUGIN_ACTION_IFACE_SRCS}
${PLUGIN_AUTOSTART_IFACE_SRCS}
${PLUGIN_PROXY_IFACE_SRCS}
${PLUGIN_DOCK_IFACES_SRCS}
)
set_property(GLOBAL APPEND PROPERTY SMTK_PLUGINS "smtkPQCumulusJobsPlugin")
target_link_libraries(smtkPQCumulusJobsPlugin
LINK_PUBLIC
smtkCumulusExt
)
smtk_install_library(smtkPQCumulusJobsPlugin)
endif()
This diff is collapsed.
/*
Copyright (c) 2009 Dave Gamble
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
#ifndef cJSON__h
#define cJSON__h
#ifdef __cplusplus
extern "C"
{
#endif
/* cJSON Types: */
#define cJSON_False 0
#define cJSON_True 1
#define cJSON_NULL 2
#define cJSON_Number 3
#define cJSON_String 4
#define cJSON_Array 5
#define cJSON_Object 6
#define cJSON_IsReference 256
/* The cJSON structure: */
typedef struct cJSON {
struct cJSON *next,*prev; /* next/prev allow you to walk array/object chains. Alternatively, use GetArraySize/GetArrayItem/GetObjectItem */
struct cJSON *child; /* An array or object item will have a child pointer pointing to a chain of the items in the array/object. */
int type; /* The type of the item, as above. */
char *valuestring; /* The item's string, if type==cJSON_String */
int valueint; /* The item's number, if type==cJSON_Number */
double valuedouble; /* The item's number, if type==cJSON_Number */
char *string; /* The item's name string, if this item is the child of, or is in the list of subitems of an object. */
} cJSON;
typedef struct cJSON_Hooks {
void *(*malloc_fn)(size_t sz);
void (*free_fn)(void *ptr);
} cJSON_Hooks;
/* Supply malloc, realloc and free functions to cJSON */
extern void cJSON_InitHooks(cJSON_Hooks* hooks);
/* Supply a block of JSON, and this returns a cJSON object you can interrogate. Call cJSON_Delete when finished. */
extern cJSON *cJSON_Parse(const char *value);
/* Render a cJSON entity to text for transfer/storage. Free the char* when finished. */
extern char *cJSON_Print(cJSON *item);
/* Render a cJSON entity to text for transfer/storage without any formatting. Free the char* when finished. */
extern char *cJSON_PrintUnformatted(cJSON *item);
/* Delete a cJSON entity and all subentities. */
extern void cJSON_Delete(cJSON *c);
/* Returns the number of items in an array (or object). */
extern int cJSON_GetArraySize(cJSON *array);
/* Retrieve item number "item" from array "array". Returns NULL if unsuccessful. */
extern cJSON *cJSON_GetArrayItem(cJSON *array,int item);
/* Get item "string" from object. Case insensitive. */
extern cJSON *cJSON_GetObjectItem(cJSON *object,const char *string);
/* For analysing failed parses. This returns a pointer to the parse error. You'll probably need to look a few chars back to make sense of it. Defined when cJSON_Parse() returns 0. 0 when cJSON_Parse() succeeds. */
extern const char *cJSON_GetErrorPtr(void);
/* These calls create a cJSON item of the appropriate type. */
extern cJSON *cJSON_CreateNull(void);
extern cJSON *cJSON_CreateTrue(void);
extern cJSON *cJSON_CreateFalse(void);
extern cJSON *cJSON_CreateBool(int b);
extern cJSON *cJSON_CreateNumber(double num);
extern cJSON *cJSON_CreateString(const char *string);
extern cJSON *cJSON_CreateArray(void);
extern cJSON *cJSON_CreateObject(void);
/* These utilities create an Array of count items. */
extern cJSON *cJSON_CreateIntArray(const int *numbers,int count);
extern cJSON *cJSON_CreateFloatArray(const float *numbers,int count);
extern cJSON *cJSON_CreateDoubleArray(const double *numbers,int count);
extern cJSON *cJSON_CreateStringArray(const char **strings,int count);
/* Append item to the specified array/object. */
extern void cJSON_AddItemToArray(cJSON *array, cJSON *item);
extern void cJSON_AddItemToObject(cJSON *object,const char *string,cJSON *item);
/* Append reference to item to the specified array/object. Use this when you want to add an existing cJSON to a new cJSON, but don't want to corrupt your existing cJSON. */
extern void cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item);
extern void cJSON_AddItemReferenceToObject(cJSON *object,const char *string,cJSON *item);
/* Remove/Detatch items from Arrays/Objects. */
extern cJSON *cJSON_DetachItemFromArray(cJSON *array,int which);
extern void cJSON_DeleteItemFromArray(cJSON *array,int which);
extern cJSON *cJSON_DetachItemFromObject(cJSON *object,const char *string);
extern void cJSON_DeleteItemFromObject(cJSON *object,const char *string);
/* Update array items. */
extern void cJSON_ReplaceItemInArray(cJSON *array,int which,cJSON *newitem);
extern void cJSON_ReplaceItemInObject(cJSON *object,const char *string,cJSON *newitem);
/* Duplicate a cJSON item */
extern cJSON *cJSON_Duplicate(cJSON *item,int recurse);
/* Duplicate will create a new, identical cJSON item to the one you pass, in new memory that will
need to be released. With recurse!=0, it will duplicate any children connected to the item.
The item->next and ->prev pointers are always zero on return from Duplicate. */
/* ParseWithOpts allows you to require (and check) that the JSON is null terminated, and to retrieve the pointer to the final byte parsed. */
extern cJSON *cJSON_ParseWithOpts(const char *value,const char **return_parse_end,int require_null_terminated);
extern void cJSON_Minify(char *json);
/* Macros for creating things quickly. */
#define cJSON_AddNullToObject(object,name) cJSON_AddItemToObject(object, name, cJSON_CreateNull())
#define cJSON_AddTrueToObject(object,name) cJSON_AddItemToObject(object, name, cJSON_CreateTrue())
#define cJSON_AddFalseToObject(object,name) cJSON_AddItemToObject(object, name, cJSON_CreateFalse())
#define cJSON_AddBoolToObject(object,name,b) cJSON_AddItemToObject(object, name, cJSON_CreateBool(b))
#define cJSON_AddNumberToObject(object,name,n) cJSON_AddItemToObject(object, name, cJSON_CreateNumber(n))
#define cJSON_AddStringToObject(object,name,s) cJSON_AddItemToObject(object, name, cJSON_CreateString(s))
/* When assigning an integer value, it needs to be propagated to valuedouble too. */
#define cJSON_SetIntValue(object,val) ((object)?(object)->valueint=(object)->valuedouble=(val):(val))
#ifdef __cplusplus
}
#endif
#endif
......@@ -14,8 +14,8 @@
#ifndef __smtk_extension_cumulus_cumulusproxy_h
#define __smtk_extension_cumulus_cumulusproxy_h
#include "smtk/extension/cumulus/Exports.h"
#include "smtk/extension/cumulus/job.h"
#include "smtk/cumulus/jobspanel/Exports.h"
#include "smtk/cumulus/jobspanel/job.h"
#include <QList>
#include <QObject>
......@@ -28,7 +28,7 @@ class QNetworkAccessManager;
namespace cumulus
{
class SMTKCUMULUSEXT_EXPORT CumulusProxy : public QObject
class SMTKCUMULUS_EXPORT CumulusProxy : public QObject
{
Q_OBJECT
......
......@@ -14,8 +14,8 @@
#ifndef __smtk_extension_cumulus_cumuluswidget_h
#define __smtk_extension_cumulus_cumuluswidget_h
#include "smtk/extension/cumulus/Exports.h"
#include "smtk/extension/cumulus/logindialog.h"
#include "smtk/cumulus/jobspanel/Exports.h"
#include "smtk/cumulus/jobspanel/logindialog.h"
#include <QString>
......@@ -36,7 +36,7 @@ class JobTableModel;
class CumulusProxy;
class Job;
class SMTKCUMULUSEXT_EXPORT CumulusWidget : public QWidget
class SMTKCUMULUS_EXPORT CumulusWidget : public QWidget
{
Q_OBJECT
......
......@@ -17,9 +17,9 @@
// Are we building a stand alone girder file browser?
#ifdef GIRDERFILEBROWSER_BUILD_STANDALONE
// Empty definition to prevent compilation error
#define SMTKCUMULUSEXT_EXPORT
#define SMTKCUMULUS_EXPORT
#else
#include "smtk/extension/cumulus/Exports.h"
#include "smtk/cumulus/jobspanel/Exports.h"
#endif
#include <QList>
......@@ -35,7 +35,7 @@ class QNetworkReply;
namespace cumulus
{
class SMTKCUMULUSEXT_EXPORT GirderRequest : public QObject
class SMTKCUMULUS_EXPORT GirderRequest : public QObject
{
Q_OBJECT
......
......@@ -14,7 +14,7 @@
#ifndef __smtk_extension_cumulus_job_h
#define __smtk_extension_cumulus_job_h
#include "smtk/extension/cumulus/Exports.h"
#include "smtk/cumulus/jobspanel/Exports.h"
#include <QDateTime>
#include <QList>
......@@ -26,7 +26,7 @@ struct cJSON;
namespace cumulus
{
class SMTKCUMULUSEXT_EXPORT Job
class SMTKCUMULUS_EXPORT Job
{
public:
Job();
......
......@@ -14,9 +14,9 @@
#ifndef __smtk_extension_cumulus_jobrequest_h
#define __smtk_extension_cumulus_jobrequest_h
#include "smtk/extension/cumulus/Exports.h"
#include "smtk/extension/cumulus/girderrequest.h"
#include "smtk/extension/cumulus/job.h"
#include "smtk/cumulus/jobspanel/Exports.h"
#include "smtk/cumulus/jobspanel/girderrequest.h"
#include "smtk/cumulus/jobspanel/job.h"
#include <QList>
#include <QSet>
......@@ -27,7 +27,7 @@ struct cJSON;
namespace cumulus
{
class SMTKCUMULUSEXT_EXPORT JobRequest : public GirderRequest
class SMTKCUMULUS_EXPORT JobRequest : public GirderRequest
{
Q_OBJECT
......
......@@ -14,8 +14,8 @@
#ifndef __smtk_extension_cumulus_jobtablemodel_h
#define __smtk_extension_cumulus_jobtablemodel_h
#include "smtk/extension/cumulus/Exports.h"
#include "smtk/extension/cumulus/job.h"
#include "smtk/cumulus/jobspanel/Exports.h"
#include "smtk/cumulus/jobspanel/job.h"
#include <QAbstractTableModel>
#include <QDateTime>
......@@ -25,7 +25,7 @@
namespace cumulus
{
class SMTKCUMULUSEXT_EXPORT JobTableModel : public QAbstractTableModel
class SMTKCUMULUS_EXPORT JobTableModel : public QAbstractTableModel
{
Q_OBJECT
......
......@@ -14,7 +14,7 @@
#ifndef __smtk_extension_cumulus_jobtablewidget_h
#define __smtk_extension_cumulus_jobtablewidget_h
#include "smtk/extension/cumulus/Exports.h"
#include "smtk/cumulus/jobspanel/Exports.h"
#include <QString>
#include <QWidget>
......@@ -33,7 +33,7 @@ namespace cumulus
class JobTableModel;
class CumulusProxy;
class SMTKCUMULUSEXT_EXPORT JobTableWidget : public QWidget
class SMTKCUMULUS_EXPORT JobTableWidget : public QWidget
{
Q_OBJECT
......
......@@ -14,8 +14,8 @@
#ifndef __smtk_extension_cumulus_jobview_h
#define __smtk_extension_cumulus_jobview_h
#include "smtk/extension/cumulus/Exports.h"
#include "smtk/extension/cumulus/job.h"
#include "smtk/cumulus/jobspanel/Exports.h"
#include "smtk/cumulus/jobspanel/job.h"
#include <QMap>
#include <QString>
......@@ -27,7 +27,7 @@ namespace cumulus
{
class CumulusProxy;
class SMTKCUMULUSEXT_EXPORT JobView : public QTableView
class SMTKCUMULUS_EXPORT JobView : public QTableView
{
Q_OBJECT
......
......@@ -14,7 +14,7 @@
#ifndef __smtk_extension_cumulus_logindialog_h
#define __smtk_extension_cumulus_logindialog_h
#include "smtk/extension/cumulus/Exports.h"
#include "smtk/cumulus/jobspanel/Exports.h"
#include <QDialog>
......@@ -26,7 +26,7 @@ class LoginDialog;
namespace cumulus
{
class SMTKCUMULUSEXT_EXPORT LoginDialog : public QDialog
class SMTKCUMULUS_EXPORT LoginDialog : public QDialog
{
Q_OBJECT
......
......@@ -14,7 +14,7 @@
#ifndef __smtk_extension_cumulus_mainwindow_h
#define __smtk_extension_cumulus_mainwindow_h
#include "smtk/extension/cumulus/Exports.h"
#include "smtk/cumulus/jobspanel/Exports.h"
#include <QMainWindow>
......@@ -33,7 +33,7 @@ namespace cumulus
class JobTableModel;
class CumulusProxy;
class SMTKCUMULUSEXT_EXPORT MainWindow : public QMainWindow
class SMTKCUMULUS_EXPORT MainWindow : public QMainWindow
{
Q_OBJECT
......
......@@ -7,10 +7,10 @@
// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
// PURPOSE. See the above copyright notice for more information.
//=========================================================================
#include "smtk/extension/cumulus/pqCumulusJobsPanel.h"
#include "smtk/cumulus/jobspanel/pqCumulusJobsPanel.h"
#include "smtk/extension/cumulus/cumuluswidget.h"
#include "smtk/extension/cumulus/job.h"
#include "smtk/cumulus/jobspanel/cumuluswidget.h"
#include "smtk/cumulus/jobspanel/job.h"
#include <QAction>
#include <QFormLayout>
......
......@@ -13,11 +13,11 @@
#ifndef __CmbJobsPanels_h
#define __CmbJobsPanels_h
#include "smtk/extension/cumulus/Exports.h"
#include "smtk/cumulus/jobspanel/Exports.h"
#include <QDockWidget>
class SMTKCUMULUSEXT_EXPORT pqCumulusJobsPanel : public QDockWidget
class SMTKCUMULUS_EXPORT pqCumulusJobsPanel : public QDockWidget
{
Q_OBJECT
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment