Erwin Janssen [Tue, 3 Jan 2017 12:35:12 +0000 (13:35 +0100)]
Modify files generated by Bison and Flex, to match the Autotools build.
- Replace "yy" with "aag" in all three files
- Replace "unsigned long int" with "uint64_t" in grammar.h and grammar.c
- Replace "unsigned long" with "uint64_t" in grammar.h and grammar.c
- Remove declaration of the "isatty()" function from scan.c
Erwin Janssen [Sun, 1 Jan 2017 16:12:21 +0000 (17:12 +0100)]
Add lib/cgraph to the CMake build
Before lib/cgraph can be build, a few checks have to be done for available
headers and functions. This is done in the main CMakeLists.txt.
The generate the required files with BISON and FLEX, the build-in CMake
modules for BISON and FLEX can be used.
Erwin Janssen [Sat, 31 Dec 2016 12:55:00 +0000 (13:55 +0100)]
Add (so)version specification to cdt CMake build
The `set_target_properties` function can be used to set the version and
soversion properties. The versions are set to the current Autotools
version numbers.
Erwin Janssen [Sat, 31 Dec 2016 12:05:14 +0000 (13:05 +0100)]
Add 'uninstall' target to CMake build
When CMake performs the 'install' step, it keeps track of the installed
files by listing them in the `install_manifest.txt` file. The 'uninstall'
step reverses the installation by removing the files listed in the
manifest. This solution is taken directly from the CMake FAQ:
https://cmake.org/Wiki/CMake_FAQ#Can_I_do_.22make_uninstall.22_with_CMake.3://cmake.org/Wiki/CMake_FAQ#Can_I_do_.22make_uninstall.22_with_CMake.3F
Erwin Janssen [Thu, 29 Dec 2016 11:41:06 +0000 (12:41 +0100)]
Add install target and initial packaging to CMake
The installation locations are identical to the Autotools install step,
but the pdf version of the manpages aren't generated yet.
With CPack, packages can be generated based on the `install` commands. For
now only the basic ZIP package generator is added.
Added the new CMake commands to the Travis and Appveyor scripts.
Erwin Janssen [Tue, 20 Dec 2016 19:38:45 +0000 (20:38 +0100)]
CMake: Add Graphviz version information
Adds version numbers to the main CMakeLists.txt. The build version is set
to the date and time of the most recent commit, similar to the Autotools
build.
- Add CMake installation to Centos 7 dockerfile
- New build script for CMake
- Add `BUILD_SYSTEM` variable to Travis: perform Autotools and CMake build, both on native Travis and Docker.
Erwin Janssen [Mon, 19 Dec 2016 15:03:57 +0000 (16:03 +0100)]
Initial minimal CMake project
A CMake project consists of CMakeLists.txt files. The primary file in the
root of the project specifies global project information and
configuration. CMakeLists.txt files in subdirectories can contain
configuration for how to build to binaries.
This configuration minimal configuration only builds lib/cdt as a shared
(dynamic) library. CMake supports out of source builds, which is the
recommended way of building:
mkdir build
cd build
cmake ..
cmake --build .
The `cmake ..` generates the build files. On Unix based systems, it
gerenates makefiles, on Windows it generates Visual Studio projects. The
used generated can be specified with -G.
Erwin Janssen [Tue, 17 Jan 2017 16:41:06 +0000 (17:41 +0100)]
Use prebuild libgd from windows deps submodule
Instead of building libgd manually before Graphviz can be build, we
included a prebuild version of libgd in the graphviz windows dependencies
submodule. The doc/winbuild.html is updated to reflect this.
Erwin Janssen [Mon, 16 Jan 2017 12:50:05 +0000 (13:50 +0100)]
Merge Windows dependencies into one submodule
Instead of using a submodule for every Windows dependency with a lot of
extra files, we now use a single submodule that only contains those files
that are required. This means fewer submodules and shorter download time
(because of the reduction in size and number of files).
Also removed some unused links in Smyrna.
Erwin Janssen [Wed, 11 Jan 2017 13:59:11 +0000 (14:59 +0100)]
Replace checks for `WIN32` with `_WIN32`
The preprocesser macro `WIN32` is defined by the user, while `_WIN32` is
defined by the compiler. To improve consistantcy, and prevent errors
caused by forgetting to define `WIN32` somewhere, it is better to use
`_WIN32` to check for Windows.
Erwin Janssen [Mon, 9 Jan 2017 17:54:44 +0000 (18:54 +0100)]
Remove mmap code from sfio
There are multiple reasons to remove this code:
- The define that guards all the mmap code (_mmap_worthy) is rarely set.
When building local or on Travis, the define isn't set.
On Windows, it is never set.
- If a 'binary compatibility package' of sfio is build (when _SFBINARY_H
is defined), `_sys_mann` is `undef`ed, excluding mmap code from the build.
Instead of keeping the code that is rarely included, we can reduce code
complexity by removing it.
Erwin Janssen [Mon, 9 Jan 2017 12:11:52 +0000 (13:11 +0100)]
Assume default memchr and memcpy are fast enough
`features/sfio` contains some test that check if the default memchr and
memcpy are "fast enough". These days we can safely assume that this is the
case, also because this define is always enabled when running the tests.
Erwin Janssen [Mon, 9 Jan 2017 11:50:49 +0000 (12:50 +0100)]
Remove checks bcopy and bzero from features/sfio
The code contains several checks regarding these functions, but they are
never actually used in lib/sfio. It is therefore not needed to test their
availability.
Erwin Janssen [Mon, 9 Jan 2017 12:56:29 +0000 (13:56 +0100)]
Remove disabled vt_threaded code from lib/sfio
The threaded part of sfio and vthread is disabled for Graphviz by setting
various defines. This commit removes the disabled code entirely, to make
it more clear which code is actually part of the compilation.
Erwin Janssen [Sun, 8 Jan 2017 23:45:02 +0000 (00:45 +0100)]
Remove usage of _ast_int and _ast_flt defines
The definition of these defines was removed in a previous commit
(2ee0993a22db6faa8506ac1c69164a5120dbd76c) but the usage was still
present. This is corrected by removing the usage as well.
Erwin Janssen [Sat, 7 Jan 2017 18:19:40 +0000 (19:19 +0100)]
Fix incorrect assignment in gvCloneGVC function
The function `gvCloneGVC` creates a new `GVC_t` object and copies the values
from gvc0 to gvc. In the last assignment, gvc->packages is given the value
of itself: gvc->pckages. This should be gvc0 instead.
Erwin Janssen [Sat, 7 Jan 2017 11:51:01 +0000 (12:51 +0100)]
Fixed use of unitialized variable in lefty
In the file cmd/lefty/ws/x11/gquery.c, function Gqwpopaction:
THe char c is declared without initializer, giving it a unpredictable
value. If the next if statement takes the false branch, the function where
c is set is not executed. The next if statement then checks `c != 13`, but
because C could have any value, the behavior is unpredictable.
Initializing c with a known value, such as 0, fixes the problem.
Erwin Janssen [Fri, 6 Jan 2017 14:06:42 +0000 (15:06 +0100)]
Replace Windows' pragma linking with VS linking
In various places, mostly the projects in `cmd` and `plugin`, had a
`#pragma comment( lib, "libname.lib" )` in the source code for linking
under Windows. Were possible, these have been removed and replaced link
specifications in the Visual Studio project files.
This seperates the linking from the source code and makes transitioning to
other build systems easier.
Erwin Janssen [Thu, 5 Jan 2017 23:59:09 +0000 (00:59 +0100)]
Made vmalloc a static library on Windows
vmalloc is a static library with the Autotools build, but was for some
reason a dynamic library on Windows. Since Autotools is considered the
default, this commit makes vmalloc a static library on Windows as well.
To disable the function export that is required for a dynamic library,
but not for a static one, various define checks were removed.
Erwin Janssen [Thu, 5 Jan 2017 14:00:38 +0000 (15:00 +0100)]
Remove usage of features/vmalloc
The only check left in features/vmalloc, checks if the return type of
malloc is the old `char *`. Because we are using standard C, we can
always assume the returntype of malloc is `void *`, this define is
there never set. We can remove this check and with it the usage of
features/vmalloc and FEATURE/vmalloc.
Erwin Janssen [Thu, 5 Jan 2017 13:34:50 +0000 (14:34 +0100)]
Move checks from features/vmalloc to configure.ac
Instead of checking certain headers and functions in a seperate config
script, place these checks in configure.ac and use HAVE_* style defines.
Some checks were already present in configure.ac, the others have been
added. No addtional defines in windows/config.h were needed.
There is only one check remaining in features/vmalloc.
Erwin Janssen [Wed, 4 Jan 2017 23:20:03 +0000 (00:20 +0100)]
Remove declaration enqueue_neighbors from render.h
The function `enqueue_neighbors` is declared in both render.h and in
dotprocs.h, while it is only used in lib/dotgen. The double declaration
causes "inconstant dll linkage" warnings on Windows.
Erwin Janssen [Tue, 3 Jan 2017 18:20:58 +0000 (19:20 +0100)]
Made xdot a dynamic library on Windows
xdot is a dynamic library with the Autotools build, but was for some
reason a static library on Windows. Since Autotools is considered the
default, this commit makes xdot a dynamic library on Windows as well.
The added define "XDOT_API", is used for linking, so a seperate xdot.def
file is not needed. On non-Windows platforms, this define is set to
"extern", so nothing changes there.
Erwin Janssen [Thu, 29 Dec 2016 15:58:37 +0000 (16:58 +0100)]
Disable warning 4706 in Windows build of lib/cdt
Warning C4706: assignment within conditional expression
The CDT library is mostly an external library included with the Graphviz
source and modified. It throws a lot of C4706 warnings, which isn't the
warning with the highest priority. We disable it for now.
Erwin Janssen [Wed, 28 Dec 2016 20:22:27 +0000 (21:22 +0100)]
Remove checks for 'libgen', library not used
configure.ac contains checks for the `libgen` library and header, but the
header is never included, which means the library is never used. Checking
and linking is therefore not needed.
Erwin Janssen [Wed, 28 Dec 2016 18:19:02 +0000 (19:19 +0100)]
Remove definition and usage of HAVE_STRERROR
This function is part of the standard C library, checking is therefore not
needed. With this change, check that sets HAVE_ERRNO_DECLS and the file
lib/ast/strerror.c can both be removed.
Erwin Janssen [Wed, 21 Dec 2016 13:18:25 +0000 (14:18 +0100)]
Replace remaining "ast_common.h" includes
Added a typedef for `ssize_t` to the Windows config.h, which is the
location were Autotools would define it if it isn't found.
Removed the remaining includes of "ast_common.h", instead include
"config.h" and add a check to include "sys/typesh" (were ssize_t is
located on Linux)
Erwin Janssen [Mon, 19 Dec 2016 11:10:46 +0000 (12:10 +0100)]
Remove `_dll_import` define block in ast_common.h
The define `_dll_import` is never set by any file that includes
ast_common.h, the define block is therefore never triggered. DLL linkage
is Windows is currently done with `def` files.
Erwin Janssen [Sun, 18 Dec 2016 14:49:15 +0000 (15:49 +0100)]
Replace last usage of _BEGIN/END_EXTERNS_
The last occurence of the defines _BEGIN_EXTERNS_ and _END_EXTERNS_ in the
code was in lib/sfio/sfsetbuf.h, this is now replaced with the standard
`extern "C"` define and check. Because of this, the definition of
_BEGIN_EXTERNS_ and _END_EXTERNS_ can be removed from ast_common.h
Erwin Janssen [Sun, 18 Dec 2016 12:01:35 +0000 (13:01 +0100)]
Remove unused function checks and defines
congigure.ac checks for the presence of certain functions and creates
define indicating if it was found. Some of these defines are never
used, so the check (and the static define for Windows) can be safely
removed. This is the case for the following functions:
- __freadable
- _sysconf
- getrusage
- lsqrt
- memset
- nl_langinfo
- pow
- sqrt
- strchr
- strdup
- strstr
- strtoll
- strtoul
- strtoull
- uname
Also removed duplicate `strerror` in `AC_CHECK_FUNCS`.
Erwin Janssen [Sun, 18 Dec 2016 11:30:14 +0000 (12:30 +0100)]
Remove check for `const` keyword in configure.ac
The macro `AC_C_CONST` checks whether the used C compiler supports
the keyword `const` and defines it accordingly. But as stated in
the autoconf documentation, this macro is becomming obsolete as
current C compilers `cost`. Checking is therefore no longer required.
Erwin Janssen [Mon, 12 Dec 2016 15:12:49 +0000 (16:12 +0100)]
Remove unused header checks and defines
congigure.ac checkes for the presence of header files and creates
define indicating if it was found. Some of these defines are never
used, so the check (and the static define for Windows) can be safely
removed. This is the case for the following headers:
- langinfo.h
- libintl.h
- pthread.h
- setjmp.h
- sys/times.h
Erwin Janssen [Sun, 11 Dec 2016 00:55:02 +0000 (01:55 +0100)]
Remove definition of HAVE_FLOAT_H
The header <float.h> is part of the standard C library and is always
available, checking is therefore not needed. In addition to this,
this define is never used.
Erwin Janssen [Fri, 9 Dec 2016 15:07:50 +0000 (16:07 +0100)]
Removed all _ast_int and _ast_flt defines
The defines _ast_int and _ast_flt used to be generated, but were now defined
in ast_common.h. Most of these defines were not used either, only _ast_intmax_t
and _ast_fltmax_t were used to define another define in sfio.h. Instead, we now
directly use the values `long long` and `long double` to set the defines in
sfio.h and we can safely remove the _ast_int and _ast_flt defines.
Erwin Janssen [Fri, 9 Dec 2016 00:24:14 +0000 (01:24 +0100)]
Remove defintion of HAVE_STDARG_H and _hdr_stdarg
The define _hdr_stdarg was only used in ast_common.h to include <stdarg.h>
but this include was not needed, compilation succeeds without it.
The define HAVE_STDARG_H was only used to set _hdr_starg in ast_common.h.
Both defines and the include can therefore safely be removed.
Erwin Janssen [Mon, 19 Dec 2016 14:39:32 +0000 (15:39 +0100)]
Fix fonts errors on Windows with binary outputs
Outputs like 'png' didn't render the text properly on Windows (rectangles
instead of letters). The cause was that Pango was missings its modules. This
change adds post build commands to the `smyrna` en `gvplugin_pango` Visual
Studio projects, so the required modules are copied and then recognized by
pango.
Fixes issue #1186