From b70278428e5ec2cd9b2a81371d54a04b04d0dd13 Mon Sep 17 00:00:00 2001 From: Dimitrios Eftaxiopoulos Date: Sun, 6 Dec 2015 19:35:23 +0200 Subject: [PATCH] Fix several bugs --- .pc/CMakeLists.patch/.timestamp | 0 .pc/CMakeLists.patch/CMakeLists.txt | 581 +++++++++++++++++++++++++++ .pc/applied-patches | 3 + .pc/json.patch/.timestamp | 0 .pc/json.patch/json/Backend.hpp | 18 + .pc/src.patch/.timestamp | 0 .pc/src.patch/src/fit.cpp | 602 ++++++++++++++++++++++++++++ CMakeLists.txt | 30 +- debian/changelog | 5 +- debian/control | 4 +- debian/mathgl.install | 3 +- debian/patches/CMakeLists.patch | 68 ++++ debian/patches/json.patch | 9 + debian/patches/series | 3 + debian/patches/src.patch | 11 + json/Backend.hpp | 1 + src/fit.cpp | 2 +- 17 files changed, 1320 insertions(+), 20 deletions(-) create mode 100644 .pc/CMakeLists.patch/.timestamp create mode 100644 .pc/CMakeLists.patch/CMakeLists.txt create mode 100644 .pc/applied-patches create mode 100644 .pc/json.patch/.timestamp create mode 100644 .pc/json.patch/json/Backend.hpp create mode 100644 .pc/src.patch/.timestamp create mode 100644 .pc/src.patch/src/fit.cpp create mode 100644 debian/patches/CMakeLists.patch create mode 100644 debian/patches/json.patch create mode 100644 debian/patches/src.patch diff --git a/.pc/CMakeLists.patch/.timestamp b/.pc/CMakeLists.patch/.timestamp new file mode 100644 index 0000000..e69de29 diff --git a/.pc/CMakeLists.patch/CMakeLists.txt b/.pc/CMakeLists.patch/CMakeLists.txt new file mode 100644 index 0000000..e2f5e46 --- /dev/null +++ b/.pc/CMakeLists.patch/CMakeLists.txt @@ -0,0 +1,581 @@ +cmake_minimum_required(VERSION 2.8.9) +if(POLICY CMP0043) + cmake_policy(SET CMP0043 OLD) +endif() + +project( MathGL ) + +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: + None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel." FORCE) +endif(NOT CMAKE_BUILD_TYPE) + +set(CMAKE_VERBOSE_MAKEFILE ON) +set(MathGL_VERSION_MAJOR 2) +set(MathGL_VERSION_MINOR 3.3) +set(MathGL_SOVERSION 7.4.0) + +function(mgl_add_lib mgl_tmp_lib) + if(${mgl_tmp_lib} MATCHES mgl) + set(mgllib mgl) + set(mgllib2 mgl2) + else(${mgl_tmp_lib} MATCHES mgl) + set(mgllib mgl-${mgl_tmp_lib}) + set(mgllib2 mgl2-${mgl_tmp_lib}) + endif(${mgl_tmp_lib} MATCHES mgl) + set(mgl_src_lst ${ARGV}) + list(REMOVE_AT mgl_src_lst 0) + add_library(${mgllib} SHARED ${mgl_src_lst}) + add_library(${mgllib}-static STATIC ${mgl_src_lst}) + set_target_properties(${mgllib} PROPERTIES SOVERSION ${MathGL_SOVERSION}) + set_target_properties(${mgllib} PROPERTIES CLEAN_DIRECT_OUTPUT 1) + set_target_properties(${mgllib} PROPERTIES DEFINE_SYMBOL "mgl_EXPORTS") + set_target_properties(${mgllib}-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) + target_compile_definitions(${mgllib}-static PUBLIC MGL_STATIC_DEFINE) + + if(enable-mgl2) + set_target_properties(${mgllib} PROPERTIES OUTPUT_NAME "${mgllib2}") + set_target_properties(${mgllib}-static PROPERTIES OUTPUT_NAME "${mgllib2}") + else(enable-mgl2) + set_target_properties(${mgllib}-static PROPERTIES OUTPUT_NAME "${mgllib}") + endif(enable-mgl2) + + install( + TARGETS ${mgllib} ${mgllib}-static + RUNTIME DESTINATION bin + ARCHIVE DESTINATION ${MGL_LIB_INSTALL_DIR} + LIBRARY DESTINATION ${MGL_LIB_INSTALL_DIR} + ) +endfunction(mgl_add_lib mgl_tmp_lib) + +MACRO(MGL_DEPENDENT_OPTION option doc default depends1 force1 depends2 force2) + IF(${option}_ISSET MATCHES "^${option}_ISSET$") + SET(${option}_AVAILABLE 1) + IF(${force1}) + FOREACH(d ${depends1}) + STRING(REGEX REPLACE " +" ";" CMAKE_DEPENDENT_OPTION_DEP "${d}") + IF(${CMAKE_DEPENDENT_OPTION_DEP}) + ELSE(${CMAKE_DEPENDENT_OPTION_DEP}) + SET(${option}_AVAILABLE 0) + SET(depends1_AVAILABLE 1) + ENDIF(${CMAKE_DEPENDENT_OPTION_DEP}) + ENDFOREACH(d) + ENDIF(${force1}) + IF(${force2}) + FOREACH(d ${depends2}) + STRING(REGEX REPLACE " +" ";" CMAKE_DEPENDENT_OPTION_DEP "${d}") + IF(${CMAKE_DEPENDENT_OPTION_DEP}) + ELSE(${CMAKE_DEPENDENT_OPTION_DEP}) + SET(${option}_AVAILABLE 0) + SET(depends2_AVAILABLE 1) + ENDIF(${CMAKE_DEPENDENT_OPTION_DEP}) + ENDFOREACH(d) + ENDIF(${force2}) + IF(${option}_AVAILABLE) + OPTION(${option} "${doc}" "${default}") + SET(${option} "${${option}}" CACHE BOOL "${doc}" FORCE) + ELSE(${option}_AVAILABLE) + IF(${option} MATCHES "^${option}$") + ELSE(${option} MATCHES "^${option}$") + SET(${option} "${${option}}" CACHE INTERNAL "${doc}") + ENDIF(${option} MATCHES "^${option}$") + IF(depends1_AVAILABLE) + SET(${option} OFF) + ELSEIF(depends2_AVAILABLE) + SET(${option} ON) + ENDIF(depends1_AVAILABLE) + ENDIF(${option}_AVAILABLE) + ELSE(${option}_ISSET MATCHES "^${option}_ISSET$") + SET(${option} "${${option}_ISSET}") + ENDIF(${option}_ISSET MATCHES "^${option}_ISSET$") +ENDMACRO(MGL_DEPENDENT_OPTION) +include(CMakeDependentOption) + +set(MGL_LIB_INSTALL_DIR "lib" CACHE STRING "Set library install directory") +string(TIMESTAMP MGL_NIGHT "%d.%m.%y") + +option(enable-double "Enable double precision in MathGL library" ON) +option(enable-mpi "Enable mpi") +option(enable-opengl "Enable OpenGL support" ON) +option(enable-all-docs "Enable all documentation building") +#option(enable-doc "Enable documentation building") +option(enable-all "Enable all core features") +option(enable-all-widgets "Enable all Widgets") +option(enable-all-swig "Enable all SWIG based interfaces") +option(enable-rvalue "Enable move constructor support (need C++11)" OFF) +option(enable-pthread "Enable POSIX threads support" OFF) +option(enable-pthr_fltk "Enable POSIX threads for widgets" ON) +option(enable-openmp "Enable OpenMP support" ON) + +if(enable-pthread AND enable-openmp) + message(SEND_ERROR "You can't enable POSIX threads and OpenMP at the same time!") +endif(enable-pthread AND enable-openmp) + +option(enable-lgpl "Enable only LGPL part of MathGL") +option(enable-mgl2 "Use names 'libmgl2-*' instead of 'libmgl-*'") +option(enable-ltdl "Enable loading modules support") +CMAKE_DEPENDENT_OPTION(enable-doc-site "Enable HTML documentation for website" OFF "NOT enable-all-docs" ON) +CMAKE_DEPENDENT_OPTION(enable-doc-html "Enable HTML documentation" OFF "NOT enable-all-docs" ON) +CMAKE_DEPENDENT_OPTION(enable-doc-info "Enable INFO documentation" OFF "NOT enable-all-docs" ON) +CMAKE_DEPENDENT_OPTION(enable-doc-pdf-ru "Enable Russian PDF documentation" OFF "NOT enable-all-docs" ON) +CMAKE_DEPENDENT_OPTION(enable-doc-pdf-en "Enable English PDF documentation" OFF "NOT enable-all-docs" ON) +CMAKE_DEPENDENT_OPTION(enable-doc-prc "Enable PDF samples for HTML docs" OFF "NOT enable-all-docs" ON) +CMAKE_DEPENDENT_OPTION(enable-doc-json "Enable JSON samples for HTML docs" OFF "NOT enable-all-docs" ON) +option(enable-texi2html "Use texi2html (obsolete package) instead of texi2any" OFF) +CMAKE_DEPENDENT_OPTION(enable-mgltex "Enable installation of mgltex package (MGL scripts in LATEX document)" OFF "NOT enable-lgpl" OFF) + +CMAKE_DEPENDENT_OPTION(enable-zlib "Enable zlib support" ON "NOT enable-all" ON) +CMAKE_DEPENDENT_OPTION(enable-png "Enable png support" ON "NOT enable-all" ON) +CMAKE_DEPENDENT_OPTION(enable-jpeg "Enable jpeg support" OFF "NOT enable-all" ON) +MGL_DEPENDENT_OPTION(enable-gsl "Enable gsl support" OFF "NOT enable-lgpl" ON "NOT enable-all" ON) +MGL_DEPENDENT_OPTION(enable-hdf4 "Enable hdf4 support" OFF "NOT enable-lgpl" ON "NOT enable-all" ON) +MGL_DEPENDENT_OPTION(enable-hdf5 "Enable hdf5 support" OFF "NOT enable-lgpl" ON "NOT enable-all" ON) +CMAKE_DEPENDENT_OPTION(enable-pdf "Enable pdf support" OFF "NOT enable-all" ON) +CMAKE_DEPENDENT_OPTION(enable-gif "Enable gif support" OFF "NOT enable-all" ON) +CMAKE_DEPENDENT_OPTION(enable-glut "Enable glut support" OFF "NOT enable-all-widgets" ON) +CMAKE_DEPENDENT_OPTION(enable-fltk "Enable fltk widget" OFF "NOT enable-all-widgets" ON) +CMAKE_DEPENDENT_OPTION(enable-wx "Enable wxWidget widget" OFF "NOT enable-all-widgets" ON) +CMAKE_DEPENDENT_OPTION(enable-qt4 "Enable Qt4 widget" OFF "NOT enable-all-widgets" ON) +CMAKE_DEPENDENT_OPTION(enable-qt5 "Enable Qt5 widget" OFF "NOT enable-all-widgets" ON) +CMAKE_DEPENDENT_OPTION(enable-qt5asqt "Set Qt5 as default libmgl-qt" ON "enable-qt5" OFF) + +if(UNIX AND enable-rvalue) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11") +endif(UNIX AND enable-rvalue) + +# MSVC does not require any special flags + +if(enable-qt4 OR enable-qt5) +set(enable-qt ON) +endif(enable-qt4 OR enable-qt5) + +CMAKE_DEPENDENT_OPTION(enable-json-sample "Enable JSON sample" ON "enable-qt" OFF) +MGL_DEPENDENT_OPTION(enable-python "Enable python interface" OFF "NOT enable-lgpl" ON "NOT enable-all-swig" ON) +MGL_DEPENDENT_OPTION(enable-lua "Enable Lua (v.5.1) interface" OFF "NOT enable-lgpl" ON "NOT enable-all-swig" ON) +MGL_DEPENDENT_OPTION(enable-octave "Enable octave interface" OFF "NOT enable-lgpl" ON "NOT enable-all-swig" ON) +MGL_DEPENDENT_OPTION(enable-octave-install "Octave interface will install for all users" ON "NOT enable-lgpl" ON "NOT enable-all-swig" ON) + +include_directories( ${MathGL_SOURCE_DIR}/include ${MathGL_BINARY_DIR}/include) +set(MGL_INCLUDE_PATH "${CMAKE_INSTALL_PREFIX}/include/mgl2") +set(MGL_CGI_PATH "${CMAKE_INSTALL_PREFIX}/share/mathgl" CACHE STRING "Set CGI install directory") +set(MGL_DEF_FONT "STIX" CACHE STRING "Set default font name") + +if(NOT WIN32) +# set(MGL_CGI_PATH "${CMAKE_INSTALL_PREFIX}/share/mathgl") + set(MGL_DATA_PATH "${CMAKE_INSTALL_PREFIX}/share/mathgl") + set(MGL_DOC_PATH "${CMAKE_INSTALL_PREFIX}/share/doc/mathgl") + set(MGL_MAN_PATH "${CMAKE_INSTALL_PREFIX}/share/man") + set(MGL_INFO_PATH "${CMAKE_INSTALL_PREFIX}/share/info") + set(MGL_FONT_PATH "${MGL_DATA_PATH}/fonts") +else(NOT WIN32) + set(MGL_FONT_PATH "${CMAKE_INSTALL_PREFIX}/fonts") +endif(NOT WIN32) + +include(CheckFunctionExists) +include(CMakePushCheckState) +include(TestBigEndian) + +TEST_BIG_ENDIAN(WORDS_BIGENDIAN) +if(WORDS_BIGENDIAN) + ADD_DEFINITIONS(-DWORDS_BIGENDIAN) +endif(WORDS_BIGENDIAN) + +CHECK_FUNCTION_EXISTS(sin MGL_SIN) +CHECK_FUNCTION_EXISTS(memrchr HAVE_MEMRCHR) +if(NOT MGL_SIN) + cmake_push_check_state() + set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} m) + CHECK_FUNCTION_EXISTS(sin MGL_SIN_M) + cmake_pop_check_state() + if(MGL_SIN_M) + set(M_LIB m) + elseif(MGL_SIN_M) + message(SEND_ERROR "Math library not found") + endif(MGL_SIN_M) +endif(NOT MGL_SIN) +if(HAVE_MEMRCHR) + ADD_DEFINITIONS(-DHAVE_MEMRCHR) +endif(HAVE_MEMRCHR) + +include(CheckTypeSize) +check_type_size("long" SIZEOF_LONG) + +include(CheckCXXSourceCompiles) +unset(MGL_HAVE_C99_COMPLEX) +CHECK_CXX_SOURCE_COMPILES( +"#include +#include +int main(int argc, char *args[]) +{std::complex c(2.0, 1.0); +double _Complex i=1.0i; +double _Complex *a = reinterpret_cast(&c); +std::complex b(*a);return 0;}" MGL_HAVE_C99_COMPLEX) +if(NOT MGL_HAVE_C99_COMPLEX) + set(MGL_HAVE_C99_COMPLEX 0) +endif(NOT MGL_HAVE_C99_COMPLEX) + +unset(MGL_HAVE_NAN_INF) +CHECK_CXX_SOURCE_COMPILES( +"#include +int main(){double a=NAN, b=INFINITY;return 0;}" MGL_HAVE_NAN_INF) +if(NOT MGL_HAVE_NAN_INF) + set(MGL_HAVE_NAN_INF 0) +endif(NOT MGL_HAVE_NAN_INF) + +unset(MGL_HAVE_ATTRIBUTE) +CHECK_CXX_SOURCE_COMPILES( +"int __attribute__((pure)) test1() {return 0;} +int __attribute__((const)) test2(int x) {return x*x;} +int main(int argc, char* argv[]) {return 0;}" MGL_HAVE_ATTRIBUTE) +if(NOT MGL_HAVE_ATTRIBUTE) + set(MGL_HAVE_ATTRIBUTE 0) +endif(NOT MGL_HAVE_ATTRIBUTE) + +unset(MGL_HAVE_TYPEOF) +CHECK_CXX_SOURCE_COMPILES( +"#define mgl_isnum(a) ({typeof (a) _a = (a); _a==_a;}) +int main(){bool a=mgl_isnum(1);return 0;}" MGL_HAVE_TYPEOF) +if(NOT MGL_HAVE_TYPEOF) + set(MGL_HAVE_TYPEOF 0) +endif(NOT MGL_HAVE_TYPEOF) + +unset(MGL_HAVE_RVAL) +CHECK_CXX_SOURCE_COMPILES( +"struct test { test() {} test(test&& a){} }; +int main() { test t; return 0; }" MGL_HAVE_RVAL) +if(NOT MGL_HAVE_RVAL) + set(MGL_HAVE_RVAL 0) +endif(NOT MGL_HAVE_RVAL) + +if(enable-double) + set(MGL_USE_DOUBLE 1) +else(enable-double) + set(MGL_USE_DOUBLE 0) +endif(enable-double) + +if(enable-qt4 OR enable-qt5) + set(MGL_HAVE_QT 1) +endif(enable-qt4 OR enable-qt5) + +if(enable-openmp) + find_package(OpenMP) + if(OPENMP_FOUND) + set(MGL_HAVE_OMP 1) + set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") + else(OPENMP_FOUND) + message(SEND_ERROR "Couldn't find OpenMP. You can enable POSIX threads instead.") + set(MGL_HAVE_OMP 0) + endif(OPENMP_FOUND) +else(enable-openmp) + set(MGL_HAVE_OMP 0) +endif(enable-openmp) + +if(enable-mpi) + set(MGL_HAVE_MPI 1) + find_package(MPI REQUIRED) + set(CMAKE_CXX_COMPILE_FLAGS ${CMAKE_CXX_COMPILE_FLAGS} ${MPI_COMPILE_FLAGS}) + set(CMAKE_CXX_LINK_FLAGS ${CMAKE_CXX_LINK_FLAGS} ${MPI_LINK_FLAGS}) + include_directories(${MPI_INCLUDE_PATH}) +else(enable-mpi) + set(MGL_HAVE_MPI 0) +endif(enable-mpi) + +if(enable-pthread) + set(MGL_HAVE_PTHREAD 1) + include(FindThreads) + if(NOT CMAKE_USE_PTHREADS_INIT) + message(SEND_ERROR "Couldn't find POSIX threads library.") + endif(NOT CMAKE_USE_PTHREADS_INIT) +else(enable-pthread) + set(MGL_HAVE_PTHREAD 0) +endif(enable-pthread) + +if(enable-gsl) + set(MGL_HAVE_GSL 1) + FIND_PACKAGE(PkgConfig) + pkg_check_modules(GSL2 REQUIRED gsl) + if(GSL2_FOUND) + if ( NOT ${GSL2_VERSION} LESS 2.0) + SET(MGL_HAVE_GSL2 1) + endif ( NOT ${GSL2_VERSION} LESS 2.0) + endif ( GSL2_FOUND ) + find_library(GSL_LIB gsl) + find_library(GSL_CBLAS_LIB gslcblas) + find_path(GSL_INCLUDE_DIR gsl/gsl_fft_complex.h) + if(NOT GSL_LIB OR NOT GSL_CBLAS_LIB OR NOT GSL_INCLUDE_DIR) + message(SEND_ERROR "${GSL_LIB}") + message(SEND_ERROR "${GSL_CBLAS_LIB}") + message(SEND_ERROR "${GSL_INCLUDE_DIR}") + message(SEND_ERROR "Couldn't find GSL libraries.") + endif(NOT GSL_LIB OR NOT GSL_CBLAS_LIB OR NOT GSL_INCLUDE_DIR) +else(enable-gsl) + set(MGL_HAVE_GSL 0) +endif(enable-gsl) + +if(enable-all OR enable-ltdl) + set(MGL_HAVE_LTDL 1) + find_library(LTDL_LIB ltdl) + find_path(LTDL_INCLUDE_DIR ltdl.h) + if(NOT LTDL_LIB OR NOT LTDL_INCLUDE_DIR) + message(SEND_ERROR "${LTDL_LIB}") + message(SEND_ERROR "${LTDL_INCLUDE_DIR}") + message(SEND_ERROR "Couldn't find LTDL library.") + endif(NOT LTDL_LIB OR NOT LTDL_INCLUDE_DIR) +else(enable-all OR enable-ltdl) + set(MGL_HAVE_LTDL 0) +endif(enable-all OR enable-ltdl) + +if(enable-hdf4) + set(MGL_HAVE_HDF4 1) + find_library(HDF4_LIB df) + find_library(HDF4MF_LIB mfhdf) + find_path(HDF4_INCLUDE_DIR hdf/mfhdf.h) + if(NOT HDF4_LIB OR NOT HDF4MF_LIB OR NOT HDF4_INCLUDE_DIR) + message(SEND_ERROR "${HDF4_LIB}") + message(SEND_ERROR "${HDF4MF_LIB}") + message(SEND_ERROR "${HDF4_INCLUDE_DIR}") + message(SEND_ERROR "Couldn't find HDF4 libraries.") + endif(NOT HDF4_LIB OR NOT HDF4MF_LIB OR NOT HDF4_INCLUDE_DIR) +else(enable-hdf4) + set(MGL_HAVE_HDF4 0) +endif(enable-hdf4) + +if(enable-hdf5) + set(MGL_HAVE_HDF5 1) + include(FindHDF5) + if(NOT HDF5_FOUND) + message(SEND_ERROR "Couldn't find HDF5 library.") + endif(NOT HDF5_FOUND) +else(enable-hdf5) + set(MGL_HAVE_HDF5 0) +endif(enable-hdf5) + +if(enable-jpeg) + set(MGL_HAVE_JPEG 1) + include(FindJPEG) + if(NOT JPEG_FOUND) + message(SEND_ERROR "Couldn't find JPEG library.") + endif(NOT JPEG_FOUND) +else(enable-jpeg) + set(MGL_HAVE_JPEG 0) +endif(enable-jpeg) + + +if(enable-zlib) + set(MGL_HAVE_ZLIB 1) + include(FindZLIB) + if(NOT ZLIB_FOUND) + message(SEND_ERROR "Couldn't find ZLib library.") + endif(NOT ZLIB_FOUND) +else(enable-zlib) + set(MGL_HAVE_ZLIB 0) +endif(enable-zlib) + +if(enable-png) + set(MGL_HAVE_PNG 1) + if(NOT MGL_HAVE_ZLIB) + message(SEND_ERROR "You have to enable ZLib if you plan to use PNG export.") + endif(NOT MGL_HAVE_ZLIB) + include(FindPNG) + if(NOT PNG_FOUND) + message(SEND_ERROR "Couldn't find PNG library.") + endif(NOT PNG_FOUND) +else(enable-png) + set(MGL_HAVE_PNG 0) +endif(enable-png) + + +if(enable-pdf) + set(MGL_HAVE_PDF 1) + if(NOT MGL_HAVE_PNG) + message(SEND_ERROR "You have to enable PNG if you plan to use PDF export.") + endif(NOT MGL_HAVE_PNG) + find_library(HPDF_LIB hpdf) + if(NOT HPDF_LIB) + message(SEND_ERROR "Couldn't find libHaru or libhpdf.") + endif(NOT HPDF_LIB) + find_path(HPDF_INCLUDE_DIR hpdf_u3d.h) + if(NOT HPDF_INCLUDE_DIR) + message(SEND_ERROR "Couldn't find headers of 3d-enabled version of libhpdf.") + endif(NOT HPDF_INCLUDE_DIR) +else(enable-pdf) + set(MGL_HAVE_PDF 0) +endif(enable-pdf) + +if(enable-gif) + set(MGL_HAVE_GIF 1) + include(FindGIF) + if(NOT GIF_FOUND) + message(SEND_ERROR "Couldn't find GIF library.") + endif(NOT GIF_FOUND) +else(enable-gif) + set(MGL_HAVE_GIF 0) +endif(enable-gif) + +if(enable-opengl) + set(MGL_HAVE_OPENGL 1) + include(FindOpenGL) + if(NOT OPENGL_FOUND) + message(SEND_ERROR "Couldn't find OpenGL libraries.") + endif(NOT OPENGL_FOUND) +else(enable-opengl) + set(MGL_HAVE_OPENGL 0) +endif(enable-opengl) + +if(enable-glut) + set(MGL_HAVE_GLUT 1) + if(NOT MGL_HAVE_OPENGL) + message(SEND_ERROR "You have to enable OpenGL if you plan to use GLUT.") + endif(NOT MGL_HAVE_OPENGL) + include(FindGLUT) + if(NOT GLUT_FOUND) + message(SEND_ERROR "Couldn't find GLUT library.") + endif(NOT GLUT_FOUND) +else(enable-glut) + set(MGL_HAVE_GLUT 0) +endif(enable-glut) + +if(enable-fltk) + set(MGL_HAVE_FLTK 1) + include(FindFLTK) + if(NOT FLTK_FOUND) + message(SEND_ERROR "Couldn't find FLTK library.") + endif(NOT FLTK_FOUND) +else(enable-fltk) + set(MGL_HAVE_FLTK 0) +endif(enable-fltk) + +if(enable-wx) + set(MGL_HAVE_WX 1) + FIND_PACKAGE(wxWidgets COMPONENTS base core gl) + if(NOT wxWidgets_FOUND) + message(SEND_ERROR "Couldn't find wxWidgets library.") + endif(NOT wxWidgets_FOUND) +else(enable-wx) + set(MGL_HAVE_WX 0) +endif(enable-wx) + +if(enable-doc-info) + set(MGL_HAVE_DOC_INFO 1) + find_program(findmi makeinfo) + if(NOT findmi) + message(SEND_ERROR "Couldn't find makeinfo needed for documentation building.") + endif(NOT findmi) +else(enable-doc-info) + set(MGL_HAVE_DOC_INFO 0) +endif(enable-doc-info) + +if(enable-doc-html OR enable-doc-site) + if(enable-texi2html) + find_program(findth texi2html) + if(NOT findth) + message(SEND_ERROR "Couldn't find texi2html needed for documentation building.") + endif(NOT findth) + else(enable-texi2html) + find_program(findth texi2any) + if(NOT findth) + message(SEND_ERROR "Couldn't find texi2any needed for documentation building.") + endif(NOT findth) + endif(enable-texi2html) +endif(enable-doc-html OR enable-doc-site) + +if(enable-texi2html) + set(site_en ${CMAKE_BINARY_DIR}/texinfo/doc_en/doc_en.html) + set(site_ru ${CMAKE_BINARY_DIR}/texinfo/doc_ru/doc_ru.html) + set(th_opt ) +else(enable-texi2html) + set(th_opt --html) + set(site_en ${CMAKE_BINARY_DIR}/texinfo/doc_en/index.html) + set(site_ru ${CMAKE_BINARY_DIR}/texinfo/doc_ru/index.html) +endif(enable-texi2html) + +if(enable-doc-html) + set(MGL_HAVE_DOC_HTML 1) +else(enable-doc-html) + set(MGL_HAVE_DOC_HTML 0) +endif(enable-doc-html) + +if(enable-doc-site) + set(MGL_HAVE_DOC_SITE 1) +else(enable-doc-site) + set(MGL_HAVE_DOC_SITE 0) +endif(enable-doc-site) + +if(enable-doc-pdf-ru) + set(MGL_HAVE_DOC_PDF_RU 1) + find_program(findtp texi2pdf) + if(NOT findtp) + message(SEND_ERROR "Couldn't find texi2pdf needed for documentation building.") + endif(NOT findtp) +else(enable-doc-pdf-ru) + set(MGL_HAVE_DOC_PDF_RU 0) +endif(enable-doc-pdf-ru) + +if(enable-doc-pdf-en) + set(MGL_HAVE_DOC_PDF_EN 1) + find_program(findtp texi2pdf) + if(NOT findtp) + message(SEND_ERROR "Couldn't find texi2pdf needed for documentation building.") + endif(NOT findtp) +else(enable-doc-pdf-en) + set(MGL_HAVE_DOC_PDF_EN 0) +endif(enable-doc-pdf-en) + +if(enable-doc-json) + set(MGL_HAVE_DOC_JSON 1) +else(enable-doc-json) + set(MGL_HAVE_DOC_JSON 0) +endif(enable-doc-json) + +if(enable-doc-prc) + set(MGL_HAVE_DOC_PRC 1) + if(NOT enable-pdf) + message(SEND_ERROR "You need to enable pdf support for MathGL.") + endif(NOT enable-pdf) +else(enable-doc-prc) + set(MGL_HAVE_DOC_PRC 0) +endif(enable-doc-prc) + +if(UNIX) + add_definitions(-DNO_COLOR_ARRAY) +endif(UNIX) + +if(WIN32) + add_definitions(-DWIN32) +endif(WIN32) + +add_subdirectory( src ) +add_subdirectory( widgets ) +add_subdirectory( include ) +if(NOT enable-lgpl) + add_subdirectory( udav ) + add_subdirectory( json ) + if(enable-python OR enable-lua OR enable-octave) + add_subdirectory( lang ) + endif(enable-python OR enable-lua OR enable-octave) + if(NOT MSVC AND NOT BORLAND) + add_subdirectory( utils ) + add_subdirectory( fonts ) + endif(NOT MSVC AND NOT BORLAND) +# add_subdirectory( mgllab ) +endif(NOT enable-lgpl) + +if(NOT MSVC AND NOT BORLAND) + add_subdirectory( examples ) + + if(MGL_HAVE_DOC_HTML OR MGL_HAVE_DOC_SITE OR MGL_HAVE_DOC_INFO OR MGL_HAVE_DOC_PDF_RU OR MGL_HAVE_DOC_PDF_EN ) + add_subdirectory( texinfo ) + endif(MGL_HAVE_DOC_HTML OR MGL_HAVE_DOC_SITE OR MGL_HAVE_DOC_INFO OR MGL_HAVE_DOC_PDF_RU OR MGL_HAVE_DOC_PDF_EN ) + +endif(NOT MSVC AND NOT BORLAND) + +if(enable-mgltex) + add_subdirectory( mgltex ) +endif(enable-mgltex) + +if(WIN32) + install(FILES ${CMAKE_SOURCE_DIR}/FindMathGL2.cmake DESTINATION ${CMAKE_INSTALL_PREFIX} RENAME mathgl2-config.cmake) +else(WIN32) + install(FILES ${CMAKE_SOURCE_DIR}/FindMathGL2.cmake DESTINATION ${MGL_LIB_INSTALL_DIR}/cmake/mathgl2/ RENAME mathgl2-config.cmake) +endif(WIN32) diff --git a/.pc/applied-patches b/.pc/applied-patches new file mode 100644 index 0000000..eb1f9d8 --- /dev/null +++ b/.pc/applied-patches @@ -0,0 +1,3 @@ +CMakeLists.patch +src.patch +json.patch diff --git a/.pc/json.patch/.timestamp b/.pc/json.patch/.timestamp new file mode 100644 index 0000000..e69de29 diff --git a/.pc/json.patch/json/Backend.hpp b/.pc/json.patch/json/Backend.hpp new file mode 100644 index 0000000..3c7ecbe --- /dev/null +++ b/.pc/json.patch/json/Backend.hpp @@ -0,0 +1,18 @@ +#pragma once + +#include + +class Backend : public QObject +{ + Q_OBJECT + +public: + explicit Backend(QObject *parent = 0); + +public: +// Q_INVOKABLE QString join(const QStringList list) const; + Q_INVOKABLE QString show(const QString& text) const; + Q_INVOKABLE QString coor(const QString& xy, const QString& text) const; + Q_INVOKABLE QString geometry(const QString& mgl) const; +}; + diff --git a/.pc/src.patch/.timestamp b/.pc/src.patch/.timestamp new file mode 100644 index 0000000..e69de29 diff --git a/.pc/src.patch/src/fit.cpp b/.pc/src.patch/src/fit.cpp new file mode 100644 index 0000000..d4f62e3 --- /dev/null +++ b/.pc/src.patch/src/fit.cpp @@ -0,0 +1,602 @@ +/*************************************************************************** + * fit.cpp is part of Math Graphic Library + * Copyright (C) 2007-2014 Alexey Balakin * + * * + * This program 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; either version 3 of the * + * License, or (at your option) any later version. * + * * + * This program 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 General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +#include +#include "mgl2/fit.h" +#include "mgl2/prim.h" +#include "mgl2/eval.h" +#include "mgl2/data.h" +#include "mgl2/base.h" + +#if MGL_HAVE_GSL +#include +#include +#endif +HMDT MGL_NO_EXPORT mglFormulaCalc(const char *str, const std::vector &head); +//----------------------------------------------------------------------------- +int mglFitPnts=100; ///< Number of output points in fitting +char mglFitRes[1024]; ///< Last fitted formula +mreal mglFitChi=NAN; ///< Chi value for last fitted formula +mglData mglFitCovar; ///< Covar matrix for lat fitted formula +//----------------------------------------------------------------------------- +mreal MGL_EXPORT mgl_get_fit_chi() { return mglFitChi; } +mreal MGL_EXPORT mgl_get_fit_chi_() { return mglFitChi; } +//----------------------------------------------------------------------------- +HCDT MGL_EXPORT mgl_get_fit_covar() { return &mglFitCovar; } +uintptr_t MGL_EXPORT mgl_get_fit_covar_() { return (uintptr_t)&mglFitCovar; } +//----------------------------------------------------------------------------- +void MGL_EXPORT mgl_puts_fit(HMGL gr, double x, double y, double z, const char *pre, const char *font, double size) +{ + long n = strlen(mglFitRes)+(pre?strlen(pre):0)+1; + char *buf = new char[n]; + if(pre) snprintf(buf,n,"%s%s",pre,mglFitRes); + else strncpy(buf,mglFitRes,n); + buf[n-1]=0; mgl_puts(gr,x,y,z,buf,font,size); + delete []buf; +} +void MGL_EXPORT mgl_puts_fit_(uintptr_t* gr, mreal *x, mreal *y, mreal *z, const char *prefix, const char *font, mreal *size, int l, int n) +{ + char *s=new char[l+1]; memcpy(s,prefix,l); s[l]=0; + char *d=new char[n+1]; memcpy(d,font,n); d[n]=0; + mgl_puts_fit(_GR_, *x,*y,*z, s, d, *size); + delete []s; delete []d; +} +//----------------------------------------------------------------------------- +/// Structure for keeping data and precompiled fitted formula +struct mglFitData +{ + long n; ///< number of points + mglDataA *x,*y,*z; ///< x, y, z values + mreal *a; ///< function values + mreal *s; ///< value dispersions (sigma) + const char *eq; ///< approximation formula + int m; ///< number of variables + const char *var; ///< variables for fitting +}; +//----------------------------------------------------------------------------- +#if MGL_HAVE_GSL +int mgl_fit__f (const gsl_vector *x, void *data, gsl_vector *f) +{ + mglFitData *fd = (mglFitData *)data; + mglDataV *var = new mglDataV[fd->m]; + std::vector list; + for(long i=0;im;i++) + { var[i].s=fd->var[i]; var[i].Fill(gsl_vector_get(x,i)); list.push_back(var+i); } + if(fd->x) list.push_back(fd->x); + if(fd->y) list.push_back(fd->y); + if(fd->z) list.push_back(fd->z); + HMDT res = mglFormulaCalc(fd->eq, list); +#pragma omp parallel for + for(long i=0;in;i++) + { + mreal aa = fd->a[i], ss = fd->s[i]; + if(mgl_isnum(aa) && ss==ss && ss!=0) + gsl_vector_set (f, i, (res->a[i] - aa)/ss); + else gsl_vector_set (f, i, 0); + } + delete []var; mgl_delete_data(res); + return GSL_SUCCESS; +} +//----------------------------------------------------------------------------- +int MGL_NO_EXPORT mgl_fit__df (const gsl_vector * x, void *data, gsl_matrix * J) +{ + mglFitData *fd = (mglFitData *)data; + mglDataV *var = new mglDataV[fd->m]; + std::vector list; + for(long i=0;im;i++) + { var[i].s=fd->var[i]; var[i].Fill(gsl_vector_get(x,i)); list.push_back(var+i); } + if(fd->x) list.push_back(fd->x); + if(fd->y) list.push_back(fd->y); + if(fd->z) list.push_back(fd->z); + HMDT res = mglFormulaCalc(fd->eq, list); + const mreal eps = 1e-5; + for(long j=0;jm;j++) + { + var[j].Fill(gsl_vector_get(x,j)+eps); + HMDT dif = mglFormulaCalc(fd->eq, list); + var[j].Fill(gsl_vector_get(x,j)); +#pragma omp parallel for + for(long i=0;in;i++) + { + mreal aa = fd->a[i], ss = fd->s[i]; + if(mgl_isnum(aa) && ss==ss && ss!=0) + gsl_matrix_set (J, i, j, (dif->a[i]-res->a[i])/(eps*ss)); + else gsl_matrix_set (J, i, j, 0); + } + mgl_delete_data(dif); + } + delete []var; mgl_delete_data(res); + return GSL_SUCCESS; +} +//----------------------------------------------------------------------------- +int MGL_NO_EXPORT mgl_fit__fdf (const gsl_vector * x, void *data, gsl_vector * f, gsl_matrix * J) +{ + mglFitData *fd = (mglFitData *)data; + mglDataV *var = new mglDataV[fd->m]; + std::vector list; + for(long i=0;im;i++) + { var[i].s=fd->var[i]; var[i].Fill(gsl_vector_get(x,i)); list.push_back(var+i); } + if(fd->x) list.push_back(fd->x); + if(fd->y) list.push_back(fd->y); + if(fd->z) list.push_back(fd->z); + HMDT res = mglFormulaCalc(fd->eq, list); +#pragma omp parallel for + for(long i=0;in;i++) + { + mreal aa = fd->a[i], ss = fd->s[i]; + if(mgl_isnum(aa) && ss==ss && ss!=0) + gsl_vector_set (f, i, (res->a[i] - aa)/ss); + else gsl_vector_set (f, i, 0); + } + const mreal eps = 1e-5; + for(long j=0;jm;j++) + { + var[j].Fill(gsl_vector_get(x,j)+eps); + HMDT dif = mglFormulaCalc(fd->eq, list); + var[j].Fill(gsl_vector_get(x,j)); +#pragma omp parallel for + for(long i=0;in;i++) + { + mreal aa = fd->a[i], ss = fd->s[i]; + if(mgl_isnum(aa) && ss==ss && ss!=0) + gsl_matrix_set (J, i, j, (dif->a[i]-res->a[i])/(eps*ss)); + else gsl_matrix_set (J, i, j, 0); + } + mgl_delete_data(dif); + } + delete []var; mgl_delete_data(res); + return GSL_SUCCESS; +} +#endif +//----------------------------------------------------------------------------- +/// GSL based fitting procedure for formula/arguments specified by string +mreal MGL_NO_EXPORT mgl_fit_base(mglFitData &fd, mreal *ini) +{ +#if MGL_HAVE_GSL + register long i,m=fd.m,n=fd.n,iter=0; + if(n<1 || ini==0) return -1; + // setup data + double *x_init = new double[fd.m]; + for(i=0;idx, s->x, 1e-4, 1e-4 ); + } + while ( status == GSL_CONTINUE && iter < 500 ); + + gsl_matrix *covar = gsl_matrix_alloc(m, m); +#ifdef HAVE_GSL_2 + gsl_matrix *J = gsl_matrix_alloc(s->fdf->n, s->fdf->p); + gsl_multifit_fdfsolver_jac(s, J); + gsl_multifit_covar (J, 0.0, covar); + gsl_matrix_free (J); +#else + gsl_multifit_covar(s->J, 0.0, covar); +#endif + mglFitCovar.Set(covar); + gsl_matrix_free(covar); + + mreal res = gsl_blas_dnrm2(s->f); + for(i=0;ix, i); + // free memory + gsl_multifit_fdfsolver_free(s); + delete []x_init; + return res; +#else + return 0.0; +#endif +} +//----------------------------------------------------------------------------- +void mglPrepareFitEq(mglBase *gr,mreal chi, const char *eq, const char *var, mreal *par) +{ + char buf[32]=""; + mglFitChi = chi; + snprintf(mglFitRes,1024,"chi=%g",chi); mglFitRes[1023]=0; + size_t i,k,len=strlen(var); + for(i=0;iSetWarn(-1,mglFitRes); + + memset(mglFitRes, 0, 1024); //mglFitRes[0] = 0; + len=strlen(eq); + for(i=k=0;iSaveState(opt); + mglData x(y->GetNx()); x.Fill(gr->Min.x, gr->Max.x); + mglData s(y); s.Fill(1,1); + return mgl_fit_xys(gr,&x,y,&s,eq,var,ini,0); +} +//----------------------------------------------------------------------------- +HMDT MGL_EXPORT mgl_fit_2(HMGL gr, HCDT z, const char *eq, const char *var, HMDT ini, const char *opt) +{ + gr->SaveState(opt); + mglData x(z->GetNx()); x.Fill(gr->Min.x, gr->Max.x); + mglData y(z->GetNy()); y.Fill(gr->Min.y, gr->Max.y); + mglData s(z); s.Fill(1,1); + return mgl_fit_xyzs(gr,&x,&y,z,&s,eq,var,ini,0); +} +//----------------------------------------------------------------------------- +HMDT MGL_EXPORT mgl_fit_3(HMGL gr, HCDT a, const char *eq, const char *var, HMDT ini, const char *opt) +{ + gr->SaveState(opt); + mglData x(a->GetNx()); x.Fill(gr->Min.x, gr->Max.x); + mglData y(a->GetNy()); y.Fill(gr->Min.y, gr->Max.y); + mglData z(a->GetNz()); z.Fill(gr->Min.z, gr->Max.z); + mglData s(a); s.Fill(1,1); + return mgl_fit_xyzas(gr,&x,&y,&z,a,&s,eq,var,ini,0); +} +//----------------------------------------------------------------------------- +HMDT MGL_EXPORT mgl_fit_xy(HMGL gr, HCDT x, HCDT y, const char *eq, const char *var, HMDT ini, const char *opt) +{ + mglData s(y); s.Fill(1,1); + return mgl_fit_xys(gr,x,y,&s,eq,var,ini,opt); +} +//----------------------------------------------------------------------------- +HMDT MGL_EXPORT mgl_fit_xyz(HMGL gr, HCDT x, HCDT y, HCDT z, const char *eq, const char *var, HMDT ini, const char *opt) +{ + mglData s(z); s.Fill(1,1); + return mgl_fit_xyzs(gr,x,y,z,&s,eq,var,ini,opt); +} +//----------------------------------------------------------------------------- +HMDT MGL_EXPORT mgl_fit_xyza(HMGL gr, HCDT x, HCDT y, HCDT z, HCDT a, const char *eq, const char *var, HMDT ini, const char *opt) +{ + mglData s(a); s.Fill(1,1); + return mgl_fit_xyzas(gr,x,y,z,a,&s,eq,var,ini,opt); +} +//----------------------------------------------------------------------------- +HMDT MGL_EXPORT mgl_fit_ys(HMGL gr, HCDT y, HCDT s, const char *eq, const char *var, HMDT ini, const char *opt) +{ + gr->SaveState(opt); + mglData x(y->GetNx()); x.Fill(gr->Min.x, gr->Max.x); + return mgl_fit_xys(gr,&x,y,s,eq,var,ini,0); +} +//----------------------------------------------------------------------------- +void MGL_NO_EXPORT mgl_fill_fit(HMGL gr, mglData &fit, mglData &in, mglFitData &fd, const char *var, long nx, long ny, long nz, long k) +{ + mglDataV *vv = new mglDataV[fd.m]; + std::vector list; + for(long i=0;iMin.x,gr->Max.x,'x'); x.s = L"x"; list.push_back(&x); + mglDataV y(nx,ny,nz, gr->Min.y,gr->Max.y,'y'); y.s = L"y"; list.push_back(&y); + mglDataV z(nx,ny,nz, gr->Min.z,gr->Max.z,'z'); z.s = L"z"; list.push_back(&z); + HMDT res = mglFormulaCalc(fd.eq, list); + long nn = nx*ny*nz; + memcpy(fit.a+k*nn,res->a,nn*sizeof(mreal)); + delete []vv; mgl_delete_data(res); +} +//----------------------------------------------------------------------------- +HMDT MGL_EXPORT mgl_fit_xys(HMGL gr, HCDT xx, HCDT yy, HCDT ss, const char *eq, const char *var, HMDT ini, const char *opt) +{ + long m = yy->GetNx(); + mreal rr = gr->SaveState(opt); + long nn = (mgl_isnan(rr) || rr<=0) ? mglFitPnts:long(rr+0.5); + if(xx->GetNx()!=m) + { gr->SetWarn(mglWarnDim,"Fit[S]"); return 0; } + if(m<2) + { gr->SetWarn(mglWarnLow,"Fit[S]"); return 0; } + if(ss->GetNN() != yy->GetNN()) + { gr->SetWarn(mglWarnDim,"Fit[S]"); return 0; } + if(!var || *var==0) + { gr->SetWarn(mglWarnNull,"Fit[S]"); return 0; } + + mglData x(xx), y(yy), s(ss); x.s=L"x"; + long mm = yy->GetNy()*yy->GetNz(); +#pragma omp parallel for + for(long i=0;iGetNy(), yy->GetNz()); + mreal res=-1; + for(long i=0;iGetNy()*yy->GetNz();i++) + { + if(ini && ini->nx>=fd.m) in.Set(ini->a,fd.m); + else in.Fill(0.,0); + mglDataR xc(x); xc.SetInd(i%x.ny, L"x"); + fd.a = y.a+i*m; fd.x = &xc; //x.a+(i%x.ny)*m; + fd.s = s.a+i*m; + res = mgl_fit_base(fd,in.a); + mgl_fill_fit(gr,*fit,in,fd,var,nn,1,1,i); + if(ini && ini->nx>=fd.m) memcpy(ini->a,in.a,fd.m*sizeof(mreal)); + } + mglPrepareFitEq(gr,res,eq,var,in.a); + gr->LoadState(); return fit; +} +//----------------------------------------------------------------------------- +HMDT MGL_EXPORT mgl_fit_xyzs(HMGL gr, HCDT xx, HCDT yy, HCDT zz, HCDT ss, const char *eq, const char *var, HMDT ini, const char *opt) +{ + long m=zz->GetNx(),n=zz->GetNy(); + mreal rr = gr->SaveState(opt); + long nn = (mgl_isnan(rr) || rr<=0) ? mglFitPnts:long(rr+0.5); + if(xx->GetNx()!=m) + { gr->SetWarn(mglWarnDim,"Fit[S]"); return 0; } + if(ss->GetNN() != zz->GetNN()) + { gr->SetWarn(mglWarnDim,"Fit[S]"); return 0; } + if(yy->GetNx()!=n && (xx->GetNy()!=n || yy->GetNx()!=m || yy->GetNy()!=n)) + { gr->SetWarn(mglWarnDim,"Fit[S]"); return 0; } + if(m<2|| n<2) + { gr->SetWarn(mglWarnLow,"Fit[S]"); return 0; } + if(!var || *var==0) + { gr->SetWarn(mglWarnNull,"Fit[S]"); return 0; } + + mglData x(m, n), y(m, n), z(zz), s(ss); x.s=L"x"; y.s=L"y"; + long nz = zz->GetNz(), mm = n*m; +#pragma omp parallel for collapse(2) + for(long i=0;iGetNz()); + mreal res = -1; + for(long i=0;inx>=fd.m) in.Set(ini->a,fd.m); + else in.Fill(0.,0); + fd.a = z.a+i*m*n; fd.s = s.a+i*m*n; + res = mgl_fit_base(fd,in.a); + mgl_fill_fit(gr,*fit,in,fd,var,nn,nn,1,i); + if(ini && ini->nx>=fd.m) memcpy(ini->a,in.a,fd.m*sizeof(mreal)); + } + mglPrepareFitEq(gr,res, eq,var,in.a); + gr->LoadState(); return fit; +} +//----------------------------------------------------------------------------- +HMDT MGL_EXPORT mgl_fit_xyzas(HMGL gr, HCDT xx, HCDT yy, HCDT zz, HCDT aa, HCDT ss, const char *eq, const char *var, HMDT ini, const char *opt) +{ + long m=aa->GetNx(), n=aa->GetNy(), l=aa->GetNz(), i = n*m*l; + mreal rr = gr->SaveState(opt); + long nn = (mgl_isnan(rr) || rr<=0) ? mglFitPnts:long(rr+0.5); + if(m<2 || n<2 || l<2) + { gr->SetWarn(mglWarnLow,"Fit[S]"); return 0; } + if(ss->GetNN() != i) + { gr->SetWarn(mglWarnDim,"Fit[S]"); return 0; } + bool both = xx->GetNN()==i && yy->GetNN()==i && zz->GetNN()==i; + if(!(both || (xx->GetNx()==m && yy->GetNx()==n && zz->GetNx()==l))) + { gr->SetWarn(mglWarnDim,"Fit[S]"); return 0; } + if(!var || *var==0) + { gr->SetWarn(mglWarnNull,"Fit[S]"); return 0; } + + mglData x(m,n,l), y(m,n,l), z(m,n,l), a(aa), s(ss); + x.s=L"x"; y.s=L"y"; z.s=L"z"; +#pragma omp parallel for collapse(3) + for(long i=0;inx>=fd.m) in.Set(ini->a,fd.m); + else in.Fill(0.,0); + res = mgl_fit_base(fd,in.a); + mgl_fill_fit(gr,*fit,in,fd,var,nn,nn,nn,0); + if(ini && ini->nx>=fd.m) memcpy(ini->a,in.a,fd.m*sizeof(mreal)); + + mglPrepareFitEq(gr,res, eq,var,in.a); + gr->LoadState(); return fit; +} +//----------------------------------------------------------------------------- +HMDT MGL_EXPORT mgl_hist_x(HMGL gr, HCDT x, HCDT a, const char *opt) +{ + long nn=a->GetNN(); + if(nn!=x->GetNN()) + { gr->SetWarn(mglWarnDim,"Hist"); return 0; } + mreal rr = gr->SaveState(opt); + long n = (mgl_isnan(rr) || rr<=0) ? mglFitPnts:long(rr+0.5); + mglData *res = new mglData(n); + + mreal vx = n/(gr->Max.x-gr->Min.x); + for(long i=0;ivthr(i)-gr->Min.x)*vx); + if(j1>=0 && j1a[j1] += a->vthr(i); + } + gr->LoadState(); return res; +} +//----------------------------------------------------------------------------- +HMDT MGL_EXPORT mgl_hist_xy(HMGL gr, HCDT x, HCDT y, HCDT a, const char *opt) +{ + long nn=a->GetNN(); + if(nn!=x->GetNN() || nn!=y->GetNN()) + { gr->SetWarn(mglWarnDim,"Hist"); return 0; } + mreal rr = gr->SaveState(opt); + long n = (mgl_isnan(rr) || rr<=0) ? mglFitPnts:long(rr+0.5); + mglData *res = new mglData(n, n); + mreal vx = n/(gr->Max.x-gr->Min.x); + mreal vy = n/(gr->Max.y-gr->Min.y); + for(long i=0;ivthr(i)-gr->Min.x)*vx); + register long j2 = long((y->vthr(i)-gr->Min.y)*vy); + if(j1>=0 && j1=0 && j2a[j1+n*j2] += a->vthr(i); + } + gr->LoadState(); return res; +} +//----------------------------------------------------------------------------- +HMDT MGL_EXPORT mgl_hist_xyz(HMGL gr, HCDT x, HCDT y, HCDT z, HCDT a, const char *opt) +{ + long nn=a->GetNN(); + if(nn!=x->GetNN() || nn!=y->GetNN() || nn!=z->GetNN()) + { gr->SetWarn(mglWarnDim,"Hist"); return 0; } + mreal rr = gr->SaveState(opt); + long n = (mgl_isnan(rr) || rr<=0) ? mglFitPnts:long(rr+0.5); + mglData *res = new mglData(n, n, n); + mreal vx = n/(gr->Max.x-gr->Min.x), vy = n/(gr->Max.y-gr->Min.y), vz = n/(gr->Max.z-gr->Min.z); + for(long i=0;ivthr(i)-gr->Min.x)*vx); + register long j2 = long((y->vthr(i)-gr->Min.y)*vy); + register long j3 = long((z->vthr(i)-gr->Min.z)*vz); + if(j1>=0 && j1=0 && j2=0 && j3a[j1+n*(j2+n*j3)] += a->vthr(i); + } + gr->LoadState(); return res; +} +//----------------------------------------------------------------------------- +uintptr_t MGL_EXPORT mgl_hist_x_(uintptr_t* gr, uintptr_t* x, uintptr_t* a, const char *opt, int lo) +{ char *o=new char[lo+1]; memcpy(o,opt,lo); o[lo]=0; + uintptr_t r = (uintptr_t)mgl_hist_x(_GR_, _DA_(x), _DA_(a), o); + delete []o; return r; } +uintptr_t MGL_EXPORT mgl_hist_xy_(uintptr_t* gr, uintptr_t* x, uintptr_t* y, uintptr_t* a, const char *opt, int lo) +{ char *o=new char[lo+1]; memcpy(o,opt,lo); o[lo]=0; + uintptr_t r = (uintptr_t)mgl_hist_xy(_GR_, _DA_(x), _DA_(y), _DA_(a), o); + delete []o; return r; } +uintptr_t MGL_EXPORT mgl_hist_xyz_(uintptr_t* gr, uintptr_t* x, uintptr_t* y, uintptr_t* z, uintptr_t* a, const char *opt, int lo) +{ char *o=new char[lo+1]; memcpy(o,opt,lo); o[lo]=0; + uintptr_t r = (uintptr_t)mgl_hist_xyz(_GR_, _DA_(x), _DA_(y), _DA_(z), _DA_(a), o); + delete []o; return r; } +//----------------------------------------------------------------------------- +MGL_EXPORT const char *mgl_get_fit(HMGL ) { return mglFitRes; } +int MGL_EXPORT mgl_get_fit_(uintptr_t *gr, char *out, int len) +{ + const char *res = mgl_get_fit(_GR_); + if(out) strncpy(out,res,len); + return strlen(res); +} +//----------------------------------------------------------------------------- +uintptr_t MGL_EXPORT mgl_fit_1_(uintptr_t* gr, uintptr_t* y, const char *eq, const char *var, uintptr_t *ini, const char *opt, int l, int n, int lo) +{ + char *s=new char[l+1]; memcpy(s,eq,l); s[l]=0; + char *d=new char[n+1]; memcpy(d,var,n); d[n]=0; + char *o=new char[lo+1]; memcpy(o,opt,lo); o[lo]=0; + uintptr_t r = (uintptr_t)mgl_fit_1(_GR_, _DA_(y), s, d, _DM_(ini), o); + delete []o; delete []s; delete []d; return r; +} +uintptr_t MGL_EXPORT mgl_fit_2_(uintptr_t* gr, uintptr_t* z, const char *eq, const char *var, uintptr_t *ini, const char *opt, int l, int n, int lo) +{ + char *s=new char[l+1]; memcpy(s,eq,l); s[l]=0; + char *d=new char[n+1]; memcpy(d,var,n); d[n]=0; + char *o=new char[lo+1]; memcpy(o,opt,lo); o[lo]=0; + uintptr_t r = (uintptr_t)mgl_fit_2(_GR_, _DA_(z), s, d, _DM_(ini), o); + delete []o; delete []s; delete []d; return r; +} +uintptr_t MGL_EXPORT mgl_fit_3_(uintptr_t* gr, uintptr_t* a, const char *eq, const char *var, uintptr_t *ini, const char *opt, int l, int n, int lo) +{ + char *s=new char[l+1]; memcpy(s,eq,l); s[l]=0; + char *d=new char[n+1]; memcpy(d,var,n); d[n]=0; + char *o=new char[lo+1]; memcpy(o,opt,lo); o[lo]=0; + uintptr_t r = (uintptr_t)mgl_fit_3(_GR_, _DA_(a), s, d, _DM_(ini), o); + delete []o; delete []s; delete []d; return r; +} +uintptr_t MGL_EXPORT mgl_fit_xy_(uintptr_t* gr, uintptr_t* x, uintptr_t* y, const char *eq, const char *var, uintptr_t *ini, const char *opt, int l, int n, int lo) +{ + char *s=new char[l+1]; memcpy(s,eq,l); s[l]=0; + char *d=new char[n+1]; memcpy(d,var,n); d[n]=0; + char *o=new char[lo+1]; memcpy(o,opt,lo); o[lo]=0; + uintptr_t r = (uintptr_t)mgl_fit_xy(_GR_, _DA_(x), _DA_(y), s, d, _DM_(ini), o); + delete []o; delete []s; delete []d; return r; +} +uintptr_t MGL_EXPORT mgl_fit_xyz_(uintptr_t* gr, uintptr_t* x, uintptr_t* y, uintptr_t* z, const char *eq, const char *var, uintptr_t *ini, const char *opt, int l, int n, int lo) +{ + char *s=new char[l+1]; memcpy(s,eq,l); s[l]=0; + char *d=new char[n+1]; memcpy(d,var,n); d[n]=0; + char *o=new char[lo+1]; memcpy(o,opt,lo); o[lo]=0; + uintptr_t r = (uintptr_t)mgl_fit_xyz(_GR_, _DA_(x), _DA_(y), _DA_(z), s, d, _DM_(ini), o); + delete []o; delete []s; delete []d; return r; +} +uintptr_t MGL_EXPORT mgl_fit_xyza_(uintptr_t* gr, uintptr_t* x, uintptr_t* y, uintptr_t* z, uintptr_t* a, const char *eq, const char *var, uintptr_t *ini, const char *opt, int l, int n, int lo) +{ + char *s=new char[l+1]; memcpy(s,eq,l); s[l]=0; + char *d=new char[n+1]; memcpy(d,var,n); d[n]=0; + char *o=new char[lo+1]; memcpy(o,opt,lo); o[lo]=0; + uintptr_t r = (uintptr_t)mgl_fit_xyza(_GR_, _DA_(x), _DA_(y), _DA_(z), _DA_(a), s, d, _DM_(ini), o); + delete []o; delete []s; delete []d; return r; +} +uintptr_t MGL_EXPORT mgl_fit_ys_(uintptr_t* gr, uintptr_t* y, uintptr_t* ss, const char *eq, const char *var, uintptr_t *ini, const char *opt, int l, int n, int lo) +{ + char *s=new char[l+1]; memcpy(s,eq,l); s[l]=0; + char *d=new char[n+1]; memcpy(d,var,n); d[n]=0; + char *o=new char[lo+1]; memcpy(o,opt,lo); o[lo]=0; + uintptr_t r = (uintptr_t)mgl_fit_ys(_GR_, _DA_(y), _DA_(ss), s, d, _DM_(ini), o); + delete []o; delete []s; delete []d; return r; +} +uintptr_t MGL_EXPORT mgl_fit_xys_(uintptr_t* gr, uintptr_t* x, uintptr_t* y, uintptr_t* ss, const char *eq, const char *var, uintptr_t *ini, const char *opt, int l, int n, int lo) +{ + char *s=new char[l+1]; memcpy(s,eq,l); s[l]=0; + char *d=new char[n+1]; memcpy(d,var,n); d[n]=0; + char *o=new char[lo+1]; memcpy(o,opt,lo); o[lo]=0; + uintptr_t r = (uintptr_t)mgl_fit_xys(_GR_, _DA_(x), _DA_(y), _DA_(ss), s, d, _DM_(ini), o); + delete []o; delete []s; delete []d; return r; +} +uintptr_t MGL_EXPORT mgl_fit_xyzs_(uintptr_t* gr, uintptr_t* x, uintptr_t* y, uintptr_t* z, uintptr_t* ss, const char *eq, const char *var, uintptr_t *ini, const char *opt, int l, int n, int lo) +{ + char *s=new char[l+1]; memcpy(s,eq,l); s[l]=0; + char *d=new char[n+1]; memcpy(d,var,n); d[n]=0; + char *o=new char[lo+1]; memcpy(o,opt,lo); o[lo]=0; + uintptr_t r = (uintptr_t)mgl_fit_xyzs(_GR_, _DA_(x), _DA_(y), _DA_(z), _DA_(ss), s, d, _DM_(ini), o); + delete []o; delete []s; delete []d; return r; +} +uintptr_t MGL_EXPORT mgl_fit_xyzas_(uintptr_t* gr, uintptr_t* x, uintptr_t* y, uintptr_t* z, uintptr_t* a, uintptr_t* ss, const char *eq, const char *var, uintptr_t *ini, const char *opt, int l, int n, int lo) +{ + char *s=new char[l+1]; memcpy(s,eq,l); s[l]=0; + char *d=new char[n+1]; memcpy(d,var,n); d[n]=0; + char *o=new char[lo+1]; memcpy(o,opt,lo); o[lo]=0; + uintptr_t r = (uintptr_t)mgl_fit_xyzas(_GR_, _DA_(x), _DA_(y), _DA_(z), _DA_(a), _DA_(ss), s, d, _DM_(ini), o); + delete []o; delete []s; delete []d; return r; +} +//----------------------------------------------------------------------------- diff --git a/CMakeLists.txt b/CMakeLists.txt index e2f5e46..9c67f3f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -95,14 +95,14 @@ set(MGL_LIB_INSTALL_DIR "lib" CACHE STRING "Set library install directory") string(TIMESTAMP MGL_NIGHT "%d.%m.%y") option(enable-double "Enable double precision in MathGL library" ON) -option(enable-mpi "Enable mpi") +option(enable-mpi "Enable mpi" ON) option(enable-opengl "Enable OpenGL support" ON) option(enable-all-docs "Enable all documentation building") #option(enable-doc "Enable documentation building") option(enable-all "Enable all core features") option(enable-all-widgets "Enable all Widgets") option(enable-all-swig "Enable all SWIG based interfaces") -option(enable-rvalue "Enable move constructor support (need C++11)" OFF) +option(enable-rvalue "Enable move constructor support (need C++11)" ON) option(enable-pthread "Enable POSIX threads support" OFF) option(enable-pthr_fltk "Enable POSIX threads for widgets" ON) option(enable-openmp "Enable OpenMP support" ON) @@ -113,7 +113,7 @@ endif(enable-pthread AND enable-openmp) option(enable-lgpl "Enable only LGPL part of MathGL") option(enable-mgl2 "Use names 'libmgl2-*' instead of 'libmgl-*'") -option(enable-ltdl "Enable loading modules support") +option(enable-ltdl "Enable loading modules support" ON) CMAKE_DEPENDENT_OPTION(enable-doc-site "Enable HTML documentation for website" OFF "NOT enable-all-docs" ON) CMAKE_DEPENDENT_OPTION(enable-doc-html "Enable HTML documentation" OFF "NOT enable-all-docs" ON) CMAKE_DEPENDENT_OPTION(enable-doc-info "Enable INFO documentation" OFF "NOT enable-all-docs" ON) @@ -126,17 +126,17 @@ CMAKE_DEPENDENT_OPTION(enable-mgltex "Enable installation of mgltex package (MGL CMAKE_DEPENDENT_OPTION(enable-zlib "Enable zlib support" ON "NOT enable-all" ON) CMAKE_DEPENDENT_OPTION(enable-png "Enable png support" ON "NOT enable-all" ON) -CMAKE_DEPENDENT_OPTION(enable-jpeg "Enable jpeg support" OFF "NOT enable-all" ON) -MGL_DEPENDENT_OPTION(enable-gsl "Enable gsl support" OFF "NOT enable-lgpl" ON "NOT enable-all" ON) -MGL_DEPENDENT_OPTION(enable-hdf4 "Enable hdf4 support" OFF "NOT enable-lgpl" ON "NOT enable-all" ON) -MGL_DEPENDENT_OPTION(enable-hdf5 "Enable hdf5 support" OFF "NOT enable-lgpl" ON "NOT enable-all" ON) -CMAKE_DEPENDENT_OPTION(enable-pdf "Enable pdf support" OFF "NOT enable-all" ON) -CMAKE_DEPENDENT_OPTION(enable-gif "Enable gif support" OFF "NOT enable-all" ON) -CMAKE_DEPENDENT_OPTION(enable-glut "Enable glut support" OFF "NOT enable-all-widgets" ON) -CMAKE_DEPENDENT_OPTION(enable-fltk "Enable fltk widget" OFF "NOT enable-all-widgets" ON) -CMAKE_DEPENDENT_OPTION(enable-wx "Enable wxWidget widget" OFF "NOT enable-all-widgets" ON) +CMAKE_DEPENDENT_OPTION(enable-jpeg "Enable jpeg support" ON "NOT enable-all" ON) +MGL_DEPENDENT_OPTION(enable-gsl "Enable gsl support" ON "NOT enable-lgpl" ON "NOT enable-all" ON) +MGL_DEPENDENT_OPTION(enable-hdf4 "Enable hdf4 support" ON "NOT enable-lgpl" ON "NOT enable-all" ON) +MGL_DEPENDENT_OPTION(enable-hdf5 "Enable hdf5 support" ON "NOT enable-lgpl" ON "NOT enable-all" ON) +CMAKE_DEPENDENT_OPTION(enable-pdf "Enable pdf support" ON "NOT enable-all" ON) +CMAKE_DEPENDENT_OPTION(enable-gif "Enable gif support" ON "NOT enable-all" ON) +CMAKE_DEPENDENT_OPTION(enable-glut "Enable glut support" ON "NOT enable-all-widgets" ON) +CMAKE_DEPENDENT_OPTION(enable-fltk "Enable fltk widget" ON "NOT enable-all-widgets" ON) +CMAKE_DEPENDENT_OPTION(enable-wx "Enable wxWidget widget" ON "NOT enable-all-widgets" ON) CMAKE_DEPENDENT_OPTION(enable-qt4 "Enable Qt4 widget" OFF "NOT enable-all-widgets" ON) -CMAKE_DEPENDENT_OPTION(enable-qt5 "Enable Qt5 widget" OFF "NOT enable-all-widgets" ON) +CMAKE_DEPENDENT_OPTION(enable-qt5 "Enable Qt5 widget" ON "NOT enable-all-widgets" ON) CMAKE_DEPENDENT_OPTION(enable-qt5asqt "Set Qt5 as default libmgl-qt" ON "enable-qt5" OFF) if(UNIX AND enable-rvalue) @@ -150,9 +150,9 @@ set(enable-qt ON) endif(enable-qt4 OR enable-qt5) CMAKE_DEPENDENT_OPTION(enable-json-sample "Enable JSON sample" ON "enable-qt" OFF) -MGL_DEPENDENT_OPTION(enable-python "Enable python interface" OFF "NOT enable-lgpl" ON "NOT enable-all-swig" ON) +MGL_DEPENDENT_OPTION(enable-python "Enable python interface" ON "NOT enable-lgpl" ON "NOT enable-all-swig" ON) MGL_DEPENDENT_OPTION(enable-lua "Enable Lua (v.5.1) interface" OFF "NOT enable-lgpl" ON "NOT enable-all-swig" ON) -MGL_DEPENDENT_OPTION(enable-octave "Enable octave interface" OFF "NOT enable-lgpl" ON "NOT enable-all-swig" ON) +MGL_DEPENDENT_OPTION(enable-octave "Enable octave interface" ON "NOT enable-lgpl" ON "NOT enable-all-swig" ON) MGL_DEPENDENT_OPTION(enable-octave-install "Octave interface will install for all users" ON "NOT enable-lgpl" ON "NOT enable-all-swig" ON) include_directories( ${MathGL_SOURCE_DIR}/include ${MathGL_BINARY_DIR}/include) diff --git a/debian/changelog b/debian/changelog index a5ddf4b..95cc4c9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,9 @@ mathgl (2.3.3+svn1216-1) UNRELEASED; urgency=medium - * Imported Upstream version 2.3.3+svn1216 + * Imported Upstream version 2.3.3+svn1216 (Closes: #800460) + * Fix GSL-2 use bug - thanks to Bas Couwenberg (Closes: #805801) + * Fix Qt related bug -thanks to Peter Green (Closes: #803312) + * Enable Octave interface (Closes: #741156) -- Dimitrios Eftaxiopoulos Sat, 05 Dec 2015 16:20:20 +0200 diff --git a/debian/control b/debian/control index 445283c..857da5a 100644 --- a/debian/control +++ b/debian/control @@ -3,7 +3,7 @@ Section: science Priority: optional Maintainer: Debian Science Maintainers Uploaders: Dimitrios Eftaxiopoulos -Build-Depends: debhelper (>= 9), libltdl-dev, libgsl0-dev, freeglut3-dev, +Build-Depends: debhelper (>= 9), libltdl-dev, libgsl-dev, freeglut3-dev, libgl1-mesa-dev | libgl-dev, libpng-dev, libhdf5-dev, libqt5opengl5-dev, libjpeg-dev, libtiff-dev, libfltk1.3-dev, libqt5webkit5-dev, libwxgtk3.0-dev, texinfo, texlive, texlive-generic-recommended, liblua5.1-dev, libxcursor-dev, @@ -201,7 +201,7 @@ Section: libdevel Depends: libmgl7.4.0 (= ${binary:Version}), libmgl-wnd7.4.0 (= ${binary:Version}), libmgl-wx7.4.0 (= ${binary:Version}), libmgl-fltk7.4.0 (= ${binary:Version}), libmgl-qt7.4.0 (= ${binary:Version}), libmgl-glut7.4.0 (= ${binary:Version}), - libmgl-mpi7.4.0 (= ${binary:Version}), ${misc:Depends}, libgsl0-dev, + libmgl-mpi7.4.0 (= ${binary:Version}), ${misc:Depends}, libgsl-dev, libgl1-mesa-dev | libgl-dev, libpng-dev Description: library for scientific graphs (development files) A free cross-platform library of fast C++ routines for plotting data in up diff --git a/debian/mathgl.install b/debian/mathgl.install index ca663af..5260e80 100644 --- a/debian/mathgl.install +++ b/debian/mathgl.install @@ -1,2 +1,3 @@ debian/tmp/usr/bin/mgl* -debian/tmp/usr/share/mathgl/mgl.cgi /usr/bin \ No newline at end of file +debian/tmp/usr/share/mathgl/mgl.cgi /usr/bin +debian/tmp/usr/share/mime/packages/mgl.xml \ No newline at end of file diff --git a/debian/patches/CMakeLists.patch b/debian/patches/CMakeLists.patch new file mode 100644 index 0000000..f852115 --- /dev/null +++ b/debian/patches/CMakeLists.patch @@ -0,0 +1,68 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -95,14 +95,14 @@ + string(TIMESTAMP MGL_NIGHT "%d.%m.%y") + + option(enable-double "Enable double precision in MathGL library" ON) +-option(enable-mpi "Enable mpi") ++option(enable-mpi "Enable mpi" ON) + option(enable-opengl "Enable OpenGL support" ON) + option(enable-all-docs "Enable all documentation building") + #option(enable-doc "Enable documentation building") + option(enable-all "Enable all core features") + option(enable-all-widgets "Enable all Widgets") + option(enable-all-swig "Enable all SWIG based interfaces") +-option(enable-rvalue "Enable move constructor support (need C++11)" OFF) ++option(enable-rvalue "Enable move constructor support (need C++11)" ON) + option(enable-pthread "Enable POSIX threads support" OFF) + option(enable-pthr_fltk "Enable POSIX threads for widgets" ON) + option(enable-openmp "Enable OpenMP support" ON) +@@ -113,7 +113,7 @@ + + option(enable-lgpl "Enable only LGPL part of MathGL") + option(enable-mgl2 "Use names 'libmgl2-*' instead of 'libmgl-*'") +-option(enable-ltdl "Enable loading modules support") ++option(enable-ltdl "Enable loading modules support" ON) + CMAKE_DEPENDENT_OPTION(enable-doc-site "Enable HTML documentation for website" OFF "NOT enable-all-docs" ON) + CMAKE_DEPENDENT_OPTION(enable-doc-html "Enable HTML documentation" OFF "NOT enable-all-docs" ON) + CMAKE_DEPENDENT_OPTION(enable-doc-info "Enable INFO documentation" OFF "NOT enable-all-docs" ON) +@@ -126,17 +126,17 @@ + + CMAKE_DEPENDENT_OPTION(enable-zlib "Enable zlib support" ON "NOT enable-all" ON) + CMAKE_DEPENDENT_OPTION(enable-png "Enable png support" ON "NOT enable-all" ON) +-CMAKE_DEPENDENT_OPTION(enable-jpeg "Enable jpeg support" OFF "NOT enable-all" ON) +-MGL_DEPENDENT_OPTION(enable-gsl "Enable gsl support" OFF "NOT enable-lgpl" ON "NOT enable-all" ON) +-MGL_DEPENDENT_OPTION(enable-hdf4 "Enable hdf4 support" OFF "NOT enable-lgpl" ON "NOT enable-all" ON) +-MGL_DEPENDENT_OPTION(enable-hdf5 "Enable hdf5 support" OFF "NOT enable-lgpl" ON "NOT enable-all" ON) +-CMAKE_DEPENDENT_OPTION(enable-pdf "Enable pdf support" OFF "NOT enable-all" ON) +-CMAKE_DEPENDENT_OPTION(enable-gif "Enable gif support" OFF "NOT enable-all" ON) +-CMAKE_DEPENDENT_OPTION(enable-glut "Enable glut support" OFF "NOT enable-all-widgets" ON) +-CMAKE_DEPENDENT_OPTION(enable-fltk "Enable fltk widget" OFF "NOT enable-all-widgets" ON) +-CMAKE_DEPENDENT_OPTION(enable-wx "Enable wxWidget widget" OFF "NOT enable-all-widgets" ON) ++CMAKE_DEPENDENT_OPTION(enable-jpeg "Enable jpeg support" ON "NOT enable-all" ON) ++MGL_DEPENDENT_OPTION(enable-gsl "Enable gsl support" ON "NOT enable-lgpl" ON "NOT enable-all" ON) ++MGL_DEPENDENT_OPTION(enable-hdf4 "Enable hdf4 support" ON "NOT enable-lgpl" ON "NOT enable-all" ON) ++MGL_DEPENDENT_OPTION(enable-hdf5 "Enable hdf5 support" ON "NOT enable-lgpl" ON "NOT enable-all" ON) ++CMAKE_DEPENDENT_OPTION(enable-pdf "Enable pdf support" ON "NOT enable-all" ON) ++CMAKE_DEPENDENT_OPTION(enable-gif "Enable gif support" ON "NOT enable-all" ON) ++CMAKE_DEPENDENT_OPTION(enable-glut "Enable glut support" ON "NOT enable-all-widgets" ON) ++CMAKE_DEPENDENT_OPTION(enable-fltk "Enable fltk widget" ON "NOT enable-all-widgets" ON) ++CMAKE_DEPENDENT_OPTION(enable-wx "Enable wxWidget widget" ON "NOT enable-all-widgets" ON) + CMAKE_DEPENDENT_OPTION(enable-qt4 "Enable Qt4 widget" OFF "NOT enable-all-widgets" ON) +-CMAKE_DEPENDENT_OPTION(enable-qt5 "Enable Qt5 widget" OFF "NOT enable-all-widgets" ON) ++CMAKE_DEPENDENT_OPTION(enable-qt5 "Enable Qt5 widget" ON "NOT enable-all-widgets" ON) + CMAKE_DEPENDENT_OPTION(enable-qt5asqt "Set Qt5 as default libmgl-qt" ON "enable-qt5" OFF) + + if(UNIX AND enable-rvalue) +@@ -150,9 +150,9 @@ + endif(enable-qt4 OR enable-qt5) + + CMAKE_DEPENDENT_OPTION(enable-json-sample "Enable JSON sample" ON "enable-qt" OFF) +-MGL_DEPENDENT_OPTION(enable-python "Enable python interface" OFF "NOT enable-lgpl" ON "NOT enable-all-swig" ON) ++MGL_DEPENDENT_OPTION(enable-python "Enable python interface" ON "NOT enable-lgpl" ON "NOT enable-all-swig" ON) + MGL_DEPENDENT_OPTION(enable-lua "Enable Lua (v.5.1) interface" OFF "NOT enable-lgpl" ON "NOT enable-all-swig" ON) +-MGL_DEPENDENT_OPTION(enable-octave "Enable octave interface" OFF "NOT enable-lgpl" ON "NOT enable-all-swig" ON) ++MGL_DEPENDENT_OPTION(enable-octave "Enable octave interface" ON "NOT enable-lgpl" ON "NOT enable-all-swig" ON) + MGL_DEPENDENT_OPTION(enable-octave-install "Octave interface will install for all users" ON "NOT enable-lgpl" ON "NOT enable-all-swig" ON) + + include_directories( ${MathGL_SOURCE_DIR}/include ${MathGL_BINARY_DIR}/include) diff --git a/debian/patches/json.patch b/debian/patches/json.patch new file mode 100644 index 0000000..6a5f278 --- /dev/null +++ b/debian/patches/json.patch @@ -0,0 +1,9 @@ +--- a/json/Backend.hpp ++++ b/json/Backend.hpp +@@ -1,5 +1,6 @@ + #pragma once + ++#include + #include + + class Backend : public QObject diff --git a/debian/patches/series b/debian/patches/series index e69de29..eb1f9d8 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -0,0 +1,3 @@ +CMakeLists.patch +src.patch +json.patch diff --git a/debian/patches/src.patch b/debian/patches/src.patch new file mode 100644 index 0000000..7596170 --- /dev/null +++ b/debian/patches/src.patch @@ -0,0 +1,11 @@ +--- a/src/fit.cpp ++++ b/src/fit.cpp +@@ -194,7 +194,7 @@ + while ( status == GSL_CONTINUE && iter < 500 ); + + gsl_matrix *covar = gsl_matrix_alloc(m, m); +-#ifdef HAVE_GSL_2 ++#ifdef MGL_HAVE_GSL2 + gsl_matrix *J = gsl_matrix_alloc(s->fdf->n, s->fdf->p); + gsl_multifit_fdfsolver_jac(s, J); + gsl_multifit_covar (J, 0.0, covar); diff --git a/json/Backend.hpp b/json/Backend.hpp index 3c7ecbe..33081d6 100644 --- a/json/Backend.hpp +++ b/json/Backend.hpp @@ -1,5 +1,6 @@ #pragma once +#include #include class Backend : public QObject diff --git a/src/fit.cpp b/src/fit.cpp index d4f62e3..56cf1d6 100644 --- a/src/fit.cpp +++ b/src/fit.cpp @@ -194,7 +194,7 @@ mreal MGL_NO_EXPORT mgl_fit_base(mglFitData &fd, mreal *ini) while ( status == GSL_CONTINUE && iter < 500 ); gsl_matrix *covar = gsl_matrix_alloc(m, m); -#ifdef HAVE_GSL_2 +#ifdef MGL_HAVE_GSL2 gsl_matrix *J = gsl_matrix_alloc(s->fdf->n, s->fdf->p); gsl_multifit_fdfsolver_jac(s, J); gsl_multifit_covar (J, 0.0, covar); -- 2.30.2