diff --git a/.gitignore b/.gitignore index 822195f33058c7f59811e0a2780582b4f8f6331a..ca507e6f2a1c8f44c36c0af7a1cdd5302d284069 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,9 @@ CMakeCache.txt /graphviz-*.tar.gz /GRAPHVIZ_VERSION +# product of: make pkg +/graphviz-*.pkg + cmd/gvedit/moc_csettings.cpp cmd/gvedit/moc_imageviewer.cpp cmd/gvedit/moc_mainwindow.cpp @@ -45,6 +48,7 @@ Makefile.in /config.h.in~ /config.log /config.status +/configure~ /libtool /redhat/graphviz.spec.fedora /redhat/graphviz.spec.rhel @@ -62,10 +66,11 @@ doc/schema/Makefile cmd/gvedit/gvedit.pro debian/changelog debian/libgv-php5.install +macosx/Distribution.xml macosx/Info.plist -macosx/build/graphviz.pmdoc/01local.xml -macosx/build/graphviz.pmdoc/02graphviz.xml +macosx/build/ tclpkg/gv/META.gv +stamp-h1 # Files generated by make *.ih @@ -150,6 +155,7 @@ lib/common/htmlparse.output lib/common/svgcolor_lib lib/expr/exparse.c lib/expr/exparse.h +lib/expr/exparse.output lib/vpsc/pairingheap/.dirstamp plugin/xlib/vimdot diff --git a/CMakeLists.txt b/CMakeLists.txt index f4b41c47a2c3b9dcb2c243623468860eaee10d38..7c0a5cd682328d78583c6bb43b0b49c7b5e7600f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -362,6 +362,12 @@ include(CPack) include(CTest) # ======================= Specify subdirectories to build ====================== +if(APPLE) + set(CMAKE_OSX_ARCHITECTURES "arm64" "x86_64") + set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") + set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) + add_subdirectory(macosx) +endif() add_subdirectory(contrib/diffimg) add_subdirectory(contrib/prune) add_subdirectory(graphs) @@ -389,5 +395,4 @@ file(GLOB pcfiles "${CMAKE_CURRENT_BINARY_DIR}/*.pc") foreach(file "${pcfiles}") install(FILES ${file} DESTINATION "${PKGCONFIG_DIR}") endforeach(file) - feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/Makefile.am b/Makefile.am index 21cecb065ecd82f4e1c535aa926fbbf6272ee0ab..1b85a11b13c8cf656b61d529eef4e862367ebfd8 100644 --- a/Makefile.am +++ b/Makefile.am @@ -54,6 +54,11 @@ deb: dist .PHONY: pkg pkg: dist - tar xzf graphviz-$(VERSION).tar.gz && make -C graphviz-$(VERSION)/macosx/build && mv graphviz-$(VERSION)/macosx/build/graphviz-*.pkg . + (dir=`mktemp -d` ;\ + tar xzf graphviz-$(VERSION).tar.gz -C $${dir} --strip-components 1 ;\ + make -C $${dir}/macosx -f package.mk ;\ + mv $${dir}/graphviz-*.pkg . ;\ + rm -rf $${dir}\ +) DISTCLEANFILES = config.cache builddate.h FEATURE/* graphviz-$(VERSION)* diff --git a/ci/build.sh b/ci/build.sh index 30c7e4214dcea376d2702a6124356cee5658897e..6a278e0264be41d5b0ea7263ae4711b1ad59ef34 100755 --- a/ci/build.sh +++ b/ci/build.sh @@ -42,6 +42,16 @@ if [ "${build_system}" = "cmake" ]; then fi elif [[ "${OSTYPE}" =~ "darwin" ]]; then mv build/*.zip ${DIR}/ + mkdir build_package + pushd build_package + cmake --log-level=VERBOSE --warn-uninitialized -Werror=dev \ + --install-prefix=/Applications/Graphviz.app/Contents/Resources \ + ${CMAKE_OPTIONS:-} .. + cmake --build . + DESTDIR=${PWD}/macosx/Destdir cmake --install . + DESTDIR=${PWD}/macosx/Destdir make -C macosx pkg + mv graphviz.pkg ${DIR}/ + popd elif [ "${OSTYPE}" = "msys" ]; then mv build/*.zip ${DIR}/ mv build/*.exe ${DIR}/ @@ -85,7 +95,8 @@ else fi elif [[ "${OSTYPE}" =~ "darwin" ]]; then ./autogen.sh - ./configure --prefix=$( pwd )/build --with-quartz=yes + ./configure --prefix=$( pwd )/build + make pkg make make install tar cfz ${DIR}/graphviz-${GV_VERSION}-${ARCH}.tar.gz --options gzip:compression-level=9 build diff --git a/configure.ac b/configure.ac index e3a65a5fa3f2495cd26e63fc8222bddbac1ec4c9..43ec9048f8437a827daf1c6052fec6acc5a624a0 100644 --- a/configure.ac +++ b/configure.ac @@ -155,6 +155,7 @@ AC_DEFINE_UNQUOTED(PATHSEPARATOR,"$PATHSEPARATOR",[Path separator character.]) AM_CONDITIONAL(WITH_WIN32, [test "$UWIN" = "yes" -o "$CYGWIN" = "yes" -o "$MINGW32" = "yes"]) AM_CONDITIONAL(WITH_CYGWIN, [test "$CYGWIN" = "yes"]) AM_CONDITIONAL(WITH_MINGW, [test "$MINGW32" = "yes"]) +AM_CONDITIONAL(WITH_DARWIN, [test "$DARWIN" = "yes"]) DEFAULT_DPI=96 AC_DEFINE_UNQUOTED(DEFAULT_DPI,$DEFAULT_DPI,Default DPI.) @@ -1759,23 +1760,33 @@ AM_CONDITIONAL([WITH_QT], [test "$use_qt" = "Yes"]) dnl ----------------------------------- dnl INCLUDES and LIBS for QUARTZ -AC_ARG_WITH(quartz, - [AS_HELP_STRING([--with-quartz=no],[Quartz framework (Mac OS X)])], - [], [with_quartz=no]) - -if test "$with_quartz" != "yes"; then - use_quartz="No (disabled by default - Mac only)" -else - if test -d "/System/Library/Frameworks/ApplicationServices.framework"; then - use_quartz="Yes" - QUARTZ_CFLAGS='' - QUARTZ_LIBS='-framework ApplicationServices' - AC_SUBST([QUARTZ_CFLAGS]) - AC_SUBST([QUARTZ_LIBS]) - else - use_quartz="No (missing ApplicationServices.framework)" - fi -fi +case "${host_os}" in + *darwin* ) + AC_ARG_WITH(quartz, + [AS_HELP_STRING([--with-quartz=yes],[Quartz framework (Mac OS X)])], + [],[with_quartz=yes]) + case "$with_quartz" in + yes ) + if test -d "/System/Library/Frameworks/ApplicationServices.framework"; then + use_quartz="Yes" + QUARTZ_CFLAGS='' + QUARTZ_LIBS='-framework ApplicationServices' + AC_SUBST([QUARTZ_CFLAGS]) + AC_SUBST([QUARTZ_LIBS]) + else + use_quartz="No (missing ApplicationServices.framework)" + fi + ;; + * ) + use_quartz="No (disabled)" + ;; + esac + ;; + * ) + with_quartz=no + use_quartz="No (disabled by default - Mac only)" + ;; +esac AM_CONDITIONAL(WITH_QUARTZ, [test "$use_quartz" = "Yes"]) dnl ----------------------------------- @@ -2188,9 +2199,8 @@ AC_CONFIG_FILES(Makefile lib/xdot/libxdot.pc lib/topfish/Makefile lib/glcomp/Makefile + macosx/Distribution.xml macosx/Info.plist - macosx/build/graphviz.pmdoc/01local.xml - macosx/build/graphviz.pmdoc/02graphviz.xml plugin/Makefile plugin/core/Makefile plugin/devil/Makefile diff --git a/macosx/CMakeLists.txt b/macosx/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..ec4b5dea8aa7208952b8fde9dc1edc0584f30ba5 --- /dev/null +++ b/macosx/CMakeLists.txt @@ -0,0 +1,60 @@ +find_program(XCODEBUILD NAMES xcodebuild) +find_program(PKGBUILD NAMES pkgbuild) +find_program(PRODUCTBUILD NAMES productbuild) + +set(GV_PKG ${CMAKE_BINARY_DIR}/graphviz.pkg) + +set(PREFIX ${CMAKE_INSTALL_PREFIX}) +file(GLOB_RECURSE sources "*.m") +file(GLOB_RECURSE headers "*.h") +file(GLOB_RECURSE ibfiles "*.xib") + +configure_file(Info.plist.in ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist @ONLY) +configure_file(Distribution.xml.in Distribution.xml @ONLY) +file(GENERATE + OUTPUT Scripts/postinstall + CONTENT "#!/bin/sh +logger -is -t \"Graphviz Install\" \"register dot plugins\" +${PREFIX}/bin/dot -c +echo \"${PREFIX}/bin\" >/etc/paths.d/graphviz +" + FILE_PERMISSIONS + OWNER_READ OWNER_WRITE OWNER_EXECUTE + GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE +) + +add_custom_target(pkg + COMMENT "Built macOS Installer Package" + DEPENDS ${GV_PKG} +) + +add_custom_command(OUTPUT ${GV_PKG} + COMMENT "Build macOS Installer Package" + DEPENDS + ${headers} + ${sources} + ${ibfiles} + $(DESTDIR)${PREFIX}/bin/dot + ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist + ${CMAKE_CURRENT_SOURCE_DIR}/Component.plist + Distribution.xml + Scripts/postinstall + COMMAND ${XCODEBUILD} + -project ${CMAKE_CURRENT_SOURCE_DIR}/graphviz.xcodeproj + install + ARCHS="${CMAKE_OSX_ARCHITECTURES}" + DSTROOT=$(DESTDIR) + LIBRARY_SEARCH_PATHS=${CMAKE_INSTALL_RPATH} + LD_RUNPATH_SEARCH_PATHS=${CMAKE_INSTALL_RPATH} + COMMAND ${PKGBUILD} + --root $(DESTDIR) + --scripts ${CMAKE_CURRENT_BINARY_DIR}/Scripts + --identifier com.att.graphviz + --component-plist ${CMAKE_CURRENT_SOURCE_DIR}/Component.plist + ${CMAKE_CURRENT_BINARY_DIR}/app.pkg + COMMAND ${PRODUCTBUILD} + --package-path ${CMAKE_CURRENT_BINARY_DIR} + --distribution ${CMAKE_CURRENT_BINARY_DIR}/Distribution.xml + ${GV_PKG} +) diff --git a/macosx/Component.plist b/macosx/Component.plist new file mode 100644 index 0000000000000000000000000000000000000000..0c62c4bafb53fa63d89e6f491ee50ac87674ded3 --- /dev/null +++ b/macosx/Component.plist @@ -0,0 +1,18 @@ + + + + + + BundleHasStrictIdentifier + + BundleIsRelocatable + + BundleIsVersionChecked + + BundleOverwriteAction + upgrade + RootRelativeBundlePath + Applications/Graphviz.app + + + diff --git a/macosx/Distribution.xml.in b/macosx/Distribution.xml.in new file mode 100644 index 0000000000000000000000000000000000000000..2cd04808a8f474803e5f33288f9deaeb960a9e35 --- /dev/null +++ b/macosx/Distribution.xml.in @@ -0,0 +1,46 @@ + + + + Graphviz + + + + + + + + + + + + app.pkg + + + diff --git a/macosx/build/English.lproj/License.rtf b/macosx/English.lproj/License.rtf similarity index 100% rename from macosx/build/English.lproj/License.rtf rename to macosx/English.lproj/License.rtf diff --git a/macosx/build/Makefile.leopard b/macosx/build/Makefile.leopard deleted file mode 100644 index dc63327471e78bea83c2c5523534410b70d1bc32..0000000000000000000000000000000000000000 --- a/macosx/build/Makefile.leopard +++ /dev/null @@ -1,68 +0,0 @@ -# tools - -MAKE=make -PACKAGEMAKER=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker -XCODEBUILD=xcodebuild -PMSURVEY=$(CURDIR)/pmsurvey - -# prefix - -PREFIX=$(HOME)/FIX/leopard - -# base - -GV_DIR=../.. -DOT=dot - -# -# graphviz -# - -graphviz.pkg: usr/local/bin/$(DOT) graphviz.pmdoc/02graphviz-contents.xml postinstall - @echo - @echo PACKAGING GRAPHVIZ... - @echo - "$(PACKAGEMAKER)" --verbose --doc graphviz.pmdoc --out $@ - -graphviz.pmdoc/02graphviz-contents.xml: Release/Graphviz.app - @echo - @echo SURVEYING GRAPHVIZ... - @echo - "$(PMSURVEY)" "$(CURDIR)/Release/Graphviz.app" >$@ - -usr/local/bin/$(DOT): $(GV_DIR)/cmd/dot/.libs/$(DOT) - @echo - @echo INSTALLING GRAPHVIZ... - @echo - $(MAKE) DESTDIR=$(CURDIR) -C $(GV_DIR) install-strip - rm -rf usr/local/lib/graphviz/tcl/libtcldot_builtin.* - cp $(PREFIX)/bin/fc-cache usr/local/bin/gv-fc-cache - -Release/Graphviz.app: ../*.m ../*.h $(GV_DIR)/cmd/dot/.libs/$(DOT) - @echo - @echo BUILDING GRAPHVIZ GUI... - @echo - "$(XCODEBUILD)" -project ../graphviz.xcodeproj -configuration Release - -postinstall: - echo "#!/bin/sh" >$@ - echo >>$@ - echo "/usr/local/bin/dot -c" >>$@ - make -n -C ../../tclpkg install-data-hook >>$@ - echo "arch -arch ppc -arch i386 /usr/local/bin/gv-fc-cache" >>$@ - echo 'if test `sysctl -n hw.cpu64bit_capable` = 1; then arch -arch ppc64 -arch x86_64 /usr/local/bin/gv-fc-cache; fi' >>$@ - -$(GV_DIR)/cmd/dot/.libs/$(DOT): $(GV_DIR)/Makefile - @echo - @echo MAKING GRAPHVIZ... - @echo - if [[ -e $@ ]]; then $(MAKE) -C $(GV_DIR) clean; fi - $(MAKE) -C $(GV_DIR)/tclpkg/tclstubs - $(MAKE) -C $(GV_DIR) - -$(GV_DIR)/Makefile: $(GV_DIR)/configure - @echo - @echo CONFIGURING GRAPHVIZ... - @echo -# add ppc and ppc64 below if you want them - cd $(GV_DIR) && ./configure --disable-dependency-tracking --with-smyrna=no --enable-swig=no --with-ipsepcola --with-quartz CFLAGS="-O2 -arch ppc -arch ppc64 -arch i386 -arch x86_64 -I$(PREFIX)/include" CXXFLAGS="-O2 -arch ppc -arch ppc64 -arch i386 -arch x86_64 -I$(PREFIX)/include" OBJCFLAGS="-O2 -arch ppc -arch ppc64 -arch i386 -arch x86_64 -I$(PREFIX)/include" LDFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -L$(PREFIX)/lib -Wl,-dead_strip" GDLIB_CONFIG="$(PREFIX)/bin/gdlib-config" PKG_CONFIG="$(PREFIX)/bin/pkg-config" PKG_CONFIG_PATH="$(PREFIX)/lib/pkgconfig:/usr/X11/lib/pkgconfig" diff --git a/macosx/build/Makefile.lion b/macosx/build/Makefile.lion deleted file mode 100644 index 72ca1a5405399af5f623d8dfb79e15ef6d96859a..0000000000000000000000000000000000000000 --- a/macosx/build/Makefile.lion +++ /dev/null @@ -1,82 +0,0 @@ -# tools - -MAKE=make -PACKAGEMAKER=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker -XCODEBUILD=xcodebuild -PMSURVEY=$(CURDIR)/pmsurvey - -# prefix - -PREFIX=/Users/gviz/FIX/Lion.x86_64 - -# base - -GV_DIR=../.. -DOT=dot - -ARCH = - -# -# graphviz -# - -graphviz.pkg: usr/local/bin/$(DOT) graphviz.pmdoc/02graphviz-contents.xml postinstall - @echo - @echo PACKAGING GRAPHVIZ... - @echo - "$(PACKAGEMAKER)" --verbose --doc graphviz.pmdoc --out $@ - -graphviz.pmdoc/02graphviz-contents.xml: Release/Graphviz.app - @echo - @echo SURVEYING GRAPHVIZ... - @echo - "$(PMSURVEY)" "$(CURDIR)/Release/Graphviz.app" >$@ - -usr/local/bin/$(DOT): $(GV_DIR)/cmd/dot/.libs/$(DOT) - @echo - @echo INSTALLING GRAPHVIZ... - @echo - $(MAKE) DESTDIR=$(CURDIR) -C $(GV_DIR) install-strip - rm -rf usr/local/lib/*.la - rm -rf usr/local/lib/graphviz/*.la - rm -rf usr/local/lib/graphviz/tcl/libtcldot_builtin.* - cp $(PREFIX)/bin/fc-cache usr/local/bin/gv-fc-cache - -Release/Graphviz.app: ../*.m ../*.h $(GV_DIR)/cmd/dot/.libs/$(DOT) - @echo - @echo BUILDING GRAPHVIZ GUI... - @echo - "$(XCODEBUILD)" -project ../graphviz.xcodeproj -configuration Release - -postinstall: - echo "#!/bin/sh" >$@ - echo >>$@ - echo 'if [[ `uname -m` = i386 ]]; then rm /usr/local/lib/graphviz/*pango*; fi' >>$@ - echo "/usr/local/bin/dot -c" >>$@ - # make -n -C ../../tclpkg install-data-hook >>$@ - echo "arch -arch i386 /usr/local/bin/gv-fc-cache" >>$@ - echo 'if test `sysctl -n hw.cpu64bit_capable` = 1; then arch -arch x86_64 /usr/local/bin/gv-fc-cache; fi' >>$@ - -$(GV_DIR)/cmd/dot/.libs/$(DOT): $(GV_DIR)/Makefile - @echo - @echo MAKING GRAPHVIZ... - @echo - if [[ -e $@ ]]; then $(MAKE) -C $(GV_DIR) clean; fi - $(MAKE) -C $(GV_DIR)/tclpkg/tclstubs - $(MAKE) -C $(GV_DIR) - -$(GV_DIR)/Makefile: $(GV_DIR)/configure - @echo - @echo CONFIGURING GRAPHVIZ... - @echo - cd $(GV_DIR) && ./configure --enable-swig=no --disable-dependency-tracking --with-ipsepcola --with-quartz --with-smyrna=no --disable-perl --with-extra-includedir="$(PREFIX)/include" --with-extra-libdir="$(PREFIX)/lib" CFLAGS="-O2 $(ARCH)" CXXFLAGS="-O2 $(ARCH)" OBJCFLAGS="-O2 $(ARCH)" LDFLAGS="$(ARCH) -Wl,-dead_strip" GDLIB_CONFIG="$(PREFIX)/bin/gdlib-config" PKG_CONFIG="$(PREFIX)/bin/pkg-config" PKG_CONFIG_PATH="$(PREFIX)/lib/pkgconfig:/usr/X11/lib/pkgconfig" LIBS="-framework CoreFoundation -framework CoreServices -framework ApplicationServices -fexceptions" - - - -.PHONY: clean -clean: - $(MAKE) -C $(GV_DIR) clean - -.PHONY: distclean -distclean: - $(MAKE) -C $(GV_DIR) distclean diff --git a/macosx/build/Makefile.mountainlion b/macosx/build/Makefile.mountainlion deleted file mode 100644 index b89ae22cb344ebbddb98039ebad20835cf7b4796..0000000000000000000000000000000000000000 --- a/macosx/build/Makefile.mountainlion +++ /dev/null @@ -1,80 +0,0 @@ -# tools - -MAKE=make -PACKAGEMAKER=/Applications/XCode.app/Contents/Applications/PackageMaker.app/Contents/MacOS/PackageMaker -XCODEBUILD=xcodebuild -PMSURVEY=$(CURDIR)/pmsurvey - -# prefix - -PREFIX=/Users/gviz/FIX/MountainLion.x86_64 - -# base - -GV_DIR=../.. -DOT=dot - -ARCH = -arch x86_64 - -# -# graphviz -# - -graphviz.pkg: usr/local/bin/$(DOT) graphviz.pmdoc/02graphviz-contents.xml postinstall - @echo - @echo PACKAGING GRAPHVIZ... - @echo - "$(PACKAGEMAKER)" --verbose --doc graphviz.pmdoc --out $@ - -graphviz.pmdoc/02graphviz-contents.xml: Release/Graphviz.app - @echo - @echo SURVEYING GRAPHVIZ... - @echo - "$(PMSURVEY)" "$(CURDIR)/Release/Graphviz.app" >$@ - -usr/local/bin/$(DOT): $(GV_DIR)/cmd/dot/.libs/$(DOT) - @echo - @echo INSTALLING GRAPHVIZ... - @echo - $(MAKE) DESTDIR=$(CURDIR) -C $(GV_DIR) install-strip - rm -rf usr/local/lib/*.la - rm -rf usr/local/lib/graphviz/*.la - rm -rf usr/local/lib/graphviz/tcl/libtcldot_builtin.* - cp $(PREFIX)/bin/fc-cache usr/local/bin/gv-fc-cache - -Release/Graphviz.app: ../*.m ../*.h $(GV_DIR)/cmd/dot/.libs/$(DOT) - @echo - @echo BUILDING GRAPHVIZ GUI... - @echo - "$(XCODEBUILD)" -project ../graphviz.xcodeproj -configuration Release - -postinstall: - echo "#!/bin/sh" >$@ - echo >>$@ - echo 'if [[ `uname -m` = i386 ]]; then rm /usr/local/lib/graphviz/*pango*; fi' >>$@ - echo "/usr/local/bin/dot -c" >>$@ - # make -n -C ../../tclpkg install-data-hook >>$@ - echo "arch -arch i386 /usr/local/bin/gv-fc-cache" >>$@ - echo 'if test `sysctl -n hw.cpu64bit_capable` = 1; then arch -arch x86_64 /usr/local/bin/gv-fc-cache; fi' >>$@ - -$(GV_DIR)/cmd/dot/.libs/$(DOT): $(GV_DIR)/Makefile - @echo - @echo MAKING GRAPHVIZ... - @echo - if [[ -e $@ ]]; then $(MAKE) -C $(GV_DIR) clean; fi - $(MAKE) -C $(GV_DIR)/tclpkg/tclstubs - $(MAKE) -C $(GV_DIR) - -$(GV_DIR)/Makefile: $(GV_DIR)/configure - @echo - @echo CONFIGURING GRAPHVIZ... - @echo - cd $(GV_DIR) && ./configure --enable-swig=no --disable-dependency-tracking --with-ipsepcola --with-quartz --with-smyrna=no --disable-perl --with-extra-includedir="$(PREFIX)/include" --with-extra-libdir="$(PREFIX)/lib" CFLAGS="-O2 $(ARCH)" CXXFLAGS="-O2 $(ARCH)" OBJCFLAGS="-O2 $(ARCH)" LDFLAGS="$(ARCH) -Wl,-dead_strip" GDLIB_CONFIG="$(PREFIX)/bin/gdlib-config" PKG_CONFIG="$(PREFIX)/bin/pkg-config" PKG_CONFIG_PATH="$(PREFIX)/lib/pkgconfig:/usr/X11/lib/pkgconfig" - -.PHONY: clean -clean: - $(MAKE) -C $(GV_DIR) clean - -.PHONY: distclean -distclean: - $(MAKE) -C $(GV_DIR) distclean diff --git a/macosx/build/Makefile.snowleopard b/macosx/build/Makefile.snowleopard deleted file mode 100644 index a3b0d9e5bb3ef685075c348dc610d0918884ee54..0000000000000000000000000000000000000000 --- a/macosx/build/Makefile.snowleopard +++ /dev/null @@ -1,80 +0,0 @@ -# tools - -MAKE=make -PACKAGEMAKER=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker -XCODEBUILD=xcodebuild -PMSURVEY=$(CURDIR)/pmsurvey - -# prefix - -PREFIX=/Users/gviz/FIX/Darwin.i386 - -# base - -GV_DIR=../.. -DOT=dot - -ARCH = -arch i386 -arch x86_64 - -# -# graphviz -# - -graphviz.pkg: usr/local/bin/$(DOT) graphviz.pmdoc/02graphviz-contents.xml postinstall - @echo - @echo PACKAGING GRAPHVIZ... - @echo - "$(PACKAGEMAKER)" --verbose --doc graphviz.pmdoc --out $@ - -graphviz.pmdoc/02graphviz-contents.xml: Release/Graphviz.app - @echo - @echo SURVEYING GRAPHVIZ... - @echo - "$(PMSURVEY)" "$(CURDIR)/Release/Graphviz.app" >$@ - -usr/local/bin/$(DOT): $(GV_DIR)/cmd/dot/.libs/$(DOT) - @echo - @echo INSTALLING GRAPHVIZ... - @echo - $(MAKE) DESTDIR=$(CURDIR) -C $(GV_DIR) install-strip - rm -rf usr/local/lib/*.la - rm -rf usr/local/lib/graphviz/*.la - rm -rf usr/local/lib/graphviz/tcl/libtcldot_builtin.* - cp $(PREFIX)/bin/fc-cache usr/local/bin/gv-fc-cache - -Release/Graphviz.app: ../*.m ../*.h $(GV_DIR)/cmd/dot/.libs/$(DOT) - @echo - @echo BUILDING GRAPHVIZ GUI... - @echo - "$(XCODEBUILD)" -project ../graphviz.xcodeproj -configuration Release - -postinstall: - echo "#!/bin/sh" >$@ - echo >>$@ - echo 'if [[ `uname -m` = i386 ]]; then rm /usr/local/lib/graphviz/*pango*; fi' >>$@ - echo "/usr/local/bin/dot -c" >>$@ - # make -n -C ../../tclpkg install-data-hook >>$@ - echo "arch -arch i386 /usr/local/bin/gv-fc-cache" >>$@ - echo 'if test `sysctl -n hw.cpu64bit_capable` = 1; then arch -arch x86_64 /usr/local/bin/gv-fc-cache; fi' >>$@ - -$(GV_DIR)/cmd/dot/.libs/$(DOT): $(GV_DIR)/Makefile - @echo - @echo MAKING GRAPHVIZ... - @echo - if [[ -e $@ ]]; then $(MAKE) -C $(GV_DIR) clean; fi - $(MAKE) -C $(GV_DIR)/tclpkg/tclstubs - $(MAKE) -C $(GV_DIR) - -$(GV_DIR)/Makefile: $(GV_DIR)/configure - @echo - @echo CONFIGURING GRAPHVIZ... - @echo - cd $(GV_DIR) && ./configure --enable-swig=no --disable-dependency-tracking --with-ipsepcola --with-quartz --with-smyrna=no --disable-perl --with-extra-includedir="$(PREFIX)/include" --with-extra-libdir="$(PREFIX)/lib" CFLAGS="-O2 $(ARCH)" CXXFLAGS="-O2 $(ARCH)" OBJCFLAGS="-O2 $(ARCH)" LDFLAGS="$(ARCH) -Wl,-dead_strip" GDLIB_CONFIG="$(PREFIX)/bin/gdlib-config" PKG_CONFIG="$(PREFIX)/bin/pkg-config" PKG_CONFIG_PATH="$(PREFIX)/lib/pkgconfig:/usr/X11/lib/pkgconfig" - -.PHONY: clean -clean: - $(MAKE) -C $(GV_DIR) clean - -.PHONY: distclean -distclean: - $(MAKE) -C $(GV_DIR) distclean diff --git a/macosx/build/Makefile.tiger b/macosx/build/Makefile.tiger deleted file mode 100644 index 8f73d4b7b6930dd572e5f284ecc0bba65f66cf92..0000000000000000000000000000000000000000 --- a/macosx/build/Makefile.tiger +++ /dev/null @@ -1,72 +0,0 @@ -# tools - -MAKE=make -PACKAGEMAKER=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker -XCODEBUILD=xcodebuild - -# prefix - -PREFIX=$(HOME)/FIX/tiger - -# arch(s) - -#ARCHS32=-arch i386 -arch ppc -#ARCHS64=-arch x86_64 -arch ppc64 -ARCHS32=-arch i386 -ARCHS64= -ARCHS=$(ARCHS32) $(ARCHS64) - -# base - -GV_DIR=../.. -DOT=dot_static - -# -# graphviz -# - -graphviz.pkg: graphviz.pmdoc usr/local/bin/$(DOT) Release/Graphviz.app postinstall - @echo - @echo PACKAGING GRAPHVIZ... - @echo - "$(PACKAGEMAKER)" --doc graphviz.pmdoc --out $@ - -#usr/local/bin/$(DOT): $(GV_DIR)/cmd/dot/.libs/$(DOT) - -usr/local/bin/$(DOT): $(GV_DIR)/cmd/dot/$(DOT) - @echo - @echo INSTALLING GRAPHVIZ... - @echo - $(MAKE) DESTDIR=$(CURDIR) -C $(GV_DIR) install-strip - rm -rf usr/local/lib/graphviz/tcl/libtcldot_builtin.* - cp $(PREFIX)/bin/fc-cache usr/local/bin/gv-fc-cache - -#Release/Graphviz.app: ../*.m ../*.h $(GV_DIR)/cmd/dot/.libs/$(DOT) - -Release/Graphviz.app: ../*.m ../*.h $(GV_DIR)/cmd/dot/$(DOT) - @echo - @echo BUILDING GRAPHVIZ GUI... - @echo - "$(XCODEBUILD)" -project ../graphviz.xcodeproj -configuration Release - -postinstall: - echo "/usr/local/bin/$(DOT) -c" >$@ - make -n -C ../../tclpkg install-data-hook >>$@ - echo "arch $(ARCHS32) /usr/local/bin/gv-fc-cache" >>$@ - echo 'if test `sysctl -n hw.cpu64bit_capable` = 1; then arch $(ARCHS64) /usr/local/bin/gv-fc-cache; fi' >>$@ - -#$(GV_DIR)/cmd/dot/.libs/$(DOT): $(GV_DIR)/Makefile - -$(GV_DIR)/cmd/dot/$(DOT): $(GV_DIR)/Makefile - @echo - @echo MAKING GRAPHVIZ... - @echo - if [[ -e $@ ]]; then $(MAKE) -C $(GV_DIR) clean; fi - $(MAKE) -C $(GV_DIR)/tclpkg/tclstubs - $(MAKE) -C $(GV_DIR) - -$(GV_DIR)/Makefile: $(GV_DIR)/configure - @echo - @echo CONFIGURING GRAPHVIZ... - @echo - cd $(GV_DIR) && ./configure --disable-shared --enable-static --disable-dependency-tracking --with-ipsepcola --without-quartz CFLAGS="-O2 $(ARCHS) -I$(PREFIX)/include" CXXFLAGS="-O2 $(ARCHS) -I$(PREFIX)/include" OBJCFLAGS="-O2 $(ARCHS) -I$(PREFIX)/include" LDFLAGS="$(ARCHS) -L$(PREFIX)/lib -Wl,-dead_strip" GDLIB_CONFIG="$(PREFIX)/bin/gdlib-config" PKG_CONFIG="$(PREFIX)/bin/pkg-config" PKG_CONFIG_PATH="$(PREFIX)/lib/pkgconfig:/usr/X11/lib/pkgconfig" LIBS="-framework CoreFoundation -framework CoreServices -framework ApplicationServices -fexceptions" diff --git a/macosx/build/graphviz.help.helpindex.lion b/macosx/build/graphviz.help.helpindex.lion deleted file mode 100644 index b2ce8579f48e988c20931c86e146b25694bc05af..0000000000000000000000000000000000000000 Binary files a/macosx/build/graphviz.help.helpindex.lion and /dev/null differ diff --git a/macosx/build/graphviz.help.helpindex.snowleopard b/macosx/build/graphviz.help.helpindex.snowleopard deleted file mode 100644 index 9c1f77836d9aa510d29bdcf82df3ae12e2ef9773..0000000000000000000000000000000000000000 Binary files a/macosx/build/graphviz.help.helpindex.snowleopard and /dev/null differ diff --git a/macosx/build/graphviz.pmdoc/01local.xml.in b/macosx/build/graphviz.pmdoc/01local.xml.in deleted file mode 100644 index eda333a0d39f2451bf7f1617d66bb6cf0db3fb96..0000000000000000000000000000000000000000 --- a/macosx/build/graphviz.pmdoc/01local.xml.in +++ /dev/null @@ -1 +0,0 @@ -com.att.graphviz.cli.pkg@VERSION@usr/local/usr/localparentscripts.postinstall.pathinstallFrom.isRelativeTypeinstallTo.pathversioninstallToidentifierpostinstall01local-contents.xml/CVS$/\.svn$/\.cvsignore$/\.cvspass$/\.DS_Store$ diff --git a/macosx/build/graphviz.pmdoc/02graphviz.xml.in b/macosx/build/graphviz.pmdoc/02graphviz.xml.in deleted file mode 100644 index b103888242c3d520fdb5fc5d5cc82b778fe4746d..0000000000000000000000000000000000000000 --- a/macosx/build/graphviz.pmdoc/02graphviz.xml.in +++ /dev/null @@ -1 +0,0 @@ -com.att.graphviz.gui.pkg@VERSION@Release/Graphviz.app/ApplicationsparentrelocatableversioninstallFrom.isRelativeTypeidentifier02graphviz-contents.xmlisRelocatable/CVS$/\.svn$/\.cvsignore$/\.cvspass$/\.DS_Store$ diff --git a/macosx/build/graphviz.pmdoc/index.xml b/macosx/build/graphviz.pmdoc/index.xml deleted file mode 100644 index 2094db3ad6881d8a4207c811d298ad88a9d6f802..0000000000000000000000000000000000000000 --- a/macosx/build/graphviz.pmdoc/index.xml +++ /dev/null @@ -1,9 +0,0 @@ -Graphviz/Users/dperry/Documents/Graphviz.pkgcom.attEnglish.lproj/License.rtf01local.xml02graphviz.xmlproperties.titleproperties.anywhereDomainproperties.systemDomain - diff --git a/macosx/build/pmsurvey b/macosx/build/pmsurvey deleted file mode 100755 index 7c8f158e8968b47f280d8bbe054d5eb29983af63..0000000000000000000000000000000000000000 --- a/macosx/build/pmsurvey +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash - -# set up owner, group and permissions for system or user directories (2nd parameter) -OWNER=root -GROUP=admin -DIRMOD=16893 # drwxrwxr-x -EXEMOD=33277 # -rwxrwxr-x -LINKMOD=41469 # lrwxrwxr-x -FILEMOD=33204 # -rw-rw-r-- - -# recursive survey of directory: -# ignore cvs, svn and Finder crap -# choose file mode depending on what kind of file we got - -survey () -{ - for file in `ls -1A $1` - do - case $file in - CVS | .svn | .cvsignore | .cvspass | .DS_Store ) - ;; - * ) - if [ -d "$1/$file" ] - then - echo "" - survey "$1/$file" - echo "mode" - echo "" - elif [ -x "$1/$file" ] - then - echo "" - echo "mode" - echo "" - elif [ -L "$1/$file" ] - then - echo "" - echo "mode" - echo "" - else - echo "" - echo "mode" - echo "" - fi - ;; - esac - done -} - -# output root XML and top directory, then recursively survey the directories - -echo "" -echo "" -echo "" -survey "$1" -echo "mode" -echo "" -echo "" diff --git a/macosx/graphviz.xcodeproj/project.pbxproj b/macosx/graphviz.xcodeproj/project.pbxproj index 0446bf9087f39eada4e5f4436fd56e1f5ed0320e..6e8c5ae0c786fbb96bb5d17f7c3c902c26e2936f 100644 --- a/macosx/graphviz.xcodeproj/project.pbxproj +++ b/macosx/graphviz.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 584D9AB22B9C0C880009FA29 /* License.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 584D9AB02B9C0C880009FA29 /* License.rtf */; }; 5BCDD0AD141A8E6400E812BC /* graphviz.help in Resources */ = {isa = PBXBuildFile; fileRef = 5BCDD0AA141A8E6400E812BC /* graphviz.help */; }; 8D15AC2F0486D014006FF6A4 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165FFE840EACC02AAC07 /* InfoPlist.strings */; }; 8D15AC310486D014006FF6A4 /* GVDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A37F4ACFDCFA73011CA2CEA /* GVDocument.m */; settings = {ATTRIBUTES = (); }; }; @@ -53,6 +54,7 @@ 2A37F4C4FDCFA73011CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 2A37F4C5FDCFA73011CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 32DBCF750370BD2300C91783 /* graphviz_prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = graphviz_prefix.pch; sourceTree = ""; }; + 584D9AB12B9C0C880009FA29 /* English */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = English; path = English.lproj/License.rtf; sourceTree = ""; }; 5BCDD0AA141A8E6400E812BC /* graphviz.help */ = {isa = PBXFileReference; lastKnownFileType = folder; path = graphviz.help; sourceTree = ""; }; 8D15AC360486D014006FF6A4 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 8D15AC370486D014006FF6A4 /* Graphviz.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Graphviz.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -197,6 +199,7 @@ D8C09DB60D60427200134D03 /* NodeAttributesTemplate.png */, 8D15AC360486D014006FF6A4 /* Info.plist */, 089C165FFE840EACC02AAC07 /* InfoPlist.strings */, + 584D9AB02B9C0C880009FA29 /* License.rtf */, ); name = Resources; sourceTree = ""; @@ -251,6 +254,8 @@ /* Begin PBXProject section */ 2A37F4A9FDCFA73011CA2CEA /* Project object */ = { isa = PBXProject; + attributes = { + }; buildConfigurationList = C05733CB08A9546B00998B17 /* Build configuration list for PBXProject "graphviz" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; @@ -283,6 +288,7 @@ D8969EA80E30DF93002D1876 /* GraphDot.icns in Resources */, D8969EA90E30DF93002D1876 /* GraphGv.icns in Resources */, 8D15AC2F0486D014006FF6A4 /* InfoPlist.strings in Resources */, + 584D9AB22B9C0C880009FA29 /* License.rtf in Resources */, D87989F50D5D287600CCC6E3 /* Attributes.xib in Resources */, D8C09DB90D60427200134D03 /* NodeAttributesTemplate.png in Resources */, D8C09DBA0D60427200134D03 /* GraphAttributesTemplate.png in Resources */, @@ -328,6 +334,14 @@ name = InfoPlist.strings; sourceTree = ""; }; + 584D9AB02B9C0C880009FA29 /* License.rtf */ = { + isa = PBXVariantGroup; + children = ( + 584D9AB12B9C0C880009FA29 /* English */, + ); + name = License.rtf; + sourceTree = ""; + }; D8264B0B0DE81133009D6A44 /* Export.xib */ = { isa = PBXVariantGroup; children = ( @@ -372,7 +386,6 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = graphviz_prefix.pch; INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "$(HOME)/Applications"; LIBRARY_SEARCH_PATHS = ( ../lib/cdt/.libs, ../lib/cgraph/.libs, @@ -380,20 +393,16 @@ ); PRODUCT_NAME = Graphviz; USER_HEADER_SEARCH_PATHS = "../lib/common ../lib/cdt ../lib/pathplan ../lib/cgraph ../lib/gvc"; - WRAPPER_EXTENSION = app; - ZERO_LINK = YES; }; name = Debug; }; C05733C908A9546B00998B17 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = x86_64; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = graphviz_prefix.pch; INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "$(HOME)/Applications"; LIBRARY_SEARCH_PATHS = ( ../lib/cdt/.libs, ../lib/cgraph/.libs, @@ -401,15 +410,13 @@ ); PRODUCT_NAME = Graphviz; USER_HEADER_SEARCH_PATHS = "../lib/common ../lib/cdt ../lib/pathplan ../lib/cgraph ../lib/gvc"; - VALID_ARCHS = "i386 x86_64"; - WRAPPER_EXTENSION = app; }; name = Release; }; C05733CC08A9546B00998B17 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + ALWAYS_SEARCH_USER_PATHS = NO; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; @@ -435,15 +442,13 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.6; - SDKROOT = macosx; }; name = Debug; }; C05733CD08A9546B00998B17 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + ALWAYS_SEARCH_USER_PATHS = NO; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; @@ -469,8 +474,6 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.6; - SDKROOT = macosx; }; name = Release; }; diff --git a/macosx/package.mk b/macosx/package.mk new file mode 100644 index 0000000000000000000000000000000000000000..e7481e8134c65a216d9cc7909c53047df2187a57 --- /dev/null +++ b/macosx/package.mk @@ -0,0 +1,117 @@ +####################################################################### +# Copyright (c) 2011 AT&T Intellectual Property +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: Details at http://www.graphviz.org/ +####################################################################### + +ARCH=$(shell uname -m) +PREFIX=/Applications/Graphviz.app/Contents/Resources +DESTDIR=$(realpath .)/build/Destdir + +# build tools + +MKDIR=mkdir -p +PRODUCTBUILD=productbuild +PKGBUILD=pkgbuild +XCODEBUILD=xcodebuild + +# +# Graphviz.app build variables +# + +GV_DIR=.. +GV_APP=Graphviz.app +GV_PKG=graphviz-$(ARCH).pkg + +# +# targets +# + +$(GV_DIR)/$(GV_PKG): build/$(GV_PKG) + cp $< $@ + @echo + @echo ======================================================== + @echo The macOS installer package built: $(GV_PKG) + @echo + @echo To install locally on this macOS host: + @echo open $(GV_PKG) + @echo + @echo To distribute for installation on other hosts, note + @echo that $(GV_PKG) is not signed, and therefore may + @echo require removing the quarantine extended attribute: + @echo xattr -d com.apple.quarantine $(GV_PKG) + @echo ======================================================== + @echo + +.PHONY: clean +clean: + rm -rf build $(GV_DIR)/$(GV_PKG) + +.PHONY: distclean +distclean: clean + rm -f Distribution.xml Info.plist + +# +# Graphviz App installer package +# +# Note: the check function in Distribution.xml specifies the minimum macOS +# version, which should match the Graphviz.app project's deployment target. +# +# Note: the Component.plist file specifies BundleIsRelocatable = false, +# requiring that the bundle be installed in /Applications. Otherwise, +# the macOS installer may find an existing Graphviz.app registered and +# acceptable. If so, the installer WILL NOT install Graphviz.app into +# /Applications, but DOES set the existing app's user/group to root/wheel!! +# + +build/$(GV_PKG): Distribution.xml build/app.pkg + @echo + @echo BUILDING GRAPHVIZ INSTALLER... + @echo + $(PRODUCTBUILD) --package-path build --distribution $< $@ + +build/app.pkg: Component.plist $(DESTDIR)$(PREFIX)/bin/dot build/Scripts/postinstall + @echo + @echo PACKAGING GRAPHVIZ APP... + @echo + $(PKGBUILD) --root $(DESTDIR) --scripts build/Scripts --identifier com.att.graphviz --component-plist $< $@ + +build/Scripts/postinstall: + @echo + @echo SCRIPTING POSTINSTALL... + @echo + $(MKDIR) $(@D) + echo "#!/bin/sh" >$@ + echo "logger -is -t \"Graphviz Install\" \"register dot plugins\"" >>$@ + echo "$(PREFIX)/bin/dot -c" >>$@ + if [[ $(PREFIX) != /usr/local ]]; then\ + echo 'echo "$(PREFIX)/bin" >/etc/paths.d/graphviz' >>$@ ; fi + chmod 755 $@ + +$(DESTDIR)$(PREFIX)/bin/dot: $(DESTDIR)/Applications/$(GV_APP)/Contents/MacOS/Graphviz + @echo + @echo BUILDING GRAPHVIZ... + @echo + $(MAKE) -C $(GV_DIR) install DESTDIR=$(DESTDIR) + +$(DESTDIR)/Applications/$(GV_APP)/Contents/MacOS/Graphviz: *.m *.h English.lproj/*.xib $(GV_DIR)/cmd/dot/dot + @echo + @echo BUILDING GRAPHVIZ APP... + @echo + $(XCODEBUILD) -project graphviz.xcodeproj install ARCHS=$(ARCH) DSTROOT=$(DESTDIR) + +$(GV_DIR)/cmd/dot/dot: $(GV_DIR)/Makefile + @echo + @echo BUILDING GRAPHVIZ... + @echo + $(MAKE) -C $(GV_DIR) + +$(GV_DIR)/Makefile Distribution.xml: $(GV_DIR)/configure + @echo + @echo CONFIGURING GRAPHVIZ... + @echo + cd $(GV_DIR) && ./configure --prefix=$(PREFIX)