From c92ad0e4709ce6e14be2cad4674197014b1b356d Mon Sep 17 00:00:00 2001 From: petgit Date: Thu, 24 Jul 2014 08:27:56 +0200 Subject: [PATCH] VS2013, modifications to compile as C++ and on Windows . --- .gitignore | 8 + WIN32-BUILD-TIPS.txt | 389 ++++++++++++++++++++++++++++++++++++ src/mkstemp.c | 113 +++++++++++ src/mkstemp.h | 1 + src/rrd_client.c | 7 +- src/rrd_create.c | 2 +- src/rrd_modify.c | 96 ++++++--- src/rrd_restore.c | 2 +- src/rrd_rpncalc.c | 4 +- src/rrd_snprintf.c | 10 +- src/rrd_update.c | 22 +- win32/RCa02816 | Bin 0 -> 2220 bytes win32/librrd-4.def | 14 +- win32/librrd-4.vcxproj | 284 ++++++++++++++++++++++++++ win32/librrd-4.vcxproj.user | 4 + win32/rrd.sln | 51 +++++ win32/rrd_config.h | 27 ++- win32/rrdtool.sln | 22 ++ win32/rrdtool.vcxproj | 204 +++++++++++++++++++ win32/rrdupdate.sln | 22 ++ win32/rrdupdate.vcxproj | 208 +++++++++++++++++++ 21 files changed, 1427 insertions(+), 63 deletions(-) create mode 100644 WIN32-BUILD-TIPS.txt create mode 100644 src/mkstemp.c create mode 100644 src/mkstemp.h create mode 100644 win32/RCa02816 create mode 100644 win32/librrd-4.vcxproj create mode 100644 win32/librrd-4.vcxproj.user create mode 100644 win32/rrd.sln create mode 100644 win32/rrdtool.sln create mode 100644 win32/rrdtool.vcxproj create mode 100644 win32/rrdupdate.sln create mode 100644 win32/rrdupdate.vcxproj diff --git a/.gitignore b/.gitignore index 88d5b3dc..0bf38ba5 100644 --- a/.gitignore +++ b/.gitignore @@ -70,3 +70,11 @@ Makefile /doc/*.3 /doc/pod2*.tmp /doc/RRD?.pod +/contrib +/win32/Debug +/win32/Release +/win32/ReleaseDLL +/win32/*.suo +/win32/*.sdf +/bindings/dotnet/*.suo +/win32/*.opensdf diff --git a/WIN32-BUILD-TIPS.txt b/WIN32-BUILD-TIPS.txt new file mode 100644 index 00000000..c8651bb5 --- /dev/null +++ b/WIN32-BUILD-TIPS.txt @@ -0,0 +1,389 @@ +Compiling RRDtool on Win32 with Microsoft Visual C++: +--------------------------------------------------------------- +2010-06-04 Chris Larsen clarsen@euphoriaaudio.com +2008-03-12 Stefan Ludewig stefan.ludewig@exitgames.com + +Here are step by step instructions for building librrd-4.dll and rrdtool.exe +version 1.4.5 and newer with Microsoft Visual Studio 2013 (12.0.x). + +(1) Create a folder named "contrib" in the directory where this text file is located. + +(2) Download the following libraries that rrdtool depends on into this folder: + + - cairo: http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/cairo_1.8.10-3_win32.zip + and http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/cairo-dev_1.8.10-3_win32.zip + + - glib: http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.24/glib_2.24.1-1_win32.zip + and http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.24/glib-dev_2.24.1-1_win32.zip + + - libpng: http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/libpng_1.4.0-1_win32.zip + and http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/libpng-dev_1.4.0-1_win32.zip + + - libxml2: http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/libxml2_2.7.7-1_win32.zip + and http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/libxml2-dev_2.7.7-1_win32.zip + + - pango: http://ftp.gnome.org/pub/gnome/binaries/win32/pango/1.28/pango_1.28.0-1_win32.zip + and http://ftp.gnome.org/pub/gnome/binaries/win32/pango/1.28/pango-dev_1.28.0-1_win32.zip + + - zlib: http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/zlib_1.2.4-2_win32.zip + and http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/zlib-dev_1.2.4-2_win32.zip + + - fontconfig: http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/fontconfig_2.8.0-2_win32.zip + + - freetype: http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/freetype_2.3.12-1_win32.zip + + - expat: http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/expat_2.0.1-1_win32.zip + +(3) Extract all of the .zip files into the contrib folder. Do not extract each library into it's own + directory. We want all of the files merged into a structure consisting of "bin, include, lib..." + etc folders. + +(4) Open the Visual Studio 2013 Solution "rrd.sln" in the win32 folder of + your rrdtool-folder and build either the project librrd-4 (for the + rrdtool-library), rrdtool (for the rrdtool-executable depending on the + libraray) or the complete solution. A post-build event automatically copies + all the dlls, needed by rrdtool, next to the .exe, when you build the + executable. These DLLs must be available on all hosts where rrdtool will + run. + +24/7/14 Peter +Update VS2008 project from branch 1.4 to VS2013 for the actual master. +Change sources for C++ / Windows compatibility. + +6/10/10 Chris +Updated project to include latest files and libraries. +Builds static or dynamic rrdlib + +5/1/05 Tobi +to help windows deal with the reentrant versions of many unix +calls link with win32comp.c + +4/10/05 Tobi +The windows implementation of strftime does not seem to support +the ISO 8601 week number (%V) I have therfore included the file +strftime.[ch] which provides strftime_ ... if you compile rrdtool +with -Dstrftime=_strftime and link strftime.o then you will +get propper support for %V. + +7/29/04 Jake Brutlag + +As of Jan 2004, code for libraries utilized by rrdtool +(png, libart, freetype, and zlib) is no longer distributed with +rrdtool. This requires some changes to the compile process on +Win32. The solution described here is to compile rrdtool to +link against these libraries dynamically. There is an advantage +to this approach: namely the rrdtool distribution doesn't have to +worry about how to compile these libraries on Win32. In theory, +since others already provide and maintain Win32 binaries for these +libraries the users don't have to worry about how to compile them +either. The disadvantage of this approach is that the DLLs for +these libraries must be available on the hosts where rrdtool will run. + +Here are step by step instructions for compiling rrdtool.exe and +the perl shared library (RRDS.dll) with Microsoft Visual C++ 6.0. +(1) Download libraries rrdtool depends on from GnuWin32: +http://gnuwin32.sourceforge.net/ +For freetype, libpng, and zlib download the "Complete Package"; each of +these will be a self-extracting self-installing executable. +For libart, download both the "Binaries" and "Developer Files" packages. +Unfortunately at this time GnuWin32 doesn't provide the "Complete Package" +installer for libart. Perhaps by the time you are following these +instructions GnuWin32 will have a "Complete Package" for libart. +(2) Install the GnuWin32 libraries by running the executables for freetype, +libpng, and zlib. These instructions and the Visual C++ project files +distributed with rrdtool assume that you will use the default install +location: C:\Program Files\GnuWin32. Extract the two zip files for libart, +libart-2.3.3-bin.zip and libart-2.3.3-1-lib.zip into the GnuWin32 directory; +the appropriate libart files will be added to the include, lib, and bin +subdirectories. +(3) Add C:\Program Files\GnuWin32\bin to the PATH (Control Panel -> +System -> Advanced -> Environment Variables). +(4) Start Microsoft Visual C++ 6.0. Load the workspace file, rrdtool.dsw, +from the src subdirectory of your rrdtool code directory. +(5) Compile the Release build of the rrdtool project (since rrdtool depends +on the rrd project, the rrd library will also be compiled). At this +time, the compile will fail in zconf.h, a zlib header file. The problem +is a preprocessor directive that loads unistd.h. Open zconf.h in VC++ +(this file is in C:\Program Files\GnuWin32\include) and find the following +code block: + +#if 1 /* HAVE_UNISTD_H -- this line is updated by ./configure */ +# include /* for off_t */ +# include /* for SEEK_* and off_t */ +# ifdef VMS +# include /* for off_t */ +# endif +# define z_off_t off_t +#endif + +Change it to reads as follows (this is code from zlib-1.1.4): + +#if HAVE_UNISTD_H +# include /* for off_t */ +# include /* for SEEK_* and off_t */ +# ifdef VMS +# include /* for off_t */ +# endif +# define z_off_t off_t +#endif + +Note that it is actually just a one line change. Save the file and +recompile rrdtool. By the time you are following these instructions +this issue with zconf.h may be resolved. +(6) At this point, you can run the executable rrdtool.exe in the +src\toolrelease subdirectory. Note that if you wish to run rrdtool +on other machines, you will need the following DLLs installed (on the +path) on those machines: +zlib1.dll +libpng12.dll +libart_lgpl.dll +freetype6.dll +msvcrt.dll +The names of the first four DLLs might vary from what is listed here +depending on the versions of the packages you downloaded from GnuWin32. +The fifth DLL, msvcrt.dll, is a system DLL for most versions of Windows. +If you are running on old version of Windows, you can install/upgrade to +IE4.0 to get this DLL. +(7) To compile the perl-shared library, open a Command Prompt (DOS box) +and cd to the bindings\perl-shared subdirectory. +(8) Run vcvars32.bat; this batch file, in your vc98\bin directory will +set necessary environment options for command line compiling. +(9) In bindings\perl-shared, run +perl ntmake-build +nmake +nmake test +If nmake test succeeds, you are good to go. RRDs.dll is in +blib\arch\auto\RRDs. If you plan to install via the Active State ppm +tool, tar and gzip the blib directory. You can use the RRDs.ppd file +in bindings\perl-shared directory. Remember that as in the case of +rrdtool.exe you will need the DLLs listed in (6) on the machine where +you are going to use RRDs.dll. + +Microsoft Visual C++ 7.1 (.NET 2003): + +Unfortunately, this is more difficult than with VC++ 6.0. The problem +is that by default the C runtime dll for VC++ 7.1 is msvcr71.dll rather +than msvcrt.dll. The GnuWin32 library binaries are all compiled +to use msvcrt.dll and you can't mix msvcr71.dll and msvcrt.dll in the +same process. One option is to download the source code for the libraries +(available from http://gnuwin32.sourceforge.net) recompile them with +VC++ 7.l. Then all the components will use msvcr71.dll. Once you are +going to go this route, you can also use static multi-threaded libraries +and use static linking between rrdtool (or RRDs.dll) and its dependencies. + +To use the GnuWin32 library binaries, you need to trick VC++ 7.1 into +compiling rrdtool to use the older msvcrt.dll. Follow steps (1) - (3) +as above, then: +(4) Obtain a different version of the msvcrt.lib import library that +is compatible with vc7 and points to msvcrt.dll: +msvcrtlib_for_vc7.zip from http://xchat.org/win32/testing +Backup msvcrt.lib in your vc7\lib directory +(\Program Files\Microsoft Visual Studio .NET 2003\vc7\lib) +Then extract the msvcrt.lib from the zip file into the vc7\lib directory. +WARNING: Use this msvcrt.lib at your own risk! This is not a Microsoft +supplied file nor a file supported by anyone associated with rrdtool. +(5) Start Microsoft Visual C++ 7.1. Load the solution file, rrdtool.sln, +from the src subdirectory of your rrdtool code directory. Edit zconf.h, +as needed, as described under (5) above. Compile the release build of +the rrdtool project. +Proceed with steps (6) - (9) as above, if you are using/picking up +the wrong msvcrt.lib import library then nmake test for perl-shared +will fail. + +Note: it is possible in the future that GnuWin32 will provide Win32 +binaries that utilize msvcr71.dll rather than msvcrt.dll. + +5/14/02 Jake Brutlag + +These notes share some insight I gained compiling 1.1.x with +MS Visual C++ 6.0 (using project files). This information may or +may not be accurate at the time you are reading this. + +(1) freetype and rrdtool cannot use precompiled headers (which are +enabled by default for MSVC++ projects). MSVC++ 6.0 does not +support precompiled headers if #include directives contain MACROS. +(2) Compile Release build with Default optimization, not the +Maximize Speed optimization. I encountered some strange errors +(related to argument processing for complex commands like graph-- +perhaps the getopt stuff is too blame) with Maximize Speed. +(3) libart relies upon config.h (ostensibly generated by the +configure script-- but of course not on Win32 platforms). ..\..\confignt +(which contains a static Win32 version of config.h) should be on +the include path. +(4) Fonts are located in the %windir%\fonts, so the default font +is c:\winnt\fonts\cour.ttf. (6/19/02) At Kerry Calvert's suggestion +this setting was moved to confignt\config.h. +(5) libart requires a custom build step to generate art_config.h; this +is done manually via the commands: +cl -I..\..\confignt gen_art_config.c +gen_art_config.exe > art_config.h + +Currently, to compile rrd.lib and rrdtool.exe using +the MSVC++ project files, first start MSVC++ 6.0. Open the rrdtool +workspace (rrdtool.dsw in the src directory). The active project/ +configuration should be rrdtool-Win32 Release. Select Rebuild All +from the Build menu. The static link library (rrd.lib) will +be generated in src\release directory and executable will be generated +in the src\toolrelease directory. + +Compiling RRDtool on NT ... work in progress +--------------------------------------------------------------- + by Tamas Kovacshazy (khazy@mit.bme.hu) + +Persisting Problems with the current NT port: + +Unfortunately, the RRD perl modules does not work with Perl +(ActivePerl) using the current distribution. + +The RRD shared perl module can be compiled after some +modification... + +Follow these steps: + +0. Install perl if you do not have it! + Visit http://www.ActiveState.com/pw32/ for a complete distribution. + +1. Copy ..\gd1.2\release\gd.lib to ..\gd1.2\ +2. Copy ..\src\release\rrd.lib to ..\src +3. perl Makefile.pl + +In this step the system complains about something I do not +understand. The error message is the following: + +Note (probably harmless): No library found for '-lm' + +Is a library missing? But it does not stop with an error... + +4. nmake test (You must have Visual C++ on the machine!) + +After these steps it generates the test files (svgs and rrds), +and they seem to be good. + +The real problem in the shared perl modul is the following: + +I do not know how this installation stuff works. The problem is +that the installation stuff looks for the gd.lib and the +rrd.lib in the ..\gd1.2 and ..\src directory. The UNIX compile +puts the files into these directories, but the NT compile does +not. + +It is all for today, + +khazy + +Tamas Kovacshazy E-mail: khazy@mit.bme.hu +WWW: http://www.mit.bme.hu/~khazy +Technical University of Budapest +Department of Measurement and Information Systems + + +Compiling RRDtool 1.2.x on Win32 with MingW32 gcc: +--------------------------------------------------------------- + +1. Obtain and install the current version of the MingW package. + + http://www.mingw.org/download.shtml + + In the MinGW set you will need the gcc and binutils as a minimum. + +2. Obtain either of the following awk versions and install in a directory + on your System Path: + + - awk.exe + + http://cm.bell-labs.com/cm/cs/awkbook/index.html + + Note: This version has no dependencies to other libs. + + - gawk.exe (GnuWin32 version) + + http://gnuwin32.sourceforge.net/packages/gawk.htm + + Note: Also fetch the dependant libraries for it from the same page. + +3. If you plan to create a 'distribution' release of the RRD Tools, the + Makefile.Win32 will copy all the needed files to an output directory and + then zip the entire directory. A suitable zip utility can be obtained here: + + http://www.info-zip.org/ + + Install in a directory on your System Path. + +4. Obtain the following libraries, ideally install them all under a common + directory: + + = zlib + + http://oss.oetiker.ch/rrdtool/pub/libs/zlib-1.2.3.tar.gz + http://www.zlib.net/ + + = libpng + + http://oss.oetiker.ch/rrdtool/pub/libs/libpng-1.2.12.tar.gz + http://libpng.sourceforge.net/ + + = freetype + + http://oss.oetiker.ch/rrdtool/pub/libs/freetype-2.2.1.tar.gz + http://freetype.sourceforge.net/index2.html + + = libart_lgpl + + http://oss.oetiker.ch/rrdtool/pub/libs/libart_lgpl-2.3.17.tar.gz + http://www.levien.com/libart/ + + Note: libart_lgpl needs a special tweak because the archive contains + only the base directory, but the libart headers are usually included with + a directory prefix; therefore create a subfolder 'libart_lgpl' and move + all files into this subfolder. + +5. Set up for DOS environment. + + Add MingW\bin and MSYS\bin directories to your System path. + + If the libraries share a common directory set the following environment var: + + set LIBBASE= + e.g set LIBBASE=C:\Libraries + + If the libraries are scattered, set the following environment vers: + + set ZLIBSDK= + e.g set ZLIBSDK=C:\mytest\zlib-1.2.3 + set LIBPNG= + set LIBFT2= + set LIBART= + + If using the Gnu Awk (gawk.exe), edit the Makefile.Win32 and change the line: + + AWK = awk + + to + + AWK = gawk + +6. Compile the project. + + All dependent libs are statically linked in. This has the benefit that the + binaries do not depend on any other DLLs. + In order to build the static freetype lib enter the freetype base directory + and type 'make'. If everything is fine a message appears that gcc is detected, + and that you should again type 'make'. Follow that in order to build freetype. + All other libs are build from the sources with the RRDTool Makefile.Win32. + + Switch to the RRDTOOL .\src directory. Then: + + make -f Makefile.Win32 help + + to see the build options, or + + make -f Makefile.Win32 all + + should build the entire package. + +6. Happy Graphing! + + +written by normw & gk. + + diff --git a/src/mkstemp.c b/src/mkstemp.c new file mode 100644 index 00000000..4bb8ae98 --- /dev/null +++ b/src/mkstemp.c @@ -0,0 +1,113 @@ +/* mkstemp extracted from libc/sysdeps/posix/tempname.c. Copyright + (C) 1991-1999, 2000, 2001, 2006 Free Software Foundation, Inc. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. */ +//http://stackoverflow.com/questions/6036227/mkstemp-implementation-for-win32 + +#include +#include "rrd_tool.h" +#include + + +static const char letters[] = +"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + +/* Generate a temporary file name based on TMPL. TMPL must match the + rules for mk[s]temp (i.e. end in "XXXXXX"). The name constructed + does not exist at the time of the call to mkstemp. TMPL is + overwritten with the result. */ +int +mkstemp (char *tmpl) +{ + int len; + char *XXXXXX; + static unsigned long long value; + unsigned long long random_time_bits; + unsigned int count; + int fd = -1; + int save_errno = errno; + + /* A lower bound on the number of temporary files to attempt to + generate. The maximum total number of temporary file names that + can exist for a given template is 62**6. It should never be + necessary to try all these combinations. Instead if a reasonable + number of names is tried (we define reasonable as 62**3) fail to + give the system administrator the chance to remove the problems. */ +#define ATTEMPTS_MIN (62 * 62 * 62) + + /* The number of times to attempt to generate a temporary file. To + conform to POSIX, this must be no smaller than TMP_MAX. */ +#if ATTEMPTS_MIN < TMP_MAX + unsigned int attempts = TMP_MAX; +#else + unsigned int attempts = ATTEMPTS_MIN; +#endif + + len = strlen (tmpl); + if (len < 6 || strcmp (&tmpl[len - 6], "XXXXXX")) + { + errno = EINVAL; + return -1; + } + +/* This is where the Xs start. */ + XXXXXX = &tmpl[len - 6]; + + /* Get some more or less random data. */ + { + SYSTEMTIME stNow; + FILETIME ftNow; + + // get system time + GetSystemTime(&stNow); + stNow.wMilliseconds = 500; + if (!SystemTimeToFileTime(&stNow, &ftNow)) + { + errno = -1; + return -1; + } + + random_time_bits = (((unsigned long long)ftNow.dwHighDateTime << 32) + | (unsigned long long)ftNow.dwLowDateTime); + } + value += random_time_bits ^ (unsigned long long)GetCurrentThreadId (); + + for (count = 0; count < attempts; value += 7777, ++count) + { + unsigned long long v = value; + + /* Fill in the random bits. */ + XXXXXX[0] = letters[v % 62]; + v /= 62; + XXXXXX[1] = letters[v % 62]; + v /= 62; + XXXXXX[2] = letters[v % 62]; + v /= 62; + XXXXXX[3] = letters[v % 62]; + v /= 62; + XXXXXX[4] = letters[v % 62]; + v /= 62; + XXXXXX[5] = letters[v % 62]; + +#define _O_EXCL 0x0400 +#define O_EXCL _O_EXCL +#define _S_IREAD 0000400 /* read permission, owner */ +#define _S_IWRITE 0000200 /* write permission, owner */ + + fd = open (tmpl, O_RDWR | O_CREAT | O_EXCL, _S_IREAD | _S_IWRITE); + if (fd >= 0) + { + errno = save_errno; + return fd; + } + else if (errno != EEXIST) + return -1; + } + + /* We got out of the loop because we ran out of combinations to try. */ + errno = EEXIST; + return -1; +} \ No newline at end of file diff --git a/src/mkstemp.h b/src/mkstemp.h new file mode 100644 index 00000000..42f1f914 --- /dev/null +++ b/src/mkstemp.h @@ -0,0 +1 @@ +int mkstemp(char *tmpl); diff --git a/src/rrd_client.c b/src/rrd_client.c index a5f22579..ec1058c5 100644 --- a/src/rrd_client.c +++ b/src/rrd_client.c @@ -26,13 +26,16 @@ **/ #ifdef WIN32 + +#include // contain #include +// Need to link with Ws2_32.lib +#pragma comment(lib, "ws2_32.lib") #include -#include -#include #include #include #include #include + #endif #include "rrd_strtod.h" diff --git a/src/rrd_create.c b/src/rrd_create.c index 185e2d4d..600cc7df 100644 --- a/src/rrd_create.c +++ b/src/rrd_create.c @@ -645,7 +645,7 @@ void parseGENERIC_DS( char *colonp; /* convert heartbeat as count or duration */ - colonp = strchr(def, ':'); + colonp = (char *) strchr(def, ':'); if (! colonp) { parsetime_error = "missing separator"; break; diff --git a/src/rrd_modify.c b/src/rrd_modify.c index 97afb21d..00001ecb 100644 --- a/src/rrd_modify.c +++ b/src/rrd_modify.c @@ -18,6 +18,14 @@ #include "fnv.h" #include +#include "rrd_config.h" +#ifdef WIN32 +#include +#include +#include +#endif + + // calculate a % b, guaranteeing a positive result... static int positive_mod(int a, int b) { @@ -178,16 +186,25 @@ static candidate_t *find_candidate_rras(const rrd_t *rrd, const rra_def_t *rra, enum cf_en other_cf = cf_conv(other_rra->cf_nam); if (other_cf == cf || (other_cf == CF_AVERAGE && other_rra->pdp_cnt == 1)) { +#ifdef _WINDOWS + candidate_t c; + c.rrd = rrd; + c.rra_index = i; + c.values = rrd->rrd_value + rrd->stat_head->ds_cnt * total_rows; + c.rra = rrd->rra_def + i; + c.ptr = rrd->rra_ptr + i; + c.cdp = rrd->cdp_prep + rrd->stat_head->ds_cnt * i; +#else candidate_t c = { .rrd = rrd, .rra_index = i, .values = rrd->rrd_value + rrd->stat_head->ds_cnt * total_rows, .rra = rrd->rra_def + i, .ptr = rrd->rra_ptr + i, - .cdp = rrd->cdp_prep + rrd->stat_head->ds_cnt * i - + .cdp = rrd->cdp_prep + rrd->stat_head->ds_cnt * i }; - candidates = copy_over_realloc(candidates, *cnt, +#endif + candidates = (candidate_t *) copy_over_realloc(candidates, *cnt, &c, 0, sizeof(c)); if (candidates == NULL) { rrd_set_error("out of memory"); @@ -223,12 +240,12 @@ static int copy_or_delete_DSs(const rrd_t *in, rrd_t *out, char *ops) { for (unsigned int in_ds = 0 ; in_ds < in->stat_head->ds_cnt ; in_ds++) { switch (ops[in_ds]) { case 'c': { - out->ds_def = copy_over_realloc(out->ds_def, out->stat_head->ds_cnt, + out->ds_def = (ds_def_t *) copy_over_realloc(out->ds_def, out->stat_head->ds_cnt, in->ds_def, in_ds, sizeof(ds_def_t)); if (out->ds_def == NULL) goto done; - out->pdp_prep = copy_over_realloc(out->pdp_prep, out->stat_head->ds_cnt, + out->pdp_prep = (pdp_prep_t *) copy_over_realloc(out->pdp_prep, out->stat_head->ds_cnt, in->pdp_prep, in_ds, sizeof(pdp_prep_t)); if (out->pdp_prep == NULL) goto done; @@ -266,7 +283,7 @@ static int handle_rra_defs(const rrd_t *in, rrd_t *out, { int rc = -1; unsigned int j, r; - rra_ptr_t rra_0_ptr = { .cur_row = 0 }; + rra_ptr_t rra_0_ptr; rra_0_ptr.cur_row = 0; cdp_prep_t empty_cdp_prep; memset(&empty_cdp_prep, 0, sizeof(empty_cdp_prep)); @@ -308,7 +325,7 @@ static int handle_rra_defs(const rrd_t *in, rrd_t *out, continue; } - out->cdp_prep = realloc(out->cdp_prep, + out->cdp_prep = (cdp_prep_t *) realloc(out->cdp_prep, sizeof(cdp_prep_t) * out->stat_head->ds_cnt * (out->stat_head->rra_cnt + 1)); @@ -323,7 +340,7 @@ static int handle_rra_defs(const rrd_t *in, rrd_t *out, int start_index_in = in->stat_head->ds_cnt * j; int start_index_out = out->stat_head->ds_cnt * out->stat_head->rra_cnt; - out->rra_def = copy_over_realloc(out->rra_def, out->stat_head->rra_cnt, + out->rra_def = (rra_def_t *) copy_over_realloc(out->rra_def, out->stat_head->rra_cnt, in->rra_def, j, sizeof(rra_def_t)); if (out->rra_def == NULL) goto done; @@ -331,7 +348,7 @@ static int handle_rra_defs(const rrd_t *in, rrd_t *out, // adapt row count: out->rra_def[out->stat_head->rra_cnt].row_cnt = final_row_count; - out->rra_ptr = copy_over_realloc(out->rra_ptr, out->stat_head->rra_cnt, + out->rra_ptr = (rra_ptr_t *) copy_over_realloc(out->rra_ptr, out->stat_head->rra_cnt, &rra_0_ptr, 0, sizeof(rra_ptr_t)); if (out->rra_ptr == NULL) goto done; @@ -408,10 +425,10 @@ static int add_dss(const rrd_t UNUSED(*in), rrd_t *out, } // copy parse result to output RRD - out->ds_def = copy_over_realloc(out->ds_def, out->stat_head->ds_cnt, + out->ds_def = (ds_def_t *) copy_over_realloc(out->ds_def, out->stat_head->ds_cnt, &added, 0, sizeof(ds_def_t)); - if (out->ds_def == NULL) { + if (out->ds_def == NULL) { goto done; } @@ -424,7 +441,7 @@ static int add_dss(const rrd_t UNUSED(*in), rrd_t *out, added_pdp_prep.scratch[PDP_unkn_sec_cnt].u_cnt = out->live_head->last_up % out->stat_head->pdp_step; - out->pdp_prep = copy_over_realloc(out->pdp_prep, + out->pdp_prep = (pdp_prep_t *) copy_over_realloc(out->pdp_prep, out->stat_head->ds_cnt, &added_pdp_prep, 0, sizeof(pdp_prep_t)); @@ -814,7 +831,7 @@ static rrd_t *rrd_modify_structure(const rrd_t *in, unsigned int ds_ops_cnt = 0; int *ds_map = NULL; - out = malloc(sizeof(rrd_t)); + out = (rrd_t *) malloc(sizeof(rrd_t)); if (out == NULL) { rrd_set_error("Out of memory"); goto done; @@ -849,7 +866,7 @@ static rrd_t *rrd_modify_structure(const rrd_t *in, out->stat_head->ds_cnt = 0; out->stat_head->rra_cnt = 0; - out->live_head = copy_over_realloc(out->live_head, 0, in->live_head, 0, + out->live_head = (live_head_t *) copy_over_realloc(out->live_head, 0, in->live_head, 0, sizeof(live_head_t)); if (out->live_head == NULL) goto done; @@ -864,7 +881,7 @@ static rrd_t *rrd_modify_structure(const rrd_t *in, - 'a' will be added. */ ds_ops_cnt = in->stat_head->ds_cnt; - ds_ops = malloc(ds_ops_cnt); + ds_ops = (char *) malloc(ds_ops_cnt); if (ds_ops == NULL) { rrd_set_error("parse_tag_rrd: malloc failed."); @@ -899,7 +916,7 @@ static rrd_t *rrd_modify_structure(const rrd_t *in, } if (added_cnt > 0) { // and extend the ds_ops array as well - ds_ops = realloc(ds_ops, ds_ops_cnt + added_cnt); + ds_ops = (char *) realloc(ds_ops, ds_ops_cnt + added_cnt); for(; added_cnt > 0 ; added_cnt--) { ds_ops[ds_ops_cnt++] = 'a'; } @@ -908,7 +925,7 @@ static rrd_t *rrd_modify_structure(const rrd_t *in, /* prepare explicit data source index to map from output index to input index */ - ds_map = malloc(sizeof(int) * out->stat_head->ds_cnt); + ds_map = (int *) malloc(sizeof(int) * out->stat_head->ds_cnt); j = 0; for (i = 0 ; i < ds_ops_cnt ; i++) { @@ -950,7 +967,7 @@ static rrd_t *rrd_modify_structure(const rrd_t *in, */ /* prepare space for output data */ - out->rrd_value = realloc(out->rrd_value, + out->rrd_value = (rrd_value_t *) realloc(out->rrd_value, total_out_rra_rows * out->stat_head->ds_cnt * sizeof(rrd_value_t)); @@ -1263,7 +1280,7 @@ static int add_rras(const rrd_t *in, rrd_t *out, const int *ds_map, goto done; } - out->rra_def = copy_over_realloc(out->rra_def, out->stat_head->rra_cnt, + out->rra_def = (rra_def_t *) copy_over_realloc(out->rra_def, out->stat_head->rra_cnt, &rra_def, 0, sizeof(rra_def_t)); if (out->rra_def == NULL) goto done; @@ -1279,7 +1296,7 @@ static int add_rras(const rrd_t *in, rrd_t *out, const int *ds_map, if (last_rra_cnt < out->stat_head->rra_cnt) { // extend cdp_prep and rra_ptr arrays - out->cdp_prep = realloc(out->cdp_prep, + out->cdp_prep = (cdp_prep_t *) realloc(out->cdp_prep, sizeof(cdp_prep_t) * out->stat_head->ds_cnt * (out->stat_head->rra_cnt)); @@ -1288,7 +1305,7 @@ static int add_rras(const rrd_t *in, rrd_t *out, const int *ds_map, goto done; } - out->rra_ptr = realloc(out->rra_ptr, + out->rra_ptr = (rra_ptr_t *) realloc(out->rra_ptr, sizeof(rra_ptr_t) * out->stat_head->rra_cnt); if (out->rra_ptr == NULL) { @@ -1318,7 +1335,7 @@ static int add_rras(const rrd_t *in, rrd_t *out, const int *ds_map, total_out_rra_rows += rra_def->row_cnt; /* prepare space for output data */ - out->rrd_value = realloc(out->rrd_value, + out->rrd_value = (rrd_value_t *) realloc(out->rrd_value, (total_out_rra_rows) * out->stat_head->ds_cnt * sizeof(rrd_value_t)); @@ -1363,7 +1380,7 @@ static int write_rrd(const char *outfilename, rrd_t *out) { // to stdout } else { /* create RRD with a temporary name, rename atomically afterwards. */ - tmpfilename = malloc(strlen(outfilename) + 7); + tmpfilename = (char *) malloc(strlen(outfilename) + 7); if (tmpfilename == NULL) { rrd_set_error("out of memory"); goto done; @@ -1371,8 +1388,11 @@ static int write_rrd(const char *outfilename, rrd_t *out) { strcpy(tmpfilename, outfilename); strcat(tmpfilename, "XXXXXX"); - + + + int tmpfd = mkstemp(tmpfilename); + if (tmpfd < 0) { rrd_set_error("Cannot create temporary file"); goto done; @@ -1401,6 +1421,9 @@ static int write_rrd(const char *outfilename, rrd_t *out) { WILL NOT take care of any ACLs that may be set. Go figure. */ if (stat(outfilename, &stat_buf) != 0) { +#ifdef WIN32 + stat_buf.st_mode = _S_IREAD | _S_IWRITE; // have to test it is +#else /* an error occurred (file not found, maybe?). Anyway: set the mode to 0666 using current umask */ stat_buf.st_mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH; @@ -1409,6 +1432,7 @@ static int write_rrd(const char *outfilename, rrd_t *out) { umask(mask); stat_buf.st_mode &= ~mask; +#endif } if (chmod(tmpfilename, stat_buf.st_mode) != 0) { rrd_set_error("Cannot chmod temporary file!"); @@ -1461,7 +1485,7 @@ int handle_modify(const rrd_t *in, const char *outfilename, for (i = optidx ; i < argc ; i++) { if (strncmp("DEL:", argv[i], 4) == 0 && strlen(argv[i]) > 4) { - del = realloc(del, (rcnt + 2) * sizeof(char*)); + del = (const char **) realloc(del, (rcnt + 2) * sizeof(char*)); if (del == NULL) { rrd_set_error("out of memory"); rc = -1; @@ -1478,7 +1502,7 @@ int handle_modify(const rrd_t *in, const char *outfilename, rcnt++; del[rcnt] = NULL; } else if (strncmp("DS:", argv[i], 3) == 0 && strlen(argv[i]) > 3) { - add = realloc(add, (acnt + 2) * sizeof(char*)); + add = (const char **) realloc(add, (acnt + 2) * sizeof(char*)); if (add == NULL) { rrd_set_error("out of memory"); rc = -1; @@ -1495,7 +1519,8 @@ int handle_modify(const rrd_t *in, const char *outfilename, acnt++; add[acnt] = NULL; } else if (strncmp("RRA#", argv[i], 4) == 0 && strlen(argv[i]) > 4) { - rra_mod_op_t rra_mod = { .def = NULL }; + rra_mod_op_t rra_mod; // = { .def = NULL }; // not in VS2013 + rra_mod.def = NULL; char sign; unsigned int number; unsigned int idx; @@ -1522,7 +1547,7 @@ int handle_modify(const rrd_t *in, const char *outfilename, goto done; } - rra_ops = copy_over_realloc(rra_ops, rraopcnt, + rra_ops = (rra_mod_op_t *) copy_over_realloc(rra_ops, rraopcnt, &rra_mod, 0, sizeof(rra_mod)); if (rra_ops == NULL) { rrd_set_error("out of memory"); @@ -1542,7 +1567,7 @@ int handle_modify(const rrd_t *in, const char *outfilename, goto done; } - rra_ops = copy_over_realloc(rra_ops, rraopcnt, + rra_ops = (rra_mod_op_t *) copy_over_realloc(rra_ops, rraopcnt, &rra_mod, 0, sizeof(rra_mod)); if (rra_ops == NULL) { rrd_set_error("out of memory"); @@ -1551,11 +1576,16 @@ int handle_modify(const rrd_t *in, const char *outfilename, } rraopcnt++; } else if (strncmp("DELRRA:", argv[i], 7) == 0 && strlen(argv[i]) > 7) { - rra_mod_op_t rra_mod = { .def = NULL, + rra_mod_op_t rra_mod; + /* NOT in VS2013 C++ allowed + = { .def = NULL, .op = '=', .row_count = 0 // eg. deletion - }; - + };*/ + rra_mod.def = NULL; + rra_mod.op = '='; + rra_mod.row_count = 0; // eg. deletion + rra_mod.index = atoi(argv[i] + 7); if (rra_mod.index < 0 ) { rrd_set_error("DELRRA requires a non-negative, integer argument"); @@ -1563,7 +1593,7 @@ int handle_modify(const rrd_t *in, const char *outfilename, goto done; } - rra_ops = copy_over_realloc(rra_ops, rraopcnt, + rra_ops = (rra_mod_op_t *) copy_over_realloc(rra_ops, rraopcnt, &rra_mod, 0, sizeof(rra_mod)); if (rra_ops == NULL) { rrd_set_error("out of memory"); diff --git a/src/rrd_restore.c b/src/rrd_restore.c index bfdfa73c..672f0262 100644 --- a/src/rrd_restore.c +++ b/src/rrd_restore.c @@ -1173,7 +1173,7 @@ static rrd_t *parse_file( /* special handling for XML on stdin (like it is the case when using the pipe interface) */ if (strcmp(filename, "-") == 0) { - sctx = malloc(sizeof(*sctx)); + sctx = (stdioXmlReaderContext *) malloc(sizeof(*sctx)); if (sctx == NULL) { rrd_set_error("parse_file: malloc failed."); return (NULL); diff --git a/src/rrd_rpncalc.c b/src/rrd_rpncalc.c index bf87e6a8..87516035 100644 --- a/src/rrd_rpncalc.c +++ b/src/rrd_rpncalc.c @@ -886,12 +886,12 @@ short rpn_calc( int doshifts=shifts; if (shifts<0) { doshifts=-shifts; } /* alloc memory */ - double *extra = rpnp[rpi].extra; + double *extra = (double *) rpnp[rpi].extra; if (rpnp[rpi].op == OP_PREDICTPERC) { if (! extra) { int size = (doshifts + 1) * (locstep + 2); rpnp[rpi].extra = - extra = malloc(sizeof(double) * size); + extra = (double *) malloc(sizeof(double) * size); } } /* loop the shifts */ diff --git a/src/rrd_snprintf.c b/src/rrd_snprintf.c index be4a094c..0fd4f026 100644 --- a/src/rrd_snprintf.c +++ b/src/rrd_snprintf.c @@ -878,7 +878,9 @@ rpl_vsnprintf(char *str, size_t size, const char *format, va_list args) * characters, in an implementation-defined * manner." (C99: 7.19.6.1, 8) */ - if ((strvalue = va_arg(args, void *)) == NULL) + // if ((strvalue = va_arg(args, void *)) == NULL) + //error C2440: '=' : cannot convert from 'void *' to 'const char *' + if ((strvalue = va_arg(args, char *)) == NULL) /* * We use the glibc format. BSD prints * "0x0", SysV "0". @@ -1519,8 +1521,8 @@ mypow10(int exponent) void * mymemcpy(void *dst, void *src, size_t len) { - const char *from = src; - char *to = dst; + const char *from = (const char *) src; + char *to = (char *) dst; /* No need for optimization, we use this only to replace va_copy(3). */ while (len-- > 0) @@ -1539,7 +1541,7 @@ rpl_vasprintf(char **ret, const char *format, va_list ap) VA_COPY(aq, ap); len = vsnprintf(NULL, 0, format, aq); VA_END_COPY(aq); - if (len < 0 || (*ret = malloc(size = len + 1)) == NULL) + if (len < 0 || (*ret = (char *) malloc(size = len + 1)) == NULL) return -1; return vsnprintf(*ret, size, format, ap); } diff --git a/src/rrd_update.c b/src/rrd_update.c index eb994bc7..7a1a0894 100644 --- a/src/rrd_update.c +++ b/src/rrd_update.c @@ -371,7 +371,7 @@ static char *rrd_get_file_template(const char *filename) /* {{{ */ rrd_file_t *rrd_file; unsigned int i; size_t len=0; - char *template = NULL; + char *filetemplate = NULL; //template is a key word in C++ , see http://msdn.microsoft.com/de-de/library/2e6a4at9.aspx /* open file */ rrd_init(&rrd); @@ -384,23 +384,23 @@ static char *rrd_get_file_template(const char *filename) /* {{{ */ len += strlen(rrd.ds_def[i].ds_nam)+1; } /* now that we got it allocate memory */ - template = malloc(len); - if (!template) + filetemplate = (char *) malloc(len); + if (!filetemplate) goto err_close; - template[0] = 0; + filetemplate[0] = 0; /* fill in for real */ for (i = 0; i < rrd.stat_head->ds_cnt; i++) { if (i) - strcat(template,":"); - strcat(template,rrd.ds_def[i].ds_nam); + strcat(filetemplate,":"); + strcat(filetemplate,rrd.ds_def[i].ds_nam); } err_close: rrd_close(rrd_file); err_free: rrd_free(&rrd); - return (template); + return (filetemplate); } /* }}} const char *rrd_get_file_template */ @@ -412,7 +412,7 @@ static gint cache_compare_names (gconstpointer name1, gpointer data) { (void)(data); /* to avoid unused message */ - return (strcmp (name1, name2)); + return (strcmp((const char *)name1, (const char *)name2)); } static void cache_destroy(gpointer data) @@ -514,7 +514,7 @@ static int _concat_field( size_t len = 0; /* get length */ - char *colon = strchr(field, ':'); + char *colon = strchr((char *)field, ':'); if (colon) { len=colon-field; } else @@ -586,7 +586,7 @@ static char *rrd_map_template_to_values(const char *tpl, /* {{{ */ */ * 2 /* = strlen(":U") */; - mapped = malloc(len); + mapped = (char *) malloc(len); if (!mapped) return NULL; mapped[0] = 0; @@ -643,7 +643,7 @@ static int rrd_template_update(const char *filename, /* {{{ */ /* now start to map those fields */ - mapped_values = calloc(values_num,sizeof(char*)); + mapped_values = (char **)calloc(values_num,sizeof(char*)); if (!mapped_values) { rrd_set_error("rrd_template_update: " " could not allocate memory"); diff --git a/win32/RCa02816 b/win32/RCa02816 new file mode 100644 index 0000000000000000000000000000000000000000..071686c251625c2ebde6fc9947d40da9cba8bd94 GIT binary patch literal 2220 zc-qC4Ymd@U5QgWoiT|O2FPiKw?CJ;C7!$b$7b)Qy6BEKhxhP8sg;oB&&rDlF3#^(L zO~Yx=%scN~&YU4D3z^GOJaOb&GIAw3`EHU|awA`ORDUmPp0QlYYY=N0fqX8{B%81f zCAuFW--1{9yNK_R-5Tqeyg!4?L|z6+eRLBLQ?m%Y^`woiCuM2zRTEbl>}#wQzMYgN zmaAojT^(%_;Yd?HNKx)st7r!DiLa07T5@qxtDNVwE#t54*%gyF?@e^Bl%xy3^Pggf zD^Ouobld#2v2~)lRtz(E0vVs$#LjDi<$$cpQXsSH883(IX>=Brg#@hUZ1eJiUww~W z;#vJ4;@!xLYknG3cp!bNQVCffsdnfMN=qd%bkp?j>Xh+)d*L_wzg@d ze&XnkHIBT%$4i@*w>)o{s5hMJH9hK(jZe+yuxg#%L~N&Gi2JF;FMwD5tjtEIXB>s@ zwPu%Ad&PLhKeoCL`3fvoJ-Mk>b7&pl*j)=?)DzknZf95zzEkmpRUdQmTJ`i<{ku5g zy7bIXkf=v`VkW2YuX6eujBeBqIuo>i;%JwtdL94oj*%@+W?Zw|uCaxjjX&Zl+pJ7} mCFf8NzV&a-uVh>uJ59ay;VnO`o6h!dx?SuieK_UL#q<+Kp-I#L literal 0 Hc-jL100001 diff --git a/win32/librrd-4.def b/win32/librrd-4.def index 8a55892b..94392e6d 100644 --- a/win32/librrd-4.def +++ b/win32/librrd-4.def @@ -59,10 +59,10 @@ rrd_update_v rrd_version rrd_write rrd_xport -;rrdc_connect -;rrdc_is_connected -;rrdc_disconnect -;rrdc_flush -;rrdc_stats_free -;rrdc_stats_get -;rrdc_update +rrdc_connect +rrdc_is_connected +rrdc_disconnect +rrdc_flush +rrdc_stats_free +rrdc_stats_get +rrdc_update diff --git a/win32/librrd-4.vcxproj b/win32/librrd-4.vcxproj new file mode 100644 index 00000000..6ece051b --- /dev/null +++ b/win32/librrd-4.vcxproj @@ -0,0 +1,284 @@ + + + + + DebugDLL + Win32 + + + Debug + Win32 + + + ReleaseDLL + Win32 + + + Release + Win32 + + + Static Debug + Win32 + + + + {CC158E1D-1364-43CA-9B2D-4AF54225C7CA} + librrd-4 + Win32Proj + + + + DynamicLibrary + v120 + MultiByte + false + + + StaticLibrary + v120 + Unicode + + + DynamicLibrary + v120 + Unicode + + + StaticLibrary + v120 + Unicode + true + + + StaticLibrary + v120 + Unicode + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>12.0.21005.1 + + + $(Configuration)\ + $(Configuration)\ + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + + Disabled + .;../contrib/include/cairo;../contrib/include/pango-1.0;../contrib/include/glib-2.0;../contrib/lib/glib-2.0/include;../contrib/include;../contrib/include/libpng12;../contrib/include/libxml2;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USE_32BIT_TIME_T;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;strftime=strftime_;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + $(IntDir)librrd-4.pdb + Level3 + ProgramDatabase + CompileAsCpp + 4996;%(DisableSpecificWarnings) + + + cairo.lib;pango-1.0.lib;pangocairo-1.0.lib;libpng.lib;zdll.lib;glib-2.0.lib;gobject-2.0.lib;libxml2.lib;%(AdditionalDependencies) + ../contrib/lib;%(AdditionalLibraryDirectories) + + + + + + MaxSpeed + true + .;../contrib/include/cairo;../contrib/include/pango-1.0;../contrib/include/glib-2.0;../contrib/lib/glib-2.0/include;../contrib/include;../contrib/include/libpng12;../contrib/include/libxml2;%(AdditionalIncludeDirectories) + WIN32;_WINDOWS;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;strftime=strftime_;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + precompiled.h + $(IntDir)librrd-4.pdb + Level3 + ProgramDatabase + CompileAsCpp + 4996;%(DisableSpecificWarnings) + + + cairo.lib;pango-1.0.lib;pangocairo-1.0.lib;libpng.lib;zdll.lib;glib-2.0.lib;gobject-2.0.lib;libxml2.lib;%(AdditionalDependencies) + ../contrib/lib;%(AdditionalLibraryDirectories) + + + + + Disabled + .;../contrib/include/cairo;../contrib/include/pango-1.0;../contrib/include/glib-2.0;../contrib/lib/glib-2.0/include;../contrib/include;../contrib/include/libpng12;../contrib/include/libxml2;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USE_32BIT_TIME_T;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;strftime=strftime_;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + + + $(IntDir)librrd-4.pdb + Level3 + ProgramDatabase + CompileAsCpp + 4996;%(DisableSpecificWarnings) + + + cairo.lib;glib-2.0.lib;gobject-2.0.lib;libpng.lib;libxml2.lib;pango-1.0.lib;pangocairo-1.0.lib;%(AdditionalDependencies) + ../contrib/lib;%(AdditionalLibraryDirectories) + librrd-4.def + true + + + + + Disabled + .;../contrib/include/cairo;../contrib/include/pango-1.0;../contrib/include/glib-2.0;../contrib/lib/glib-2.0/include;../contrib/include;../contrib/include/libpng12;../contrib/include/libxml2;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + + + Level3 + ProgramDatabase + CompileAsCpp + 4996;%(DisableSpecificWarnings) + + + cairo.lib;pango-1.0.lib;pangocairo-1.0.lib;libpng.lib;zdll.lib;glib-2.0.lib;gobject-2.0.lib;libxml2.lib;%(AdditionalDependencies) + ../contrib/lib;%(AdditionalLibraryDirectories) + + LIBCMTD.lib;LIBCMT.lib;%(IgnoreSpecificDefaultLibraries) + + + + + Disabled + .;../contrib/include/cairo;../contrib/include/pango-1.0;../contrib/include/glib-2.0;../contrib/lib/glib-2.0/include;../contrib/include;../contrib/include/libpng12;../contrib/include/libxml2;%(AdditionalIncludeDirectories) + WIN32;_WINDOWS;_USE_32BIT_TIME_T;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;strftime=strftime_;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreaded + + + $(IntDir)librrd-4.pdb + TurnOffAllWarnings + ProgramDatabase + CompileAsCpp + 4996;%(DisableSpecificWarnings) + false + + + cairo.lib;glib-2.0.lib;gobject-2.0.lib;libpng.lib;libxml2.lib;pango-1.0.lib;ws2_32.lib;pangocairo-1.0.lib;%(AdditionalDependencies) + ../contrib/lib;%(AdditionalLibraryDirectories) + librrd-4.def + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/win32/librrd-4.vcxproj.user b/win32/librrd-4.vcxproj.user new file mode 100644 index 00000000..ef5ff2a1 --- /dev/null +++ b/win32/librrd-4.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/win32/rrd.sln b/win32/rrd.sln new file mode 100644 index 00000000..c4219286 --- /dev/null +++ b/win32/rrd.sln @@ -0,0 +1,51 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.30110.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librrd-4", "librrd-4.vcxproj", "{CC158E1D-1364-43CA-9B2D-4AF54225C7CA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rrdtool", "rrdtool.vcxproj", "{11CD05F8-E5E1-476E-A75F-A112655D4E94}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rrdupdate", "rrdupdate.vcxproj", "{3AAE1E07-78D7-420D-968B-D2087D732D3B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + DebugDLL|Win32 = DebugDLL|Win32 + Release|Win32 = Release|Win32 + ReleaseDLL|Win32 = ReleaseDLL|Win32 + Static Debug|Win32 = Static Debug|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {CC158E1D-1364-43CA-9B2D-4AF54225C7CA}.Debug|Win32.ActiveCfg = Debug|Win32 + {CC158E1D-1364-43CA-9B2D-4AF54225C7CA}.Debug|Win32.Build.0 = Debug|Win32 + {CC158E1D-1364-43CA-9B2D-4AF54225C7CA}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {CC158E1D-1364-43CA-9B2D-4AF54225C7CA}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {CC158E1D-1364-43CA-9B2D-4AF54225C7CA}.Release|Win32.ActiveCfg = Release|Win32 + {CC158E1D-1364-43CA-9B2D-4AF54225C7CA}.Release|Win32.Build.0 = Release|Win32 + {CC158E1D-1364-43CA-9B2D-4AF54225C7CA}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {CC158E1D-1364-43CA-9B2D-4AF54225C7CA}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {CC158E1D-1364-43CA-9B2D-4AF54225C7CA}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 + {CC158E1D-1364-43CA-9B2D-4AF54225C7CA}.Static Debug|Win32.Build.0 = Static Debug|Win32 + {11CD05F8-E5E1-476E-A75F-A112655D4E94}.Debug|Win32.ActiveCfg = Debug|Win32 + {11CD05F8-E5E1-476E-A75F-A112655D4E94}.Debug|Win32.Build.0 = Debug|Win32 + {11CD05F8-E5E1-476E-A75F-A112655D4E94}.DebugDLL|Win32.ActiveCfg = Debug|Win32 + {11CD05F8-E5E1-476E-A75F-A112655D4E94}.Release|Win32.ActiveCfg = Release|Win32 + {11CD05F8-E5E1-476E-A75F-A112655D4E94}.Release|Win32.Build.0 = Release|Win32 + {11CD05F8-E5E1-476E-A75F-A112655D4E94}.ReleaseDLL|Win32.ActiveCfg = Release|Win32 + {11CD05F8-E5E1-476E-A75F-A112655D4E94}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 + {11CD05F8-E5E1-476E-A75F-A112655D4E94}.Static Debug|Win32.Build.0 = Static Debug|Win32 + {3AAE1E07-78D7-420D-968B-D2087D732D3B}.Debug|Win32.ActiveCfg = Debug|Win32 + {3AAE1E07-78D7-420D-968B-D2087D732D3B}.Debug|Win32.Build.0 = Debug|Win32 + {3AAE1E07-78D7-420D-968B-D2087D732D3B}.DebugDLL|Win32.ActiveCfg = Debug|Win32 + {3AAE1E07-78D7-420D-968B-D2087D732D3B}.Release|Win32.ActiveCfg = Release|Win32 + {3AAE1E07-78D7-420D-968B-D2087D732D3B}.Release|Win32.Build.0 = Release|Win32 + {3AAE1E07-78D7-420D-968B-D2087D732D3B}.ReleaseDLL|Win32.ActiveCfg = Release|Win32 + {3AAE1E07-78D7-420D-968B-D2087D732D3B}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 + {3AAE1E07-78D7-420D-968B-D2087D732D3B}.Static Debug|Win32.Build.0 = Static Debug|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/win32/rrd_config.h b/win32/rrd_config.h index a8f289fb..01647fa3 100644 --- a/win32/rrd_config.h +++ b/win32/rrd_config.h @@ -82,6 +82,9 @@ /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 +/* Define to 1 if you have the header file. */ +#define HAVE_STDARG_H 1 + /* is there an external timezone variable instead ? */ #define HAVE_TIMEZONE 1 @@ -97,14 +100,22 @@ #define ENOBUFS WSAENOBUFS #define ENOTCONN WSAENOTCONN + #include #include #include #include +#include +#include #include #include #include + +#include +#include "mkstemp.h" + + #define isinf(a) (_fpclass(a) == _FPCLASS_NINF || _fpclass(a) == _FPCLASS_PINF) #define isnan _isnan #define finite _finite @@ -114,7 +125,19 @@ #define strcasecmp _stricmp #define strcasencmp _strnicmp -#pragma warning(disable: 4244) -__inline int round(double a){ return (int) (a + 0.5); } +// in MSVC++ 12.0 / Visual Studio 2013 is a definition of round in math.h +// some values of _MSC_VER +//MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013) +//MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012) +//MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010) +//MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008) +//MSVC++ 8.0 _MSC_VER == 1400 (Visual Studio 2005) +//MSVC++ 7.1 _MSC_VER == 1310 (Visual Studio 2003) +//MSVC++ 7.0 _MSC_VER == 1300 +//MSVC++ 6.0 _MSC_VER == 1200 +//MSVC++ 5.0 _MSC_VER == 1100 +#if _MSC_VER < 1800 +__inline int round(double a){ int x = (a + 0.5); return x; } +#endif #endif diff --git a/win32/rrdtool.sln b/win32/rrdtool.sln new file mode 100644 index 00000000..855e1654 --- /dev/null +++ b/win32/rrdtool.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.30110.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rrdtool", "rrdtool.vcxproj", "{11CD05F8-E5E1-476E-A75F-A112655D4E94}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {11CD05F8-E5E1-476E-A75F-A112655D4E94}.Debug|Win32.ActiveCfg = Debug|Win32 + {11CD05F8-E5E1-476E-A75F-A112655D4E94}.Debug|Win32.Build.0 = Debug|Win32 + {11CD05F8-E5E1-476E-A75F-A112655D4E94}.Release|Win32.ActiveCfg = Release|Win32 + {11CD05F8-E5E1-476E-A75F-A112655D4E94}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/win32/rrdtool.vcxproj b/win32/rrdtool.vcxproj new file mode 100644 index 00000000..17519543 --- /dev/null +++ b/win32/rrdtool.vcxproj @@ -0,0 +1,204 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Static Debug + Win32 + + + + {11CD05F8-E5E1-476E-A75F-A112655D4E94} + rrdtool + + + + Application + v120 + MultiByte + + + Application + v120 + MultiByte + true + + + Application + v120 + MultiByte + + + + + + + + + + + + + + + + <_ProjectFileVersion>12.0.21005.1 + + + $(Configuration)\ + $(Configuration)\ + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + + Disabled + Default + WIN32;_DEBUG;_WINDOWS;_USE_32BIT_TIME_T;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + $(IntDir)rrdtool.pdb + Level3 + EditAndContinue + 4996;%(DisableSpecificWarnings) + + + librrd-4.lib;%(AdditionalDependencies) + LinkVerboseLib + $(Configuration);%(AdditionalLibraryDirectories) + LIBCMTD.lib;LIBCMT.lib;%(IgnoreSpecificDefaultLibraries) + true + NotSet + MachineX86 + + + get all the dlls, needed for running + copy $(ProjectDir)\..\contrib\bin\freetype6.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libcairo-2.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libfontconfig-1.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libglib-2.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libgmodule-2.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libgobject-2.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libgthread-2.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpango-1.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpangocairo-1.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpangoft2-1.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpangowin32-1.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpng14-14.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libxml2-2.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\zlib1.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libexpat-1.dll $(TargetDir)\ + + + + + + MaxSpeed + true + .;../../contrib/cairo/include/cairo;../../contrib/pango/include/pango-1.0;../../contrib/glib/include/glib-2.0;../../contrib/glib/lib/glib-2.0/include;../../contrib/libpng/include;../../contrib/zlib/include;../../contrib/libxml2/include/libxml2;%(AdditionalIncludeDirectories) + WIN32;_WINDOWS;_USE_32BIT_TIME_T;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + MultiThreadedDLL + true + $(IntDir)rrdtool.pdb + Level3 + ProgramDatabase + + + librrd-4.lib;cairo.lib;pango-1.0.lib;pangocairo-1.0.lib;libpng.lib;zdll.lib;glib-2.0.lib;gobject-2.0.lib;libxml2.lib;%(AdditionalDependencies) + $(Configuration); ../contrib/lib;%(AdditionalLibraryDirectories) + false + true + true + MachineX86 + + + get all the dlls, needed for running + copy $(ProjectDir)\..\contrib\bin\freetype6.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libcairo-2.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libfontconfig-1.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libglib-2.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libgmodule-2.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libgobject-2.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libgthread-2.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpango-1.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpangocairo-1.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpangoft2-1.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpangowin32-1.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpng14-14.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libxml2-2.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\zlib1.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libexpat-1.dll $(TargetDir)\ + + + + + + Disabled + Default + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + Level3 + EditAndContinue + 4996;%(DisableSpecificWarnings) + + + librrd-4.lib;cairo.lib;%(AdditionalDependencies) + LinkVerboseLib + $(Configuration);../contrib/lib;%(AdditionalLibraryDirectories) + true + NotSet + MachineX86 + + + get all the dlls, needed for running + copy $(ProjectDir)\..\contrib\bin\freetype6.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libcairo-2.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libfontconfig-1.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libglib-2.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libgmodule-2.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libgobject-2.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libgthread-2.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpango-1.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpangocairo-1.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpangoft2-1.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpangowin32-1.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpng14-14.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libxml2-2.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\zlib1.dll $(TargetDir)\ + + + + + + + + + + + + + + + {cc158e1d-1364-43ca-9b2d-4af54225c7ca} + + + + + + \ No newline at end of file diff --git a/win32/rrdupdate.sln b/win32/rrdupdate.sln new file mode 100644 index 00000000..9e8921a3 --- /dev/null +++ b/win32/rrdupdate.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.30110.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rrdupdate", "rrdupdate.vcxproj", "{3AAE1E07-78D7-420D-968B-D2087D732D3B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3AAE1E07-78D7-420D-968B-D2087D732D3B}.Debug|Win32.ActiveCfg = Debug|Win32 + {3AAE1E07-78D7-420D-968B-D2087D732D3B}.Debug|Win32.Build.0 = Debug|Win32 + {3AAE1E07-78D7-420D-968B-D2087D732D3B}.Release|Win32.ActiveCfg = Release|Win32 + {3AAE1E07-78D7-420D-968B-D2087D732D3B}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/win32/rrdupdate.vcxproj b/win32/rrdupdate.vcxproj new file mode 100644 index 00000000..8135a1ce --- /dev/null +++ b/win32/rrdupdate.vcxproj @@ -0,0 +1,208 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Static Debug + Win32 + + + + {3AAE1E07-78D7-420D-968B-D2087D732D3B} + rrdtool + + + + Application + v120 + MultiByte + + + Application + v120 + MultiByte + true + + + Application + v120 + MultiByte + + + + + + + + + + + + + + + + <_ProjectFileVersion>12.0.21005.1 + + + $(Configuration)\ + $(Configuration)\ + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + + Disabled + Default + WIN32;_DEBUG;_WINDOWS;_USE_32BIT_TIME_T;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + $(IntDir)rrdupdate.pdb + Level3 + EditAndContinue + 4996;%(DisableSpecificWarnings) + + + librrd-4.lib;%(AdditionalDependencies) + LinkVerboseLib + $(Configuration);%(AdditionalLibraryDirectories) + LIBCMTD.lib;LIBCMT.lib;%(IgnoreSpecificDefaultLibraries) + true + NotSet + MachineX86 + + + get all the dlls, needed for running + copy $(ProjectDir)\..\contrib\bin\freetype6.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libcairo-2.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libfontconfig-1.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libglib-2.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libgmodule-2.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libgobject-2.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libgthread-2.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpango-1.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpangocairo-1.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpangoft2-1.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpangowin32-1.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpng14-14.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libxml2-2.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\zlib1.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libexpat-1.dll $(TargetDir)\ + + + + + + MaxSpeed + true + .;../../contrib/cairo/include/cairo;../../contrib/pango/include/pango-1.0;../../contrib/glib/include/glib-2.0;../../contrib/glib/lib/glib-2.0/include;../../contrib/libpng/include;../../contrib/zlib/include;../../contrib/libxml2/include/libxml2;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USE_32BIT_TIME_T;%(PreprocessorDefinitions) + MultiThreadedDLL + true + $(IntDir)rrdupdate.pdb + Level3 + ProgramDatabase + + + librrd-4.lib;cairo.lib;pango-1.0.lib;pangocairo-1.0.lib;libpng.lib;zdll.lib;glib-2.0.lib;gobject-2.0.lib;libxml2.lib;%(AdditionalDependencies) + $(Configuration); ../contrib/lib;%(AdditionalLibraryDirectories) + true + true + true + MachineX86 + + + get all the dlls, needed for running + copy $(ProjectDir)\..\contrib\bin\freetype6.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libcairo-2.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libfontconfig-1.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libglib-2.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libgmodule-2.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libgobject-2.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libgthread-2.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpango-1.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpangocairo-1.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpangoft2-1.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpangowin32-1.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpng14-14.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libxml2-2.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\zlib1.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libexpat-1.dll $(TargetDir)\ + + + + + + Disabled + Default + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + Level3 + EditAndContinue + 4996;%(DisableSpecificWarnings) + + + librrd-4.lib;cairo.lib;%(AdditionalDependencies) + LinkVerboseLib + $(Configuration);../contrib/lib;%(AdditionalLibraryDirectories) + true + NotSet + MachineX86 + + + get all the dlls, needed for running + copy $(ProjectDir)\..\contrib\bin\freetype6.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libcairo-2.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libfontconfig-1.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libglib-2.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libgmodule-2.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libgobject-2.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libgthread-2.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpango-1.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpangocairo-1.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpangoft2-1.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpangowin32-1.0-0.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libpng14-14.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\libxml2-2.dll $(TargetDir)\ +copy $(ProjectDir)\..\contrib\bin\zlib1.dll $(TargetDir)\ + + + + + + + + + + + + + + + {cc158e1d-1364-43ca-9b2d-4af54225c7ca} + + + {11cd05f8-e5e1-476e-a75f-a112655d4e94} + false + + + + + + \ No newline at end of file -- 2.47.3