Does anyone here know CMake?

I would like to get graphviz to build out of the box, on Mac OSX using CMake, as a step toward addressing the -fsanitize=integer problem. Anyway, it is so close.

Basically, there should be an automated CMake generated way helping the compiler have /usr/local/Cellar/harfbuzz/2.6.5_1/include/harfbuzz in its include path in a couple of pango-related directories, and add -fno-common to C_FLAGS in build/lib/common/CMakeFiles/common.dir/flags.make to deal with something or other about undefined global symbols.

When I do this by hand, I can get a working dot executable.

1 Like

CMake-literate minion, reporting for duty :slight_smile:

Is the CMake build broken everywhere? I assumed autotools was the default, but if the plan is to migrate to CMake I would certainly be in favor as it’s a devil I know better. I can try debugging the CMake build on Linux if it’s also broken there.

goes off to experiment

(In the meantime, target_include_directories is probably what you want for the first issue. set_source_files_properties(foo.c PROPERTIES COMPILE_FLAGS ...) is the way to accomplish the second, but it is suspicious to me that you need -fno-common. I wonder if this is indicative of some other underlying issue.)

1 Like

Yes, autotools are the default, but someone wanted CMake, and it’s very close to working,
and I’m led to believe it will make it easier to compile with clang -fsanitize=integer because
the autotools die somewhere late in the game as discussed before (cannot find some
support library needed by clang for this feature.) I’m taking someone else’s word for this.

CMake on OSX (e.g. Catalina) is very very close to working out of the box.

It has trouble finding /usr/local/include/harfbuzz, which is needed by the plugin tango
(I might just try to turn off building this particular plugin, I guess, or I could go back
to finding and hand-editing the relevant make.flags from CMake.)

It doesn’t know that lib/common needs to be built with clang -fno-common
Again I was hand editing flags.make in lib/common and I got past this.
I tried the suggested

if (APPLE)
   target_compile_options(common PRIVATE "-fno-common")
endif(APPLE)

It did not work but caused CMake to stop in its tracks.

I can’t even get the CMake build working with these little edits tonight but it’s
getting late so I think I need to just give it a rest.t

If you don’t have an OSX CMake build environment it is probably a lot of guesswork
to figure out what needs to be done, unfortunately.

the autotools die somewhere late in the game as discussed before

Ah, so even the autotools build dies when trying to enable the sanitizer(s)? Sorry, I had misunderstood and thought this problem was confined to CMake builds.

which is needed by the plugin tango

I can’t see this plugin in the Graphviz tree. Do you know which directory this lives in?

It doesn’t know that lib/common needs to be built with clang -fno-common

This still seems pretty strange to me. Isn’t -fno-common the default? Or are the Clang defaults somehow different to GCC?

If you don’t have an OSX CMake build environment

Unfortunately yes, I don’t have an OSX CMake build environment.

Edit: also my experiments discovered the CMake build unfortunately (fortunately?) appears to work fine on Linux with or without sanitizers enabled.

s/tango/pango/ sorry, long day, sloppy

Anyway I can confirm that if

  1. add -fno-common to C_FLAGS in lib/common/CMakeFiles/common.dir/flags.make
  2. add -I/usr/local/include/harfbuzz to C_INCLUDES in plugin/pango/CMakeFiles/gvplugin_pango.dir/flags.make
    then (cmake . ; make install) gets the job done. I don’t understand why I need to do these things manually.

When I have time, I’ll look into building with -fsanitize=integer

A reasonable person would just move over to a Linux machine. I can find one somewhere.

I do not believe there is any good reason to see integer overflow in union_find on small graphs, or any graph that fits in memory on any normal computer.

Did you find a reasonable person? ( :stuck_out_tongue_winking_eye: :rofl:)

I’m not familiar with CMake but interested to help if you need someone to learn, it seems like a worthy project because CMake seems much easier at a glance than autotools :slight_smile:

@scnorth, I hacked in the changes you described in the “macos-cmake” branch of my fork of Graphviz if you want to give it a try: https://gitlab.com/smattr/graphviz/-/tree/macos-cmake. As I mentioned, I don’t have a macOS dev environment so I did this blind. It doesn’t seem to break anything under Linux though.

I noticed a few odd things and clues along the way:

  • libcommon is built as a static library while some of the others are built as shared libraries (STATIC vs SHARED in their add_library directives). Maybe this has an impact?
  • libcommon’s CMakeLists.txt does some unorthodox rewriting of the outputs htmlparse.c and htmlparse.h. I don’t even understand how this works, as it misspells “uint64_t” as “uint_64_t”… Maybe this never actually gets called, as it looks like it creates duplicate makefile targets.
  • cmake/generate_color_lib.cmake.in writes two files, color_lib-temp and color_lib-sort, whose only purpose seems to be intermediate outputs for debugging inspection.

Coming in late to this thread - I have some experience with CMake and cross-platform builds (Linux/Windows). I haven’t touched OSX in a decade but have recently acquired an older Mac Mini that I’d like to set up with CMake and whatever is considered a typical dev environment (XCode?). I think it’s running 10.8 (Mountain Lion) and the hardware supports up to 10.11 (El Capitan)

Regardless, the best reference I’ve found so far for CMake is Professional CMake: A Practical Guide. It’s $US 30 but is really solid and gets frequent updates.

1 Like

The work on cmake looks great.

I can’t compile locally (Mac OSX Catalina, Xcode, other packages installed via homebrew) because the graphviz pango plugin can’t find hb.h (which is /usr/local/include/harfbuzz/hb.h among other places). I don’t understand - I think something slipped between the cracks in pango.pc as installed by homebrew, but despite hand editing pango.pc, removing the CMake cache and starting over, the error remains.

cmake “make VERBOSE=1” does not show -I/usr/local/include/harfbuzz or any other likely suspects such as /usr/local/Cellar/harfbuzz/2.7.0/include/harfbuzz/

Does this suggest something is missing in graphviz/cmake/FindPangoCairo.cmake ? Before I get the $30 CMake book :slight_smile:

Thank you for your sympathy. I realize suffering is part of the Learning Process.

1 Like

Are you saying something changed recently? As in, you could previously build the pango plugin fine? If so, perhaps try bisecting to figure out which commit caused this.

Otherwise, if it’s just generally broken, maybe you need to do export CFLAGS=-I/usr/local/include before calling cmake. I can’t see anything in plugin/pango #including hb.h, so I’m not sure where this error is coming from.

1 Like

Thank you for the suggestion. It’s not actually graphviz code, but pango/pango-font.h that attempts to include hb.h not harfbuzz/hb.h Although -I/usr/local/include/harfbuzz is found in the laundry list of pkg-config --cflags pango it appears cmake doesn’t invoke pkg-config.

I was able to get past this by adding a rule to cmake/FindPangoCairo.cmake:
find_path(HARFBUZZ_INCLUDE_DIR hb.h PATH_SUFFIXES harfbuzz)
and later on
set(PANGOCAIRO_INCLUDE_DIRS
{GLIB_INCLUDE_DIR} {GLIBCONFIG_INCLUDE_DIR}
{HARFBUZZ_INCLUDE_DIR} {PANGOCAIRO_INCLUDE_DIR}
)
which seem to solve my problem, but feels ad-hoc. Probably this is not complete (I caught mark_as_advanced as well but not certain what this does yet).

1 Like

The way we do discovery of both Cairo and PangoCairo looks non-standard to me. Can you try the following patch:

