diff options
Diffstat (limited to 'vcpkg/ports/mathgl')
| -rw-r--r-- | vcpkg/ports/mathgl/cmake-config.patch | 39 | ||||
| -rw-r--r-- | vcpkg/ports/mathgl/cmake-project-include.cmake | 5 | ||||
| -rw-r--r-- | vcpkg/ports/mathgl/dependencies.patch | 118 | ||||
| -rw-r--r-- | vcpkg/ports/mathgl/enable-examples.patch | 14 | ||||
| -rw-r--r-- | vcpkg/ports/mathgl/fix-cross-builds.patch | 60 | ||||
| -rw-r--r-- | vcpkg/ports/mathgl/fix-examples.patch | 32 | ||||
| -rw-r--r-- | vcpkg/ports/mathgl/fix-format-specifiers.patch | 140 | ||||
| -rw-r--r-- | vcpkg/ports/mathgl/fix-glut.patch | 13 | ||||
| -rw-r--r-- | vcpkg/ports/mathgl/fix-include-property.patch | 14 | ||||
| -rw-r--r-- | vcpkg/ports/mathgl/fix-mgllab.patch | 13 | ||||
| -rw-r--r-- | vcpkg/ports/mathgl/fix_link_gsl.patch | 37 | ||||
| -rw-r--r-- | vcpkg/ports/mathgl/include_functional.patch | 12 | ||||
| -rw-r--r-- | vcpkg/ports/mathgl/linkage.patch | 187 | ||||
| -rw-r--r-- | vcpkg/ports/mathgl/portfile.cmake | 109 | ||||
| -rw-r--r-- | vcpkg/ports/mathgl/usage | 4 | ||||
| -rw-r--r-- | vcpkg/ports/mathgl/vcpkg.json | 137 |
16 files changed, 934 insertions, 0 deletions
diff --git a/vcpkg/ports/mathgl/cmake-config.patch b/vcpkg/ports/mathgl/cmake-config.patch new file mode 100644 index 0000000..695e692 --- /dev/null +++ b/vcpkg/ports/mathgl/cmake-config.patch @@ -0,0 +1,39 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 2a73d0f..fda5ba1 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -51,6 +51,7 @@ endif() + set(MathGL_INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH "Installation directory for CMake files") + # Make relative paths absolute (needed later on) + foreach(p LIB BIN INCLUDE CMAKE) ++ break() # Absolute paths break config fixup for tools + set(var MathGL_INSTALL_${p}_DIR) + if(NOT IS_ABSOLUTE "${${var}}") + set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}") +diff --git a/scripts/MathGLConfig.cmake.in b/scripts/MathGLConfig.cmake.in +index f219126..2a9f58b 100644 +--- a/scripts/MathGLConfig.cmake.in ++++ b/scripts/MathGLConfig.cmake.in +@@ -1,15 +1,19 @@ + # - Config file for the MathGL package + # It defines the following variables + +-set(MathGL2_INCLUDE_DIRS "@MathGL_INSTALL_INCLUDE_DIR@") +-set(MathGL2_LIBRARIES_DIRS "@MathGL_INSTALL_LIB_DIR@") ++set(MathGL2_INCLUDE_DIRS "@CMAKE_INSTALL_PREFIX@/@MathGL_INSTALL_INCLUDE_DIR@") ++if(CMAKE_BUILD_TYPE MATCHES "[Dd][Ee][Bb][Uu][Gg]") ++ set(MathGL2_LIBRARIES_DIRS "@CMAKE_INSTALL_PREFIX@/debug/@MathGL_INSTALL_LIB_DIR@") ++else() ++ set(MathGL2_LIBRARIES_DIRS "@CMAKE_INSTALL_PREFIX@/@MathGL_INSTALL_LIB_DIR@") ++endif() + set(MathGL2_HAVE_QT5 "@enable-qt5@") + set(MathGL2_HAVE_QT4 "@enable-qt4@") + set(MathGL2_HAVE_WX "@enable-wx@") + set(MathGL2_HAVE_FLTK "@enable-fltk@") + set(MathGL2_HAVE_GLUT "@enable-glut@") + set(MathGL2_HAVE_PTHREAD "@CMAKE_USE_PTHREADS_INIT@") +-set(MathGL2_HAVE_OPENMP "@OPENMP_FOUND@") ++set(MathGL2_HAVE_OPENMP "@enable-openmp@") + + include(CMakeFindDependencyMacro) + # Adding dependency for Threads imported target diff --git a/vcpkg/ports/mathgl/cmake-project-include.cmake b/vcpkg/ports/mathgl/cmake-project-include.cmake new file mode 100644 index 0000000..c0e96a0 --- /dev/null +++ b/vcpkg/ports/mathgl/cmake-project-include.cmake @@ -0,0 +1,5 @@ +if(WIN32 AND NOT MINGW) + find_package(unofficial-getopt-win32 REQUIRED) + set(getopt_lib-static unofficial::getopt-win32::getopt) + set(MGL_HAVE_GETOPT 1 CACHE INTERNAL "From vcpkg") +endif() diff --git a/vcpkg/ports/mathgl/dependencies.patch b/vcpkg/ports/mathgl/dependencies.patch new file mode 100644 index 0000000..f8763bc --- /dev/null +++ b/vcpkg/ports/mathgl/dependencies.patch @@ -0,0 +1,118 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 466e9bc..d99c1e4 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -441,9 +441,10 @@ else(enable-pthr-widget OR enable-pthread) + endif(enable-pthr-widget OR enable-pthread) + + if(enable-arma) +- find_package(Armadillo) ++ find_package(Armadillo CONFIG REQUIRED) + if(ARMADILLO_FOUND) + set(MGL_HAVE_ARMA 1) ++ list(APPEND MGL_DEP_LIBS armadillo) + else(ARMADILLO_FOUND) + set(MGL_HAVE_ARMA 0) + endif(ARMADILLO_FOUND) +@@ -548,7 +549,7 @@ endif(enable-hdf5) + + if(enable-jpeg) + set(MGL_HAVE_JPEG 1) +- include(FindJPEG) ++ find_package(JPEG) + if(NOT JPEG_FOUND) + message(SEND_ERROR "Couldn't find JPEG library.") + endif(NOT JPEG_FOUND) +@@ -561,7 +562,7 @@ endif(enable-jpeg) + + if(enable-zlib) + set(MGL_HAVE_ZLIB 1) +- include(FindZLIB) ++ find_package(ZLIB) + if(NOT ZLIB_FOUND) + message(SEND_ERROR "Couldn't find ZLib library.") + endif(NOT ZLIB_FOUND) +@@ -573,7 +574,7 @@ endif(enable-zlib) + + if(enable-freetype) + set(MGL_HAVE_FREETYPE 1) +- include(FindFreetype) ++ find_package(Freetype) + if(NOT FREETYPE_FOUND) + message(SEND_ERROR "Couldn't find FreeType library.") + endif(NOT FREETYPE_FOUND) +@@ -588,7 +589,7 @@ if(enable-png) + 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) ++ find_package(PNG) + if(NOT PNG_FOUND) + message(SEND_ERROR "Couldn't find PNG library.") + endif(NOT PNG_FOUND) +@@ -620,7 +621,7 @@ endif(enable-pdf) + + if(enable-gif) + set(MGL_HAVE_GIF 1) +- include(FindGIF) ++ find_package(GIF) + if(NOT GIF_FOUND) + message(SEND_ERROR "Couldn't find GIF library.") + endif(NOT GIF_FOUND) +@@ -633,7 +634,7 @@ endif(enable-gif) + if(enable-opengl) + set(MGL_HAVE_OPENGL 1) + set(OpenGL_GL_PREFERENCE LEGACY) +- include(FindOpenGL) ++ find_package(OpenGL) + if(NOT OPENGL_FOUND) + message(SEND_ERROR "Couldn't find OpenGL libraries.") + endif(NOT OPENGL_FOUND) +@@ -648,7 +649,7 @@ if(enable-glut) + 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) ++ find_package(GLUT REQUIRED) + if(NOT GLUT_FOUND) + message(SEND_ERROR "Couldn't find GLUT library.") + endif(NOT GLUT_FOUND) +@@ -658,14 +659,19 @@ endif(enable-glut) + + if(enable-fltk) + set(MGL_HAVE_FLTK 1) +- FIND_PACKAGE(FLTK) ++ find_package(FLTK CONFIG) ++ set(FLTK_LIBRARIES fltk) + if(NOT FLTK_FOUND) + message(SEND_ERROR "Couldn't find FLTK library.") + else(NOT FLTK_FOUND) +- include_directories(${FLTK_INCLUDE_DIR}) ++ set(FLTK_LIBRARIES fltk) ++ include(CMakePushCheckState) ++ cmake_push_check_state() ++ list(APPEND CMAKE_REQUIRED_LIBRARIES ${FLTK_LIBRARIES}) + CHECK_CXX_SOURCE_COMPILES( + "#include <FL/Fl_Copy_Surface.H> + int main(){return 0;}" MGL_HAVE_FL_COPY) ++ cmake_pop_check_state() + endif(NOT FLTK_FOUND) + if(NOT MGL_HAVE_FL_COPY) + set(MGL_HAVE_FL_COPY 0) +diff --git a/scripts/MathGLConfig.cmake.in b/scripts/MathGLConfig.cmake.in +index 78bad89..0c2e5ed 100644 +--- a/scripts/MathGLConfig.cmake.in ++++ b/scripts/MathGLConfig.cmake.in +@@ -25,6 +25,12 @@ endif() + if (MathGL2_HAVE_OPENMP STRGREATER "") + find_dependency(OpenMP) + endif() ++if("@enable-arma@") ++ find_dependency(Armadillo CONFIG) ++endif() ++if(MathGL2_HAVE_FLTK) ++ find_dependency(FLTK CONFIG) ++endif() + + # Compute paths + get_filename_component(MathGL2_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) diff --git a/vcpkg/ports/mathgl/enable-examples.patch b/vcpkg/ports/mathgl/enable-examples.patch new file mode 100644 index 0000000..ff809bf --- /dev/null +++ b/vcpkg/ports/mathgl/enable-examples.patch @@ -0,0 +1,14 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index b393fa7..8a1ce4b 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -838,7 +838,9 @@ if(NOT enable-lgpl) + add_subdirectory( lang ) + endif(enable-python OR enable-lua OR enable-octave) + add_subdirectory( utils ) ++if(enable-examples) + add_subdirectory( examples ) ++endif() + if(NOT WIN32) + add_subdirectory( fonts ) + endif(NOT WIN32) diff --git a/vcpkg/ports/mathgl/fix-cross-builds.patch b/vcpkg/ports/mathgl/fix-cross-builds.patch new file mode 100644 index 0000000..36f3ae2 --- /dev/null +++ b/vcpkg/ports/mathgl/fix-cross-builds.patch @@ -0,0 +1,60 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 8a1ce4b..71d07bf 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -842,8 +842,9 @@ if(enable-examples) + add_subdirectory( examples ) + endif() + if(NOT WIN32) +- add_subdirectory( fonts ) ++ set(INSTALL_FONTS 1) + endif(NOT WIN32) ++add_subdirectory( fonts ) + add_subdirectory( mgllab ) + endif(NOT enable-lgpl) + +diff --git a/fonts/CMakeLists.txt b/fonts/CMakeLists.txt +index f529c18..aba1bc3 100644 +--- a/fonts/CMakeLists.txt ++++ b/fonts/CMakeLists.txt +@@ -1,8 +1,20 @@ ++if(MAKE_BIN_EXECUTABLE) ++ add_executable(make_bin IMPORTED) ++ set_target_properties(make_bin PROPERTIES IMPORTED_LOCATION "${MAKE_BIN_EXECUTABLE}") ++else() ++ add_executable(make_bin make_bin.cpp) ++ target_link_libraries(make_bin mgl${link_type} ${getopt_lib-static}) ++ install(TARGETS make_bin RUNTIME DESTINATION bin) ++endif() ++if(NOT INSTALL_FONTS) ++ return() ++elseif(0) + include_directories( ${MathGL2_SOURCE_DIR}/include ${MathGL2_BINARY_DIR}/include) + set(hdrF ../include/mgl2/font.h ../include/mgl2/define.h ${MathGL2_BINARY_DIR}/include/mgl2/config.h) + add_executable(make_bin make_bin.cpp ../src/font.cpp ${hdrF}) + #target_link_libraries(make_bin mgl-static ${getopt_lib-static}) + target_link_libraries(make_bin ${MGL_DEP_LIBS}) ++endif() + + set(MGL_FONTS STIX adventor bonum cursor heroscn heros pagella schola termes) + set(MGL_FONTS_BIN ) +diff --git a/fonts/make_bin.cpp b/fonts/make_bin.cpp +index 73d0adb..e0158be 100644 +--- a/fonts/make_bin.cpp ++++ b/fonts/make_bin.cpp +@@ -20,6 +20,7 @@ + #include <getopt.h> + #include "mgl2/font.h" + //----------------------------------------------------------------------------- ++#if 0 // vcpkg links to mgl lib + extern mglFont *mglDefFont; + void mgl_init() // TODO try to add ld option: "-init mgl_init" + { +@@ -30,6 +31,7 @@ void mgl_init() // TODO try to add ld option: "-init mgl_init" + mglDefFont = new mglFont(MGL_DEF_FONT_NAME); + } + } ++#endif + int main(int argc, char *argv[]) + { + mglFont fnt; diff --git a/vcpkg/ports/mathgl/fix-examples.patch b/vcpkg/ports/mathgl/fix-examples.patch new file mode 100644 index 0000000..87ce03f --- /dev/null +++ b/vcpkg/ports/mathgl/fix-examples.patch @@ -0,0 +1,32 @@ +diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt +index cd389bd..56ad515 100644 +--- a/examples/CMakeLists.txt ++++ b/examples/CMakeLists.txt +@@ -26,7 +26,7 @@ endif(MGL_HAVE_GLUT) + + if(MGL_HAVE_WX) + include(${wxWidgets_USE_FILE}) +- add_executable(mgl_wx_example wnd_samples.cpp wx_example.cpp) ++ add_executable(mgl_wx_example WIN32 wnd_samples.cpp wx_example.cpp) + target_link_libraries(mgl_wx_example mgl-wx${link_type}) + endif(MGL_HAVE_WX) + +diff --git a/examples/full_test.cpp b/examples/full_test.cpp +index 50fb6ae..6f3ef26 100644 +--- a/examples/full_test.cpp ++++ b/examples/full_test.cpp +@@ -21,6 +21,14 @@ + #include <locale.h> + #include <time.h> + #include <getopt.h> ++#if defined(_UNICODE) && defined(getopt_long_only) ++#undef getopt_long_only ++#undef option ++#undef optarg ++#define getopt_long_only getopt_long_only_a ++#define option option_a ++#define optarg optarg_a ++#endif + #ifdef WIN32 + #include <io.h> + #include <direct.h> diff --git a/vcpkg/ports/mathgl/fix-format-specifiers.patch b/vcpkg/ports/mathgl/fix-format-specifiers.patch new file mode 100644 index 0000000..cd7b782 --- /dev/null +++ b/vcpkg/ports/mathgl/fix-format-specifiers.patch @@ -0,0 +1,140 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index a560278..3184d2c 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -239,6 +239,11 @@ if(MSVC AND MSVC_VERSION GREATER 1899) + SET(CMAKE_CXX_FLAGS "/EHsc -D_CRT_STDIO_ISO_WIDE_SPECIFIERS ${CMAKE_CXX_FLAGS}") + SET(CMAKE_C_FLAGS "-D_CRT_STDIO_ISO_WIDE_SPECIFIERS ${CMAKE_C_FLAGS}") + endif(MSVC AND MSVC_VERSION GREATER 1899) ++# _CRT_STDIO_ISO_WIDE_SPECIFIERS was never officially supported ++# and breaks link mathgl widget libs against their GUI libs: ++# error LNK2038: mismatch detected for '_CRT_STDIO_ISO_WIDE_SPECIFIERS': value '0' doesn't match value '1' in fltk.cpp.obj ++string(REPLACE "-D_CRT_STDIO_ISO_WIDE_SPECIFIERS" "-DVCPKG_MSVC_WPRINTF" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") ++string(REPLACE "-D_CRT_STDIO_ISO_WIDE_SPECIFIERS" "-DVCPKG_MSVC_WPRINTF" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + + include(CheckCXXSourceCompiles) + +diff --git a/src/export_2d.cpp b/src/export_2d.cpp +index bd07404..65f5fdf 100644 +--- a/src/export_2d.cpp ++++ b/src/export_2d.cpp +@@ -17,6 +17,13 @@ + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ ++// wprintf format specifier for char*. ++// Inject by replacing (wprintf.*?[^"])" PERCENT_S " with $1" PERCENT_S " ++#ifdef VCPKG_MSVC_WPRINTF ++#define PERCENT_S "%S" ++#else ++#define PERCENT_S "%s" ++#endif + #include "mgl2/canvas.h" + #include "mgl2/canvas_cf.h" + #include "mgl2/font.h" +@@ -661,7 +668,7 @@ void MGL_EXPORT mgl_write_tex(HMGL gr, const char *fname,const char *descr) + FILE *fp = fopen(fname,"w"); + if(!fp) { gr->SetWarn(mglWarnOpen,fname); return; } + const std::string loc = setlocale(LC_NUMERIC, "C"); fwide(fp,1); +- fwprintf(fp, L"%% Created by MathGL library\n%% Title: %s\n\n",descr?descr:fname); ++ fwprintf(fp, L"%% Created by MathGL library\n%% Title: " PERCENT_S "\n\n",descr?descr:fname); + // provide marks + fwprintf(fp, L"\\providecommand{\\mglp}[4]{\\draw[#3] (#1-#4, #2) -- (#1+#4,#2) (#1,#2-#4) -- (#1,#2+#4);}\n"); + fwprintf(fp, L"\\providecommand{\\mglx}[4]{\\draw[#3] (#1-#4, #2-#4) -- (#1+#4,#2+#4) (#1+#4,#2-#4) -- (#1-#4,#2+#4);}\n"); +@@ -707,47 +714,47 @@ void MGL_EXPORT mgl_write_tex(HMGL gr, const char *fname,const char *descr) + switch(q.n4) // NOTE: no thickness for marks in TeX + { + case 'P': +- fwprintf(fp, L"\\mglp{%.4g}{%.4g}{%s}{%.4g} \\mgls{%.4g}{%.4g}{%s}{%.4g}\n", x,y,cname,s,x,y,cname,s); break; ++ fwprintf(fp, L"\\mglp{%.4g}{%.4g}{" PERCENT_S "}{%.4g} \\mgls{%.4g}{%.4g}{" PERCENT_S "}{%.4g}\n", x,y,cname,s,x,y,cname,s); break; + case 'X': +- fwprintf(fp, L"\\mglx{%.4g}{%.4g}{%s}{%.4g} \\mgls{%.4g}{%.4g}{%s}{%.4g}\n", x,y,cname,s,x,y,cname,s); break; ++ fwprintf(fp, L"\\mglx{%.4g}{%.4g}{" PERCENT_S "}{%.4g} \\mgls{%.4g}{%.4g}{" PERCENT_S "}{%.4g}\n", x,y,cname,s,x,y,cname,s); break; + case 'C': +- fwprintf(fp, L"\\mglc{%.4g}{%.4g}{%s}{%.4g} \\mglo{%.4g}{%.4g}{%s}{%.4g}\n", x,y,cname,s,x,y,cname,s); break; +- case '+': fwprintf(fp, L"\\mglp{%.4g}{%.4g}{%s}{%.4g}\n", x,y,cname,s); break; +- case 'x': fwprintf(fp, L"\\mglx{%.4g}{%.4g}{%s}{%.4g}\n", x,y,cname,s); break; +- case 's': fwprintf(fp, L"\\mgls{%.4g}{%.4g}{%s}{%.4g}\n", x,y,cname,s); break; +- case 'S': fwprintf(fp, L"\\mglS{%.4g}{%.4g}{%s}{%.4g}\n", x,y,cname,s); break; +- case 'd': fwprintf(fp, L"\\mgld{%.4g}{%.4g}{%s}{%.4g}\n", x,y,cname,s); break; +- case 'D': fwprintf(fp, L"\\mglD{%.4g}{%.4g}{%s}{%.4g}\n", x,y,cname,s); break; +- case '^': fwprintf(fp, L"\\mglt{%.4g}{%.4g}{%s}{%.4g}\n", x,y,cname,s); break; +- case 'T': fwprintf(fp, L"\\mglT{%.4g}{%.4g}{%s}{%.4g}\n", x,y,cname,s); break; +- case 'v': fwprintf(fp, L"\\mglv{%.4g}{%.4g}{%s}{%.4g}\n", x,y,cname,s); break; +- case 'V': fwprintf(fp, L"\\mglV{%.4g}{%.4g}{%s}{%.4g}\n", x,y,cname,s); break; +- case '<': fwprintf(fp, L"\\mgll{%.4g}{%.4g}{%s}{%.4g}\n", x,y,cname,s); break; +- case 'L': fwprintf(fp, L"\\mglL{%.4g}{%.4g}{%s}{%.4g}\n", x,y,cname,s); break; +- case '>': fwprintf(fp, L"\\mglr{%.4g}{%.4g}{%s}{%.4g}\n", x,y,cname,s); break; +- case 'R': fwprintf(fp, L"\\mglR{%.4g}{%.4g}{%s}{%.4g}\n", x,y,cname,s); break; +- case 'Y': fwprintf(fp, L"\\mglY{%.4g}{%.4g}{%s}{%.4g}\n", x,y,cname,s); break; +- case 'o': fwprintf(fp, L"\\mglo{%.4g}{%.4g}{%s}{%.4g}\n", x,y,cname,s); break; +- case 'O': fwprintf(fp, L"\\mglO{%.4g}{%.4g}{%s}{%.4g}\n", x,y,cname,s); break; +- case '*': fwprintf(fp, L"\\mgla{%.4g}{%.4g}{%s}{%.4g}\n", x,y,cname,s); break; +- default: fwprintf(fp, L"\\mglc{%.4g}{%.4g}{%s}\n", x,y,cname); break; ++ fwprintf(fp, L"\\mglc{%.4g}{%.4g}{" PERCENT_S "}{%.4g} \\mglo{%.4g}{%.4g}{" PERCENT_S "}{%.4g}\n", x,y,cname,s,x,y,cname,s); break; ++ case '+': fwprintf(fp, L"\\mglp{%.4g}{%.4g}{" PERCENT_S "}{%.4g}\n", x,y,cname,s); break; ++ case 'x': fwprintf(fp, L"\\mglx{%.4g}{%.4g}{" PERCENT_S "}{%.4g}\n", x,y,cname,s); break; ++ case 's': fwprintf(fp, L"\\mgls{%.4g}{%.4g}{" PERCENT_S "}{%.4g}\n", x,y,cname,s); break; ++ case 'S': fwprintf(fp, L"\\mglS{%.4g}{%.4g}{" PERCENT_S "}{%.4g}\n", x,y,cname,s); break; ++ case 'd': fwprintf(fp, L"\\mgld{%.4g}{%.4g}{" PERCENT_S "}{%.4g}\n", x,y,cname,s); break; ++ case 'D': fwprintf(fp, L"\\mglD{%.4g}{%.4g}{" PERCENT_S "}{%.4g}\n", x,y,cname,s); break; ++ case '^': fwprintf(fp, L"\\mglt{%.4g}{%.4g}{" PERCENT_S "}{%.4g}\n", x,y,cname,s); break; ++ case 'T': fwprintf(fp, L"\\mglT{%.4g}{%.4g}{" PERCENT_S "}{%.4g}\n", x,y,cname,s); break; ++ case 'v': fwprintf(fp, L"\\mglv{%.4g}{%.4g}{" PERCENT_S "}{%.4g}\n", x,y,cname,s); break; ++ case 'V': fwprintf(fp, L"\\mglV{%.4g}{%.4g}{" PERCENT_S "}{%.4g}\n", x,y,cname,s); break; ++ case '<': fwprintf(fp, L"\\mgll{%.4g}{%.4g}{" PERCENT_S "}{%.4g}\n", x,y,cname,s); break; ++ case 'L': fwprintf(fp, L"\\mglL{%.4g}{%.4g}{" PERCENT_S "}{%.4g}\n", x,y,cname,s); break; ++ case '>': fwprintf(fp, L"\\mglr{%.4g}{%.4g}{" PERCENT_S "}{%.4g}\n", x,y,cname,s); break; ++ case 'R': fwprintf(fp, L"\\mglR{%.4g}{%.4g}{" PERCENT_S "}{%.4g}\n", x,y,cname,s); break; ++ case 'Y': fwprintf(fp, L"\\mglY{%.4g}{%.4g}{" PERCENT_S "}{%.4g}\n", x,y,cname,s); break; ++ case 'o': fwprintf(fp, L"\\mglo{%.4g}{%.4g}{" PERCENT_S "}{%.4g}\n", x,y,cname,s); break; ++ case 'O': fwprintf(fp, L"\\mglO{%.4g}{%.4g}{" PERCENT_S "}{%.4g}\n", x,y,cname,s); break; ++ case '*': fwprintf(fp, L"\\mgla{%.4g}{%.4g}{" PERCENT_S "}{%.4g}\n", x,y,cname,s); break; ++ default: fwprintf(fp, L"\\mglc{%.4g}{%.4g}{" PERCENT_S "}\n", x,y,cname); break; + } + } + else if(q.type==2 && cp.r[3]) + { + const mglPnt &p2=gr->GetPnt(q.n2), &p3=gr->GetPnt(q.n3); + if(cp.r[3]<255) +- fwprintf(fp, L"\\fill[%s, fill opacity=%.4g] (%.4g,%.4g) -- (%.4g,%.4g) -- (%.4g,%.4g) -- cycle;\n", cname,cp.r[3]/255., x,y, p2.x/100,p2.y/100, p3.x/100,p3.y/100); ++ fwprintf(fp, L"\\fill[" PERCENT_S ", fill opacity=%.4g] (%.4g,%.4g) -- (%.4g,%.4g) -- (%.4g,%.4g) -- cycle;\n", cname,cp.r[3]/255., x,y, p2.x/100,p2.y/100, p3.x/100,p3.y/100); + else +- fwprintf(fp, L"\\fill[%s, fill] (%.4g,%.4g) -- (%.4g,%.4g) -- (%.4g,%.4g) -- cycle;\n", cname, x,y, p2.x/100,p2.y/100, p3.x/100,p3.y/100); ++ fwprintf(fp, L"\\fill[" PERCENT_S ", fill] (%.4g,%.4g) -- (%.4g,%.4g) -- (%.4g,%.4g) -- cycle;\n", cname, x,y, p2.x/100,p2.y/100, p3.x/100,p3.y/100); + } + else if(q.type==3 && cp.r[3]) + { + const mglPnt &p2=gr->GetPnt(q.n2), &p3=gr->GetPnt(q.n3), &p4=gr->GetPnt(q.n4); + if(cp.r[3]<255) +- fwprintf(fp, L"\\fill[%s, fill opacity=%.4g] (%.4g,%.4g) -- (%.4g,%.4g) -- (%.4g,%.4g) -- (%.4g,%.4g) -- cycle;\n", cname,cp.r[3]/255., x,y, p2.x/100,p2.y/100, p4.x/100,p4.y/100, p3.x/100,p3.y/100); ++ fwprintf(fp, L"\\fill[" PERCENT_S ", fill opacity=%.4g] (%.4g,%.4g) -- (%.4g,%.4g) -- (%.4g,%.4g) -- (%.4g,%.4g) -- cycle;\n", cname,cp.r[3]/255., x,y, p2.x/100,p2.y/100, p4.x/100,p4.y/100, p3.x/100,p3.y/100); + else +- fwprintf(fp, L"\\fill[%s, fill] (%.4g,%.4g) -- (%.4g,%.4g) -- (%.4g,%.4g) -- (%.4g,%.4g) -- cycle;\n", cname, x,y, p2.x/100,p2.y/100, p4.x/100,p4.y/100, p3.x/100,p3.y/100); ++ fwprintf(fp, L"\\fill[" PERCENT_S ", fill] (%.4g,%.4g) -- (%.4g,%.4g) -- (%.4g,%.4g) -- (%.4g,%.4g) -- cycle;\n", cname, x,y, p2.x/100,p2.y/100, p4.x/100,p4.y/100, p3.x/100,p3.y/100); + + } + else if(q.type==1) // lines +@@ -755,8 +762,8 @@ void MGL_EXPORT mgl_write_tex(HMGL gr, const char *fname,const char *descr) + //const char *dash[]={"", "8 8","4 4","1 3","7 4 1 4","3 2 1 2"}; + const char *w[]={"semithick","thick","very thick","ultra thick"}; + int iw=int(q.w-0.5); if(iw>3) iw=3; +- if(iw<0) fwprintf(fp,L"\\draw[%s] ",cname); +- else fwprintf(fp,L"\\draw[%s,%s] ",cname,w[iw]); ++ if(iw<0) fwprintf(fp,L"\\draw[" PERCENT_S "] ",cname); ++ else fwprintf(fp,L"\\draw[" PERCENT_S "," PERCENT_S "] ",cname,w[iw]); + // TODO: add line dashing + wp = q.w>1 ? q.w:1; st = q.n3; + std::vector<long> ids = put_line(gr,i,wp,cp.c,st); +@@ -780,9 +787,9 @@ void MGL_EXPORT mgl_write_tex(HMGL gr, const char *fname,const char *descr) + // if(f&MGL_FONT_ITAL) ss.append(",font=\\itshape"); + // if(f&MGL_FONT_BOLD) ss.append(",font=\\bfshape"); + if(t.text.find('\\')!=std::string::npos || t.text.find('{')!=std::string::npos || t.text.find('_')!=std::string::npos || t.text.find('^')!=std::string::npos) +- fwprintf(fp,L"\\draw[%s] (%.4g,%.4g) node[rotate=%.2g]{$%ls$};\n", ss.c_str(),x-dx,y-dy, -q.p, t.text.c_str()); ++ fwprintf(fp,L"\\draw[" PERCENT_S "] (%.4g,%.4g) node[rotate=%.2g]{$%ls$};\n", ss.c_str(),x-dx,y-dy, -q.p, t.text.c_str()); + else +- fwprintf(fp,L"\\draw[%s] (%.4g,%.4g) node[rotate=%.2g]{%ls};\n", ss.c_str(),x-dx,y-dy, -q.p, t.text.c_str()); ++ fwprintf(fp,L"\\draw[" PERCENT_S "] (%.4g,%.4g) node[rotate=%.2g]{%ls};\n", ss.c_str(),x-dx,y-dy, -q.p, t.text.c_str()); + } + } + fwprintf(fp, L"\\end{tikzpicture}\n"); diff --git a/vcpkg/ports/mathgl/fix-glut.patch b/vcpkg/ports/mathgl/fix-glut.patch new file mode 100644 index 0000000..6acac1c --- /dev/null +++ b/vcpkg/ports/mathgl/fix-glut.patch @@ -0,0 +1,13 @@ +diff --git a/widgets/glut.cpp b/widgets/glut.cpp +index eca65db..6a4641d 100644 +--- a/widgets/glut.cpp ++++ b/widgets/glut.cpp +@@ -27,7 +27,7 @@ + #if defined(_MSC_VER) || defined(__BORLANDC__) + #include <windows.h> + #include <GL/gl.h> +- #include "glut.h" ++ #include <GL/glut.h> + #else + #include <GL/gl.h> + #include <GL/glut.h> diff --git a/vcpkg/ports/mathgl/fix-include-property.patch b/vcpkg/ports/mathgl/fix-include-property.patch new file mode 100644 index 0000000..1c15d38 --- /dev/null +++ b/vcpkg/ports/mathgl/fix-include-property.patch @@ -0,0 +1,14 @@ +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index d44125c..1ad17a1 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -53,6 +53,9 @@ generate_export_header(mgl EXPORT_FILE_NAME ../include/mgl2/dllexport.h) + target_link_libraries(mgl ${MGL_DEP_LIBS}) + target_link_libraries(mgl-static ${MGL_DEP_LIBS}) + ++target_include_directories(mgl PUBLIC $<INSTALL_INTERFACE:include>) ++target_include_directories(mgl-static PUBLIC $<INSTALL_INTERFACE:include>) ++ + mgl_po_src(${mgl_src} ${mgl_hdr}) + + if(MGL_HAVE_MPI) diff --git a/vcpkg/ports/mathgl/fix-mgllab.patch b/vcpkg/ports/mathgl/fix-mgllab.patch new file mode 100644 index 0000000..23376fd --- /dev/null +++ b/vcpkg/ports/mathgl/fix-mgllab.patch @@ -0,0 +1,13 @@ +diff --git a/mgllab/mgllab.cpp b/mgllab/mgllab.cpp +index ef2d556..36fbfc4 100644 +--- a/mgllab/mgllab.cpp ++++ b/mgllab/mgllab.cpp +@@ -344,7 +344,7 @@ Fl_Menu_Item menuitems[] = { + void mem_upd_cb(Fl_Widget *, void *v) + { ((ScriptWindow*)v)->mem_init(); } + //----------------------------------------------------------------------------- +-extern Fl_RGB_Image img_udav; ++extern MGL_EXPORT Fl_RGB_Image img_udav; + ScriptWindow *new_view() + { + Fl_Group *gg; diff --git a/vcpkg/ports/mathgl/fix_link_gsl.patch b/vcpkg/ports/mathgl/fix_link_gsl.patch new file mode 100644 index 0000000..7715f80 --- /dev/null +++ b/vcpkg/ports/mathgl/fix_link_gsl.patch @@ -0,0 +1,37 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 1c931e2..4987f2d 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -485,25 +485,13 @@ endif(enable-openmp) + + if(enable-gsl) + set(MGL_HAVE_GSL 1) +- 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.") +- else(NOT GSL_LIB OR NOT GSL_CBLAS_LIB OR NOT GSL_INCLUDE_DIR) +- set(CMAKE_REQUIRED_INCLUDES ${GSL_INCLUDE_DIR}) +- set(CMAKE_REQUIRED_LIBRARIES ${GSL_LIB} ${GSL_CBLAS_LIB}) +- CHECK_CXX_SOURCE_COMPILES("#include <gsl/gsl_multifit_nlin.h> +- int main(){gsl_multifit_fdfsolver *s=0;gsl_matrix *J = 0; +- gsl_multifit_fdfsolver_jac(s, J);}" MGL_HAVE_GSL2) +- unset(CMAKE_REQUIRED_INCLUDES) +- unset(CMAKE_REQUIRED_LIBRARIES) +- endif(NOT GSL_LIB OR NOT GSL_CBLAS_LIB OR NOT GSL_INCLUDE_DIR) +- set(MGL_DEP_LIBS ${GSL_LIB} ${GSL_CBLAS_LIB} ${MGL_DEP_LIBS}) +- include_directories(${GSL_INCLUDE_DIR}) ++ find_package(GSL REQUIRED) ++ set(MGL_DEP_LIBS GSL::gsl GSL::gslcblas ${MGL_DEP_LIBS}) ++ set(CMAKE_REQUIRED_LIBRARIES GSL::gsl GSL::gslcblas) ++ CHECK_CXX_SOURCE_COMPILES("#include <gsl/gsl_multifit_nlin.h> ++ int main(){gsl_multifit_fdfsolver *s=0;gsl_matrix *J = 0; ++ gsl_multifit_fdfsolver_jac(s, J);}" MGL_HAVE_GSL2) ++ unset(CMAKE_REQUIRED_LIBRARIES) + else(enable-gsl) + set(MGL_HAVE_GSL 0) + endif(enable-gsl) diff --git a/vcpkg/ports/mathgl/include_functional.patch b/vcpkg/ports/mathgl/include_functional.patch new file mode 100644 index 0000000..1b7a2b7 --- /dev/null +++ b/vcpkg/ports/mathgl/include_functional.patch @@ -0,0 +1,12 @@ +diff --git a/src/prc/writePRC.h b/src/prc/writePRC.h +index d0b4e0e..3bc68ea 100644 +--- a/src/prc/writePRC.h ++++ b/src/prc/writePRC.h +@@ -31,6 +31,7 @@ + #include "PRC.h" + #include <float.h> + #include <math.h> ++#include <functional> + + static const uint32_t m1=(uint32_t)-1; + static const double pi=acos(-1.0); diff --git a/vcpkg/ports/mathgl/linkage.patch b/vcpkg/ports/mathgl/linkage.patch new file mode 100644 index 0000000..e63971f --- /dev/null +++ b/vcpkg/ports/mathgl/linkage.patch @@ -0,0 +1,187 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index a316984..920a099 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -71,6 +71,14 @@ macro(mgl_po_src) + set(po_files ${po_files} ${l_files} PARENT_SCOPE) + endmacro(mgl_po_src) + ++if(BUILD_SHARED_LIBS) ++ set(link_type "") ++ set(excluded_type "-static") ++else() ++ set(link_type "-static") ++ set(excluded_type "") ++endif() ++ + function(mgl_add_lib mgl_tmp_lib) + if(${mgl_tmp_lib} MATCHES mgl) + set(mgllib mgl) +@@ -113,8 +121,10 @@ function(mgl_add_lib mgl_tmp_lib) + set_target_properties(${mgllib}-static PROPERTIES OUTPUT_NAME "${mgllib}${mgl_lib_static}${mgl_lib_end}") + endif(enable-mgl2) + ++ target_compile_definitions(${mgllib} PRIVATE BUILDING_${mgllib}_LIB) ++ set_target_properties(${mgllib}${excluded_type} PROPERTIES EXCLUDE_FROM_ALL 1) + install( +- TARGETS ${mgllib} ${mgllib}-static ++ TARGETS ${mgllib}${link_type} + EXPORT MathGLTargets + RUNTIME DESTINATION ${MathGL_INSTALL_BIN_DIR} + ARCHIVE DESTINATION ${MathGL_INSTALL_LIB_DIR} +diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt +index 0263910..186d95b 100644 +--- a/examples/CMakeLists.txt ++++ b/examples/CMakeLists.txt +@@ -4,7 +4,7 @@ file(COPY ${CMAKE_SOURCE_DIR}/examples/Equirectangular-projection.jpg DESTINATIO + file(COPY ${CMAKE_SOURCE_DIR}/examples/samples.cpp DESTINATION ${CMAKE_BINARY_DIR}/examples) + file(COPY ${CMAKE_SOURCE_DIR}/examples/wnd_samples.cpp DESTINATION ${CMAKE_BINARY_DIR}/examples) + add_executable(mgl_example wnd_samples.cpp full_test.cpp samples.cpp) +-target_link_libraries(mgl_example mgl-static ${getopt_lib-static}) ++target_link_libraries(mgl_example mgl${link_type} ${getopt_lib-static}) + if(CMAKE_BUILD_TYPE STREQUAL "Debug" AND CMAKE_COMPILER_IS_GNUCXX AND enable-lcov) + setup_target_for_coverage( + NAME mgl_coverage +@@ -16,25 +16,25 @@ endif(CMAKE_BUILD_TYPE STREQUAL "Debug" AND CMAKE_COMPILER_IS_GNUCXX AND enable- + if(MGL_HAVE_FLTK) + include_directories(${FLTK_INCLUDE_DIR}) + add_executable(mgl_fltk_example wnd_samples.cpp fltk_example.cpp) +- target_link_libraries(mgl_fltk_example mgl-fltk) ++ target_link_libraries(mgl_fltk_example mgl-fltk${link_type}) + endif(MGL_HAVE_FLTK) + + if(MGL_HAVE_GLUT) + add_executable(mgl_glut_example wnd_samples.cpp glut_example.cpp) +- target_link_libraries(mgl_glut_example mgl-glut) ++ target_link_libraries(mgl_glut_example mgl-glut${link_type}) + endif(MGL_HAVE_GLUT) + + if(MGL_HAVE_WX) + include(${wxWidgets_USE_FILE}) + add_executable(mgl_wx_example wnd_samples.cpp wx_example.cpp) +- target_link_libraries(mgl_wx_example mgl-wx) ++ target_link_libraries(mgl_wx_example mgl-wx${link_type}) + endif(MGL_HAVE_WX) + + if(QT_ENABLED) + add_executable(mgl_qt_example wnd_samples.cpp qt_example.cpp) + if(enable-qt5) + include(../scripts/qt5.cmake) +- target_link_libraries(mgl_qt_example mgl-qt5) ++ target_link_libraries(mgl_qt_example mgl-qt5${link_type}) + else(enable-qt5) + include(../scripts/qt4.cmake) + target_link_libraries(mgl_qt_example mgl-qt4) +@@ -43,7 +43,7 @@ if(QT_ENABLED) + if(MGL_HAVE_OPENGL) + add_executable(mgl_qgl_example wnd_samples.cpp qgl_example.cpp) + if(enable-qt5) +- target_link_libraries(mgl_qgl_example mgl ${MGL_QT5_LIBS}) ++ target_link_libraries(mgl_qgl_example mgl${link_type} ${MGL_QT5_LIBS}) + else(enable-qt5) + target_link_libraries(mgl_qgl_example mgl ${MGL_QT4_LIBS}) + endif(enable-qt5) +@@ -52,11 +52,11 @@ endif(QT_ENABLED) + + if(MGL_HAVE_LTDL) + add_library(mgl_module MODULE mgl_module.cpp) +- target_link_libraries(mgl_module mgl) # for compatibility with win32 ++ target_link_libraries(mgl_module mgl${link_type}) # for compatibility with win32 + endif(MGL_HAVE_LTDL) + + if(MGL_HAVE_MPI) + add_executable(mgl_mpi_example mpi_test.cpp) +- target_link_libraries(mgl_mpi_example mgl-mpi mgl ${MPI_LIBRARIES}) ++ target_link_libraries(mgl_mpi_example mgl-mpi${link_type} mgl${link_type} ${MPI_LIBRARIES}) + target_include_directories(mgl_mpi_example SYSTEM PUBLIC ${MPI_CXX_INCLUDE_PATH}) + endif(MGL_HAVE_MPI) +diff --git a/include/mgl2/abstract.h b/include/mgl2/abstract.h +index da27869..b1e6761 100644 +--- a/include/mgl2/abstract.h ++++ b/include/mgl2/abstract.h +@@ -20,6 +20,15 @@ + #ifndef _MGL_ABSTRACT_H_ + #define _MGL_ABSTRACT_H_ + ++#include "mgl2/dllexport.h" ++#if defined(BUILDING_mgl_LIB) || !defined mgl_EXPORTS ++#define MGL_CORE_EXPORT MGL_EXPORT ++#elif defined(_WIN32) && !defined(MGL_STATIC_DEFINE) ++#define MGL_CORE_EXPORT __declspec(dllimport) ++#else ++#define MGL_CORE_EXPORT ++#endif ++ + #include "mgl2/define.h" + //----------------------------------------------------------------------------- + #ifdef __cplusplus +@@ -209,11 +218,11 @@ cmdual MGL_EXPORT mgl_cexpr_eval_v(HAEX ex, mdual *vars); + + //----------------------------------------------------------------------------- + /// Callback function for asking user a question. Result shouldn't exceed 1024. +-extern MGL_EXPORT void (*mgl_ask_func)(const wchar_t *quest, wchar_t *res); ++extern MGL_CORE_EXPORT void (*mgl_ask_func)(const wchar_t *quest, wchar_t *res); + /// Console function for asking user a question. Result shouldn't exceed 1024. + void MGL_EXPORT mgl_ask_gets(const wchar_t *quest, wchar_t *res); + /// Callback function for displaying progress of something. +-extern MGL_EXPORT void (*mgl_progress_func)(int value, int maximal, HMGL gr); ++extern MGL_CORE_EXPORT void (*mgl_progress_func)(int value, int maximal, HMGL gr); + /// Console function for displaying progress of something. + void MGL_EXPORT mgl_progress_txt(int value, int maximal, HMGL gr); + /// Display progress of something. +@@ -404,7 +413,7 @@ struct MGL_EXPORT mglColorID + char id; + mglColor col; + }; +-MGL_EXPORT extern mglColorID mglColorIds[31]; ++MGL_CORE_EXPORT extern mglColorID mglColorIds[31]; + // MGL_EXPORT extern std::string mglGlobalMess; ///< Buffer for receiving global messages + //----------------------------------------------------------------------------- + #endif +diff --git a/mgllab/CMakeLists.txt b/mgllab/CMakeLists.txt +index 1649104..41c2e6a 100644 +--- a/mgllab/CMakeLists.txt ++++ b/mgllab/CMakeLists.txt +@@ -38,7 +38,7 @@ if(MGL_HAVE_FLTK) + set(mgllab_src ${mgllab_src} mgllab.rc) + endif(WIN32) + add_executable(mgllab ${mgllab_src} ${mgllab_hdr}) +- target_link_libraries(mgllab mgl mgl-fltk ${FLTK_LIBRARIES}) ++ target_link_libraries(mgllab mgl${link_type} mgl-fltk${link_type} ${getopt_lib-static} ${FLTK_LIBRARIES}) + install( + TARGETS mgllab + RUNTIME DESTINATION bin ) +diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt +index 3e10fa7..0281859 100644 +--- a/utils/CMakeLists.txt ++++ b/utils/CMakeLists.txt +@@ -1,11 +1,5 @@ + add_executable(make_pas make_pas.cpp) + +-if(MSVC) +-set(link_type -static) +-else(MSVC) +-set(link_type) +-endif(MSVC) +- + add_executable(mgltask mgltask.cpp) + target_link_libraries(mgltask mgl${link_type} ${getopt_lib-static}) + install( +@@ -23,7 +17,7 @@ install( + ) + + add_executable(mgl.cgi mglcgi.cpp) +-target_link_libraries(mgl.cgi mgl-static) ++target_link_libraries(mgl.cgi mgl${link_type}) + install( + TARGETS mgl.cgi + EXPORT MathGLTargets +@@ -36,7 +30,7 @@ mgl_po_src(mglconv.cpp mglview.cpp mglcgi.cpp mgltask.cpp) + if(MGL_HAVE_FLTK) + add_definitions(-DUSE_FLTK) + add_executable(mglview mglview.cpp) +- target_link_libraries(mglview mgl-fltk ${getopt_lib-static} ${FLTK_LIBRARIES}) ++ target_link_libraries(mglview mgl-fltk${link_type} ${getopt_lib-static} ${FLTK_LIBRARIES}) + install( + TARGETS mglview + EXPORT MathGLTargets diff --git a/vcpkg/ports/mathgl/portfile.cmake b/vcpkg/ports/mathgl/portfile.cmake new file mode 100644 index 0000000..df0ad2b --- /dev/null +++ b/vcpkg/ports/mathgl/portfile.cmake @@ -0,0 +1,109 @@ +vcpkg_from_sourceforge( + OUT_SOURCE_PATH SOURCE_PATH + REPO mathgl/mathgl + REF "mathgl%208.0" + FILENAME "mathgl-${VERSION}.tar.gz" + SHA512 1ff3023f1bbd7bfd84202777a0166a8d4255a020a07f3650b9858929345bc8a2ceea4db155d2c93ba32b762d2304474276290a9edac99fda70fb4b5bc12982c2 + PATCHES + cmake-config.patch + dependencies.patch + linkage.patch + enable-examples.patch + fix-examples.patch + fix-cross-builds.patch + fix-format-specifiers.patch + fix-glut.patch + fix-mgllab.patch + include_functional.patch + fix-include-property.patch + fix_link_gsl.patch +) +file(REMOVE_RECURSE "${SOURCE_PATH}/addons/getopt") + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS +FEATURES + arma enable-arma + examples enable-examples + fltk enable-fltk + gif enable-gif + glut enable-glut + gsl enable-gsl + hdf5 enable-hdf5 + jpeg enable-jpeg + opengl enable-opengl + png enable-png + qt5 enable-qt5 + wx enable-wx + zlib enable-zlib +) + +if(VCPKG_TARGET_IS_OSX) + list(APPEND FEATURE_OPTIONS + -Denable-openmp=OFF + -Denable-pthread=ON + ) +endif() + +if(VCPKG_CROSSCOMPILING) + list(APPEND FEATURE_OPTIONS "-DMAKE_BIN_EXECUTABLE=${CURRENT_HOST_INSTALLED_DIR}/tools/${PORT}/make_bin${VCPKG_HOST_EXECUTABLE_SUFFIX}") +endif() + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + ${FEATURE_OPTIONS} + "-DCMAKE_PROJECT_INCLUDE=${CMAKE_CURRENT_LIST_DIR}/cmake-project-include.cmake" + -DMathGL_INSTALL_CMAKE_DIR:STRING=share/mathgl2 + -DCMAKE_CXX_STANDARD=11 # minimum for armadillo on osx + -DCMAKE_DISABLE_FIND_PACKAGE_Intl=1 + -DCMAKE_POLICY_DEFAULT_CMP0127=NEW # cmake_dependent_option condition syntax +) + +vcpkg_cmake_install() + +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/mgl2/dllexport.h" "#ifdef MGL_STATIC_DEFINE" "#if 1") +else() + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/mgl2/dllexport.h" "#ifdef MGL_STATIC_DEFINE" "#if 0") +endif() + +# MathGL exports proper CMake config under the MathGL2Config.cmake filename, and +# a find_path/find_library based package under the mathgl2-config.cmake filename. +# The latter doesn't support multi-config or static linkage requirements, and +# the variable names don't match the package names, i.e. it is unusable. +if(VCPKG_TARGET_IS_WINDOWS) + file(REMOVE "${CURRENT_PACKAGES_DIR}/mathgl2-config.cmake") + file(REMOVE "${CURRENT_PACKAGES_DIR}/debug/mathgl2-config.cmake") +else() + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/lib/cmake") + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/lib/cmake") +endif() +vcpkg_cmake_config_fixup(PACKAGE_NAME mathgl2) + +file(REMOVE_RECURSE + "${CURRENT_PACKAGES_DIR}/debug/share" + "${CURRENT_PACKAGES_DIR}/debug/include" + "${CURRENT_PACKAGES_DIR}/share/applications" + "${CURRENT_PACKAGES_DIR}/share/mime" + "${CURRENT_PACKAGES_DIR}/share/pixmaps" +) + +set(tools mglconv mgltask) +if(NOT VCPKG_CROSSCOMPILING) + list(APPEND tools make_bin) +endif() +if(enable-fltk) + list(APPEND tools mglview mgllab) +endif() +if(enable-qt5) + list(APPEND tools mglview udav) +endif() +list(REMOVE_DUPLICATES tools) +vcpkg_copy_tools(TOOL_NAMES ${tools} AUTO_CLEAN) + +vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/mgl2/config.h" "#define MGL_INSTALL_DIR \"${CURRENT_PACKAGES_DIR}\"" "") +vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/mgl2/config.h" "#define MGL_FONT_PATH\t\"${CURRENT_PACKAGES_DIR}/fonts\"" "" IGNORE_UNCHANGED) # there is no fonts folder +vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/mgl2/config.h" "#define MGL_FONT_PATH\t\"${CURRENT_PACKAGES_DIR}/share/mathgl/fonts\"" "" IGNORE_UNCHANGED) + +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING") diff --git a/vcpkg/ports/mathgl/usage b/vcpkg/ports/mathgl/usage new file mode 100644 index 0000000..ca6cc11 --- /dev/null +++ b/vcpkg/ports/mathgl/usage @@ -0,0 +1,4 @@ +mathgl provides CMake targets: + + find_package(MathGL2 CONFIG REQUIRED) + target_link_libraries(main PRIVATE $<IF:$<TARGET_EXISTS:mgl>,mgl,mgl-static>) diff --git a/vcpkg/ports/mathgl/vcpkg.json b/vcpkg/ports/mathgl/vcpkg.json new file mode 100644 index 0000000..df76d14 --- /dev/null +++ b/vcpkg/ports/mathgl/vcpkg.json @@ -0,0 +1,137 @@ +{ + "name": "mathgl", + "version": "8.0.1", + "port-version": 7, + "description": "MathGL is a free library of fast C++ routines for the plotting of the data varied in one or more dimensions", + "license": "GPL-3.0-only", + "supports": "!uwp & !xbox & !android", + "dependencies": [ + "getopt", + { + "$comment": "Non-windows targets need host `make_bin`.", + "name": "mathgl", + "host": true, + "default-features": false + }, + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "default-features": [ + "jpeg", + "opengl", + "png", + "zlib" + ], + "features": { + "arma": { + "description": "Armadillo support", + "dependencies": [ + "armadillo" + ] + }, + "examples": { + "description": "Build example programs (not installed)" + }, + "fltk": { + "description": "fltk module", + "dependencies": [ + { + "name": "fltk", + "default-features": false + } + ] + }, + "gif": { + "description": "gif module", + "dependencies": [ + "giflib" + ] + }, + "glut": { + "description": "glut module", + "dependencies": [ + { + "name": "freeglut", + "platform": "!osx" + }, + { + "name": "mathgl", + "default-features": false, + "features": [ + "opengl" + ] + } + ] + }, + "gsl": { + "description": "gsl module", + "dependencies": [ + "gsl" + ] + }, + "hdf5": { + "description": "hdf5 module", + "dependencies": [ + { + "name": "hdf5", + "default-features": false + } + ] + }, + "jpeg": { + "description": "jpeg module", + "dependencies": [ + "libjpeg-turbo" + ] + }, + "opengl": { + "description": "opengl module", + "dependencies": [ + "opengl" + ] + }, + "png": { + "description": "png module", + "dependencies": [ + "libpng", + { + "name": "mathgl", + "default-features": false, + "features": [ + "zlib" + ] + } + ] + }, + "qt5": { + "description": "qt5 module", + "dependencies": [ + { + "name": "qt5-base", + "default-features": false + } + ] + }, + "wx": { + "description": "wx module", + "dependencies": [ + { + "name": "wxwidgets", + "default-features": false + } + ] + }, + "zlib": { + "description": "zlib module", + "dependencies": [ + "zlib" + ] + } + } +} |