diff --git cmake/FindPangoCairo.cmake cmake/FindPangoCairo.cmake
index c21b80b3f..fb4a68473 100644
--- cmake/FindPangoCairo.cmake
+++ cmake/FindPangoCairo.cmake
@@ -1,91 +1,13 @@
-find_path(PANGOCAIRO_INCLUDE_DIR pango/pangocairo.h PATH_SUFFIXES pango-1.0)
-find_path(GLIB_INCLUDE_DIR glib.h PATH_SUFFIXES glib-2.0)
-find_path(GLIBCONFIG_INCLUDE_DIR glibconfig.h PATH_SUFFIXES glib-2.0/include)
-
-find_library(GLIB_LIBRARY NAMES glib-2.0)
-find_library(GOBJECT_LIBRARY NAMES gobject-2.0)
-find_library(PANGO_LIBRARY NAMES pango-1.0)
-find_library(PANGOCAIRO_LIBRARY NAMES pangocairo-1.0)
-
-find_file(GLIB_RUNTIME_LIBRARY NAMES glib-2.dll)
-find_file(GOBJECT_RUNTIME_LIBRARY NAMES gobject-2.dll)
-find_file(HARFBUZZ_RUNTIME_LIBRARY NAMES libharfbuzz-0.dll)
-find_file(PANGO_RUNTIME_LIBRARY NAMES pango-1.dll)
-find_file(PANGOCAIRO_RUNTIME_LIBRARY NAMES pangocairo-1.dll)
-find_file(PANGOFT_RUNTIME_LIBRARY NAMES pangoft2-1.dll)
-find_file(PANGOWIN_RUNTIME_LIBRARY NAMES pangowin32-1.dll)
+find_package(PkgConfig)
+pkg_check_modules(PANGOCAIRO pango)

 include(FindPackageHandleStandardArgs)
-if (WIN32)
-    find_package_handle_standard_args(PANGOCAIRO DEFAULT_MSG
-        GLIB_INCLUDE_DIR
-        GLIBCONFIG_INCLUDE_DIR
-        PANGOCAIRO_INCLUDE_DIR
-
-        GLIB_LIBRARY
-        GOBJECT_LIBRARY
-        PANGO_LIBRARY
-        PANGOCAIRO_LIBRARY
-
-        GLIB_RUNTIME_LIBRARY
-        GOBJECT_RUNTIME_LIBRARY
-        HARFBUZZ_RUNTIME_LIBRARY
-        PANGO_RUNTIME_LIBRARY
-        PANGOCAIRO_RUNTIME_LIBRARY
-        PANGOFT_RUNTIME_LIBRARY
-        PANGOWIN_RUNTIME_LIBRARY
-    )
-else()
-    find_package_handle_standard_args(PANGOCAIRO DEFAULT_MSG
-        GLIB_INCLUDE_DIR
-        GLIBCONFIG_INCLUDE_DIR
-        PANGOCAIRO_INCLUDE_DIR
-
-        GLIB_LIBRARY
-        GOBJECT_LIBRARY
-        PANGO_LIBRARY
-        PANGOCAIRO_LIBRARY
-    )
-endif()
-
-mark_as_advanced(
-    GLIB_INCLUDE_DIR
-    GLIBCONFIG_INCLUDE_DIR
-    PANGOCAIRO_INCLUDE_DIR
-
-    GLIB_LIBRARY
-    GOBJECT_LIBRARY
-    PANGO_LIBRARY
-    PANGOCAIRO_LIBRARY
-
-    GLIB_RUNTIME_LIBRARY
-    GOBJECT_RUNTIME_LIBRARY
-    HARFBUZZ_RUNTIME_LIBRARY
-    PANGO_RUNTIME_LIBRARY
-    PANGOCAIRO_RUNTIME_LIBRARY
-    PANGOFT_RUNTIME_LIBRARY
-    PANGOWIN_RUNTIME_LIBRARY
-)
-
-set(PANGOCAIRO_INCLUDE_DIRS
-    ${GLIB_INCLUDE_DIR}
-    ${GLIBCONFIG_INCLUDE_DIR}
-    ${PANGOCAIRO_INCLUDE_DIR}
+find_package_handle_standard_args(PANGOCAIRO DEFAULT_MSG
+    PANGOCAIRO_INCLUDE_DIRS
+    PANGOCAIRO_LIBRARIES
 )

-set(PANGOCAIRO_LIBRARIES
-    ${GLIB_LIBRARY}
-    ${GOBJECT_LIBRARY}
-    ${PANGO_LIBRARY}
-    ${PANGOCAIRO_LIBRARY}
-)
-
-set(PANGOCAIRO_RUNTIME_LIBRARIES
-    ${GLIB_RUNTIME_LIBRARY}
-    ${GOBJECT_RUNTIME_LIBRARY}
-    ${HARFBUZZ_RUNTIME_LIBRARY}
-    ${PANGO_RUNTIME_LIBRARY}
-    ${PANGOCAIRO_RUNTIME_LIBRARY}
-    ${PANGOFT_RUNTIME_LIBRARY}
-    ${PANGOWIN_RUNTIME_LIBRARY}
+mark_as_advanced(
+    PANGOCAIRO_INCLUDE_DIRS
+    PANGOCAIRO_LIBRARIES
 )

Thank you. That looks so much cleaner! Unfortunately the build can’t find -lpango-1.0 though png-config knows where it lives. Not sure if the following is any help. (Not sure what’s the best way to reset everything for a fresh try, so I did: make clean; rm CMakeCache.txt; cmake .; make ) You can just skip to the end of this for the punchline but some of the other compile time warnings might be a little interesting for other reasons.)

$ pkg-config --libs pango
-L/usr/local/Cellar/pango/1.46.0/lib -L/usr/local/Cellar/glib/2.64.4_2/lib -L/usr/local/opt/gettext/lib -L/usr/local/Cellar/harfbuzz/2.7.0/lib -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lintl -lharfbuzz
$


$ cmake .
-- The C compiler identification is AppleClang 11.0.3.11030032
-- The CXX compiler identification is AppleClang 11.0.3.11030032
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found AWK: /usr/local/bin/gawk
-- Found BISON: /usr/bin/bison (found version "2.3")
-- Found FLEX: /usr/bin/flex (found version "2.5.35")
-- Found Git: /usr/local/bin/git (found version "2.28.0")
-- Found Perl: /usr/local/bin/perl (found version "5.32.0")
-- Found ANN: /usr/local/lib/libANN.a
CMake Warning (dev) at /usr/local/Cellar/cmake/3.18.1/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:273 (message):
  The package name passed to `find_package_handle_standard_args` (CAIRO) does
  not match the name of the calling package (Cairo).  This can lead to
  problems in calling code that expects `find_package` result variables
  (e.g., `_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
  cmake/FindCairo.cmake:23 (find_package_handle_standard_args)
  CMakeLists.txt:81 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found CAIRO: /Library/Frameworks/Mono.framework/Headers
-- Found EXPAT: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/lib/libexpat.tbd (found version "2.2.5")
-- Found GD: /usr/local/lib/libgd.dylib
-- Found LTDL: /usr/local/lib/libltdl.dylib
-- Found PkgConfig: /usr/local/bin/pkg-config (found version "0.29.2")
-- Checking for module 'pango'
--   Found pango, version 1.46.0
CMake Warning (dev) at /usr/local/Cellar/cmake/3.18.1/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:273 (message):
  The package name passed to `find_package_handle_standard_args` (PANGOCAIRO)
  does not match the name of the calling package (PangoCairo).  This can lead
  to problems in calling code that expects `find_package` result variables
  (e.g., `_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
  cmake/FindPangoCairo.cmake:5 (find_package_handle_standard_args)
  CMakeLists.txt:85 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found PANGOCAIRO: /usr/local/Cellar/libffi/3.3/include;/usr/local/Cellar/pango/1.46.0/include/pango-1.0;/usr/local/include/harfbuzz;/usr/local/Cellar/glib/2.64.4_2/include;/usr/local/Cellar/fribidi/1.0.10/include/fribidi;/usr/local/Cellar/cairo/1.16.0_3/include/cairo;/usr/local/Cellar/pixman/0.40.0/include/pixman-1;/usr/local/Cellar/fontconfig/2.13.1/include;/usr/local/Cellar/libpng/1.6.37/include/libpng16;/usr/local/Cellar/glib/2.64.4_2/include;/usr/local/Cellar/harfbuzz/2.7.0/include/harfbuzz;/usr/local/opt/freetype/include/freetype2;/usr/local/Cellar/graphite2/1.3.14/include;/usr/local/Cellar/glib/2.64.4_2/include/glib-2.0;/usr/local/Cellar/glib/2.64.4_2/lib/glib-2.0/include;/usr/local/opt/gettext/include;/usr/local/Cellar/pcre/8.44/include
-- Found ZLIB: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/lib/libz.tbd (found version "1.2.11")
-- Graphviz version: 2.44.2~dev.20200815.1738
-- Looking for getopt.h
-- Looking for getopt.h - found
-- Looking for crt_externs.h
-- Looking for crt_externs.h - found
-- Looking for fcntl
-- Looking for fcntl - not found
-- Looking for search.h
-- Looking for search.h - found
-- Looking for stat.h
-- Looking for stat.h - not found
-- Looking for strings.h
-- Looking for strings.h - found
-- Looking for sys/inotify.h
-- Looking for sys/inotify.h - not found
-- Looking for sys/ioctl.h
-- Looking for sys/ioctl.h - found
-- Looking for sys/mman.h
-- Looking for sys/mman.h - found
-- Looking for sys/select.h
-- Looking for sys/select.h - found
-- Looking for sys/stat.h
-- Looking for sys/stat.h - found
-- Looking for sys/time.h
-- Looking for sys/time.h - found
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for sys/vfork.h
-- Looking for sys/vfork.h - not found
-- Looking for termios.h
-- Looking for termios.h - found
-- Looking for unistd.h
-- Looking for unistd.h - found
-- Looking for vfork.h
-- Looking for vfork.h - not found
-- Looking for X11/Intrinsic.h
-- Looking for X11/Intrinsic.h - not found
-- Looking for X11/Xaw/Text.h
-- Looking for X11/Xaw/Text.h - not found
-- Looking for _NSGetEnviron
-- Looking for _NSGetEnviron - found
-- Looking for drand48
-- Looking for drand48 - found
-- Looking for cbrt
-- Looking for cbrt - found
-- Looking for getpagesize
-- Looking for getpagesize - found
-- Looking for getenv
-- Looking for getenv - found
-- Looking for lrand48
-- Looking for lrand48 - found
-- Looking for mallinfo
-- Looking for mallinfo - not found
-- Looking for mallopt
-- Looking for mallopt - not found
-- Looking for mstats
-- Looking for mstats - found
-- Looking for setenv
-- Looking for setenv - found
-- Looking for setmode
-- Looking for setmode - found
-- Looking for sincos
-- Looking for sincos - not found
-- Looking for srand48
-- Looking for srand48 - found
-- Looking for vsnprintf
-- Looking for vsnprintf - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of ssize_t
-- Check size of ssize_t - done
-- Check size of intptr_t
-- Check size of intptr_t - done
-- Could NOT find NSIS (missing: NSIS_MAKE)
-- Found PythonInterp: /usr/local/bin/python (found version "2.7.17")
-- The following OPTIONAL packages have been found:

 * ANN
 * Cairo
 * EXPAT
 * GD
 * LTDL
 * PkgConfig
 * PangoCairo
 * ZLIB
 * PythonInterp

-- The following REQUIRED packages have been found:

 * AWK
 * BISON
 * FLEX
 * Git
 * Perl

-- The following OPTIONAL packages have not been found:

 * NSIS

-- Configuring done
CMake Warning (dev):
  Policy CMP0042 is not set: MACOSX_RPATH is enabled by default.  Run "cmake
  --help-policy CMP0042" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

  MACOSX_RPATH is not specified for the following targets:

   cdt
   cgraph
   gvc
   gvplugin_core
   gvplugin_dot_layout
   gvplugin_gd
   gvplugin_neato_layout
   gvplugin_pango
   pathplan
   xdot

This warning is for project developers.  Use -Wno-dev to suppress it.

-- Generating done
-- Build files have been written to: /Users/north/src/graphviz
$ make
[  1%] Building C object lib/cdt/CMakeFiles/cdt.dir/dtclose.c.o
[  1%] Building C object lib/cdt/CMakeFiles/cdt.dir/dtdisc.c.o
[  1%] Building C object lib/cdt/CMakeFiles/cdt.dir/dtextract.c.o
[  2%] Building C object lib/cdt/CMakeFiles/cdt.dir/dtflatten.c.o
[  2%] Building C object lib/cdt/CMakeFiles/cdt.dir/dthash.c.o
[  2%] Building C object lib/cdt/CMakeFiles/cdt.dir/dtlist.c.o
[  2%] Building C object lib/cdt/CMakeFiles/cdt.dir/dtmethod.c.o
[  3%] Building C object lib/cdt/CMakeFiles/cdt.dir/dtopen.c.o
[  3%] Building C object lib/cdt/CMakeFiles/cdt.dir/dtrenew.c.o
[  3%] Building C object lib/cdt/CMakeFiles/cdt.dir/dtrestore.c.o
[  4%] Building C object lib/cdt/CMakeFiles/cdt.dir/dtsize.c.o
[  4%] Building C object lib/cdt/CMakeFiles/cdt.dir/dtstat.c.o
[  4%] Building C object lib/cdt/CMakeFiles/cdt.dir/dtstrhash.c.o
[  5%] Building C object lib/cdt/CMakeFiles/cdt.dir/dttree.c.o
[  5%] Building C object lib/cdt/CMakeFiles/cdt.dir/dtview.c.o
[  5%] Building C object lib/cdt/CMakeFiles/cdt.dir/dtwalk.c.o
[  6%] Linking C shared library libcdt.dylib
[  6%] Built target cdt
[  6%] Building C object lib/circogen/CMakeFiles/circogen.dir/block.c.o
[  6%] Building C object lib/circogen/CMakeFiles/circogen.dir/blockpath.c.o
[  7%] Building C object lib/circogen/CMakeFiles/circogen.dir/blocktree.c.o
[  7%] Building C object lib/circogen/CMakeFiles/circogen.dir/circpos.c.o
[  7%] Building C object lib/circogen/CMakeFiles/circogen.dir/circular.c.o
[  8%] Building C object lib/circogen/CMakeFiles/circogen.dir/circularinit.c.o
[  8%] Building C object lib/circogen/CMakeFiles/circogen.dir/deglist.c.o
[  8%] Building C object lib/circogen/CMakeFiles/circogen.dir/edgelist.c.o
[  9%] Building C object lib/circogen/CMakeFiles/circogen.dir/nodelist.c.o
[  9%] Building C object lib/circogen/CMakeFiles/circogen.dir/nodeset.c.o
[  9%] Linking C static library libcircogen.a
[  9%] Built target circogen
[  9%] Generating brewer_lib
[ 10%] Generating svgcolor_lib
[ 10%] Generating color_lib
[ 10%] Generating colortbl.h
[ 11%] Generating ps_font_equiv.h
don't know about Symbol
don't know about ZapfDingbats
[ 11%] [BISON][HTMLparse] Building parser with bison 2.3
htmlparse.y:527.9-545.9: warning: unused value: $3
htmlparse.y: conflicts: 2 shift/reduce
Scanning dependencies of target common
[ 11%] Building C object lib/common/CMakeFiles/common.dir/args.c.o
[ 12%] Building C object lib/common/CMakeFiles/common.dir/arrows.c.o
[ 12%] Building C object lib/common/CMakeFiles/common.dir/colxlate.c.o
[ 12%] Building C object lib/common/CMakeFiles/common.dir/ellipse.c.o
[ 13%] Building C object lib/common/CMakeFiles/common.dir/emit.c.o
[ 13%] Building C object lib/common/CMakeFiles/common.dir/geom.c.o
[ 13%] Building C object lib/common/CMakeFiles/common.dir/globals.c.o
[ 13%] Building C object lib/common/CMakeFiles/common.dir/htmllex.c.o
[ 14%] Building C object lib/common/CMakeFiles/common.dir/htmltable.c.o
[ 14%] Building C object lib/common/CMakeFiles/common.dir/input.c.o
/Users/north/src/graphviz/lib/common/input.c:329:89: warning: '/*' within block
      comment [-Wcomment]
  ...empty results from gvplugin_list() and prompt to configure with '-c' /*
                                                                          ^
/Users/north/src/graphviz/lib/common/input.c:330:4: warning: '/*' within block
      comment [-Wcomment]
                        /* fprintf(stderr, "Use one of:%s\n", gvplugin_l...
                        ^
2 warnings generated.
[ 14%] Building C object lib/common/CMakeFiles/common.dir/intset.c.o
[ 15%] Building C object lib/common/CMakeFiles/common.dir/labels.c.o
[ 15%] Building C object lib/common/CMakeFiles/common.dir/ns.c.o
[ 15%] Building C object lib/common/CMakeFiles/common.dir/memory.c.o
[ 16%] Building C object lib/common/CMakeFiles/common.dir/output.c.o
[ 16%] Building C object lib/common/CMakeFiles/common.dir/pointset.c.o
[ 16%] Building C object lib/common/CMakeFiles/common.dir/postproc.c.o
[ 17%] Building C object lib/common/CMakeFiles/common.dir/psusershape.c.o
[ 17%] Building C object lib/common/CMakeFiles/common.dir/routespl.c.o
[ 17%] Building C object lib/common/CMakeFiles/common.dir/shapes.c.o
[ 17%] Building C object lib/common/CMakeFiles/common.dir/splines.c.o
[ 18%] Building C object lib/common/CMakeFiles/common.dir/taper.c.o
[ 18%] Building C object lib/common/CMakeFiles/common.dir/textspan.c.o
[ 18%] Building C object lib/common/CMakeFiles/common.dir/timing.c.o
[ 19%] Building C object lib/common/CMakeFiles/common.dir/utils.c.o
[ 19%] Building C object lib/common/CMakeFiles/common.dir/htmlparse.c.o
[ 19%] Linking C static library libcommon.a
[ 19%] Built target common
[ 19%] Building C object lib/dotgen/CMakeFiles/dotgen.dir/aspect.c.o
[ 19%] Building C object lib/dotgen/CMakeFiles/dotgen.dir/acyclic.c.o
[ 20%] Building C object lib/dotgen/CMakeFiles/dotgen.dir/class1.c.o
[ 20%] Building C object lib/dotgen/CMakeFiles/dotgen.dir/class2.c.o
[ 20%] Building C object lib/dotgen/CMakeFiles/dotgen.dir/cluster.c.o
[ 21%] Building C object lib/dotgen/CMakeFiles/dotgen.dir/compound.c.o
[ 21%] Building C object lib/dotgen/CMakeFiles/dotgen.dir/conc.c.o
[ 21%] Building C object lib/dotgen/CMakeFiles/dotgen.dir/decomp.c.o
[ 22%] Building C object lib/dotgen/CMakeFiles/dotgen.dir/dotinit.c.o
[ 22%] Building C object lib/dotgen/CMakeFiles/dotgen.dir/dotsplines.c.o
[ 22%] Building C object lib/dotgen/CMakeFiles/dotgen.dir/fastgr.c.o
[ 22%] Building C object lib/dotgen/CMakeFiles/dotgen.dir/flat.c.o
[ 23%] Building C object lib/dotgen/CMakeFiles/dotgen.dir/mincross.c.o
[ 23%] Building C object lib/dotgen/CMakeFiles/dotgen.dir/position.c.o
[ 23%] Building C object lib/dotgen/CMakeFiles/dotgen.dir/rank.c.o
[ 24%] Building C object lib/dotgen/CMakeFiles/dotgen.dir/sameport.c.o
[ 24%] Linking C static library libdotgen.a
[ 24%] Built target dotgen
[ 24%] Building C object lib/fdpgen/CMakeFiles/fdpgen.dir/clusteredges.c.o
[ 25%] Building C object lib/fdpgen/CMakeFiles/fdpgen.dir/comp.c.o
[ 25%] Building C object lib/fdpgen/CMakeFiles/fdpgen.dir/dbg.c.o
[ 25%] Building C object lib/fdpgen/CMakeFiles/fdpgen.dir/fdpinit.c.o
[ 25%] Building C object lib/fdpgen/CMakeFiles/fdpgen.dir/grid.c.o
[ 26%] Building C object lib/fdpgen/CMakeFiles/fdpgen.dir/layout.c.o
/Users/north/src/graphviz/lib/fdpgen/layout.c:330:3: warning: format specifies
      type 'long' but the argument has type 'uint64_t'
      (aka 'unsigned long long') [-Wformat]
                (uint64_t)AGSEQ(e));
                ^~~~~~~~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include/secure/_stdio.h:47:56: note:
      expanded from macro 'sprintf'
  __builtin___sprintf_chk (str, 0, __darwin_obsz(str), __VA_ARGS__)
                                                       ^~~~~~~~~~~
/Users/north/src/graphviz/lib/fdpgen/layout.c:333:3: warning: format specifies
      type 'long' but the argument has type 'uint64_t'
      (aka 'unsigned long long') [-Wformat]
                (uint64_t)AGSEQ(e));
                ^~~~~~~~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include/secure/_stdio.h:47:56: note:
      expanded from macro 'sprintf'
  __builtin___sprintf_chk (str, 0, __darwin_obsz(str), __VA_ARGS__)
                                                       ^~~~~~~~~~~
2 warnings generated.
[ 26%] Building C object lib/fdpgen/CMakeFiles/fdpgen.dir/tlayout.c.o
[ 26%] Building C object lib/fdpgen/CMakeFiles/fdpgen.dir/xlayout.c.o
[ 27%] Linking C static library libfdpgen.a
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libfdpgen.a(dbg.c.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libfdpgen.a(dbg.c.o) has no symbols
[ 27%] Built target fdpgen
[ 27%] Building C object lib/ingraphs/CMakeFiles/ingraphs.dir/ingraphs.c.o
[ 28%] Linking C static library libingraphs.a
[ 28%] Built target ingraphs
[ 28%] Building C object lib/label/CMakeFiles/label.dir/index.c.o
[ 28%] Building C object lib/label/CMakeFiles/label.dir/node.c.o
[ 29%] Building C object lib/label/CMakeFiles/label.dir/rectangle.c.o
[ 29%] Building C object lib/label/CMakeFiles/label.dir/split.q.c.o
[ 29%] Building C object lib/label/CMakeFiles/label.dir/xlabels.c.o
[ 29%] Linking C static library liblabel.a
[ 29%] Built target label
[ 30%] Building C object lib/mingle/CMakeFiles/libmingle.dir/agglomerative_bundling.c.o
[ 30%] Building C object lib/mingle/CMakeFiles/libmingle.dir/edge_bundling.c.o
[ 30%] Building C object lib/mingle/CMakeFiles/libmingle.dir/ink.c.o
[ 31%] Building C object lib/mingle/CMakeFiles/libmingle.dir/nearest_neighbor_graph.c.o
[ 31%] Building CXX object lib/mingle/CMakeFiles/libmingle.dir/nearest_neighbor_graph_ann.cpp.o
[ 31%] Linking CXX static library liblibmingle.a
[ 31%] Built target libmingle
[ 31%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/adjust.c.o
[ 31%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/bfs.c.o
[ 31%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/call_tri.c.o
[ 32%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/circuit.c.o
[ 32%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/closest.c.o
[ 32%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/compute_hierarchy.c.o
[ 33%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/conjgrad.c.o
[ 33%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/constrained_majorization.c.o
[ 33%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/constraint.c.o
[ 34%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/delaunay.c.o
[ 34%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/dijkstra.c.o
[ 34%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/edges.c.o
[ 34%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/embed_graph.c.o
[ 35%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/geometry.c.o
[ 35%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/heap.c.o
[ 35%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/hedges.c.o
[ 36%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/info.c.o
[ 36%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/kkutils.c.o
[ 36%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/legal.c.o
[ 37%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/lu.c.o
[ 37%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/matinv.c.o
[ 37%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/matrix_ops.c.o
[ 38%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/memory.c.o
[ 38%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/multispline.c.o
[ 38%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/neatoinit.c.o
[ 38%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/neatosplines.c.o
[ 39%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/opt_arrangement.c.o
[ 39%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/overlap.c.o
[ 39%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/pca.c.o
[ 40%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/poly.c.o
[ 40%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/printvis.c.o
[ 40%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/quad_prog_solve.c.o
[ 41%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/site.c.o
[ 41%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/smart_ini_x.c.o
[ 41%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/solve.c.o
[ 42%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/stuff.c.o
[ 42%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/stress.c.o
[ 42%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/voronoi.c.o
[ 42%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/sgd.c.o
[ 43%] Building C object lib/neatogen/CMakeFiles/neatogen.dir/randomkit.c.o
[ 43%] Linking C static library libneatogen.a
[ 43%] Built target neatogen
[ 43%] Building C object lib/ortho/CMakeFiles/ortho.dir/fPQ.c.o
[ 43%] Building C object lib/ortho/CMakeFiles/ortho.dir/maze.c.o
[ 44%] Building C object lib/ortho/CMakeFiles/ortho.dir/ortho.c.o
[ 44%] Building C object lib/ortho/CMakeFiles/ortho.dir/partition.c.o
[ 44%] Building C object lib/ortho/CMakeFiles/ortho.dir/rawgraph.c.o
[ 44%] Building C object lib/ortho/CMakeFiles/ortho.dir/sgraph.c.o
[ 45%] Building C object lib/ortho/CMakeFiles/ortho.dir/trapezoid.c.o
[ 45%] Linking C static library libortho.a
[ 45%] Built target ortho
[ 45%] Building C object lib/osage/CMakeFiles/osage.dir/osageinit.c.o
[ 46%] Linking C static library libosage.a
[ 46%] Built target osage
[ 46%] Building C object lib/pack/CMakeFiles/pack.dir/ccomps.c.o
[ 46%] Building C object lib/pack/CMakeFiles/pack.dir/pack.c.o
[ 47%] Linking C static library libpack.a
[ 47%] Built target pack
[ 47%] Building C object lib/patchwork/CMakeFiles/patchwork.dir/patchwork.c.o
[ 47%] Building C object lib/patchwork/CMakeFiles/patchwork.dir/patchworkinit.c.o
[ 48%] Building C object lib/patchwork/CMakeFiles/patchwork.dir/tree_map.c.o
[ 48%] Linking C static library libpatchwork.a
[ 48%] Built target patchwork
[ 48%] Building C object lib/pathplan/CMakeFiles/pathplan.dir/cvt.c.o
[ 48%] Building C object lib/pathplan/CMakeFiles/pathplan.dir/inpoly.c.o
[ 49%] Building C object lib/pathplan/CMakeFiles/pathplan.dir/route.c.o
[ 49%] Building C object lib/pathplan/CMakeFiles/pathplan.dir/shortest.c.o
[ 49%] Building C object lib/pathplan/CMakeFiles/pathplan.dir/shortestpth.c.o
[ 50%] Building C object lib/pathplan/CMakeFiles/pathplan.dir/solvers.c.o
[ 50%] Building C object lib/pathplan/CMakeFiles/pathplan.dir/triang.c.o
[ 50%] Building C object lib/pathplan/CMakeFiles/pathplan.dir/util.c.o
[ 51%] Building C object lib/pathplan/CMakeFiles/pathplan.dir/visibility.c.o
[ 51%] Linking C shared library libpathplan.dylib
[ 51%] Built target pathplan
[ 51%] Building C object lib/rbtree/CMakeFiles/rbtree.dir/misc.c.o
[ 51%] Building C object lib/rbtree/CMakeFiles/rbtree.dir/red_black_tree.c.o
[ 52%] Building C object lib/rbtree/CMakeFiles/rbtree.dir/stack.c.o
[ 52%] Linking C static library librbtree.a
[ 52%] Built target rbtree
[ 53%] Building C object lib/sparse/CMakeFiles/sparse.dir/BinaryHeap.c.o
[ 53%] Building C object lib/sparse/CMakeFiles/sparse.dir/clustering.c.o
[ 53%] Building C object lib/sparse/CMakeFiles/sparse.dir/color_palette.c.o
[ 54%] Building C object lib/sparse/CMakeFiles/sparse.dir/colorutil.c.o
[ 54%] Building C object lib/sparse/CMakeFiles/sparse.dir/DotIO.c.o
[ 54%] Building C object lib/sparse/CMakeFiles/sparse.dir/general.c.o
[ 55%] Building C object lib/sparse/CMakeFiles/sparse.dir/IntStack.c.o
[ 55%] Building C object lib/sparse/CMakeFiles/sparse.dir/LinkedList.c.o
[ 55%] Building C object lib/sparse/CMakeFiles/sparse.dir/mq.c.o
[ 55%] Building C object lib/sparse/CMakeFiles/sparse.dir/QuadTree.c.o
[ 56%] Building C object lib/sparse/CMakeFiles/sparse.dir/SparseMatrix.c.o
[ 56%] Building C object lib/sparse/CMakeFiles/sparse.dir/vector.c.o
[ 56%] Linking C static library libsparse.a
[ 56%] Built target sparse
[ 56%] Building C object lib/sfdpgen/CMakeFiles/sfdpgen.dir/Multilevel.c.o
[ 56%] Building C object lib/sfdpgen/CMakeFiles/sfdpgen.dir/post_process.c.o
[ 57%] Building C object lib/sfdpgen/CMakeFiles/sfdpgen.dir/PriorityQueue.c.o
[ 57%] Building C object lib/sfdpgen/CMakeFiles/sfdpgen.dir/sfdpinit.c.o
[ 57%] Building C object lib/sfdpgen/CMakeFiles/sfdpgen.dir/sparse_solve.c.o
[ 58%] Building C object lib/sfdpgen/CMakeFiles/sfdpgen.dir/spring_electrical.c.o
[ 58%] Building C object lib/sfdpgen/CMakeFiles/sfdpgen.dir/stress_model.c.o
[ 58%] Building C object lib/sfdpgen/CMakeFiles/sfdpgen.dir/uniform_stress.c.o
[ 58%] Linking C static library libsfdpgen.a
[ 58%] Built target sfdpgen
[ 59%] Building C object lib/spine/CMakeFiles/spine.dir/quad.c.o
[ 59%] Building C object lib/spine/CMakeFiles/spine.dir/spine.c.o
[ 59%] Building C object lib/spine/CMakeFiles/spine.dir/subset.c.o
[ 60%] Building C object lib/spine/CMakeFiles/spine.dir/union_find.c.o
[ 60%] Linking C static library libspine.a
[ 60%] Built target spine
[ 60%] Building C object lib/twopigen/CMakeFiles/twopigen.dir/circle.c.o
[ 60%] Building C object lib/twopigen/CMakeFiles/twopigen.dir/twopiinit.c.o
[ 60%] Linking C static library libtwopigen.a
[ 60%] Built target twopigen
[ 60%] Building C object lib/vmalloc/CMakeFiles/vmalloc.dir/vmbest.c.o
[ 61%] Building C object lib/vmalloc/CMakeFiles/vmalloc.dir/vmclear.c.o
[ 61%] Building C object lib/vmalloc/CMakeFiles/vmalloc.dir/vmclose.c.o
[ 61%] Building C object lib/vmalloc/CMakeFiles/vmalloc.dir/vmopen.c.o
[ 62%] Building C object lib/vmalloc/CMakeFiles/vmalloc.dir/vmstrdup.c.o
[ 62%] Linking C static library libvmalloc.a
[ 62%] Built target vmalloc
[ 62%] Building C object lib/xdot/CMakeFiles/xdot.dir/xdot.c.o
[ 63%] Linking C shared library libxdot.dylib
[ 63%] Built target xdot
[ 63%] [FLEX][Scan] Building scanner with flex 2.5.35
[ 63%] [BISON][Grammar] Building parser with bison 2.3
Scanning dependencies of target cgraph
[ 63%] Building C object lib/cgraph/CMakeFiles/cgraph.dir/agerror.c.o
[ 64%] Building C object lib/cgraph/CMakeFiles/cgraph.dir/agxbuf.c.o
[ 64%] Building C object lib/cgraph/CMakeFiles/cgraph.dir/apply.c.o
[ 64%] Building C object lib/cgraph/CMakeFiles/cgraph.dir/attr.c.o
[ 65%] Building C object lib/cgraph/CMakeFiles/cgraph.dir/edge.c.o
[ 65%] Building C object lib/cgraph/CMakeFiles/cgraph.dir/flatten.c.o
[ 65%] Building C object lib/cgraph/CMakeFiles/cgraph.dir/graph.c.o
[ 66%] Building C object lib/cgraph/CMakeFiles/cgraph.dir/id.c.o
/Users/north/src/graphviz/lib/cgraph/id.c:154:41: warning: format specifies type
      'long' but the argument has type 'IDTYPE' (aka 'unsigned long long')
      [-Wformat]
        sprintf(buf, "%c%ld", LOCALNAMEPREFIX, AGID(obj));
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
                        %llu
/Users/north/src/graphviz/lib/cgraph/cgraph.h:114:20: note: expanded from macro
      'AGID'
#define AGID(obj)               (AGTAG(obj).id)
                                ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include/secure/_stdio.h:47:56: note:
      expanded from macro 'sprintf'
  __builtin___sprintf_chk (str, 0, __darwin_obsz(str), __VA_ARGS__)
                                                       ^~~~~~~~~~~
1 warning generated.
[ 66%] Building C object lib/cgraph/CMakeFiles/cgraph.dir/imap.c.o
[ 66%] Building C object lib/cgraph/CMakeFiles/cgraph.dir/io.c.o
[ 66%] Building C object lib/cgraph/CMakeFiles/cgraph.dir/mem.c.o
[ 67%] Building C object lib/cgraph/CMakeFiles/cgraph.dir/node.c.o
[ 67%] Building C object lib/cgraph/CMakeFiles/cgraph.dir/obj.c.o
[ 67%] Building C object lib/cgraph/CMakeFiles/cgraph.dir/pend.c.o
[ 68%] Building C object lib/cgraph/CMakeFiles/cgraph.dir/rec.c.o
[ 68%] Building C object lib/cgraph/CMakeFiles/cgraph.dir/refstr.c.o
[ 68%] Building C object lib/cgraph/CMakeFiles/cgraph.dir/subg.c.o
[ 69%] Building C object lib/cgraph/CMakeFiles/cgraph.dir/utils.c.o
[ 69%] Building C object lib/cgraph/CMakeFiles/cgraph.dir/write.c.o
/Users/north/src/graphviz/lib/cgraph/write.c:508:31: warning: format specifies
      type 'long' but the argument has type 'IDTYPE' (aka 'unsigned long long')
      [-Wformat]
        sprintf(buf, "_%ld_SUSPECT", AGID(n));  /* could be deadly wrong */
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
                       %llu
/Users/north/src/graphviz/lib/cgraph/cgraph.h:114:20: note: expanded from macro
      'AGID'
#define AGID(obj)               (AGTAG(obj).id)
                                ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include/secure/_stdio.h:47:56: note:
      expanded from macro 'sprintf'
  __builtin___sprintf_chk (str, 0, __darwin_obsz(str), __VA_ARGS__)
                                                       ^~~~~~~~~~~
1 warning generated.
[ 69%] Building C object lib/cgraph/CMakeFiles/cgraph.dir/grammar.c.o
[ 70%] Building C object lib/cgraph/CMakeFiles/cgraph.dir/scan.c.o
[ 70%] Linking C shared library libcgraph.dylib
[ 70%] Built target cgraph
Scanning dependencies of target gvc
[ 70%] Building C object lib/gvc/CMakeFiles/gvc.dir/gvc.c.o
[ 70%] Building C object lib/gvc/CMakeFiles/gvc.dir/gvconfig.c.o
[ 71%] Building C object lib/gvc/CMakeFiles/gvc.dir/gvcontext.c.o
[ 71%] Building C object lib/gvc/CMakeFiles/gvc.dir/gvdevice.c.o
[ 71%] Building C object lib/gvc/CMakeFiles/gvc.dir/gvevent.c.o
[ 72%] Building C object lib/gvc/CMakeFiles/gvc.dir/gvjobs.c.o
[ 72%] Building C object lib/gvc/CMakeFiles/gvc.dir/gvlayout.c.o
[ 72%] Building C object lib/gvc/CMakeFiles/gvc.dir/gvloadimage.c.o
[ 72%] Building C object lib/gvc/CMakeFiles/gvc.dir/gvplugin.c.o
[ 73%] Building C object lib/gvc/CMakeFiles/gvc.dir/gvrender.c.o
[ 73%] Building C object lib/gvc/CMakeFiles/gvc.dir/gvtextlayout.c.o
[ 73%] Building C object lib/gvc/CMakeFiles/gvc.dir/gvtool_tred.c.o
[ 74%] Building C object lib/gvc/CMakeFiles/gvc.dir/gvusershape.c.o
[ 74%] Linking C shared library libgvc.dylib
[ 74%] Built target gvc
[ 75%] Generating ps.h
Scanning dependencies of target gvplugin_core
[ 75%] Building C object plugin/core/CMakeFiles/gvplugin_core.dir/gvloadimage_core.c.o
[ 75%] Building C object plugin/core/CMakeFiles/gvplugin_core.dir/gvplugin_core.c.o
[ 76%] Building C object plugin/core/CMakeFiles/gvplugin_core.dir/gvrender_core_dot.c.o
/Users/north/src/graphviz/plugin/core/gvrender_core_dot.c:306:27: warning:
      incompatible pointer types passing 'Agedge_t *' (aka 'struct Agedge_s *')
      to parameter of type 'Agnode_t *' (aka 'struct Agnode_s *')
      [-Wincompatible-pointer-types]
        put_escaping_backslashes(e, xd->e_l_draw, agxbuse(xbufs[EMIT_ELABEL]));
                                 ^
/Users/north/src/graphviz/plugin/core/gvrender_core_dot.c:260:48: note: passing
      argument to parameter 'n' here
static void put_escaping_backslashes(Agnode_t* n, Agsym_t *sym, const ch...
                                               ^
/Users/north/src/graphviz/plugin/core/gvrender_core_dot.c:518:27: warning:
      incompatible pointer types passing 'graph_t *' (aka 'struct Agraph_s *')
      to parameter of type 'Agnode_t *' (aka 'struct Agnode_s *')
      [-Wincompatible-pointer-types]
        put_escaping_backslashes(g, xd->g_l_draw, agxbuse(xbufs[EMIT_GLABEL]));
                                 ^
/Users/north/src/graphviz/plugin/core/gvrender_core_dot.c:260:48: note: passing
      argument to parameter 'n' here
static void put_escaping_backslashes(Agnode_t* n, Agsym_t *sym, const ch...
                                               ^
2 warnings generated.
[ 76%] Building C object plugin/core/CMakeFiles/gvplugin_core.dir/gvrender_core_json.c.o
[ 76%] Building C object plugin/core/CMakeFiles/gvplugin_core.dir/gvrender_core_fig.c.o
[ 77%] Building C object plugin/core/CMakeFiles/gvplugin_core.dir/gvrender_core_map.c.o
[ 77%] Building C object plugin/core/CMakeFiles/gvplugin_core.dir/gvrender_core_mp.c.o
[ 77%] Building C object plugin/core/CMakeFiles/gvplugin_core.dir/gvrender_core_pic.c.o
[ 78%] Building C object plugin/core/CMakeFiles/gvplugin_core.dir/gvrender_core_pov.c.o
[ 78%] Building C object plugin/core/CMakeFiles/gvplugin_core.dir/gvrender_core_ps.c.o
[ 78%] Building C object plugin/core/CMakeFiles/gvplugin_core.dir/gvrender_core_svg.c.o
[ 78%] Building C object plugin/core/CMakeFiles/gvplugin_core.dir/gvrender_core_tk.c.o
[ 79%] Building C object plugin/core/CMakeFiles/gvplugin_core.dir/gvrender_core_vml.c.o
[ 79%] Linking C shared library libgvplugin_core.dylib
[ 79%] Built target gvplugin_core
[ 79%] Building C object plugin/dot_layout/CMakeFiles/gvplugin_dot_layout.dir/gvplugin_dot_layout.c.o
[ 80%] Building C object plugin/dot_layout/CMakeFiles/gvplugin_dot_layout.dir/gvlayout_dot_layout.c.o
[ 80%] Linking C shared library libgvplugin_dot_layout.dylib
[ 80%] Built target gvplugin_dot_layout
[ 80%] Building C object plugin/gd/CMakeFiles/gvplugin_gd.dir/gvdevice_gd.c.o
[ 81%] Building C object plugin/gd/CMakeFiles/gvplugin_gd.dir/gvloadimage_gd.c.o
[ 81%] Building C object plugin/gd/CMakeFiles/gvplugin_gd.dir/gvplugin_gd.c.o
[ 81%] Building C object plugin/gd/CMakeFiles/gvplugin_gd.dir/gvrender_gd.c.o
[ 81%] Building C object plugin/gd/CMakeFiles/gvplugin_gd.dir/gvrender_gd_vrml.c.o
[ 82%] Building C object plugin/gd/CMakeFiles/gvplugin_gd.dir/gvtextlayout_gd.c.o
[ 82%] Linking C shared library libgvplugin_gd.dylib
[ 82%] Built target gvplugin_gd
[ 82%] Building C object plugin/neato_layout/CMakeFiles/gvplugin_neato_layout.dir/gvplugin_neato_layout.c.o
[ 83%] Building C object plugin/neato_layout/CMakeFiles/gvplugin_neato_layout.dir/gvlayout_neato_layout.c.o
[ 83%] Linking C shared library libgvplugin_neato_layout.dylib
[ 83%] Built target gvplugin_neato_layout
Scanning dependencies of target gvplugin_pango
[ 83%] Building C object plugin/pango/CMakeFiles/gvplugin_pango.dir/gvgetfontlist_pango.c.o
[ 84%] Building C object plugin/pango/CMakeFiles/gvplugin_pango.dir/gvloadimage_pango.c.o
[ 84%] Building C object plugin/pango/CMakeFiles/gvplugin_pango.dir/gvplugin_pango.c.o
[ 84%] Building C object plugin/pango/CMakeFiles/gvplugin_pango.dir/gvrender_pango.c.o
[ 85%] Building C object plugin/pango/CMakeFiles/gvplugin_pango.dir/gvtextlayout_pango.c.o
[ 85%] Linking C shared library libgvplugin_pango.dylib
ld: library not found for -lpango-1.0
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [plugin/pango/libgvplugin_pango.6.0.0.dylib] Error 1
make[1]: *** [plugin/pango/CMakeFiles/gvplugin_pango.dir/all] Error 2
make: *** [all] Error 2
$

Does it make a difference if you add PANGOCAIRO_LIBRARY_DIRS to the find_package_handle_standard_args and mark_as_advanced lists?

CMake builds tend to be much easier if you build out-of-source:

$ # create a new build directory
$ mkdir build
$ cd build
$ cmake ..
...
$ make
...

$ # now to reset to a clean state:
$ cd ..
$ rm -rf build

Thanks, that seems like a reasonable way to build.

Adding PANGOCAIRO_LIBRARY_DIRS to find_package_handle_standard_args and mark_as_advanced didn’t help.

It does seem to be available
ls /usr/local/lib/*pango* /usr/local/lib/libpango-1.0.0.dylib /usr/local/lib/libpango-1.0.a /usr/local/lib/libpango-1.0.dylib /usr/local/lib/libpangocairo-1.0.0.dylib /usr/local/lib/libpangocairo-1.0.a /usr/local/lib/libpangocairo-1.0.dylib /usr/local/lib/libpangoft2-1.0.0.dylib /usr/local/lib/libpangoft2-1.0.a /usr/local/lib/libpangoft2-1.0.dylib /usr/local/lib/libpangox-1.0.0.dylib /usr/local/lib/libpangox-1.0.a /usr/local/lib/libpangox-1.0.dylib

It’s a symlink that points to /usr/local/Cellar/pango/1.46.0/lib/libpango-1.0.0.dylib

I can nm /usr/local/lib/libpango-1.0.dylib so all is well there.

OK, let’s try to remove some more of the cryptic magic from this. Can you try this alternative patch:

diff --git cmake/FindPangoCairo.cmake cmake/FindPangoCairo.cmake
index c21b80b3f..c8f666c20 100644
--- cmake/FindPangoCairo.cmake
+++ cmake/FindPangoCairo.cmake
@@ -1,91 +1,9 @@
-find_path(PANGOCAIRO_INCLUDE_DIR pango/pangocairo.h PATH_SUFFIXES pango-1.0)
-find_path(GLIB_INCLUDE_DIR glib.h PATH_SUFFIXES glib-2.0)
-find_path(GLIBCONFIG_INCLUDE_DIR glibconfig.h PATH_SUFFIXES glib-2.0/include)
-
-find_library(GLIB_LIBRARY NAMES glib-2.0)
-find_library(GOBJECT_LIBRARY NAMES gobject-2.0)
-find_library(PANGO_LIBRARY NAMES pango-1.0)
-find_library(PANGOCAIRO_LIBRARY NAMES pangocairo-1.0)
-
-find_file(GLIB_RUNTIME_LIBRARY NAMES glib-2.dll)
-find_file(GOBJECT_RUNTIME_LIBRARY NAMES gobject-2.dll)
-find_file(HARFBUZZ_RUNTIME_LIBRARY NAMES libharfbuzz-0.dll)
-find_file(PANGO_RUNTIME_LIBRARY NAMES pango-1.dll)
-find_file(PANGOCAIRO_RUNTIME_LIBRARY NAMES pangocairo-1.dll)
-find_file(PANGOFT_RUNTIME_LIBRARY NAMES pangoft2-1.dll)
-find_file(PANGOWIN_RUNTIME_LIBRARY NAMES pangowin32-1.dll)
+find_package(PkgConfig)
+pkg_check_modules(PANGOCAIRO pango)

 include(FindPackageHandleStandardArgs)
-if (WIN32)
-    find_package_handle_standard_args(PANGOCAIRO DEFAULT_MSG
-        GLIB_INCLUDE_DIR
-        GLIBCONFIG_INCLUDE_DIR
-        PANGOCAIRO_INCLUDE_DIR
-
-        GLIB_LIBRARY
-        GOBJECT_LIBRARY
-        PANGO_LIBRARY
-        PANGOCAIRO_LIBRARY
-
-        GLIB_RUNTIME_LIBRARY
-        GOBJECT_RUNTIME_LIBRARY
-        HARFBUZZ_RUNTIME_LIBRARY
-        PANGO_RUNTIME_LIBRARY
-        PANGOCAIRO_RUNTIME_LIBRARY
-        PANGOFT_RUNTIME_LIBRARY
-        PANGOWIN_RUNTIME_LIBRARY
-    )
-else()
-    find_package_handle_standard_args(PANGOCAIRO DEFAULT_MSG
-        GLIB_INCLUDE_DIR
-        GLIBCONFIG_INCLUDE_DIR
-        PANGOCAIRO_INCLUDE_DIR
-
-        GLIB_LIBRARY
-        GOBJECT_LIBRARY
-        PANGO_LIBRARY
-        PANGOCAIRO_LIBRARY
-    )
-endif()
-
-mark_as_advanced(
-    GLIB_INCLUDE_DIR
-    GLIBCONFIG_INCLUDE_DIR
-    PANGOCAIRO_INCLUDE_DIR
-
-    GLIB_LIBRARY
-    GOBJECT_LIBRARY
-    PANGO_LIBRARY
-    PANGOCAIRO_LIBRARY
-
-    GLIB_RUNTIME_LIBRARY
-    GOBJECT_RUNTIME_LIBRARY
-    HARFBUZZ_RUNTIME_LIBRARY
-    PANGO_RUNTIME_LIBRARY
-    PANGOCAIRO_RUNTIME_LIBRARY
-    PANGOFT_RUNTIME_LIBRARY
-    PANGOWIN_RUNTIME_LIBRARY
-)
-
-set(PANGOCAIRO_INCLUDE_DIRS
-    ${GLIB_INCLUDE_DIR}
-    ${GLIBCONFIG_INCLUDE_DIR}
-    ${PANGOCAIRO_INCLUDE_DIR}
-)
-
-set(PANGOCAIRO_LIBRARIES
-    ${GLIB_LIBRARY}
-    ${GOBJECT_LIBRARY}
-    ${PANGO_LIBRARY}
-    ${PANGOCAIRO_LIBRARY}
-)
-
-set(PANGOCAIRO_RUNTIME_LIBRARIES
-    ${GLIB_RUNTIME_LIBRARY}
-    ${GOBJECT_RUNTIME_LIBRARY}
-    ${HARFBUZZ_RUNTIME_LIBRARY}
-    ${PANGO_RUNTIME_LIBRARY}
-    ${PANGOCAIRO_RUNTIME_LIBRARY}
-    ${PANGOFT_RUNTIME_LIBRARY}
-    ${PANGOWIN_RUNTIME_LIBRARY}
+find_package_handle_standard_args(PANGOCAIRO DEFAULT_MSG
+    PANGOCAIRO_INCLUDE_DIRS
+    PANGOCAIRO_LIBRARIES
+    PANGOCAIRO_LINK_LIBRARIES
 )
diff --git plugin/pango/CMakeLists.txt plugin/pango/CMakeLists.txt
index e10fddb06..5946c0b77 100644
--- plugin/pango/CMakeLists.txt
+++ plugin/pango/CMakeLists.txt
@@ -28,7 +28,7 @@ add_library(gvplugin_pango SHARED
 target_link_libraries(gvplugin_pango
     gvc
     ${CAIRO_LIBRARIES}
-    ${PANGOCAIRO_LIBRARIES}
+    ${PANGOCAIRO_LINK_LIBRARIES}
 )

 # Installation location of library files
@@ -44,7 +44,6 @@ if (WIN32)
     install(
         FILES
             ${CAIRO_RUNTIME_LIBRARIES}
-            ${PANGOCAIRO_RUNTIME_LIBRARIES}
         DESTINATION ${BINARY_INSTALL_DIR}
     )
 endif()

This totally borks the Windows build, but seems fine for testing for now.

By the way, how does the CMake-driven Windows install of this plugin even work? It seems to be trying to ship Pango and Cairo along with Graphviz (presumably from the dependencies repo), but it installs the DLLs into ${BINARY_INSTALL_DIR} instead of ${LIBRARY_INSTALL_DIR}.

On Windows, the dll's often seem to end up in bin, not in lib. See e.g. GnuWin. Our Windows CMake builds look like this:

~/graphviz$ ls -l build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/*/*.[ld][il][bl]
-rwxr-xr-x 1 magja 197609 1506816 Jun 13 17:11 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/cairo.dll*
-rwxr-xr-x 1 magja 197609   24576 Aug 17 15:28 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/cdt.dll*
-rwxr-xr-x 1 magja 197609   74752 Aug 17 15:28 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/cgraph.dll*
-rwxr-xr-x 1 magja 197609  317216 Jul 25 12:24 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/concrt140.dll*
-rwxr-xr-x 1 magja 197609  184832 Jun 13 17:11 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/expat.dll*
-rwxr-xr-x 1 magja 197609  830976 Jun 13 17:11 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/fontconfig.dll*
-rwxr-xr-x 1 magja 197609 1374208 Jun 13 17:11 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/glib-2.dll*
-rwxr-xr-x 1 magja 197609  276480 Jun 13 17:11 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/gobject-2.dll*
-rwxr-xr-x 1 magja 197609  523264 Aug 17 15:29 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/gvc.dll*
-rwxr-xr-x 1 magja 197609  118784 Aug 17 15:29 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/gvplugin_core.dll*
-rwxr-xr-x 1 magja 197609  199168 Aug 17 15:29 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/gvplugin_dot_layout.dll*
-rwxr-xr-x 1 magja 197609   31232 Aug 17 15:29 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/gvplugin_gdiplus.dll*
-rwxr-xr-x 1 magja 197609  427008 Aug 17 15:29 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/gvplugin_neato_layout.dll*
-rwxr-xr-x 1 magja 197609   34816 Aug 17 15:29 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/gvplugin_pango.dll*
-rwxr-xr-x 1 magja 197609  922112 Jun 13 17:11 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/libharfbuzz-0.dll*
-rwxr-xr-x 1 magja 197609  590096 Jul 25 12:24 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/msvcp140.dll*
-rwxr-xr-x 1 magja 197609   31528 Jul 25 12:24 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/msvcp140_1.dll*
-rwxr-xr-x 1 magja 197609  193312 Jul 25 12:24 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/msvcp140_2.dll*
-rwxr-xr-x 1 magja 197609   27424 Jul 25 12:24 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/msvcp140_codecvt_ids.dll*
-rwxr-xr-x 1 magja 197609  287744 Jun 13 17:11 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/pango-1.dll*
-rwxr-xr-x 1 magja 197609  612864 Jun 13 17:11 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/pangocairo-1.dll*
-rwxr-xr-x 1 magja 197609  639488 Jun 13 17:11 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/pangoft2-1.dll*
-rwxr-xr-x 1 magja 197609   65536 Jun 13 17:11 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/pangowin32-1.dll*
-rwxr-xr-x 1 magja 197609   43520 Aug 17 15:29 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/pathplan.dll*
-rwxr-xr-x 1 magja 197609  578560 Jun 13 17:11 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/pixman-1.dll*
-rwxr-xr-x 1 magja 197609  101664 Jul 25 12:24 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/vcruntime140.dll*
-rwxr-xr-x 1 magja 197609   44328 Jul 25 12:24 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/vcruntime140_1.dll*
-rwxr-xr-x 1 magja 197609   24064 Aug 17 15:29 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/bin/xdot.dll*
-rw-r--r-- 1 magja 197609    5674 Aug 17 15:28 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/lib/cdt.lib
-rw-r--r-- 1 magja 197609   20148 Aug 17 15:28 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/lib/cgraph.lib
-rw-r--r-- 1 magja 197609   60886 Aug 17 15:29 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/lib/gvc.lib
-rw-r--r-- 1 magja 197609    1878 Aug 17 15:29 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/lib/gvplugin_core.lib
-rw-r--r-- 1 magja 197609    1974 Aug 17 15:29 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/lib/gvplugin_dot_layout.lib
-rw-r--r-- 1 magja 197609    1930 Aug 17 15:29 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/lib/gvplugin_gdiplus.lib
-rw-r--r-- 1 magja 197609    2006 Aug 17 15:29 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/lib/gvplugin_neato_layout.lib
-rw-r--r-- 1 magja 197609    1898 Aug 17 15:29 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/lib/gvplugin_pango.lib
-rw-r--r-- 1 magja 197609    5602 Aug 17 15:29 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/lib/pathplan.lib
-rw-r--r-- 1 magja 197609    3236 Aug 17 15:29 build/_CPack_Packages/win64/NSIS/Graphviz-2.44.2~dev.20200817.1326-win64/lib/xdot.lib
1 Like

Ah I see. Now that I search a bit I realize it seems the default on Windows to look in the current directory for DLLs.

Is it the norm for a Windows app to ship this much third-party stuff? The dependency libs I can understand (though maybe there are licensing issues we should be thinking about?), but seeing CRT and other MSVC runtime libs in this directory surprises me.

1 Like