diff options
84 files changed, 0 insertions, 18567 deletions
diff --git a/.bzrignore b/.bzrignore index 114347d66..5bfe4946a 100644 --- a/.bzrignore +++ b/.bzrignore @@ -1,12 +1,8 @@ ./Info.plist ./Makefile ./ABOUT-NLS -./aclocal.m4 -./autom4te.cache -./btool.exe ./build ./build.dep -./build-aux ./compile ./compile.lst ./config.guess @@ -63,44 +59,7 @@ ./CMakeLists.txt.user .deps .dirstamp -Makefile.in doc/Makefile -doc/Makefile.in -m4/codeset.m4 -m4/gettext.m4 -m4/glibc2.m4 -m4/glibc21.m4 -m4/iconv.m4 -m4/intdiv0.m4 -m4/intl.m4 -m4/intldir.m4 -m4/intlmacosx.m4 -m4/intltool.m4 -m4/intmax.m4 -m4/inttypes-pri.m4 -m4/inttypes_h.m4 -m4/lcmessage.m4 -m4/lib-ld.m4 -m4/lib-link.m4 -m4/lib-prefix.m4 -m4/libtool.m4 -m4/lock.m4 -m4/longlong.m4 -m4/ltoptions.m4 -m4/ltsugar.m4 -m4/ltversion.m4 -m4/lt~obsolete.m4 -m4/nls.m4 -m4/po.m4 -m4/printf-posix.m4 -m4/progtest.m4 -m4/size_max.m4 -m4/stdint_h.m4 -m4/uintmax_t.m4 -m4/visibility.m4 -m4/wchar_t.m4 -m4/wint_t.m4 -m4/xsize.m4 packaging/autopackage/default.apspec po/.intltool-merge-cache po/*.gmo @@ -118,35 +77,22 @@ po/remove-potcdate.sin po/Rules-quot po/stamp-it share/Makefile -share/Makefile.in share/attributes/Makefile -share/attributes/Makefile.in share/branding/Makefile share/clipart/Makefile -share/clipart/Makefile.in share/examples/Makefile -share/examples/Makefile.in share/extensions/Barcode/Makefile -share/extensions/Barcode/Makefile.in share/extensions/Makefile -share/extensions/Makefile.in share/extensions/Poly3DObjects/Makefile -share/extensions/Poly3DObjects/Makefile.in share/extensions/alphabet_soup/Makefile -share/extensions/alphabet_soup/Makefile.in share/extensions/ink2canvas/Makefile -share/extensions/ink2canvas/Makefile.in share/extensions/test/Makefile share/extensions/xaml2svg/Makefile -share/extensions/xaml2svg/Makefile.in share/filters/Makefile share/filters/filters.svg.h share/fonts/Makefile -share/fonts/Makefile.in share/gradients/Makefile -share/gradients/Makefile.in share/icons/Makefile -share/icons/Makefile.in share/icons/application/16x16/Makefile share/icons/application/22x22/Makefile share/icons/application/24x24/Makefile @@ -155,31 +101,21 @@ share/icons/application/32x32/Makefile share/icons/application/48x48/Makefile share/icons/application/Makefile share/keys/Makefile -share/keys/Makefile.in share/markers/Makefile -share/markers/Makefile.in share/palettes/Makefile -share/palettes/Makefile.in share/palettes/palettes.h share/patterns/Makefile -share/patterns/Makefile.in share/patterns/patterns.svg.h share/screens/Makefile -share/screens/Makefile.in share/symbols/Makefile -share/symbols/Makefile.in share/symbols/symbols.h share/templates/Makefile -share/templates/Makefile.in share/templates/templates.h share/tutorials/Makefile -share/tutorials/Makefile.in share/ui/Makefile -share/ui/Makefile.in src/.libs/ src/2geom/makefile src/Makefile -src/Makefile.in src/algorithms/makefile src/application/makefile src/bind/makefile diff --git a/Makefile.am b/Makefile.am deleted file mode 100644 index 8ab952a9a..000000000 --- a/Makefile.am +++ /dev/null @@ -1,650 +0,0 @@ -## Process this file with automake to produce Makefile.in - -AUTOMAKE_OPTIONS = foreign - -ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} - -SUBDIRS = src doc share po - -Graphicsdir = $(datadir)/applications -Graphics_in_files = inkscape.desktop.in -Graphics_DATA = $(Graphics_in_files:.desktop.in=.desktop) -@INTLTOOL_DESKTOP_RULE@ - -appdatadir = $(datadir)/appdata -appdata_in_files = inkscape.appdata.xml.in -appdata_DATA = $(appdata_in_files:.xml.in=.xml) -@INTLTOOL_XML_RULE@ - -## dist-hook: -## mkdir $(distdir)/samples -## cp $(srcdir)/samples/*svg $(distdir)/samples -## cp $(srcdir)/samples/*png $(distdir)/samples -## cp $(srcdir)/AUTHORS $(distdir) -## cp $(srcdir)/NEWS $(distdir) - -DISTCHECK_CONFIGURE_FLAGS = --enable-localinstall - -man_MANS = \ - inkscape.1 \ - inkscape.de.1 \ - inkscape.el.1 \ - inkscape.fr.1 \ - inkscape.ja.1 \ - inkscape.sk.1 \ - inkscape.zh_TW.1 \ - inkview.1 - -EXTRA_DIST = \ - acinclude.m4 \ - autogen.sh \ - GPL2.txt \ - GPL3.txt \ - LGPL2.1.txt \ - fix-roff-punct \ - intltool-extract.in \ - intltool-merge.in \ - intltool-update.in \ - $(Graphics_in_files) \ - $(appdata_in_files) \ - po/check-markup \ - utf8-to-roff \ - inkscape.1 \ - inkscape.de.1 \ - inkscape.el.1 \ - inkscape.fr.1 \ - inkscape.ja.1 \ - inkscape.sk.1 \ - inkscape.zh_TW.1 \ - inkscape.pod \ - inkscape.de.pod \ - inkscape.el.pod \ - inkscape.fr.pod \ - inkscape.sk.pod \ - inkscape.zh_TW.pod \ - inkscape.spec.in \ - inkscape.spec \ - Info.plist.in \ - Info.plist \ - buildtool.cpp build.xml build-x64.xml \ - README README.ca.txt README.de.txt README.es.txt README.fr.txt README.it.txt README.osx.txt README.pt_BR.txt README.sk.txt README.sr.txt \ - TRANSLATORS \ - inkscape.png \ - inkscape.ico \ - mingwenv.bat \ - src/helper/sp-marshal.cpp.mingw src/helper/sp-marshal.h.mingw \ - src/2geom/angle.h \ - src/inkscape-manifest.xml src/inkview-manifest.xml \ - src/inkscape-manifest-x64.xml src/inkview-manifest-x64.xml \ - cxxtest/COPYING \ - cxxtest/cxxtestgen.pl \ - cxxtest/cxxtestgen.py \ - cxxtest/cxxtest/Descriptions.cpp \ - cxxtest/cxxtest/Descriptions.h \ - cxxtest/cxxtest/DummyDescriptions.cpp \ - cxxtest/cxxtest/DummyDescriptions.h \ - cxxtest/cxxtest/ErrorFormatter.h \ - cxxtest/cxxtest/ErrorPrinter.h \ - cxxtest/cxxtest/Flags.h \ - cxxtest/cxxtest/GlobalFixture.cpp \ - cxxtest/cxxtest/GlobalFixture.h \ - cxxtest/cxxtest/Gui.h \ - cxxtest/cxxtest/LinkedList.cpp \ - cxxtest/cxxtest/LinkedList.h \ - cxxtest/cxxtest/Mock.h \ - cxxtest/cxxtest/ParenPrinter.h \ - cxxtest/cxxtest/QtGui.h \ - cxxtest/cxxtest/RealDescriptions.cpp \ - cxxtest/cxxtest/RealDescriptions.h \ - cxxtest/cxxtest/Root.cpp \ - cxxtest/cxxtest/SelfTest.h \ - cxxtest/cxxtest/StdHeaders.h \ - cxxtest/cxxtest/StdValueTraits.h \ - cxxtest/cxxtest/StdioFilePrinter.h \ - cxxtest/cxxtest/StdioPrinter.h \ - cxxtest/cxxtest/TeeListener.h \ - cxxtest/cxxtest/TestListener.h \ - cxxtest/cxxtest/TestRunner.h \ - cxxtest/cxxtest/TestSuite.cpp \ - cxxtest/cxxtest/TestSuite.h \ - cxxtest/cxxtest/TestTracker.cpp \ - cxxtest/cxxtest/TestTracker.h \ - cxxtest/cxxtest/ValueTraits.cpp \ - cxxtest/cxxtest/ValueTraits.h \ - cxxtest/cxxtest/Win32Gui.h \ - cxxtest/cxxtest/X11Gui.h \ - cxxtest/cxxtest/YesNoRunner.h \ - packaging/autopackage/default.apspec.in \ - packaging/macosx/README.txt \ - packaging/macosx/Resources/Inkscape-Generic.icns \ - packaging/macosx/Resources/Inkscape.icns \ - packaging/macosx/Resources/MenuBar.nib/classes.nib \ - packaging/macosx/Resources/MenuBar.nib/info.nib \ - packaging/macosx/Resources/MenuBar.nib/objects.xib \ - packaging/macosx/Resources/ProgressWindow.nib/classes.nib \ - packaging/macosx/Resources/ProgressWindow.nib/info.nib \ - packaging/macosx/Resources/ProgressWindow.nib/objects.xib \ - packaging/macosx/Resources/alert_fccache.sh \ - packaging/macosx/Resources/application-gimp-gradient.icns \ - packaging/macosx/Resources/application-illustrator-svg.icns \ - packaging/macosx/Resources/application-illustrator.icns \ - packaging/macosx/Resources/application-pdf.icns \ - packaging/macosx/Resources/application-vnd.corel-draw-compressed.icns \ - packaging/macosx/Resources/application-vnd.corel-draw-template.icns \ - packaging/macosx/Resources/application-vnd.corel-draw.icns \ - packaging/macosx/Resources/application-vnd.ms.xaml.icns \ - packaging/macosx/Resources/application-vnd.wordperfect-graphic.icns \ - packaging/macosx/Resources/bin/gimp-wrapper.sh \ - packaging/macosx/Resources/bin/inkscape \ - packaging/macosx/Resources/etc/fonts/fonts.conf \ - packaging/macosx/Resources/etc/gtk-2.0/gtkrc \ - packaging/macosx/Resources/image-svg+xml-compressed.icns \ - packaging/macosx/Resources/image-svg+xml.icns \ - packaging/macosx/Resources/image-vnd.dxf.icns \ - packaging/macosx/Resources/image-vnd.sk1.icns \ - packaging/macosx/Resources/image-vnd.windows-metafile.icns \ - packaging/macosx/Resources/image-x-eps.icns \ - packaging/macosx/Resources/image-x-ps.icns \ - packaging/macosx/Resources/openDoc \ - packaging/macosx/Resources/script \ - packaging/macosx/Resources/xdg_setup.sh \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/application-exit.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/dialog-information.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-new.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-open-recent.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-open.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-print-preview.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-print.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-properties.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-revert-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-revert-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-save-as.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/document-save.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/drive-harddisk.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-clear.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-copy.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-cut.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-delete.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-find-replace.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-find.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-paste.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-redo-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-redo-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-select-all.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-undo-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/edit-undo-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/folder-remote.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/folder.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-less-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-less-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-more-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-indent-more-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-center.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-fill.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-left.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-justify-right.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-bold.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-italic.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-strikethrough.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/format-text-underline.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-bottom.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-down.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-first-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-first-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-home.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-jump-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-jump-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-last-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-last-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-next-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-next-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-previous-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-previous-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-top.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/go-up.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-caps-lock-warning.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-color-picker.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-connect.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-convert.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-disconnect.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-edit.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-font.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-index.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-landscape.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-portrait.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-reverse-landscape.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-orientation-reverse-portrait.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-page-setup.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-preferences.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-select-color.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-select-font.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-undelete-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/gtk-undelete-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/help-about.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/help-contents.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/image-missing.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/list-add.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/list-remove.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-floppy.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-optical.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-pause.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-start-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-start-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-playback-stop.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-record.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-backward-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-backward-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-forward-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-seek-forward-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-backward-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-backward-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-forward-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/media-skip-forward-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/network-idle.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-error.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-info.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-paused.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/printer-warning.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/process-stop.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/system-run.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/text-x-generic.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/tools-check-spelling.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/user-desktop.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/user-home.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-fullscreen.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-refresh.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-restore.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-sort-ascending.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/view-sort-descending.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/window-close.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-fit-best.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-in.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-original.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/16/zoom-out.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-apply.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-cancel.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-no.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-ok.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/20/gtk-yes.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/20/window-close.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/application-exit.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-high.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-low.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-medium.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/audio-volume-muted.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/dialog-information.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-new.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-open-recent.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-open.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-print-preview.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-print.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-properties.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-revert-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-revert-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-save-as.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/document-save.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/drive-harddisk.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-clear.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-copy.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-cut.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-delete.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-find-replace.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-find.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-paste.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-redo-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-redo-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-select-all.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-undo-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/edit-undo-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/folder-remote.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/folder.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-less-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-less-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-more-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-indent-more-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-center.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-fill.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-left.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-justify-right.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-bold.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-italic.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-strikethrough.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/format-text-underline.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-bottom.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-down.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-first-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-first-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-home.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-jump-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-jump-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-last-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-last-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-next-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-next-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-previous-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-previous-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-top.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/go-up.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-caps-lock-warning.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-color-picker.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-connect.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-convert.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-disconnect.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-edit.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-font.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-index.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-landscape.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-portrait.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-reverse-landscape.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-orientation-reverse-portrait.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-page-setup.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-preferences.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-select-color.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-select-font.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-undelete-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/gtk-undelete-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/help-about.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/help-contents.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/image-missing.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/list-add.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/list-remove.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-floppy.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-optical.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-pause.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-start-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-start-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-playback-stop.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-record.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-backward-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-backward-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-forward-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-seek-forward-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-backward-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-backward-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-forward-ltr.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/media-skip-forward-rtl.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/network-idle.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-error.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-info.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-paused.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/printer-warning.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/process-stop.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/system-run.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/text-x-generic.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/tools-check-spelling.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/user-desktop.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/user-home.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-fullscreen.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-refresh.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-restore.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-sort-ascending.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/view-sort-descending.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/window-close.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-fit-best.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-in.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-original.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/24/zoom-out.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/32/gtk-dnd-multiple.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/32/gtk-dnd.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-error.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-information.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-password.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-question.png \ - packaging/macosx/Resources-extras/src/icons/stock-icons/48/dialog-warning.png \ - packaging/macosx/ScriptExec/English.lproj/InfoPlist.strings \ - packaging/macosx/ScriptExec/English.lproj/main.nib/classes.nib \ - packaging/macosx/ScriptExec/English.lproj/main.nib/info.nib \ - packaging/macosx/ScriptExec/English.lproj/main.nib/objects.xib \ - packaging/macosx/ScriptExec/Info.plist \ - packaging/macosx/ScriptExec/MenuBar.nib/classes.nib \ - packaging/macosx/ScriptExec/MenuBar.nib/info.nib \ - packaging/macosx/ScriptExec/MenuBar.nib/objects.xib \ - packaging/macosx/ScriptExec/ScriptExec.xcodeproj/project.pbxproj \ - packaging/macosx/ScriptExec/ScriptExec_Prefix.pch \ - packaging/macosx/ScriptExec/launcher-quartz-no-macintegration.sh \ - packaging/macosx/ScriptExec/main.c \ - packaging/macosx/ScriptExec/openDoc \ - packaging/macosx/ScriptExec/script \ - packaging/macosx/ScriptExec/version.plist \ - packaging/macosx/create-stock-icon-theme.sh \ - packaging/macosx/dmg_background.png \ - packaging/macosx/dmg_background.svg \ - packaging/macosx/dmg_set_style.scpt \ - packaging/macosx/inkscape.ds_store \ - packaging/macosx/osx-app.sh \ - packaging/macosx/osx-build.sh \ - packaging/macosx/osx-dmg.sh \ - packaging/macosx/ports/_resources/port1.0/group/python-1.0.tcl \ - packaging/macosx/ports/devel/dbus-python/Portfile \ - packaging/macosx/ports/devel/inkscape-packaging/Portfile \ - packaging/macosx/ports/lang/python25/Portfile \ - packaging/macosx/ports/lang/python25/files/_localemodule.c.ed \ - packaging/macosx/ports/lang/python25/files/locale.py.ed \ - packaging/macosx/ports/lang/python25/files/patch-64bit.diff \ - packaging/macosx/ports/lang/python25/files/patch-FSIORefNum.diff \ - packaging/macosx/ports/lang/python25/files/patch-Lib-cgi.py.diff \ - packaging/macosx/ports/lang/python25/files/patch-Lib-distutils-dist.py.diff \ - packaging/macosx/ports/lang/python25/files/patch-Makefile.pre.in.diff \ - packaging/macosx/ports/lang/python25/files/patch-Misc-setuid-prog.c.diff \ - packaging/macosx/ports/lang/python25/files/patch-Modules-posixmodule.c.diff \ - packaging/macosx/ports/lang/python25/files/patch-configure.diff \ - packaging/macosx/ports/lang/python25/files/patch-fwrapv.diff \ - packaging/macosx/ports/lang/python25/files/patch-libedit.diff \ - packaging/macosx/ports/lang/python25/files/patch-mac_ver.diff \ - packaging/macosx/ports/lang/python25/files/patch-pyconfig.h.in.diff \ - packaging/macosx/ports/lang/python25/files/patch-setup.py-disabled_modules.diff \ - packaging/macosx/ports/lang/python25/files/patch-setup.py.diff \ - packaging/macosx/ports/lang/python25/files/pyconfig.ed \ - packaging/macosx/ports/lang/python25/files/pyconfig.h-universal.ed \ - packaging/macosx/ports/lang/python25/files/python25 \ - packaging/macosx/ports/lang/python26/Portfile \ - packaging/macosx/ports/lang/python26/files/patch-Lib-cgi.py.diff \ - packaging/macosx/ports/lang/python26/files/patch-Lib-distutils-dist.py.diff \ - packaging/macosx/ports/lang/python26/files/patch-Mac-IDLE-Makefile.in.diff \ - packaging/macosx/ports/lang/python26/files/patch-Mac-Makefile.in.diff \ - packaging/macosx/ports/lang/python26/files/patch-Mac-PythonLauncher-Makefile.in.diff \ - packaging/macosx/ports/lang/python26/files/patch-Mac-Tools-Doc-setup.py.diff \ - packaging/macosx/ports/lang/python26/files/patch-Makefile.pre.in.diff \ - packaging/macosx/ports/lang/python26/files/patch-setup.py.diff \ - packaging/macosx/ports/lang/python26/files/pyconfig.ed \ - packaging/macosx/ports/lang/python26/files/python26 \ - packaging/macosx/ports/lang/python26/files/version.plist \ - packaging/macosx/ports/python/py-Pillow/Portfile \ - packaging/macosx/ports/python/py-Pillow/files/patch-setup.py.diff \ - packaging/macosx/ports/python/py-gobject/Portfile \ - packaging/macosx/ports/python/py-gobject/files/00git_class_init.patch \ - packaging/macosx/ports/python/py-gobject/files/00git_fix_qdata_warning.patch \ - packaging/macosx/ports/python/py-gobject/files/00git_gio_flag_type.patch \ - packaging/macosx/ports/python/py-gobject/files/patch-pygi-info.c-p1.diff \ - packaging/macosx/ports/python/py-numpy/Portfile \ - packaging/macosx/ports/python/py-numpy/files/patch-f2py_setup.py.diff \ - packaging/macosx/ports/python/py-numpy/files/patch-fcompiler_g95.diff \ - packaging/macosx/ports/python/py-numpy/files/patch-numpy_core_setup.py.diff \ - packaging/macosx/ports/python/py-numpy/files/patch-numpy_linalg_setup.py.diff \ - packaging/macosx/ports/python/py-numpy/files/wrapper-template \ - packaging/macosx/ports/python/py-sk1libs/Portfile \ - packaging/macosx/ports/python/py-sk1libs/files/patch-src-imaging-libimagingft-_imagingft.c.diff \ - packaging/macosx/ports/python/py-sk1libs/files/patch-src-utils-fs.py.diff \ - packaging/macosx/ports/python/py-uniconvertor/Portfile \ - packaging/macosx/ports/python/py25-Pillow/Portfile \ - packaging/macosx/ports/python/py25-Pillow/files/patch-_imagingft.c.diff \ - packaging/macosx/ports/python/py25-Pillow/files/patch-setup.py-v1.7.8.diff \ - packaging/macosx/ports/python/py25-lxml/Portfile \ - packaging/macosx/ports/python/py25-nose/Portfile \ - packaging/macosx/ports/python/py25-nose/files/nosetests24 \ - packaging/macosx/ports/python/py25-nose/files/nosetests25 \ - packaging/macosx/ports/python/py25-nose/files/nosetests26 \ - packaging/macosx/ports/python/py25-nose/files/nosetests27 \ - packaging/macosx/ports/python/py25-nose/files/nosetests31 \ - packaging/macosx/ports/python/py25-nose/files/nosetests32 \ - packaging/macosx/ports/python/py25-nose/files/nosetests33 \ - packaging/macosx/ports/python/py25-nose/files/nosetests34 \ - packaging/macosx/ports/python/py25-numpy/Portfile \ - packaging/macosx/ports/python/py25-numpy/files/patch-f2py_setup.py.diff \ - packaging/macosx/ports/python/py25-numpy/files/patch-fcompiler_g95.diff \ - packaging/macosx/ports/python/py25-numpy/files/patch-numpy_distutils_fcompiler___init__.py.diff \ - packaging/macosx/ports/python/py25-numpy/files/patch-numpy_linalg_setup.py.diff \ - packaging/macosx/ports/python/py25-numpy/files/patch-setup.py.diff \ - packaging/macosx/ports/python/py25-numpy/files/wrapper-template \ - packaging/macosx/ports/python/py25-setuptools/Portfile \ - packaging/macosx/ports/python/py26-cython/Portfile \ - packaging/macosx/ports/python/py26-cython/files/cython24 \ - packaging/macosx/ports/python/py26-cython/files/cython25 \ - packaging/macosx/ports/python/py26-cython/files/cython26 \ - packaging/macosx/ports/python/py26-cython/files/cython27 \ - packaging/macosx/ports/python/py26-cython/files/cython31 \ - packaging/macosx/ports/python/py26-cython/files/cython32 \ - packaging/macosx/ports/python/py26-cython/files/cython33 \ - packaging/macosx/ports/python/py26-cython/files/cython34 \ - packaging/macosx/ports/python/py26-lxml/Portfile \ - packaging/macosx/ports/python/py26-nose/Portfile \ - packaging/macosx/ports/python/py26-nose/files/nosetests24 \ - packaging/macosx/ports/python/py26-nose/files/nosetests25 \ - packaging/macosx/ports/python/py26-nose/files/nosetests26 \ - packaging/macosx/ports/python/py26-nose/files/nosetests27 \ - packaging/macosx/ports/python/py26-nose/files/nosetests31 \ - packaging/macosx/ports/python/py26-nose/files/nosetests32 \ - packaging/macosx/ports/python/py26-nose/files/nosetests33 \ - packaging/macosx/ports/python/py26-nose/files/nosetests34 \ - packaging/macosx/ports/python/py26-numpy/Portfile \ - packaging/macosx/ports/python/py26-numpy/files/patch-f2py_setup.py.diff \ - packaging/macosx/ports/python/py26-numpy/files/patch-fcompiler_g95.diff \ - packaging/macosx/ports/python/py26-numpy/files/patch-numpy_core_setup.py.diff \ - packaging/macosx/ports/python/py26-numpy/files/patch-numpy_linalg_setup.py.diff \ - packaging/macosx/ports/python/py26-numpy/files/wrapper-template \ - packaging/macosx/ports/python/py26-setuptools/Portfile \ - packaging/win32/inkscape.nsi \ - packaging/win32/inkscape.nsi.uninstall \ - packaging/win32/languages/Breton.nsh \ - packaging/win32/languages/Catalan.nsh \ - packaging/win32/languages/Czech.nsh \ - packaging/win32/languages/Danish.nsh \ - packaging/win32/languages/Dutch.nsh \ - packaging/win32/languages/English.nsh \ - packaging/win32/languages/Finnish.nsh \ - packaging/win32/languages/French.nsh \ - packaging/win32/languages/Galician.nsh \ - packaging/win32/languages/German.nsh \ - packaging/win32/languages/Greek.nsh \ - packaging/win32/languages/Hebrew.nsh \ - packaging/win32/languages/Indonesian.nsh \ - packaging/win32/languages/Icelandic.nsh \ - packaging/win32/languages/Italian.nsh \ - packaging/win32/languages/Japanese.nsh \ - packaging/win32/languages/Polish.nsh \ - packaging/win32/languages/Portuguese.nsh \ - packaging/win32/languages/PortugueseBR.nsh \ - packaging/win32/languages/Romanian.nsh \ - packaging/win32/languages/Russian.nsh \ - packaging/win32/languages/Slovak.nsh \ - packaging/win32/languages/Slovenian.nsh \ - packaging/win32/languages/Spanish.nsh \ - packaging/win32/languages/SimpChinese.nsh \ - packaging/win32/languages/TradChinese.nsh \ - packaging/win32/languages/Ukrainian.nsh \ - packaging/win32/header.bmp \ - packaging/win32/header.svg \ - packaging/win32/AdvUninstLog.nsh \ - packaging/win32/AdvUninstLog.txt \ - packaging/win32/ifexist.nsh \ - packaging/win32/md5dll.dll \ - packaging/win32/md5dll.txt \ - packaging/win32/messagebox.dll \ - packaging/win32/MessageBox.txt \ - packaging/win32/RequireLatestNSIS.nsh \ - packaging/win32/VersionCompleteXXXX.nsh \ - packaging/win32/welcomefinish.bmp \ - packaging/win32/welcomefinish.svg \ - packaging/win32/portable/help.html \ - packaging/win32/portable/readme.packaging.txt \ - packaging/win32/portable/App/readme.txt \ - packaging/win32/portable/App/AppInfo/appicon.ico \ - packaging/win32/portable/App/AppInfo/appicon_16.png \ - packaging/win32/portable/App/AppInfo/appicon_32.png \ - packaging/win32/portable/App/AppInfo/appinfo.ini \ - packaging/win32/portable/App/AppInfo/installer.ini \ - packaging/wix/README \ - packaging/wix/inkscape.wxs \ - packaging/wix/gpl-2.0.rtf \ - packaging/wix/install.bat \ - packaging/wix/files.py \ - packaging/wix/version.py \ - packaging/wix/next_uuid.py \ - packaging/wix/wixenv.bat \ - packaging/wix/Bitmaps/banner.bmp \ - packaging/wix/Bitmaps/banner.svg \ - packaging/wix/Bitmaps/dialog.bmp \ - packaging/wix/Bitmaps/dialog.svg \ - po/inkscape.pot \ - po/update_po_files.sh \ - src/inkscape.rc src/inkview.rc src/inkscape-x64.rc src/inkview-x64.rc - -# We want the built inkscape.1 to go in the distributed .tar.gz so -# that .tar.gz users don't need a full perl distribution to get a man -# page. - -DISTCLEANFILES = inkscape.appdata.xml \ - inkscape.desktop \ - intltool-extract \ - intltool-merge \ - intltool-update - -#ACLOCAL_AMFLAGS = -I m4 - -SUFFIXES = .pod .1 -inkscape.1 inkscape.de.1 inkscape.el.1 inkscape.fr.1 inkscape.ja.1 inkscape.sk.1 inkscape.zh_TW.1 : fix-roff-punct Makefile.am AUTHORS -.pod.1: - set -e; \ - d=`sed -n 's,/,-,g;s,.*\$$[D]ate: \(..........\).*,\1,p' $<`; \ - pod2man --utf8 $< \ - | sed 's/^\.TH .*/.TH INKSCAPE 1 "'"$$d"'" "Inkscape-$(VERSION)" "Inkscape"/' \ - | perl -pe 'if (/^\[\% .*INCLUDE.*AUTHORS.* \%\]/) { open(FOO, "$(srcdir)/AUTHORS");$$_ = join(",\n", map { chomp; $$_ } <FOO>) . "\n"; }' \ - | perl $(srcdir)/fix-roff-punct \ - > tmp.$$$$ \ - && mv -f tmp.$$$$ $@ -# ut8-to-roff removed (groff now supports utf8). -# | perl -CI $(srcdir)/utf8-to-roff \ -# man 7 groff_char for further remarks on charset encoding for man pages. - -po/inkscape.pot: - (cd $(srcdir)/po ; intltool-update --pot --output-file=$(distdir)/po/inkscape.pot) - -mande_DATA = inkscape.de.1 -mandedir = $(mandir)/de/man1 - -manel_DATA = inkscape.el.1 -maneldir = $(mandir)/el/man1 - -manfr_DATA = inkscape.fr.1 -manfrdir = $(mandir)/fr/man1 - -manja_DATA = inkscape.ja.1 -manjadir = $(mandir)/ja/man1 - -mansk_DATA = inkscape.ja.1 -manskdir = $(mandir)/sk/man1 - -manzhtw_DATA = inkscape.zh_TW.1 -manzhtwdir = $(mandir)/zh_TW/man1 - -#.PHONY: warn_markup -noinst_DATA = warn_markup -warn_markup: - @if perl $(srcdir)/po/check-markup $(srcdir)/po/*.po; [ $$? = 1 ]; then \ - echo "WARNING: Bad markup found in translations. Please consider fixing the above problems." >&2; \ - fi - -.PHONY: check_markup -check_DATA = check_markup -check_markup: - perl $(srcdir)/po/check-markup $(srcdir)/po/*.po || [ $$? = 127 ] -# # `make check' probably shouldn't require perl to be installed, hence ignoring 127. - -distcheck-hook: - perl $(srcdir)/po/check-markup $(srcdir)/po/*.po - -test-check-markup: - if perl -e 42; then \ - perl $(srcdir)/po/check-markup $(srcdir)/po/bad.po.test 2>&1 \ - | diff $(srcdir)/po/bad.po.test.exp -; \ - fi @@ -32,14 +32,6 @@ Inkscape version 0.92 and newer can be build using cmake: make make install -We also still include autoconf in 0.92 as an alternate build system, in -case anything goes haywire with the new cmake scripts: - - ./autogen.sh # Optional, use if configure doesn't exist - ./configure - make - make install - For platform specific instructions please read the README file that is associated with that platform (e.g. for Mac OS X read README.osx) diff --git a/acinclude.m4 b/acinclude.m4 deleted file mode 100644 index 36275e22f..000000000 --- a/acinclude.m4 +++ /dev/null @@ -1,3 +0,0 @@ -m4_include([m4/ac_define_dir.m4]) -m4_include([m4/relaytool.m4]) -m4_include([m4/ink_bzr_snapshot_build.m4]) diff --git a/autogen.sh b/autogen.sh deleted file mode 100755 index 0a9cb7924..000000000 --- a/autogen.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/sh - -# This script does all the magic calls to automake/autoconf and -# friends that are needed to configure a cvs checkout. As described in -# the file HACKING you need a couple of extra tools to run this script -# successfully. -# -# If you are compiling from a released tarball you don't need these -# tools and you shouldn't use this script. Just call ./configure -# directly. - -test -n "$srcdir" || srcdir=`dirname "$0"` -test -n "$srcdir" || srcdir=. - -olddir=`pwd` -cd $srcdir - -WHICH_AUTORECONF=`which autoreconf` -if test -z $WHICH_AUTORECONF; then - echo "*** No autoreconf found, please install it ***" - exit 1 -fi - -WHICH_INTLTOOLIZE=`which intltoolize` -if test -z $WHICH_INTLTOOLIZE; then - echo "*** No intltoolize found, please install the intltool package ***" - exit 1 -fi - -WHICH_AUTOPOINT=`which autopoint` -if test -z $WHICH_AUTOPOINT; then - echo "*** No autopoint found, please install the autopoint package ***" - exit 1 -fi - -autopoint --force -AUTOPOINT='intltoolize --automake --copy' autoreconf --force --install --verbose - -# Patch the generated po/Makefile.in.in file so that locale files are installed -# in the correct location on OS X and Free-BSD systems. This is a workaround -# for a bug in intltool. See https://launchpad.net/bugs/398571 -# -# The issue should be fixed in intltool 0.51.0. -# -# TODO: Drop this hack, and bump our intltool version requirement once the issue -# is fixed in intltool -sed 's/itlocaledir = $(prefix)\/$(DATADIRNAME)\/locale/itlocaledir = $(datarootdir)\/locale/' < po/Makefile.in.in > po/Makefile.in.in.tmp -mv po/Makefile.in.in.tmp po/Makefile.in.in - -echo "" -echo "Done! Please run './configure' now." diff --git a/build-lx.xml b/build-lx.xml deleted file mode 100644 index 01be2d0fd..000000000 --- a/build-lx.xml +++ /dev/null @@ -1,590 +0,0 @@ -<!-- - * Inkscape build file. - * - * See buildtool.cpp for use. - * - * Authors: - * Bob Jamison - * Others - * - * Copyright (C) 2006-2008 Inkscape.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ---> - - - -<!-- -######################################################################## -## P R O J E C T : I N K S C A P E -######################################################################## ---> -<project name="Inkscape" default="dist" basedir="."> - <description> - Build file for the Inkscape SVG editor. This version - is configured for Unix/Linux, but hopefully we can merge - in the future. - </description> - - <!-- set global properties for this build --> - <property name="version" value="0.92pre1"/> - <property name="src" location="src"/> - <property name="lib" location="lib"/> - <property name="build" location="build"/> - <property name="dist" location="inkscape"/> - - <!-- Use these settings for Unix --> - <!-- --> - <property name="arch" value=""/> - <property name="archutil" value=""/> - <property name="devlibs" location="/usr"/> - <property name="datadir" location="${dist}/share"/> - - <!-- --> - - <!-- Use these settings for the MinGW native compiler --> - <!-- - <property name="arch" value="mingw32-"/> - <property name="archutil" value=""/> - <property name="devlibs" location="c:/devlibs"/> - --> - - <!-- Use these settings for the MinGW cross compiler --> - <!-- - <property name="arch" value="i686-pc-mingw32-"/> - <property name="archutil" value="${arch}"/> - <property name="gtk" location="/target"/> - --> - - <!-- Extra properties --> - <property name="refresh" value="false"/> - - <!-- - This is for package-config. With these two settings, pkg-config - queries can be as simple as ${pcc.packageName} for cflags, and - ${pcl.packageName} for libs. Dependencies are calculated automatically. - --> - <property name="pkg-config-path" location="${devlibs}/lib/pkgconfig"/> - <property name="pkg-config-prefix" location="${devlibs}"/> - - - <!-- - ######################################################################## - ## T A R G E T : I N I T - ######################################################################## - --> - <target name="init" - description= - "Do all preparatory tasks, like make directories and copy files"> - - - <mkdir dir="${build}"/> - <mkdir dir="${build}/java"/> - <mkdir dir="${build}/java/classes"/> - <mkdir dir="${build}/java/lib"/> - - <mkdir dir="${build}"/> - <mkdir dir="${dist}"/> - <copy file="${src}/helper/sp-marshal.h.mingw" - tofile="${src}/helper/sp-marshal.h"/> - <copy file="${src}/helper/sp-marshal.cpp.mingw" - tofile="${src}/helper/sp-marshal.cpp"/> - <makefile file="inkscape_version.h"> - #define INKSCAPE_VERSION "${version}, revision ${svn.revision}" - </makefile> - <makefile file="config.h"> - #ifndef _CONFIG_H_ - #define _CONFIG_H_ - - /*###################################### - ## This is for require-config.h, whose - ## purpose I cannot fathom. - ######################################*/ - - #define PACKAGE_TARNAME - - /*###################################### - #### RESOURCE DIRECTORIES - ######################################*/ - - #define INKSCAPE_DATADIR "." - #define PACKAGE_LOCALE_DIR "locale" - - - /*###################################### - #### OTHER DEFINITIONS - ######################################*/ - - #define GETTEXT_PACKAGE "inkscape" - - #define PACKAGE_STRING VERSION - - #define HAVE_GETOPT_H 1 - #define HAVE_STRING_H 1 - #define HAVE_LIBINTL_H 1 - #define HAVE_MALLOC_H 1 - #define HAVE_STDLIB_H 1 - #define HAVE_SYS_STAT_H 1 - #define HAVE_INTTYPES_H 1 - #define HAVE_ZLIB_H 1 - - #define ENABLE_LCMS 1 - - #define WITH_GTKMM_2_24 1 - - #define ENABLE_NLS 1 - #define HAVE_BIND_TEXTDOMAIN_CODESET 1 - - /* make us relocatable */ - #define BR_PTHREADS 1 - #define ENABLE_BINRELOC 1 - - /* CairoPDF options */ - #define HAVE_CAIRO_PDF 1 - #define PANGO_ENABLE_ENGINE 1 - #define RENDER_WITH_PANGO_CAIRO 1 - - #define HAVE_GTK_WINDOW_FULLSCREEN 1 - - /* internal interpreter */ - #define WITH_PYTHON 1 - - /* use poppler for pdf import? */ - #define HAVE_POPPLER 1 - #define HAVE_POPPLER_CAIRO 1 - - /* do we want bitmap manipulation? */ - #define WITH_IMAGE_MAGICK 1 - - /* Allow reading WordPerfect? */ - #define WITH_LIBWPG 1 - - /* Default to libwpg 0.1.x */ - #define WITH_LIBWPG01 1 - - #endif /* _CONFIG_H_ */ - </makefile> - </target> - - - - <!-- - ######################################################################## - ## T A R G E T : T O U C H A B O U T - ######################################################################## - --> - <target name="touchabout" - description="update the modification time of aboutbox.cpp"> - <!-- not good <touch file="${src}/ui/dialog/aboutbox.cpp"/> --> - <!-- better --> - <delete file="${build}/obj/ui/dialog/aboutbox.o"/> - <delete file="inkscape_version.h"/> - </target> - - - <!-- - ######################################################################## - ## T A R G E T : C O M P I L E - ######################################################################## - --> - <target name="compile" depends="init" - description="compile the source to .o" > - - <!-- Compile from source to build --> - <cc cc="${arch}gcc" cxx="${arch}g++" - destdir="${build}/obj" - continueOnError="false" - refreshCache="${refresh}"> - <fileset dir="${src}"> - <!-- THINGS TO EXCLUDE --> - <exclude name="2geom/chebyshev.cpp"/> - <exclude name="ast/.*"/> - <exclude name="bonobo/.*"/> - <exclude name="deptool.cpp"/> - <exclude name="test-all.cpp"/> - <exclude name="display/testnr.cpp"/> - <exclude name="display/bezier-utils-test.cpp"/> - <exclude name="extension/api.cpp"/> - <exclude name="extension/dxf2svg/.*"/> - <exclude name="extension/implementation/plugin.cpp"/> - <exclude name="extension/script/bindtest.cpp"/> - <exclude name="extension/script/cpptest.cpp"/> - <exclude name="extension/plugin/.*"/> - <exclude name="extract-uri-test.cpp"/> - <exclude name="helper/units-test.cpp"/> - <!-- exclude name="inkview.cpp"/--> - <exclude name="libnr/test-nr.cpp"/> - <exclude name="libnr/test-nr-main.cpp"/> - <exclude name="libnr/testnr.cpp"/> - <exclude name="libnr/in-svg-plane-test.cpp"/> - <exclude name="libnr/nr-compose-reference.cpp"/> - <exclude name="libnr/nr-compose-test.cpp"/> - <exclude name="libnr/nr-matrix-test.cpp"/> - <exclude name="libnr/nr-point-fns-test.cpp"/> - <exclude name="libnr/nr-rotate-fns-test.cpp"/> - <exclude name="libnr/nr-rotate-test.cpp"/> - <exclude name="libnr/nr-scale-test.cpp"/> - <exclude name="libnr/nr-translate-test.cpp"/> - <exclude name="libnr/nr-types-test.cpp"/> - <exclude name="livarot/Path-test.cpp"/> - <exclude name="mod360-test.cpp"/> - <exclude name="trace/potrace/potest.cpp"/> - <exclude name="round-test.cpp"/> - <exclude name="sp-gradient-test.cpp"/> - <exclude name="svg/ftos.cpp"/> - <exclude name="svg/test-svg.cpp"/> - <exclude name="svg/test-svg-main.cpp"/> - <exclude name="widgets/test-widgets.cpp"/> - <exclude name="xml/quote-test.cpp"/> - <exclude name="xml/repr-action-test.cpp"/> - <exclude name="xml/test-xml.cpp"/> - <exclude name="xml/test-xml-main.cpp"/> - <exclude name="io/streamtest.cpp"/> - <!--OVERLAP--> - <exclude name="removeoverlap/placement_SolveVPSC.cpp"/> - <exclude name="removeoverlap/placement_SolveVPSC.h"/> - <exclude name="removeoverlap/test.cpp"/> - <exclude name="removeoverlap/remove_rectangle_overlap-test.cpp"/> - <exclude name="removeoverlap/remove_rectangle_overlap-test.h"/> - <!--WIN32 --> - <exclude name="registrytool.cpp"/> - <exclude name="extension/internal/win32.cpp"/> - <exclude name="libgdl/gdl-win32.c"/> - </fileset> - <excludeinc dir="${src}"> - <file name="extension/param"/> - </excludeinc> - <flags> - -Wall -Wformat -Werror=format-security -W -Wpointer-arith -Wcast-align -Wsign-compare -Woverloaded-virtual -Wswitch - -O2 - </flags> - <defines> - -DVERSION=\"${version}\" - -DHAVE_CONFIG_H - -D_INTL_REDIRECT_INLINE - -DHAVE_SSL - -DRELAYTOOL_SSL="static const int libssl_is_present=1; static int __attribute__((unused)) libssl_symbol_is_present(char *s){ return 1; }" <!-- inkboard --> - </defines> - <includes> - -I${devlibs}/include - <!-- GTK / GTKMM --> - ${pcc.gtkmm-2.4} - <!-- OTHER --> - ${pcc.libxslt} - ${pcc.freetype2} - ${pcc.cairo} - ${pcc.poppler} - -I${devlibs}/include/gc - ${pcc.libwpg-0.1} ${pcc.libwpg-stream-0.1} - <!-- PYTHON --> - -I${devlibs}/python/include - <!-- JAVA --> - -I${src}/bind/javainc -I${src}/bind/javainc/linux - </includes> - </cc> - </target> - - - <!-- - ######################################################################## - ## T A R G E T : L I B - ######################################################################## - --> - <target name="lib" depends="compile" - description="create a static library"> - <staticlib command="${archutil}ar crsv" - file="${build}/libinkscape.a"> - <fileset dir="${build}/obj"> - <exclude name="main.o"/> - <exclude name="winmain.o"/> - <exclude name="inkview.o"/> - </fileset> - </staticlib> - </target> - - - - <!-- - ######################################################################## - ## T A R G E T : I 1 8 N - ######################################################################## - --> - <target name="i18n" depends="compile" - description="compile gettext .po files to .mo"> - - <msgfmt todir="${build}/locale" owndir="true" - out="LC_MESSAGES/inkscape.mo"> - <fileset dir="po"> - </fileset> - </msgfmt> - </target> - - - - - - <!-- - ######################################################################## - ## T A R G E T : L I N K - ######################################################################## - --> - <target name="link" depends="lib" - description="link objects and library to create executable"> - - <link command="${arch}g++" out="${build}/inkscape" - strip="true" symfile="${build}/inkscape.dbg" - stripcommand="${archutil}strip" - objcopycommand="${archutil}objcopy"> - <flags> - </flags> - <fileset dir="${build}"> - <include name="obj/main.o"/> - <include name="libinkscape.a"/> - </fileset> - <libs> - -L${devlibs}/lib - ${pcl.poppler} ${pcl.poppler-cairo} ${pcl.poppler-glib} - ${pcl.gtkmm-2.4} - ${pcl.cairo} ${pcl.cairomm-1.0} - ${pcl.gthread-2.0} - ${pcl.libxslt} - ${pcl.libwpg-0.1} ${pcl.libwpg-stream-0.1} - ${pcl.ImageMagick++} - ${pcl.fontconfig} ${pcl.freetype2} - ${pcl.lcms} - ${pcl.gsl} - -lssl -lcrypto - -lpng -ljpeg -ltiff -lpopt -lz - -lgc -lm - </libs> - </link> - </target> - - - - - - <!-- - ######################################################################## - ## T A R G E T : L I N K I N K V I E W - ######################################################################## - --> - <target name="linkinkview" depends="lib" - description="link objects and library to create Inkview executable"> - - <link command="${arch}g++" out="${build}/inkview" - strip="true" symfile="${build}/inkview.dbg" - stripcommand="${archutil}strip" - objcopycommand="${archutil}objcopy"> - <flags> - </flags> - <fileset dir="${build}"> - <include name="obj/inkview.o"/> - <include name="libinkscape.a"/> - </fileset> - <libs> - -L${devlibs}/lib - ${pcl.poppler} - ${pcl.gtkmm-2.4} - ${pcl.cairo} ${pcl.cairomm-1.0} - <!-- PERL --> - -L${devlibs}/perl/lib/CORE -lperl58 - <!-- PYTHON --> - -L${devlibs}/python/libs -lpython25 - -lxml2 -lxslt - -lwpg-0.1 -lwpg-stream-0.1 - ${pcl.ImageMagick++} - ${pcl.fontconfig} ${pcl.freetype2} - ${pcl.lcms} - -lssl -lcrypto - -lpng -ljpeg -ltiff -lpopt -lz - -lgc - -lintl -liconv -lm - </libs> - </link> - </target> - - - - <!-- - ######################################################################## - ## T A R G E T : D I S T - ######################################################################## - --> - <target name="dist" depends="link,i18n" - description="generate the distribution directory with all needed files"> - - <!-- Create the distribution directory --> - <mkdir dir="${dist}/bin"/> - <mkdir dir="${dist}/lib"/> - - <!-- Copy Inkscape files --> - <copy file="${build}/inkscape" todir="${dist}/bin"/> - <copy file="${build}/inkscape.dbg" todir="${dist}/bin"/> - <copy file="AUTHORS" todir="${dist}"/> - <copy file="COPYING" todir="${dist}"/> - <copy file="GPL2.txt" todir="${dist}"/> - <copy file="GPL3.txt" todir="${dist}"/> - <copy file="LGPL2.1.txt" todir="${dist}"/> - <copy file="NEWS" todir="${dist}"/> - <copy file="README" todir="${dist}"/> - <copy file="TRANSLATORS" todir="${dist}"/> - <copy todir="${datadir}/inkscape"> - <fileset dir="share/attributes"> <exclude name=".*\.am"/> </fileset> - </copy> - <copy todir="${datadir}/inkscape"> - <fileset dir="share/clipart"> <exclude name=".*\.am"/> </fileset> - </copy> - <copy todir="${datadir}/inkscape"> - <fileset dir="share/examples"> <exclude name=".*\.am"/> </fileset> - </copy> - <copy todir="${datadir}/inkscape"> - <fileset dir="share/extensions"> <exclude name=".*\.am"/> </fileset> - </copy> - <copy todir="${datadir}/inkscape"> - <fileset dir="share/fonts"> <exclude name=".*\.am"/> </fileset> - </copy> - <copy todir="${datadir}/inkscape"> - <fileset dir="share/gradients"> <exclude name=".*\.am"/> </fileset> - </copy> - <copy todir="${datadir}/inkscape"> - <fileset dir="share/icons"> <exclude name=".*\.am"/> </fileset> - </copy> - <copy todir="${datadir}/inkscape"> - <fileset dir="share/keys"> <exclude name=".*\.am"/> </fileset> - </copy> - <copy todir="${datadir}/inkscape"> - <fileset dir="share/markers"> <exclude name=".*\.am"/> </fileset> - </copy> - <copy todir="${datadir}/inkscape"> - <fileset dir="share/palettes"> <exclude name=".*\.am"/> </fileset> - </copy> - <copy todir="${datadir}/inkscape"> - <fileset dir="share/patterns"> <exclude name=".*\.am"/> </fileset> - </copy> - <copy todir="${datadir}/inkscape"> - <fileset dir="share/screens"> <exclude name=".*\.am"/> </fileset> - </copy> - <copy todir="${datadir}/inkscape"> - <fileset dir="share/symbols"> <exclude name=".*\.am"/> </fileset> - </copy> - <copy todir="${datadir}/inkscape"> - <fileset dir="share/templates"> <exclude name=".*\.am"/> </fileset> - </copy> - <copy todir="${datadir}/inkscape"> - <fileset dir="share/tutorials"> <exclude name=".*\.am"/> </fileset> - </copy> - <copy todir="${datadir}/inkscape"> - <fileset dir="share/ui"> <exclude name=".*\.am"/> </fileset> - </copy> - <copy todir="${datadir}"> - <fileset dir="${build}/locale"> <exclude name=".*\.am"/> </fileset> - </copy> - - <!-- Copy devlibs files --> - - - </target> - - - <!-- - ######################################################################## - ## T A R G E T : JAVAC - ######################################################################## - --> - <target name="javac" depends="init" - description="compile java binding classes"> - <javac srcdir="${src}/bind/java" destdir="${build}/java/classes"/> - </target> - - - <!-- - ######################################################################## - ## T A R G E T : JAR - ######################################################################## - --> - <target name="jar" depends="javac" - description="pack java classes and resources into a jar file"> - <copy todir="${build}/java/classes"> <fileset dir="bind/data"/></copy> - <jar basedir="${build}/java/classes" destfile="${build}/java/lib/inkscape.jar"/> - </target> - - <!-- - ######################################################################## - ## T A R G E T : BINDDIST - ######################################################################## - --> - <target name="binddist" depends="jar" - description="pack java classes and resources into a jar file"> - <copy todir="${datadir}/inkscape/bind"> <fileset dir="bind/java"/> </copy> - <copy todir="${datadir}/inkscape/bind/java"> <fileset dir="${build}/java/lib"/> </copy> - - </target> - - <!-- - ######################################################################## - ## T A R G E T : BINDCLEAN - ######################################################################## - --> - <target name="bindclean" depends="" - description="clean up java binding classes"> - <delete dir="${build}/java"/> - </target> - - - - - <!-- - ######################################################################## - ## T A R G E T : D I S T - A L L - ######################################################################## - --> - <target name="dist-all" depends="dist" - description="generate the distribution, along with inkview" > - - <copy file="${build}/inkview" todir="${dist}/bin"/> - <copy file="${build}/inkview.dbg" todir="${dist}/bin"/> - - </target> - - - - - - <!-- - ######################################################################## - ## T A R G E T : C L E A N - ######################################################################## - --> - <target name="clean" depends="bindclean" - description="clean up. deleting build and distro dirs" > - - <delete dir="${build}"/> - <delete dir="${dist}"/> - <delete file="build.dep"/> - <delete file="config.h"/> - <delete file="inkscape_version.h"/> - - </target> - - - -</project> -<!-- -######################################################################## -## E N D -######################################################################## ---> - diff --git a/build-x64.xml b/build-x64.xml deleted file mode 100644 index e1134f841..000000000 --- a/build-x64.xml +++ /dev/null @@ -1,950 +0,0 @@ -<!-- - * Inkscape build file. - * - * See buildtool.cpp for use. - * - * Authors: - * Bob Jamison - * Others - * - * Copyright (C) 2006-2008 Inkscape.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ---> - - - -<!-- -######################################################################## -## P R O J E C T : I N K S C A P E -######################################################################## ---> -<project name="Inkscape" default="dist-all" basedir="."> - <description> - Build file for the Inkscape SVG editor. This file - was written for GTK-3 on Win64. - - Note that the default target is 'dist-all'. You can execute other - targets instead, by "btool {target}", like "btool compile", if - you want to save time, or "dist-inkscape" if you don't want inkview. - </description> - - <!-- set global properties for this build --> - <property name="version" value="0.91+devel_64bit"/> - <property name="src" location="src"/> - <property name="lib" location="lib"/> - <property name="build" location="build"/> - <property name="dist" location="inkscape"/> - - <!-- Use these settings for the native compiler --> - <!-- --> - <property name="arch" value="x86_64-w64-mingw32-"/> - <property name="arch_cc" value="${arch}gcc"/> - <property name="arch_cxx" value="${arch}g++"/> - <property name="arch_link" value="${arch}g++"/> - <property name="archutil" value=""/> - <property name="devlibs" location="${env.DEVLIBS_PATH}"/> - <property name="mingw" location="${env.MINGW_PATH}"/> - <property name="mingw_bin" location="${env.MINGW_PATH}/bin"/> - <property name="cxxtest" location="cxxtest"/> - <property name="python" location="${devlibs}/python/python.exe"/> - <!-- --> - - <!-- Use these settings for the cross compiler --> - <!-- - <property name="arch" value="i686-pc-mingw32-"/> - <property name="arch_cc" value="${arch}gcc"/> - <property name="arch_cxx" value="${arch}g++"/> - <property name="arch_link" value="${arch}g++"/> - <property name="archutil" value="${arch}"/> - <property name="devlibs" location="/target"/> - <property name="mingw_bin" location="${env.MINGW_BIN}"/> - <property name="cxxtest" location="cxxtest"/> - <property name="python" location="python"/> - --> - - <!-- Extra properties --> - <property name="refresh" value="false"/> - - <!-- - This is for package-config. With these two settings, pkg-config - queries can be as simple as ${pcc.packageName} for cflags, and - ${pcl.packageName} for libs. Dependencies are calculated automatically. - --> - <property name="pkg-config-path" location="${devlibs}/lib/pkgconfig"/> - <property name="pkg-config-prefix" location="${devlibs}"/> - - - <!-- - ######################################################################## - ## T A R G E T : I N I T - ######################################################################## - --> - <target name="init" - description= - "Do all preparatory tasks, like make directories and copy files"> - - - <mkdir dir="${build}"/> - <mkdir dir="${dist}"/> - - <copy file="${src}/helper/sp-marshal.h.mingw" - tofile="${src}/helper/sp-marshal.h"/> - <copy file="${src}/helper/sp-marshal.cpp.mingw" - tofile="${src}/helper/sp-marshal.cpp"/> - - <!--makefile file="${src}/inkscape-version.cpp"> - namespace Inkscape { - char const *version_string = "${version}"; - } - </makefile--> - <makefile file="${src}/inkscape-version.cpp" force="true"> - namespace Inkscape { - char const *version_string = "${version} ${bzr.revision}"; - } - </makefile> - <makefile file="config.h"> - #ifndef _CONFIG_H_ - #define _CONFIG_H_ - - #ifndef WIN32 - #define WIN32 - #endif - - /*###################################### - ## This is for require-config.h, whose - ## purpose I cannot fathom. - ######################################*/ - - #define PACKAGE_TARNAME - - /*###################################### - #### RESOURCE DIRECTORIES - ######################################*/ - - #define INKSCAPE_DATADIR "." - #define PACKAGE_LOCALE_DIR "locale" - - - /*###################################### - #### OTHER DEFINITIONS - ######################################*/ - - #define GETTEXT_PACKAGE "inkscape" - - #define PACKAGE_STRING VERSION - - #define HAVE_GETOPT_H 1 - #define HAVE_STRING_H 1 - #define HAVE_LIBINTL_H 1 - #define HAVE_MALLOC_H 1 - #define HAVE_STDLIB_H 1 - #define HAVE_SYS_STAT_H 1 - #define HAVE_INTTYPES_H 1 - #define HAVE_OPENMP 1 - #define HAVE_TR1_UNORDERED_SET 1 - #define HAVE_STDINT_H 1 - - #define HAVE_LIBLCMS2 1 - - #define WITH_GTKMM_3_10 1 - //#define WITH_GLIBMM_2_32 1 - #define HAVE_GLIBMM_THREADS_H 1 - #define WITH_GDL_3_6 1 - - #define ENABLE_NLS 1 - #define HAVE_BIND_TEXTDOMAIN_CODESET 1 - - /* keep binreloc off */ - #define BR_PTHREADS 0 - #undef ENABLE_BINRELOC - - /* CairoPDF options */ - #define HAVE_CAIRO_PDF 1 - #define PANGO_ENABLE_ENGINE 1 - #define RENDER_WITH_PANGO_CAIRO 1 - - #define HAVE_GTK_WINDOW_FULLSCREEN 1 - - /* internal interpreter */ - #define WITH_PYTHON 1 - - /* use poppler for pdf import? */ - #define HAVE_POPPLER 1 - #define HAVE_POPPLER_GLIB 1 - #define HAVE_POPPLER_CAIRO 1 - - /* do we want bitmap manipulation? */ - #define WITH_IMAGE_MAGICK 1 - - /* Exif and JPEG support for image resolution import */ - #define HAVE_EXIF 1 - #define HAVE_JPEG 1 - - /* WordPerfect import filter */ - #define WITH_LIBWPG 1 - #define WITH_LIBWPG03 1 - - /* Visio import filter */ - #define WITH_LIBVISIO 1 - #define WITH_LIBVISIO01 1 - - /* Corel Draw import filter */ - #define WITH_LIBCDR 1 - #define WITH_LIBCDR01 1 - - /* Do we support SVG Fonts? */ - #define ENABLE_SVG_FONTS 1 - - /* Do we want experimental, unsupported, unguaranteed, etc., LivePathEffects enabled? */ - //#define LPE_ENABLE_TEST_EFFECTS 1 - - /* Do we want experimental, unsupported, unguaranteed, etc., SVG2 features enabled? */ - //#define WITH_SVG2 1 - //#define WITH_CSSCOMPOSITE 1 - //#define WITH_CSSBLEND 1 - //#define WITH_MESH 1 - - #define HAVE_ASPELL 1 - - #define HAVE_POTRACE 1 - - #endif /* _CONFIG_H_ */ - </makefile> - </target> - - <!-- - ######################################################################## - ## T A R G E T : C X X T E S T - ######################################################################## - --> - <target name="cxxtest" depends="init" - description="generate test files" > - - <!-- Generate CxxTest files --> - <cxxtestpart command="${python} ${cxxtest}/cxxtestgen.py --have-eh" - out="${src}/test-src.cpp"> - <fileset dir="${src}"> - <include name="attributes-test.h"/> - <include name="color-profile-test.h"/> - <include name="dir-util-test.h"/> - <include name="extract-uri-test.h"/> - <include name="marker-test.h"/> - <include name="mod360-test.h"/> - <include name="object-test.h"/> - <include name="preferences-test.h"/> - <include name="round-test.h"/> - <include name="sp-gradient-test.h"/> - <include name="sp-style-elem-test.h"/> - <include name="syle-test.h"/> - <include name="test-helpers.h"/> - <include name="verbs-test.h"/> - </fileset> - </cxxtestpart> - <cxxtestpart command="${python} ${cxxtest}/cxxtestgen.py --have-eh" - out="${src}/display/test-display.cpp"> - <fileset dir="${src}/display"> - <include name="curve-test.h"/> - </fileset> - </cxxtestpart> - <cxxtestpart command="${python} ${cxxtest}/cxxtestgen.py --have-eh" - out="${src}/helper/test-helper.cpp"> - <fileset dir="${src}/helper"> - <include name="units-test.h"/> - </fileset> - </cxxtestpart> - <cxxtestpart command="${python} ${cxxtest}/cxxtestgen.py --have-eh" - out="${src}/svg/test-svg.cpp"> - <fileset dir="${src}/svg"> - <!--<include name="css-ostringstream-test.h"/>--> - <include name="stringstream-test.h"/> - <include name="svg-affine-test.h"/> - <include name="svg-color-test.h"/> - <include name="svg-length-test.h"/> - <include name="svg-path-geom-test.h"/> - </fileset> - </cxxtestpart> - <cxxtestpart command="${python} ${cxxtest}/cxxtestgen.py --have-eh" - out="${src}/util/test-util.cpp"> - <fileset dir="${src}/util"> - <include name="list-container-test.h"/> - </fileset> - </cxxtestpart> - <cxxtestpart command="${python} ${cxxtest}/cxxtestgen.py --have-eh" - out="${src}/xml/test-xml.cpp"> - <fileset dir="${src}/xml"> - <include name="repr-action-test.h"/> - <include name="quote-test.h"/> - </fileset> - </cxxtestpart> - <cxxtestroot command="${python} ${cxxtest}/cxxtestgen.py" - out="${src}/test-main.cpp" - template="${src}/cxxtest-template.tpl"> - <fileset dir="${src}"> - <include name="MultiPrinter.h"/> - <include name="PylogFormatter.h"/> - <include name="TRPIFormatter.h"/> - </fileset> - </cxxtestroot> - </target> - - - <!-- - ######################################################################## - ## T A R G E T : C O M P I L E - ######################################################################## - --> - <target name="compile" depends="cxxtest" - description="compile the source to .o" > - - <!-- Compile from source to build --> - <cc cc="${arch_cc}" cxx="${arch_cxx}" - destdir="${build}/obj" - continueOnError="true" - refreshCache="${refresh}"> - <fileset dir="${src}"> - <!-- THINGS TO EXCLUDE --> - <exclude name="ast/.*"/> - <exclude name="bonobo/.*"/> - <exclude name="libgdl/.*"/> - <exclude name="deptool.cpp"/> - <exclude name="cxxtests.cpp"/> - <!--<exclude name="test-main.cpp"/>--> - <!--<exclude name="test-src.cpp"/>--> - <exclude name="display/test-display.cpp"/> - <exclude name="display/testnr.cpp"/> - <exclude name="extension/api.cpp"/> - <exclude name="extension/dbus/.*"/> - <exclude name="extension/dxf2svg/.*"/> - <exclude name="extension/implementation/plugin.cpp"/> - <exclude name="extension/plugin/.*"/> - <exclude name="extract-uri-test.cpp"/> - <exclude name="helper/units-test.cpp"/> - <!-- exclude name="inkview.cpp"/--> - <exclude name="livarot/Path-test.cpp"/> - <exclude name="mod360-test.cpp"/> - <exclude name="trace/potrace/potest.cpp"/> - <exclude name="round-test.cpp"/> - <exclude name="sp-gradient-test.cpp"/> - <exclude name="style-test.cpp"/> - <exclude name="svg/ftos.cpp"/> - <!--<exclude name="svg/test-svg.cpp"/>--> - <exclude name="svg/test-svg-main.cpp"/> - <exclude name="util/list-container-test.cpp"/> - <exclude name="widgets/test-widgets.cpp"/> - <exclude name="xml/quote-test.cpp"/> - <exclude name="xml/repr-action-test.cpp"/> - <exclude name="xml/test-xml.cpp"/> - <!--<exclude name="xml/test-xml-main.cpp"/>--> - <exclude name="io/streamtest.cpp"/> - <!--OVERLAP--> - <exclude name="removeoverlap/placement_SolveVPSC.cpp"/> - <exclude name="removeoverlap/placement_SolveVPSC.h"/> - <exclude name="removeoverlap/test.cpp"/> - <exclude name="removeoverlap/remove_rectangle_overlap-test.cpp"/> - <exclude name="removeoverlap/remove_rectangle_overlap-test.h"/> - </fileset> - <excludeinc dir="${src}"> - <file name="extension/param"/> - </excludeinc> - <flags> - -Wall -Wformat -Werror=format-security -Wextra -Wpointer-arith -Wcast-align -Wsign-compare -Wswitch - -Werror=return-type - <!-- -Werror --> - <!-- A list of warnings that should not error *yet*, any help is welcome in fixing the code generating these warnings! --> - <!-- libcroco is using guchar where it should use gchar, so we need: --> -Wno-error=pointer-sign - -Wno-error=unused-parameter -Wno-error=unused-but-set-variable -Wno-error=strict-overflow -Wno-error=write-strings - <!-- Format warnings are obviously bad errors, but with the current old compiler on Windows (gcc 4.6.) we run into a problem with long long ints... - The errors can be restored by removing these flags after updating to a newer compiler (soon after 0.91 release hopefully) --> - -Wno-error=format -Wno-error=format-extra-args - -Wno-unused-local-typedefs <!-- triggers ton of warnings in (too old?) Boost with newer gcc --> - -O2 - -mms-bitfields - -fopenmp - </flags> - <cxxflags> - -std=gnu++11 -DCPP11 - -Woverloaded-virtual - <!-- -Wno-unused-local-typedefs --> - -Wno-deprecated-declarations <!-- silcence warnings about usage of auto_ptr --> - </cxxflags> - <defines> - -DVERSION=\"${version}\" - -DHAVE_CONFIG_H - -D_INTL_REDIRECT_INLINE - -DHAVE_SSL - -DRELAYTOOL_SSL="static const int libssl_is_present=1; static int __attribute__((unused)) libssl_symbol_is_present(char *s){ return 1; }" <!-- inkboard --> - -DPOPPLER_NEW_GFXFONT <!-- poppler changed the api for 0.8.3 --> - -DPOPPLER_NEW_GFXPATCH <!-- GfxPatch no longer uses GfxColor in >= 0.15.1 --> - -DPOPPLER_NEW_ERRORAPI <!-- poppler changed the error api for 0.20.0 --> - -DPOPPLER_EVEN_NEWER_COLOR_SPACE_API <!-- poppler changed the colorspace api for 0.26.0 --> - -DPOPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API <!-- poppler changed the colorspace api for 0.29.0 --> - <!-- GTK+3 migration --> - -DGLIBMM_DISABLE_DEPRECATED - -DG_DISABLE_DEPRECATED - -DGTK_DISABLE_SINGLE_INCLUDES - <!-- -DGTKMM_DISABLE_DEPRECATED --> - <!-- -DGTK_DISABLE_DEPRECATED --> - -DGDKMM_DISABLE_DEPRECATED - -DGSEAL_ENABLE - </defines> - <includes> - -I${devlibs}/include - <!-- GTK / GTKMM --> - ${pcc.gtkmm-3.0} - ${pcc.gdkmm-3.0} - ${pcc.gtk+-3.0} - ${pcc.gdk-3.0} - ${pcc.gdl-3.0} - ${pcc.glibmm-2.4} - - - ${pcc.pangomm-1.4} - ${pcc.cairomm-1.0} - <!-- OTHER --> - ${pcc.Magick++} - ${pcc.libxml-2.0} - ${pcc.freetype2} - ${pcc.cairo} - ${pcc.poppler} - -I${devlibs}/include/gc - -I${devlibs}/include/potracelib - ${pcc.libwpg-0.3} ${pcc.libvisio-0.1} ${pcc.libcdr-0.1} - -I${cxxtest} - <!-- PERL --> - <!-- -Wno-comment -I${devlibs}/perl/lib/CORE --> - <!-- PYTHON --> - -I${devlibs}/python/include - </includes> - </cc> - </target> - - - - <!-- - ######################################################################## - ## T A R G E T : I 1 8 N - ######################################################################## - --> - <target name="i18n" depends="compile" - description="compile gettext .po files to .mo"> - - <msgfmt todir="${build}/locale" owndir="true" - out="LC_MESSAGES/inkscape.mo"> - <fileset dir="po"> - </fileset> - </msgfmt> - </target> - - - - - - <!-- - ######################################################################## - ## T A R G E T : L I N K - ######################################################################## - --> - <target name="link" depends="compile" - description="link objects and library to create executable"> - - <rc command="${archutil}windres" - file="${src}/inkscape-x64.rc" - out="${build}/obj/inkres.o"> - <flags> - --include-dir=${src} - </flags> - </rc> - <link command="${arch_link}" out="${build}/inkscape.exe" - strip="true" symfile="${build}/inkscape.dbg" - stripcommand="${archutil}strip" - objcopycommand="${archutil}objcopy"> - <flags> - -mwindows -m64 - -mthreads - </flags> - <fileset dir="${build}/obj"> - <exclude name="winconsole.o"/> - <exclude name="inkview.o"/> - <exclude name="inkviewres.o"/> - <!-- CxxTest --> - <exclude name="test-main.o"/> - <exclude name="test-src.o"/> - <exclude name="display/test-display.o"/> - <exclude name="helper/test-helper.o"/> - <exclude name="svg/test-svg.o"/> - <exclude name="util/test-util.o"/> - <exclude name="xml/test-xml.o"/> - </fileset> - <!-- WARNING: If you change these libraries, don't forget to change them for inkview and cxxtests below as well! --> - <libs> - -L${devlibs}/lib - ${pcl.poppler-cairo} ${pcl.poppler-glib} ${pcl.poppler} - ${pcl.pangoft2} ${pcl.gthread-2.0} - ${pcl.gtkmm-3.0} ${pcl.gdkmm-3.0} - ${pcl.gtk+-3.0} ${pcl.gdk-3.0} - ${pcl.gdl-3.0} - ${devlibs}/bin/libxml2-2.dll - ${devlibs}/bin/libxslt-1.dll - ${devlibs}/bin/libexslt-0.dll - ${pcl.cairo} ${pcl.cairomm-1.0} - ${pcl.librevenge-stream-0.0} ${pcl.libwpg-0.3} ${pcl.libvisio-0.1} ${pcl.libcdr-0.1} - ${pcl.glibmm-2.4} - - - ${pcl.pangomm-1.4} - ${pcl.cairomm-1.0} - -liconv - ${pcl.Magick++} - ${pcl.fontconfig} ${pcl.freetype2} - ${pcl.lcms2} - ${pcl.gsl} - -lpng -ljpeg -ltiff -lexif -lpopt -lz - -lgc -lpotrace - -lws2_32 -lintl -lgdi32 -lcomdlg32 -lm - -lgomp -lwinpthread - -laspell - -lmscms <!-- required for color profiles --> - </libs> - </link> - </target> - -<!-- - ######################################################################## - ## T A R G E T : L I N K C O N S O L E - ######################################################################## - --> - <target name="linkconsole" depends="compile" - description="link console helper"> - - <link command="${arch_link}" out="${build}/inkscape-console.exe" - strip="true" stripcommand="${archutil}strip"> - <flags> - -mconsole - -mthreads - </flags> - <fileset dir="${build}"> - <include name="obj/winconsole.o"/> - </fileset> - <libs></libs> - </link> - </target> - - <!-- - ######################################################################## - ## T A R G E T : L I N K I N K V I E W - ######################################################################## - --> - <target name="linkinkview" depends="compile" - description="link objects and library to create Inkview executable"> - - <rc command="${archutil}windres" - file="${src}/inkview-x64.rc" - out="${build}/obj/inkviewres.o"> - <flags> - --include-dir=${src} - </flags> - </rc> - <link command="${arch_link}" out="${build}/inkview.exe" - strip="true" symfile="${build}/inkview.dbg" - stripcommand="${archutil}strip" - objcopycommand="${archutil}objcopy"> - <flags> - -mwindows -m64 - -mthreads - </flags> - <fileset dir="${build}/obj"> - <!-- exclude the other programs --> - <exclude name="main.o"/> - <exclude name="winmain.o"/> - <exclude name="winconsole.o"/> - <exclude name="inkres.o"/> - <!-- CxxTest --> - <exclude name="test-main.o"/> - <exclude name="test-src.o"/> - <exclude name="display/test-display.o"/> - <exclude name="helper/test-helper.o"/> - <exclude name="svg/test-svg.o"/> - <exclude name="util/test-util.o"/> - <exclude name="xml/test-xml.o"/> - </fileset> - <libs> - -L${devlibs}/lib - ${pcl.poppler-cairo} ${pcl.poppler-glib} ${pcl.poppler} - ${pcl.pangoft2} ${pcl.gthread-2.0} - ${pcl.gtkmm-3.0} ${pcl.gdkmm-3.0} - ${pcl.gtk+-3.0} ${pcl.gdk-3.0} - ${pcl.gdl-3.0} - ${devlibs}/bin/libxml2-2.dll - ${devlibs}/bin/libxslt-1.dll - ${devlibs}/bin/libexslt-0.dll - ${pcl.cairo} ${pcl.cairomm-1.0} - ${pcl.librevenge-stream-0.0} ${pcl.libwpg-0.3} ${pcl.libvisio-0.1} ${pcl.libcdr-0.1} - ${pcl.glibmm-2.4} - - - ${pcl.pangomm-1.4} - ${pcl.cairomm-1.0} - -liconv - ${pcl.Magick++} - ${pcl.fontconfig} ${pcl.freetype2} - ${pcl.lcms2} - ${pcl.gsl} - -lpng -ljpeg -ltiff -lexif -lpopt -lz - -lgc -lpotrace - -lws2_32 -lintl -lgdi32 -lcomdlg32 -lm - -lgomp -lwinpthread - -laspell - -lmscms <!-- required for color profiles --> - </libs> - </link> - </target> - - - - <!-- - ######################################################################## - ## T A R G E T : L I N K C X X T E S T S - ######################################################################## - --> - <target name="linkcxxtests" depends="compile" - description="link objects and library to create executable"> - - <link command="${arch_link}" out="${build}/cxxtests.exe" - strip="true" symfile="${build}/cxxtests.dbg" - stripcommand="${archutil}strip" - objcopycommand="${archutil}objcopy"> - <flags> - -mconsole - -mthreads - </flags> - <fileset dir="${build}/obj"> - <!-- exclude the other programs --> - <exclude name="main.o"/> - <exclude name="winmain.o"/> - <exclude name="winconsole.o"/> - <exclude name="inkres.o"/> - <exclude name="inkviewres.o"/> - <exclude name="inkview.o"/> - </fileset> - <libs> - -L${devlibs}/lib - ${pcl.poppler-cairo} ${pcl.poppler-glib} ${pcl.poppler} - ${pcl.pangoft2} ${pcl.gthread-2.0} - ${pcl.gtkmm-3.0} ${pcl.gdkmm-3.0} - ${pcl.gtk+-3.0} ${pcl.gdk-3.0} - ${pcl.gdl-3.0} - ${devlibs}/bin/libxml2-2.dll - ${devlibs}/bin/libxslt-1.dll - ${devlibs}/bin/libexslt-0.dll - ${pcl.cairo} ${pcl.cairomm-1.0} - ${pcl.librevenge-stream-0.0} ${pcl.libwpg-0.3} ${pcl.libvisio-0.1} ${pcl.libcdr-0.1} - ${pcl.glibmm-2.4} - - - ${pcl.pangomm-1.4} - ${pcl.cairomm-1.0} - -liconv - ${pcl.Magick++} - ${pcl.fontconfig} ${pcl.freetype2} - ${pcl.lcms2} - ${pcl.gsl} - -lpng -ljpeg -ltiff -lexif -lpopt -lz - -lgc -lpotrace - -lws2_32 -lintl -lgdi32 -lcomdlg32 -lm - -lgomp -lwinpthread - -laspell - -lmscms <!-- required for color profiles --> - </libs> - </link> - </target> - - - <!-- - ######################################################################## - ## T A R G E T : D I S T B A S E - ######################################################################## - --> - <target name="distbase" depends="i18n" - description="generate the distribution directory with all needed files"> - - <!-- Create the distribution directory --> - <copy todir="${dist}" file="AUTHORS"/> - <copy todir="${dist}" file="COPYING"/> - <copy todir="${dist}" file="GPL2.txt"/> - <copy todir="${dist}" file="GPL3.txt"/> - <copy todir="${dist}" file="LGPL2.1.txt"/> - <copy todir="${dist}" file="NEWS"/> - <copy todir="${dist}" file="README"/> - <copy todir="${dist}" file="TRANSLATORS"/> - <copy todir="${dist}" file="${devlibs}/bin/libatkmm-1.6-1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libglibmm-2.4-1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libgiomm-2.4-1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libgtkmm-3.0-1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libgdkmm-3.0-1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libgdl-3-5.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libpangomm-1.4-1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libcairomm-1.0-1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libcairo-gobject-2.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libsigc-2.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libfreetype-6.dll"/> - - <copy todir="${dist}" file="${devlibs}/bin/libffi-6.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libgc-1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libgsl-19.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libgslcblas-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libharfbuzz-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/liblzma-5.dll"/> - - <copy todir="${dist}" file="${devlibs}/bin/libaspell-15.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libatk-1.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libgdk-3-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libgdk_pixbuf-2.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libglib-2.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libgmodule-2.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libgobject-2.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libgtk-3-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libgthread-2.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libgio-2.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libcairo-2.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libpixman-1-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libpoppler-58.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libpoppler-glib-8.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libpangocairo-1.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libpango-1.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libpangoft2-1.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libpangowin32-1.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libfontconfig-1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libxml2-2.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libxslt-1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libexslt-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libexpat-1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libepoxy-0.dll"/> - - <copy todir="${dist}" file="${devlibs}/bin/librevenge-0.0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/librevenge-stream-0.0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libwpg-0.3.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libwpd-0.10.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libvisio-0.1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libcdr-0.1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/icuin56.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/icudt56.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/icuuc56.dll"/> - - <copy todir="${dist}" file="${devlibs}/bin/libjpeg-9.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libpng16-16.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libtiff-5.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libexif-12.dll"/> -<!-- - <copy todir="${dist}" file="${devlibs}/bin/libopenjpeg-2.dll"/> - --> - <!-- <copy todir="${dist}" file="${devlibs}/bin/msvcr70.dll"/> --> - <!-- <copy todir="${dist}" file="${devlibs}/bin/msvcr71.dll"/> --> - <copy todir="${dist}" file="${devlibs}/bin/libcurl-4.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/zlib1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/bz2-1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libiconv-2.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libpopt-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/liblcms2-2.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libMagick++-6.Q16-6.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libMagickCore-6.Q16-2.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libMagickWand-6.Q16-2.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libintl-8.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libpotrace-0.dll"/> - <!-- MINGW support DLLs --> - <copy todir="${dist}" file="${mingw_bin}/libstdc++-6.dll"/> - <copy todir="${dist}" file="${mingw_bin}/libwinpthread-1.dll"/> - <copy todir="${dist}" file="${mingw_bin}/libgcc_s_seh-1.dll"/> - <!-- MINGW support DLLs needed for openmp support --> - <copy todir="${dist}" file="${mingw_bin}/libgomp-1.dll"/> - - <!-- MSGFMT files --> - <copy todir="${dist}"> - <fileset dir="${build}/locale"> - <exclude name=".*\.am"/> - </fileset> - </copy> - - <mkdir dir="${dist}/data"/> - <mkdir dir="${dist}/locale"/> - <mkdir dir="${dist}/modules"/> - <mkdir dir="${dist}/plugins"/> - <mkdir dir="${dist}/share/glib-2.0"/> - - <!-- GTK --> - <copy todir="${dist}"> - <fileset dir="${devlibs}/etc"> - <exclude name="gtk-2.0/.*"/> - </fileset> - </copy> - <copy todir="${dist}/share/icons"> <fileset dir="${devlibs}/share/icons/Adwaita" /> </copy> - - <copy todir="${dist}"> - <fileset dir="share"> - <exclude name="\.am$"/> - <exclude name="\.in$"/> - <exclude name="\.sh$"/> - <exclude name="CMakeLists.txt"/> - <exclude name="i18n.py"/> - <exclude name="icons/hicolor/index.theme"/> - </fileset> - </copy> - <delete dir="${dist}/share/icons/hicolor"/> <!-- Quick fix for the following problem: having the hicolor folder there with empty index file bugs booting inkscape... --> - <copy todir="${dist}/share"> <fileset dir="${devlibs}/share/themes"/> </copy> - <copy todir="${dist}/share"> <fileset dir="${devlibs}/share/icons"/> </copy> - <copy todir="${dist}/share/glib-2.0"> <fileset dir="${devlibs}/share/glib-2.0/schemas"/> </copy> - <copy todir="${dist}/lib"> - <fileset dir="${devlibs}/lib/gdk-pixbuf-2.0"> - <exclude name="\.la$"/> - <exclude name="\.a$"/> - </fileset> - </copy> - - <!-- Poppler data files --> - <copy todir="${dist}/share"> <fileset dir="${devlibs}/share/poppler"/> </copy> - - <!-- Locales for libraries (few should be needed) --> - <copy todir="${dist}/share"> - <fileset dir="${devlibs}/share/locale"> - <include name="gtk30.mo"/> - </fileset> - </copy> - - <!-- Aspell dictionaries --> - <copy todir="${dist}/lib"> <fileset dir="${devlibs}/lib/aspell-0.60"/> </copy> - - <!-- Necessary to run extensions on windows if it is not in the path --> - <copy todir="${dist}" file="${devlibs}/bin/gspawn-win64-helper.exe"/> - <copy todir="${dist}" file="${devlibs}/bin/gspawn-win64-helper-console.exe"/> - - <!-- PERL --> - <copy todir="${dist}" file="${devlibs}/perl/bin/perl58.dll"/> - - <!-- PYTHON --> - <copy todir="${dist}/python" file="${devlibs}/python/python.exe" /> - <copy todir="${dist}/python" file="${devlibs}/python/pythonw.exe"/> - <copy todir="${dist}/python" file="${devlibs}/python/python27.dll"/> - <copy todir="${dist}/python"> <fileset dir="${devlibs}/python/Lib"/> </copy> - <copy todir="${dist}/python"> <fileset dir="${devlibs}/python/DLLs"/> </copy> - <!-- <copy todir="${dist}/python"> <fileset dir="${devlibs}/python/Scripts"/> </copy> --> - - <!--<copy file="${devlibs}/share/themes/MS-Windows/gtk-2.0/gtkrc" todir="${dist}/etc/gtk-2.0"/>--> - <makefile file="${dist}/etc/gtk-3.0/settings.ini"> -[Settings] -#gtk-font-name = Tahoma 8 -#gtk-theme-name = Adwaita -gtk-menu-images = true - </makefile> - - </target> - - - <!-- - ######################################################################## - ## T A R G E T : D I S T - I N K S C A P E - ######################################################################## - --> - <target name="dist-inkscape" depends="link,linkconsole,distbase" - description="copy inkscape to the distribution directory"> - - <!-- Create the distribution directory --> - <copy todir="${dist}" file="${build}/inkscape.exe"/> - <copy todir="${dist}" file="${build}/inkscape.dbg"/> - <copy file="${build}/inkscape-console.exe" tofile="${dist}/inkscape.com"/> - </target> - - - <!-- - ######################################################################## - ## T A R G E T : D I S T - I N K V I E W - ######################################################################## - --> - <target name="dist-inkview" depends="linkinkview,distbase" - description="copy inkview to the distribution directory"> - - <!-- Create the distribution directory --> - <copy todir="${dist}" file="${build}/inkview.exe"/> - <copy todir="${dist}" file="${build}/inkview.dbg"/> - </target> - - - <!-- - ######################################################################## - ## T A R G E T : C H E C K - ######################################################################## - --> - <target name="check" depends="linkcxxtests,distbase" - description="perform unit tests"> - - <cxxtestrun command="${build}/cxxtests" workingdir="${dist}" /> - </target> - - <!-- - ######################################################################## - ## T A R G E T : D I S T - A L L - ######################################################################## - --> - <target name="dist-all" depends="dist-inkscape,dist-inkview" - description="generate the distribution, along with inkview" > - </target> - - - - - <!-- - ######################################################################## - ## T A R G E T : D I S T - A L L - C H E C K - ######################################################################## - --> - <target name="dist-all-check" depends="dist-all,check" - description="generate the distribution, along with inkview and run cxxtests" > - </target> - - - - - - <!-- - ######################################################################## - ## T A R G E T : C L E A N - ######################################################################## - --> - <target name="clean" - description="clean up. deleting build and distro dirs" > - - <delete dir="${build}"/> - <delete dir="${dist}"/> - <delete file="build.dep"/> - <delete file="config.h"/> - <delete file="${src}/inkscape-version.cpp"/> - <delete file="${src}/test-main.cpp"/> - <delete file="${src}/test-src.cpp"/> - <delete file="${src}/display/test-display.cpp"/> - <delete file="${src}/helper/test-helper.cpp"/> - <delete file="${src}/svg/test-svg.cpp"/> - <delete file="${src}/util/test-util.cpp"/> - <delete file="${src}/xml/test-xml.cpp"/> - - </target> - - - -</project> -<!-- -######################################################################## -## E N D -######################################################################## ---> - diff --git a/build.xml b/build.xml deleted file mode 100644 index b782183ae..000000000 --- a/build.xml +++ /dev/null @@ -1,920 +0,0 @@ -<!-- - * Inkscape build file. - * - * See buildtool.cpp for use. - * - * Authors: - * Bob Jamison - * Others - * - * Copyright (C) 2006-2008 Inkscape.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ---> - - - -<!-- -######################################################################## -## P R O J E C T : I N K S C A P E -######################################################################## ---> -<project name="Inkscape" default="dist-all" basedir="."> - <description> - Build file for the Inkscape SVG editor. This file - was written for GTK-2.10 on Win32, but it should work - well for other types of builds with only minor adjustments. - Note that the default target is 'dist-all'. You can execute other - targets instead, by "btool {target}", like "btool compile", if - you want to save time, or "dist-inkscape" if you don't want inkview. - </description> - - <!-- set global properties for this build --> - <property name="version" value="0.92pre1"/> - <property name="src" location="src"/> - <property name="lib" location="lib"/> - <property name="build" location="build"/> - <property name="dist" location="inkscape"/> - - <!-- Use these settings for the native compiler --> - <!-- --> - <property name="arch" value="mingw32-"/> - <property name="arch_cc" value="${arch}gcc"/> - <property name="arch_cxx" value="${arch}g++"/> - <property name="arch_link" value="${arch}g++"/> - <property name="archutil" value=""/> - <property name="devlibs" location="${env.DEVLIBS_PATH}"/> - <property name="mingw" location="${env.MINGW_PATH}"/> - <property name="mingw_bin" location="${env.MINGW_PATH}/bin"/> - <property name="cxxtest" location="cxxtest"/> - <property name="python" location="${devlibs}/python/python.exe"/> - <!-- --> - - <!-- Use these settings for the cross compiler --> - <!-- - <property name="arch" value="i686-pc-mingw32-"/> - <property name="arch_cc" value="${arch}gcc"/> - <property name="arch_cxx" value="${arch}g++"/> - <property name="arch_link" value="${arch}g++"/> - <property name="archutil" value="${arch}"/> - <property name="devlibs" location="/target"/> - <property name="mingw_bin" location="${env.MINGW_BIN}"/> - <property name="cxxtest" location="cxxtest"/> - <property name="python" location="python"/> - --> - - <!-- Extra properties --> - <property name="refresh" value="false"/> - - <!-- - This is for package-config. With these two settings, pkg-config - queries can be as simple as ${pcc.packageName} for cflags, and - ${pcl.packageName} for libs. Dependencies are calculated automatically. - --> - <property name="pkg-config-path" location="${devlibs}/lib/pkgconfig"/> - <property name="pkg-config-prefix" location="${devlibs}"/> - - - <!-- - ######################################################################## - ## T A R G E T : I N I T - ######################################################################## - --> - <target name="init" - description= - "Do all preparatory tasks, like make directories and copy files"> - - - <mkdir dir="${build}"/> - <mkdir dir="${dist}"/> - - <copy file="${src}/helper/sp-marshal.h.mingw" - tofile="${src}/helper/sp-marshal.h"/> - <copy file="${src}/helper/sp-marshal.cpp.mingw" - tofile="${src}/helper/sp-marshal.cpp"/> - - <!--makefile file="${src}/inkscape-version.cpp"> - namespace Inkscape { - char const *version_string = "${version}"; - } - </makefile--> - <makefile file="${src}/inkscape-version.cpp"> - namespace Inkscape { - char const *version_string = "${version} ${bzr.revision}"; - } - </makefile> - <makefile file="config.h"> - #ifndef _CONFIG_H_ - #define _CONFIG_H_ - - #ifndef WIN32 - #define WIN32 - #endif - - /*###################################### - ## This is for require-config.h, whose - ## purpose I cannot fathom. - ######################################*/ - - #define PACKAGE_TARNAME - - /*###################################### - #### RESOURCE DIRECTORIES - ######################################*/ - - #define INKSCAPE_DATADIR "." - #define PACKAGE_LOCALE_DIR "locale" - - - /*###################################### - #### OTHER DEFINITIONS - ######################################*/ - - #define GETTEXT_PACKAGE "inkscape" - - #define PACKAGE_STRING VERSION - - #define HAVE_GETOPT_H 1 - #define HAVE_STRING_H 1 - #define HAVE_LIBINTL_H 1 - #define HAVE_MALLOC_H 1 - #define HAVE_STDLIB_H 1 - #define HAVE_SYS_STAT_H 1 - #define HAVE_INTTYPES_H 1 - #define HAVE_OPENMP 1 - #define HAVE_TR1_UNORDERED_SET 1 - - #define HAVE_LIBLCMS2 1 - - #define ENABLE_NLS 1 - #define HAVE_BIND_TEXTDOMAIN_CODESET 1 - - /* keep binreloc off */ - #define BR_PTHREADS 0 - #undef ENABLE_BINRELOC - - /* CairoPDF options */ - #define HAVE_CAIRO_PDF 1 - #define PANGO_ENABLE_ENGINE 1 - #define RENDER_WITH_PANGO_CAIRO 1 - - #define HAVE_GTK_WINDOW_FULLSCREEN 1 - - /* internal interpreter */ - #define WITH_PYTHON 1 - - /* use poppler for pdf import? */ - #define HAVE_POPPLER 1 - #define HAVE_POPPLER_GLIB 1 - #define HAVE_POPPLER_CAIRO 1 - - /* do we want bitmap manipulation? */ - #define WITH_IMAGE_MAGICK 1 - - /* Exif and JPEG support for image resolution import */ - #define HAVE_EXIF 1 - #define HAVE_JPEG 1 - - /* Allow reading WordPerfect? */ - #define WITH_LIBWPG 1 - - /* Default to libwpg 0.2.x */ - #define WITH_LIBWPG02 1 - - /* Visio import filter */ - #define WITH_LIBVISIO 1 - /* Librevenge based filter */ - #define WITH_LIBVISIO01 1 - - /* Corel Draw import filter */ - #define WITH_LIBCDR 1 - /* Librevenge based filter */ - #define WITH_LIBCDR01 1 - - /* Do we support SVG Fonts? */ - #define ENABLE_SVG_FONTS 1 - - /* Do we want experimental, unsupported, unguaranteed, etc., LivePathEffects enabled? */ - //#define LPE_ENABLE_TEST_EFFECTS 1 - - /* Do we want experimental, unsupported, unguaranteed, etc., SVG2 features enabled? */ - //#define WITH_SVG2 1 - //#define WITH_CSSCOMPOSITE 1 - //#define WITH_CSSBLEND 1 - //#define WITH_MESH 1 - - #define HAVE_ASPELL 1 - - #define HAVE_POTRACE 1 - - #endif /* _CONFIG_H_ */ - </makefile> - </target> - - <!-- - ######################################################################## - ## T A R G E T : C X X T E S T - ######################################################################## - --> - <target name="cxxtest" depends="init" - description="generate test files" > - - <!-- Generate CxxTest files --> - <cxxtestpart command="${python} ${cxxtest}/cxxtestgen.py --have-eh" - out="${src}/test-src.cpp"> - <fileset dir="${src}"> - <include name="attributes-test.h"/> - <include name="color-profile-test.h"/> - <include name="dir-util-test.h"/> - <include name="extract-uri-test.h"/> - <include name="marker-test.h"/> - <include name="mod360-test.h"/> - <include name="object-test.h"/> - <include name="preferences-test.h"/> - <include name="round-test.h"/> - <include name="sp-gradient-test.h"/> - <include name="sp-style-elem-test.h"/> - <include name="syle-test.h"/> - <include name="test-helpers.h"/> - <include name="verbs-test.h"/> - </fileset> - </cxxtestpart> - <cxxtestpart command="${python} ${cxxtest}/cxxtestgen.py --have-eh" - out="${src}/display/test-display.cpp"> - <fileset dir="${src}/display"> - <include name="curve-test.h"/> - </fileset> - </cxxtestpart> - <cxxtestpart command="${python} ${cxxtest}/cxxtestgen.py --have-eh" - out="${src}/helper/test-helper.cpp"> - <fileset dir="${src}/helper"> - <include name="units-test.h"/> - </fileset> - </cxxtestpart> - <cxxtestpart command="${python} ${cxxtest}/cxxtestgen.py --have-eh" - out="${src}/svg/test-svg.cpp"> - <fileset dir="${src}/svg"> - <!--<include name="css-ostringstream-test.h"/>--> - <include name="stringstream-test.h"/> - <include name="svg-affine-test.h"/> - <include name="svg-color-test.h"/> - <include name="svg-length-test.h"/> - <include name="svg-path-geom-test.h"/> - </fileset> - </cxxtestpart> - <cxxtestpart command="${python} ${cxxtest}/cxxtestgen.py --have-eh" - out="${src}/util/test-util.cpp"> - <fileset dir="${src}/util"> - <include name="list-container-test.h"/> - </fileset> - </cxxtestpart> - <cxxtestpart command="${python} ${cxxtest}/cxxtestgen.py --have-eh" - out="${src}/xml/test-xml.cpp"> - <fileset dir="${src}/xml"> - <include name="repr-action-test.h"/> - <include name="quote-test.h"/> - </fileset> - </cxxtestpart> - <cxxtestroot command="${python} ${cxxtest}/cxxtestgen.py" - out="${src}/test-main.cpp" - template="${src}/cxxtest-template.tpl"> - <fileset dir="${src}"> - <include name="MultiPrinter.h"/> - <include name="PylogFormatter.h"/> - <include name="TRPIFormatter.h"/> - </fileset> - </cxxtestroot> - </target> - - - <!-- - ######################################################################## - ## T A R G E T : C O M P I L E - ######################################################################## - --> - <target name="compile" depends="cxxtest" - description="compile the source to .o" > - - <!-- Compile from source to build --> - <cc cc="${arch_cc}" cxx="${arch_cxx}" - destdir="${build}/obj" - continueOnError="true" - refreshCache="${refresh}"> - <fileset dir="${src}"> - <!-- THINGS TO EXCLUDE --> - <exclude name="ast/.*"/> - <exclude name="bonobo/.*"/> - <exclude name="deptool.cpp"/> - <exclude name="cxxtests.cpp"/> - <!--<exclude name="test-main.cpp"/>--> - <!--<exclude name="test-src.cpp"/>--> - <exclude name="display/test-display.cpp"/> - <exclude name="display/testnr.cpp"/> - <exclude name="extension/api.cpp"/> - <exclude name="extension/dbus/.*"/> - <exclude name="extension/dxf2svg/.*"/> - <exclude name="extension/implementation/plugin.cpp"/> - <exclude name="extension/plugins/.*"/> - <exclude name="extract-uri-test.cpp"/> - <exclude name="helper/units-test.cpp"/> - <!-- exclude name="inkview.cpp"/--> - <exclude name="livarot/Path-test.cpp"/> - <exclude name="mod360-test.cpp"/> - <exclude name="trace/potrace/potest.cpp"/> - <exclude name="round-test.cpp"/> - <exclude name="sp-gradient-test.cpp"/> - <exclude name="style-test.cpp"/> - <exclude name="svg/ftos.cpp"/> - <!--<exclude name="svg/test-svg.cpp"/>--> - <exclude name="svg/test-svg-main.cpp"/> - <exclude name="util/list-container-test.cpp"/> - <exclude name="widgets/test-widgets.cpp"/> - <exclude name="widgets/image-menu-item.c"/> - <exclude name="xml/quote-test.cpp"/> - <exclude name="xml/repr-action-test.cpp"/> - <exclude name="xml/test-xml.cpp"/> - <!--<exclude name="xml/test-xml-main.cpp"/>--> - <exclude name="io/streamtest.cpp"/> - <!--OVERLAP--> - <exclude name="removeoverlap/placement_SolveVPSC.cpp"/> - <exclude name="removeoverlap/placement_SolveVPSC.h"/> - <exclude name="removeoverlap/test.cpp"/> - <exclude name="removeoverlap/remove_rectangle_overlap-test.cpp"/> - <exclude name="removeoverlap/remove_rectangle_overlap-test.h"/> - </fileset> - <excludeinc dir="${src}"> - <file name="extension/param"/> - </excludeinc> - <flags> - -Wall -Wformat -Werror=format-security -Wextra -Wpointer-arith -Wcast-align -Wsign-compare -Wswitch - -Werror=return-type - <!-- -Werror --> - <!-- A list of warnings that should not error *yet*, any help is welcome in fixing the code generating these warnings! --> - <!-- libcroco is using guchar where it should use gchar, so we need: --> -Wno-error=pointer-sign - -Wno-error=unused-parameter -Wno-error=unused-but-set-variable -Wno-error=strict-overflow -Wno-error=write-strings - <!-- Format warnings are obviously bad errors, but with the current old compiler on Windows (gcc 4.6.) we run into a problem with long long ints... - The errors can be restored by removing these flags after updating to a newer compiler (soon after 0.91 release hopefully) --> - -Wno-error=format -Wno-error=format-extra-args - -O2 - -mms-bitfields - -fopenmp - </flags> - <cxxflags> - <!-- -std=gnu++0x -DCPP11 -Wno-unused-local-typedefs --> - -Woverloaded-virtual - </cxxflags> - <defines> - -DVERSION=\"${version}\" - -DHAVE_CONFIG_H - -D_INTL_REDIRECT_INLINE - -DHAVE_SSL - -DRELAYTOOL_SSL="static const int libssl_is_present=1; static int __attribute__((unused)) libssl_symbol_is_present(char *s){ return 1; }" <!-- inkboard --> - -DPOPPLER_NEW_GFXFONT <!-- poppler changed the api for 0.8.3 --> - -DPOPPLER_NEW_GFXPATCH <!-- GfxPatch no longer uses GfxColor in >= 0.15.1 --> - -DPOPPLER_NEW_ERRORAPI <!-- poppler changed the error api for 0.20.0 --> - -DPOPPLER_EVEN_NEWER_COLOR_SPACE_API <!-- poppler changed the colorspace api for 0.26.0 --> - -DPOPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API <!-- poppler changed the colorspace api for 0.29.0 --> - <!-- GTK+3 migration --> - -DGLIBMM_DISABLE_DEPRECATED - -DG_DISABLE_DEPRECATED - -DGTK_DISABLE_SINGLE_INCLUDES - <!-- -DGTKMM_DISABLE_DEPRECATED --> - <!-- -DGTK_DISABLE_DEPRECATED --> - -DGDKMM_DISABLE_DEPRECATED - -DGSEAL_ENABLE - </defines> - <includes> - -I${devlibs}/include - <!-- GTK / GTKMM --> - ${pcc.gtkmm-2.4} - ${pcc.gmodule-2.0} - <!-- OTHER --> - ${pcc.Magick++} - ${pcc.libxml-2.0} - ${pcc.freetype2} - ${pcc.cairo} - ${pcc.poppler} - -I${devlibs}/include/gc - -I${devlibs}/include/potracelib - ${pcc.librevenge-0.0} ${pcc.librevenge-stream-0.0} - ${pcc.libwpg-0.2} ${pcc.libvisio-0.1} ${pcc.libcdr-0.1} - -I${cxxtest} - <!-- PERL --> - <!-- -Wno-comment -I${devlibs}/perl/lib/CORE --> - <!-- PYTHON --> - -I${devlibs}/python/include - </includes> - </cc> - </target> - - - - <!-- - ######################################################################## - ## T A R G E T : I 1 8 N - ######################################################################## - --> - <target name="i18n" depends="compile" - description="compile gettext .po files to .mo"> - - <msgfmt todir="${build}/locale" owndir="true" - out="LC_MESSAGES/inkscape.mo"> - <fileset dir="po"> - </fileset> - </msgfmt> - </target> - - - - - - <!-- - ######################################################################## - ## T A R G E T : L I N K - ######################################################################## - --> - <target name="link" depends="compile" - description="link objects and library to create executable"> - - <rc command="${archutil}windres" - file="${src}/inkscape.rc" - out="${build}/obj/inkres.o"> - <flags> - --include-dir=${src} - </flags> - </rc> - <link command="${arch_link}" out="${build}/inkscape.exe" - strip="true" symfile="${build}/inkscape.dbg" - stripcommand="${archutil}strip" - objcopycommand="${archutil}objcopy"> - <flags> - -mwindows - -mthreads - </flags> - <fileset dir="${build}/obj"> - <exclude name="winconsole.o"/> - <exclude name="inkview.o"/> - <exclude name="inkviewres.o"/> - <!-- CxxTest --> - <exclude name="test-main.o"/> - <exclude name="test-src.o"/> - <exclude name="display/test-display.o"/> - <exclude name="helper/test-helper.o"/> - <exclude name="svg/test-svg.o"/> - <exclude name="util/test-util.o"/> - <exclude name="xml/test-xml.o"/> - </fileset> - <!-- WARNING: If you change these libraries, don't forget to change them for inkview and cxxtests below as well! --> - <libs> - -L${devlibs}/lib - ${pcl.poppler-cairo} ${pcl.poppler-glib} ${pcl.poppler} - ${pcl.gmodule-2.0} - ${pcl.gtkmm-2.4} ${pcl.pangoft2} ${pcl.gthread-2.0} - ${devlibs}/bin/libxml2.dll - ${devlibs}/bin/libxslt.dll - ${devlibs}/bin/libexslt.dll - ${pcl.cairo} ${pcl.cairomm-1.0} - ${pcl.librevenge-0.0} ${pcl.librevenge-stream-0.0} - ${pcl.libwpg-0.2} ${pcl.libvisio-0.1} ${pcl.libcdr-0.1} - -liconv - ${pcl.Magick++} - ${pcl.fontconfig} ${pcl.freetype2} - ${pcl.lcms2} - ${pcl.gsl} - -lpng -ljpeg -ltiff -lexif -lpopt -lz - -lgc -lpotrace - -lws2_32 -lintl -lgdi32 -lcomdlg32 -lm - -lgomp -lpthreadGC2 -laspell - -lmscms <!-- required for color profiles --> - </libs> - </link> - </target> - -<!-- - ######################################################################## - ## T A R G E T : L I N K C O N S O L E - ######################################################################## - --> - <target name="linkconsole" depends="compile" - description="link console helper"> - - <link command="${arch_link}" out="${build}/inkscape-console.exe" - strip="true" stripcommand="${archutil}strip"> - <flags> - -mconsole - -mthreads - </flags> - <fileset dir="${build}"> - <include name="obj/winconsole.o"/> - </fileset> - <libs></libs> - </link> - </target> - - <!-- - ######################################################################## - ## T A R G E T : L I N K I N K V I E W - ######################################################################## - --> - <target name="linkinkview" depends="compile" - description="link objects and library to create Inkview executable"> - - <rc command="${archutil}windres" - file="${src}/inkview.rc" - out="${build}/obj/inkviewres.o"> - <flags> - --include-dir=${src} - </flags> - </rc> - <link command="${arch_link}" out="${build}/inkview.exe" - strip="true" symfile="${build}/inkview.dbg" - stripcommand="${archutil}strip" - objcopycommand="${archutil}objcopy"> - <flags> - -mwindows - -mthreads - </flags> - <fileset dir="${build}/obj"> - <!-- exclude the other programs --> - <exclude name="main.o"/> - <exclude name="winmain.o"/> - <exclude name="winconsole.o"/> - <exclude name="inkres.o"/> - <!-- CxxTest --> - <exclude name="test-main.o"/> - <exclude name="test-src.o"/> - <exclude name="display/test-display.o"/> - <exclude name="helper/test-helper.o"/> - <exclude name="svg/test-svg.o"/> - <exclude name="util/test-util.o"/> - <exclude name="xml/test-xml.o"/> - </fileset> - <libs> - -L${devlibs}/lib - ${pcl.poppler-cairo} ${pcl.poppler-glib} ${pcl.poppler} - ${pcl.gtkmm-2.4} ${pcl.pangoft2} ${pcl.gthread-2.0} - ${pcl.gmodule-2.0} - ${devlibs}/bin/libxml2.dll - ${devlibs}/bin/libxslt.dll - ${devlibs}/bin/libexslt.dll - ${pcl.cairo} ${pcl.cairomm-1.0} - ${pcl.librevenge-0.0} ${pcl.librevenge-stream-0.0} - ${pcl.libwpg-0.2} ${pcl.libvisio-0.1} ${pcl.libcdr-0.1} - -liconv - ${pcl.Magick++} - ${pcl.fontconfig} ${pcl.freetype2} - ${pcl.lcms2} - ${pcl.gsl} - -lpng -ljpeg -ltiff -lexif -lpopt -lz - -lgc -lpotrace - -lws2_32 -lintl -lgdi32 -lcomdlg32 -lm - -lgomp -lpthreadGC2 -laspell - -lmscms <!-- required for color profiles --> - </libs> - </link> - </target> - - - - <!-- - ######################################################################## - ## T A R G E T : L I N K C X X T E S T S - ######################################################################## - --> - <target name="linkcxxtests" depends="compile" - description="link objects and library to create executable"> - - <link command="${arch_link}" out="${build}/cxxtests.exe" - strip="true" symfile="${build}/cxxtests.dbg" - stripcommand="${archutil}strip" - objcopycommand="${archutil}objcopy"> - <flags> - -mconsole - -mthreads - </flags> - <fileset dir="${build}/obj"> - <!-- exclude the other programs --> - <exclude name="main.o"/> - <exclude name="winmain.o"/> - <exclude name="winconsole.o"/> - <exclude name="inkres.o"/> - <exclude name="inkviewres.o"/> - <exclude name="inkview.o"/> - </fileset> - <libs> - -L${devlibs}/lib - ${pcl.poppler-cairo} ${pcl.poppler-glib} ${pcl.poppler} - ${pcl.gtkmm-2.4} ${pcl.pangoft2} ${pcl.gthread-2.0} - ${pcl.gmodule-2.0} - ${devlibs}/bin/libxml2.dll - ${devlibs}/bin/libxslt.dll - ${devlibs}/bin/libexslt.dll - ${pcl.cairo} ${pcl.cairomm-1.0} - ${pcl.librevenge-0.0} ${pcl.librevenge-stream-0.0} - ${pcl.libwpg-0.2} ${pcl.libvisio-0.1} ${pcl.libcdr-0.1} - -liconv - ${pcl.Magick++} - ${pcl.fontconfig} ${pcl.freetype2} - ${pcl.lcms2} - ${pcl.gsl} - -lpng -ljpeg -ltiff -lexif -lpopt -lz - -lgc -lpotrace - -lws2_32 -lintl -lgdi32 -lcomdlg32 -lm - -lgomp -lpthreadGC2 -laspell - -lmscms <!-- required for color profiles --> - </libs> - </link> - </target> - - - <!-- - ######################################################################## - ## T A R G E T : D I S T B A S E - ######################################################################## - --> - <target name="distbase" depends="i18n" - description="generate the distribution directory with all needed files"> - - <!-- Create the distribution directory --> - <copy todir="${dist}" file="AUTHORS"/> - <copy todir="${dist}" file="COPYING"/> - <copy todir="${dist}" file="GPL2.txt"/> - <copy todir="${dist}" file="GPL3.txt"/> - <copy todir="${dist}" file="LGPL2.1.txt"/> - <copy todir="${dist}" file="NEWS"/> - <copy todir="${dist}" file="README"/> - <copy todir="${dist}" file="TRANSLATORS"/> - <copy todir="${dist}" file="${devlibs}/bin/libatkmm-1.6-1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libglibmm-2.4-1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libgiomm-2.4-1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libgtkmm-2.4-1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libgdkmm-2.4-1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libpangomm-1.4-1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libcairomm-1.0-1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libsigc-2.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/freetype6.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libatk-1.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libgcc_s_sjlj-1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libgdk-win32-2.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libgdk_pixbuf-2.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libglib-2.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libgmodule-2.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libgobject-2.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libgtk-win32-2.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libgthread-2.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libgio-2.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libcairo-2.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libpixman-1-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libpoppler-58.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libpoppler-glib-8.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libpangocairo-1.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libpango-1.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libpangoft2-1.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libpangowin32-1.0-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libfontconfig-1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libxml2.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libxslt.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libexslt.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libexpat-1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/librevenge-0.0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/librevenge-stream-0.0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libwpg-0.2.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libwpd-0.9.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libwpd-stream-0.9.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libvisio-0.1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libcdr-0.1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/icui18n50.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/icudata50.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/icuuc50.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libjpeg-7.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libpng12-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libpng14-14.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libtiff-3.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libexif-12.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libopenjpeg-2.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/msvcr70.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/msvcr71.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/zlib1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/bzip2.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/iconv.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libpopt-0.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/liblcms-1.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/liblcms2-2.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libMagick++-3.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libMagickCore-3.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libMagickWand-3.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/intl.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/libintl-8.dll"/> - <copy todir="${dist}" file="${devlibs}/bin/pthreadGC2.dll"/> - <!-- MINGW support DLLs needed for openmp support --> - <copy todir="${dist}" file="${mingw_bin}/mingwm10.dll"/> - <copy todir="${dist}" file="${mingw_bin}/libgomp-1.dll"/> - - <!-- MSGFMT files --> - <copy todir="${dist}"> - <fileset dir="${build}/locale"> - <exclude name="\.am$"/> - </fileset> - </copy> - - <mkdir dir="${dist}/data"/> - <mkdir dir="${dist}/locale"/> - <mkdir dir="${dist}/modules"/> - <mkdir dir="${dist}/plugins"/> - - <!-- GTK --> - <copy todir="${dist}"> <fileset dir="${devlibs}/etc"/> </copy> - <copy todir="${dist}/lib"> <fileset dir="${devlibs}/lib/gtk-2.0"/> </copy> - <copy todir="${dist}/lib"> <fileset dir="${devlibs}/lib/glib-2.0"/> </copy> - <copy todir="${dist}"> - <fileset dir="share"> - <exclude name="\.am$"/> - <exclude name="\.in$"/> - <exclude name="\.sh$"/> - </fileset> - </copy> - <copy todir="${dist}/share"> <fileset dir="${devlibs}/share/locale"/> </copy> - <copy todir="${dist}/share"> <fileset dir="${devlibs}/share/themes"/> </copy> - <copy todir="${dist}/share"> <fileset dir="${devlibs}/share/poppler"/> </copy> - <copy todir="${dist}" file="${devlibs}/bin/gdb.exe"/> - - <!-- Aspell dictionaries --> - <copy todir="${dist}/lib"> <fileset dir="${devlibs}/lib/aspell-0.60"/> </copy> - - <!-- Necessary to run extensions on windows if it is not in the path --> - <copy todir="${dist}" file="${devlibs}/bin/gspawn-win32-helper.exe"/> - <copy todir="${dist}" file="${devlibs}/bin/gspawn-win32-helper-console.exe"/> - - <!-- PERL --> - <copy todir="${dist}" file="${devlibs}/perl/bin/perl58.dll"/> - - <!-- PYTHON --> - <copy todir="${dist}" file="${devlibs}/python/python27.dll"/> - <copy todir="${dist}/python" file="${devlibs}/python/python.exe" /> - <copy todir="${dist}/python" file="${devlibs}/python/pythonw.exe"/> - <copy todir="${dist}/python"> <fileset dir="${devlibs}/python/Lib"/> </copy> - <copy todir="${dist}/python"> <fileset dir="${devlibs}/python/DLLs"/> </copy> - <copy todir="${dist}/python"> <fileset dir="${devlibs}/python/Scripts"/> </copy> - - <!--<copy file="${devlibs}/share/themes/MS-Windows/gtk-2.0/gtkrc" todir="${dist}/etc/gtk-2.0"/>--> - <makefile file="${dist}/etc/gtk-2.0/gtkrc"> - gtk-icon-sizes = "gtk-menu=16,16:gtk-small-toolbar=16,16:gtk-large-toolbar=24,24:gtk-dnd=32,32:inkscape-decoration=16,16" - gtk-toolbar-icon-size = small-toolbar - - # disable images in buttons. i've only seen ugly delphi apps use this feature. - gtk-button-images = 0 - - # disable the annoying beep in editable controls - gtk-error-bell = 0 - - # enable/disable images in menus. most "stock" microsoft apps don't use these, except sparingly. - # the office apps use them heavily, though. - gtk-menu-images = 1 - - # use the win32 button ordering instead of the GNOME HIG one, where applicable - gtk-alternative-button-order = 1 - - style "msw-default" - { - GtkWidget::interior-focus = 1 - GtkOptionMenu::indicator-size = { 9, 5 } - GtkOptionMenu::indicator-spacing = { 7, 5, 2, 2 } - GtkSpinButton::shadow-type = in - - # Owen and I disagree that these should be themable - #GtkUIManager::add-tearoffs = 0 - #GtkComboBox::add-tearoffs = 0 - - GtkComboBox::appears-as-list = 1 - GtkComboBox::focus-on-click = 0 - - GOComboBox::add_tearoffs = 0 - - GtkTreeView::allow-rules = 0 - GtkTreeView::expander-size = 12 - - GtkExpander::expander-size = 12 - - GtkScrolledWindow::scrollbar_spacing = 1 - - GtkSeparatorMenuItem::horizontal-padding = 2 - - engine "wimp" - { - } - } - class "*" style "msw-default" - </makefile> - - </target> - - - <!-- - ######################################################################## - ## T A R G E T : D I S T - I N K S C A P E - ######################################################################## - --> - <target name="dist-inkscape" depends="link,linkconsole,distbase" - description="copy inkscape to the distribution directory"> - - <!-- Create the distribution directory --> - <copy todir="${dist}" file="${build}/inkscape.exe"/> - <copy todir="${dist}" file="${build}/inkscape.dbg"/> - <copy file="${build}/inkscape-console.exe" tofile="${dist}/inkscape.com"/> - </target> - - - <!-- - ######################################################################## - ## T A R G E T : D I S T - I N K V I E W - ######################################################################## - --> - <target name="dist-inkview" depends="linkinkview,distbase" - description="copy inkview to the distribution directory"> - - <!-- Create the distribution directory --> - <copy todir="${dist}" file="${build}/inkview.exe"/> - <copy todir="${dist}" file="${build}/inkview.dbg"/> - </target> - - - <!-- - ######################################################################## - ## T A R G E T : C H E C K - ######################################################################## - --> - <target name="check" depends="linkcxxtests,distbase" - description="perform unit tests"> - <copy todir="${dist}" file="${build}/cxxtests.exe"/> - <cxxtestrun command="${dist}/cxxtests" workingdir="${dist}" /> - </target> - - <!-- - ######################################################################## - ## T A R G E T : D I S T - A L L - ######################################################################## - --> - <target name="dist-all" depends="dist-inkscape,dist-inkview" - description="generate the distribution, along with inkview" > - </target> - - - - - <!-- - ######################################################################## - ## T A R G E T : D I S T - A L L - C H E C K - ######################################################################## - --> - <target name="dist-all-check" depends="dist-all,check" - description="generate the distribution, along with inkview and run cxxtests" > - </target> - - - - - - <!-- - ######################################################################## - ## T A R G E T : C L E A N - ######################################################################## - --> - <target name="clean" - description="clean up. deleting build and distro dirs" > - - <delete dir="${build}"/> - <delete dir="${dist}"/> - <delete file="build.dep"/> - <delete file="config.h"/> - <delete file="${src}/inkscape-version.cpp"/> - <delete file="${src}/test-main.cpp"/> - <delete file="${src}/test-src.cpp"/> - <delete file="${src}/display/test-display.cpp"/> - <delete file="${src}/helper/test-helper.cpp"/> - <delete file="${src}/svg/test-svg.cpp"/> - <delete file="${src}/util/test-util.cpp"/> - <delete file="${src}/xml/test-xml.cpp"/> - - </target> - - - -</project> -<!-- -######################################################################## -## E N D -######################################################################## ---> - diff --git a/buildtool.cpp b/buildtool.cpp deleted file mode 100644 index a64340e24..000000000 --- a/buildtool.cpp +++ /dev/null @@ -1,10334 +0,0 @@ -/** - * Simple build automation tool. - * - * Authors: - * Bob Jamison - * Jasper van de Gronde - * Johan Engelen - * - * Copyright (C) 2006-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * To use this file, compile with: - * <pre> - * g++ -O3 buildtool.cpp -o btool.exe -fopenmp - * (or whatever your compiler might be) - * Then - * btool - * or - * btool {target} - * - * Note: if you are using MinGW, and a not very recent version of it, - * gettimeofday() might be missing. If so, just build this file with - * this command: - * g++ -O3 -DNEED_GETTIMEOFDAY buildtool.cpp -o btool.exe -fopenmp - * - */ - -#define BUILDTOOL_VERSION "BuildTool v0.9.9multi" - -#include <stdio.h> -#include <fcntl.h> -#include <unistd.h> -#include <stdarg.h> -#include <sys/stat.h> -#include <time.h> -#include <sys/time.h> -#include <utime.h> -#include <dirent.h> - -#include <iostream> -#include <list> -#include <string> -#include <map> -#include <set> -#include <vector> -#include <algorithm> - - -#ifdef __WIN32__ -#define WIN32_LEAN_AND_MEAN -#define NOGDI -#include <windows.h> -#endif - -#include <errno.h> - - -//######################################################################## -//# Definition of gettimeofday() for those who don't have it -//######################################################################## -#ifdef NEED_GETTIMEOFDAY -#include <sys/timeb.h> - -struct timezone { - int tz_minuteswest; /* minutes west of Greenwich */ - int tz_dsttime; /* type of dst correction */ - }; - -static int gettimeofday (struct timeval *tv, struct timezone *tz) -{ - struct _timeb tb; - - if (!tv) - return (-1); - - _ftime (&tb); - tv->tv_sec = tb.time; - tv->tv_usec = tb.millitm * 1000 + 500; - if (tz) - { - tz->tz_minuteswest = -60 * _timezone; - tz->tz_dsttime = _daylight; - } - return 0; -} - -#endif - - - - - - - -namespace buildtool -{ - - - - -//######################################################################## -//######################################################################## -//## R E G E X P -//######################################################################## -//######################################################################## - -/** - * This is the SLRE (Super Light Regular Expression library) - * SLRE is an ISO C library that implements a subset of Perl - * regular expression syntax. - * - * See https://github.com/cesanta/slre for details - * - * It's clean code and small size allow us to - * embed it in BuildTool without adding a dependency - * - */ - -//begin slre.h - -/* - * Copyright (c) 2004-2013 Sergey Lyubka <valenok@gmail.com> - * Copyright (c) 2013 Cesanta Software Limited - * All rights reserved - * - * This library is dual-licensed: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. For the terms of this - * license, see <http://www.gnu.org/licenses/>. - * - * You are free to use this library under the terms of the GNU General - * Public License, but WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. - * - * Alternatively, you can license this library under a commercial - * license, as set out in <http://cesanta.com/products.html>. - */ - -/* - * This is a regular expression library that implements a subset of Perl RE. - * Please refer to README.md for a detailed reference. - */ - -#ifndef SLRE_HEADER_DEFINED -#define SLRE_HEADER_DEFINED - -#ifdef __cplusplus -extern "C" { -#endif - -struct slre_cap { - const char *ptr; - int len; -}; - - -int slre_match(const char *regexp, const char *buf, int buf_len, - struct slre_cap *caps, int num_caps, int flags); - -/* Possible flags for slre_match() */ -enum { SLRE_IGNORE_CASE = 1 }; - - -/* slre_match() failure codes */ -#define SLRE_NO_MATCH -1 -#define SLRE_UNEXPECTED_QUANTIFIER -2 -#define SLRE_UNBALANCED_BRACKETS -3 -#define SLRE_INTERNAL_ERROR -4 -#define SLRE_INVALID_CHARACTER_SET -5 -#define SLRE_INVALID_METACHARACTER -6 -#define SLRE_CAPS_ARRAY_TOO_SMALL -7 -#define SLRE_TOO_MANY_BRANCHES -8 -#define SLRE_TOO_MANY_BRACKETS -9 - -#ifdef __cplusplus -} -#endif - -#endif /* SLRE_HEADER_DEFINED */ - -//end slre.h - -//start slre.c - -/* - * Copyright (c) 2004-2013 Sergey Lyubka <valenok@gmail.com> - * Copyright (c) 2013 Cesanta Software Limited - * All rights reserved - * - * This library is dual-licensed: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. For the terms of this - * license, see <http://www.gnu.org/licenses/>. - * - * You are free to use this library under the terms of the GNU General - * Public License, but WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. - * - * Alternatively, you can license this library under a commercial - * license, as set out in <http://cesanta.com/products.html>. - */ - -#include <stdio.h> -#include <ctype.h> -#include <string.h> - -//#include "slre.h" - -#define MAX_BRANCHES 100 -#define MAX_BRACKETS 100 -#define FAIL_IF(condition, error_code) if (condition) return (error_code) - -#ifndef ARRAY_SIZE -#define ARRAY_SIZE(ar) (sizeof(ar) / sizeof((ar)[0])) -#endif - -#ifdef SLRE_DEBUG -#define DBG(x) printf x -#else -#define DBG(x) -#endif - -struct bracket_pair { - const char *ptr; /* Points to the first char after '(' in regex */ - int len; /* Length of the text between '(' and ')' */ - int branches; /* Index in the branches array for this pair */ - int num_branches; /* Number of '|' in this bracket pair */ -}; - -struct branch { - int bracket_index; /* index for 'struct bracket_pair brackets' */ - /* array defined below */ - const char *schlong; /* points to the '|' character in the regex */ -}; - -struct regex_info { - /* - * Describes all bracket pairs in the regular expression. - * First entry is always present, and grabs the whole regex. - */ - struct bracket_pair brackets[MAX_BRACKETS]; - int num_brackets; - - /* - * Describes alternations ('|' operators) in the regular expression. - * Each branch falls into a specific branch pair. - */ - struct branch branches[MAX_BRANCHES]; - int num_branches; - - /* Array of captures provided by the user */ - struct slre_cap *caps; - int num_caps; - - /* E.g. SLRE_IGNORE_CASE. See enum below */ - int flags; -}; - -static int is_metacharacter(const unsigned char *s) { - static const char *metacharacters = "^$().[]*+?|\\Ssdbfnrtv"; - return strchr(metacharacters, *s) != NULL; -} - -static int op_len(const char *re) { - return re[0] == '\\' && re[1] == 'x' ? 4 : re[0] == '\\' ? 2 : 1; -} - -static int set_len(const char *re, int re_len) { - int len = 0; - - while (len < re_len && re[len] != ']') { - len += op_len(re + len); - } - - return len <= re_len ? len + 1 : -1; -} - -static int get_op_len(const char *re, int re_len) { - return re[0] == '[' ? set_len(re + 1, re_len - 1) + 1 : op_len(re); -} - -static int is_quantifier(const char *re) { - return re[0] == '*' || re[0] == '+' || re[0] == '?'; -} - -static int toi(int x) { - return isdigit(x) ? x - '0' : x - 'W'; -} - -static int hextoi(const unsigned char *s) { - return (toi(tolower(s[0])) << 4) | toi(tolower(s[1])); -} - -static int match_op(const unsigned char *re, const unsigned char *s, - struct regex_info *info) { - int result = 0; - switch (*re) { - case '\\': - /* Metacharacters */ - switch (re[1]) { - case 'S': FAIL_IF(isspace(*s), SLRE_NO_MATCH); result++; break; - case 's': FAIL_IF(!isspace(*s), SLRE_NO_MATCH); result++; break; - case 'd': FAIL_IF(!isdigit(*s), SLRE_NO_MATCH); result++; break; - case 'b': FAIL_IF(*s != '\b', SLRE_NO_MATCH); result++; break; - case 'f': FAIL_IF(*s != '\f', SLRE_NO_MATCH); result++; break; - case 'n': FAIL_IF(*s != '\n', SLRE_NO_MATCH); result++; break; - case 'r': FAIL_IF(*s != '\r', SLRE_NO_MATCH); result++; break; - case 't': FAIL_IF(*s != '\t', SLRE_NO_MATCH); result++; break; - case 'v': FAIL_IF(*s != '\v', SLRE_NO_MATCH); result++; break; - - case 'x': - /* Match byte, \xHH where HH is hexadecimal byte representaion */ - FAIL_IF(hextoi(re + 2) != *s, SLRE_NO_MATCH); - result++; - break; - - default: - /* Valid metacharacter check is done in bar() */ - FAIL_IF(re[1] != s[0], SLRE_NO_MATCH); - result++; - break; - } - break; - - case '|': FAIL_IF(1, SLRE_INTERNAL_ERROR); break; - case '$': FAIL_IF(1, SLRE_NO_MATCH); break; - case '.': result++; break; - - default: - if (info->flags & SLRE_IGNORE_CASE) { - FAIL_IF(tolower(*re) != tolower(*s), SLRE_NO_MATCH); - } else { - FAIL_IF(*re != *s, SLRE_NO_MATCH); - } - result++; - break; - } - - return result; -} - -static int match_set(const char *re, int re_len, const char *s, - struct regex_info *info) { - int len = 0, result = -1, invert = re[0] == '^'; - - if (invert) re++, re_len--; - - while (len <= re_len && re[len] != ']' && result <= 0) { - /* Support character range */ - if (re[len] != '-' && re[len + 1] == '-' && re[len + 2] != ']' && - re[len + 2] != '\0') { - result = info->flags & SLRE_IGNORE_CASE ? - tolower(*s) >= tolower(re[len]) && tolower(*s) <= tolower(re[len + 2]) : - *s >= re[len] && *s <= re[len + 2]; - len += 3; - } else { - result = match_op((unsigned char *) re + len, (unsigned char *) s, info); - len += op_len(re + len); - } - } - return (!invert && result > 0) || (invert && result <= 0) ? 1 : -1; -} - -static int doh(const char *s, int s_len, struct regex_info *info, int bi); - -static int bar(const char *re, int re_len, const char *s, int s_len, - struct regex_info *info, int bi) { - /* i is offset in re, j is offset in s, bi is brackets index */ - int i, j, n, step; - - for (i = j = 0; i < re_len && j <= s_len; i += step) { - - /* Handle quantifiers. Get the length of the chunk. */ - step = re[i] == '(' ? info->brackets[bi + 1].len + 2 : - get_op_len(re + i, re_len - i); - - DBG(("%s [%.*s] [%.*s] re_len=%d step=%d i=%d j=%d\n", __func__, - re_len - i, re + i, s_len - j, s + j, re_len, step, i, j)); - - FAIL_IF(is_quantifier(&re[i]), SLRE_UNEXPECTED_QUANTIFIER); - FAIL_IF(step <= 0, SLRE_INVALID_CHARACTER_SET); - - if (i + step < re_len && is_quantifier(re + i + step)) { - DBG(("QUANTIFIER: [%.*s]%c [%.*s]\n", step, re + i, - re[i + step], s_len - j, s + j)); - if (re[i + step] == '?') { - int result = bar(re + i, step, s + j, s_len - j, info, bi); - j += result > 0 ? result : 0; - i++; - } else if (re[i + step] == '+' || re[i + step] == '*') { - int j2 = j, nj = j, n1, n2 = -1, ni, non_greedy = 0; - - /* Points to the regexp code after the quantifier */ - ni = i + step + 1; - if (ni < re_len && re[ni] == '?') { - non_greedy = 1; - ni++; - } - - do { - if ((n1 = bar(re + i, step, s + j2, s_len - j2, info, bi)) > 0) { - j2 += n1; - } - if (re[i + step] == '+' && n1 < 0) break; - - if (ni >= re_len) { - /* After quantifier, there is nothing */ - nj = j2; - } else if ((n2 = bar(re + ni, re_len - ni, s + j2, - s_len - j2, info, bi)) >= 0) { - /* Regex after quantifier matched */ - nj = j2 + n2; - } - if (nj > j && non_greedy) break; - } while (n1 > 0); - - /* - * Even if we found one or more pattern, this branch will be executed, - * changing the next captures. - */ - if (n1 < 0 && n2 < 0 && re[i + step] == '*' && - (n2 = bar(re + ni, re_len - ni, s + j, s_len - j, info, bi)) > 0) { - nj = j + n2; - } - - DBG(("STAR/PLUS END: %d %d %d %d %d\n", j, nj, re_len - ni, n1, n2)); - FAIL_IF(re[i + step] == '+' && nj == j, SLRE_NO_MATCH); - - /* If while loop body above was not executed for the * quantifier, */ - /* make sure the rest of the regex matches */ - FAIL_IF(nj == j && ni < re_len && n2 < 0, SLRE_NO_MATCH); - - /* Returning here cause we've matched the rest of RE already */ - return nj; - } - continue; - } - - if (re[i] == '[') { - n = match_set(re + i + 1, re_len - (i + 2), s + j, info); - DBG(("SET %.*s [%.*s] -> %d\n", step, re + i, s_len - j, s + j, n)); - FAIL_IF(n <= 0, SLRE_NO_MATCH); - j += n; - } else if (re[i] == '(') { - n = SLRE_NO_MATCH; - bi++; - FAIL_IF(bi >= info->num_brackets, SLRE_INTERNAL_ERROR); - DBG(("CAPTURING [%.*s] [%.*s] [%s]\n", - step, re + i, s_len - j, s + j, re + i + step)); - - if (re_len - (i + step) <= 0) { - /* Nothing follows brackets */ - n = doh(s + j, s_len - j, info, bi); - } else { - int j2; - for (j2 = 0; j2 <= s_len - j; j2++) { - if ((n = doh(s + j, s_len - (j + j2), info, bi)) >= 0 && - bar(re + i + step, re_len - (i + step), - s + j + n, s_len - (j + n), info, bi) >= 0) break; - } - } - - DBG(("CAPTURED [%.*s] [%.*s]:%d\n", step, re + i, s_len - j, s + j, n)); - FAIL_IF(n < 0, n); - if (info->caps != NULL && n > 0) { - info->caps[bi - 1].ptr = s + j; - info->caps[bi - 1].len = n; - } - j += n; - } else if (re[i] == '^') { - FAIL_IF(j != 0, SLRE_NO_MATCH); - } else if (re[i] == '$') { - FAIL_IF(j != s_len, SLRE_NO_MATCH); - } else { - FAIL_IF(j >= s_len, SLRE_NO_MATCH); - n = match_op((unsigned char *) (re + i), (unsigned char *) (s + j), info); - FAIL_IF(n <= 0, n); - j += n; - } - } - - return j; -} - -/* Process branch points */ -static int doh(const char *s, int s_len, struct regex_info *info, int bi) { - const struct bracket_pair *b = &info->brackets[bi]; - int i = 0, len, result; - const char *p; - - do { - p = i == 0 ? b->ptr : info->branches[b->branches + i - 1].schlong + 1; - len = b->num_branches == 0 ? b->len : - i == b->num_branches ? (int) (b->ptr + b->len - p) : - (int) (info->branches[b->branches + i].schlong - p); - DBG(("%s %d %d [%.*s] [%.*s]\n", __func__, bi, i, len, p, s_len, s)); - result = bar(p, len, s, s_len, info, bi); - DBG(("%s <- %d\n", __func__, result)); - } while (result <= 0 && i++ < b->num_branches); /* At least 1 iteration */ - - return result; -} - -static int baz(const char *s, int s_len, struct regex_info *info) { - int i, result = -1, is_anchored = info->brackets[0].ptr[0] == '^'; - - for (i = 0; i <= s_len; i++) { - result = doh(s + i, s_len - i, info, 0); - if (result >= 0) { - result += i; - break; - } - if (is_anchored) break; - } - - return result; -} - -static void setup_branch_points(struct regex_info *info) { - int i, j; - struct branch tmp; - - /* First, sort branches. Must be stable, no qsort. Use bubble algo. */ - for (i = 0; i < info->num_branches; i++) { - for (j = i + 1; j < info->num_branches; j++) { - if (info->branches[i].bracket_index > info->branches[j].bracket_index) { - tmp = info->branches[i]; - info->branches[i] = info->branches[j]; - info->branches[j] = tmp; - } - } - } - - /* - * For each bracket, set their branch points. This way, for every bracket - * (i.e. every chunk of regex) we know all branch points before matching. - */ - for (i = j = 0; i < info->num_brackets; i++) { - info->brackets[i].num_branches = 0; - info->brackets[i].branches = j; - while (j < info->num_branches && info->branches[j].bracket_index == i) { - info->brackets[i].num_branches++; - j++; - } - } -} - -static int foo(const char *re, int re_len, const char *s, int s_len, - struct regex_info *info) { - int i, step, depth = 0; - - /* First bracket captures everything */ - info->brackets[0].ptr = re; - info->brackets[0].len = re_len; - info->num_brackets = 1; - - /* Make a single pass over regex string, memorize brackets and branches */ - for (i = 0; i < re_len; i += step) { - step = get_op_len(re + i, re_len - i); - - if (re[i] == '|') { - FAIL_IF(info->num_branches >= (int) ARRAY_SIZE(info->branches), - SLRE_TOO_MANY_BRANCHES); - info->branches[info->num_branches].bracket_index = - info->brackets[info->num_brackets - 1].len == -1 ? - info->num_brackets - 1 : depth; - info->branches[info->num_branches].schlong = &re[i]; - info->num_branches++; - } else if (re[i] == '\\') { - FAIL_IF(i >= re_len - 1, SLRE_INVALID_METACHARACTER); - if (re[i + 1] == 'x') { - /* Hex digit specification must follow */ - FAIL_IF(re[i + 1] == 'x' && i >= re_len - 3, - SLRE_INVALID_METACHARACTER); - FAIL_IF(re[i + 1] == 'x' && !(isxdigit(re[i + 2]) && - isxdigit(re[i + 3])), SLRE_INVALID_METACHARACTER); - } else { - FAIL_IF(!is_metacharacter((unsigned char *) re + i + 1), - SLRE_INVALID_METACHARACTER); - } - } else if (re[i] == '(') { - FAIL_IF(info->num_brackets >= (int) ARRAY_SIZE(info->brackets), - SLRE_TOO_MANY_BRACKETS); - depth++; /* Order is important here. Depth increments first. */ - info->brackets[info->num_brackets].ptr = re + i + 1; - info->brackets[info->num_brackets].len = -1; - info->num_brackets++; - FAIL_IF(info->num_caps > 0 && info->num_brackets - 1 > info->num_caps, - SLRE_CAPS_ARRAY_TOO_SMALL); - } else if (re[i] == ')') { - int ind = info->brackets[info->num_brackets - 1].len == -1 ? - info->num_brackets - 1 : depth; - info->brackets[ind].len = (int) (&re[i] - info->brackets[ind].ptr); - DBG(("SETTING BRACKET %d [%.*s]\n", - ind, info->brackets[ind].len, info->brackets[ind].ptr)); - depth--; - FAIL_IF(depth < 0, SLRE_UNBALANCED_BRACKETS); - FAIL_IF(i > 0 && re[i - 1] == '(', SLRE_NO_MATCH); - } - } - - FAIL_IF(depth != 0, SLRE_UNBALANCED_BRACKETS); - setup_branch_points(info); - - return baz(s, s_len, info); -} - -int slre_match(const char *regexp, const char *s, int s_len, - struct slre_cap *caps, int num_caps, int flags) { - struct regex_info info; - - /* Initialize info structure */ - info.flags = flags; - info.num_brackets = info.num_branches = 0; - info.num_caps = num_caps; - info.caps = caps; - - DBG(("========================> [%s] [%.*s]\n", regexp, s_len, s)); - return foo(regexp, (int) strlen(regexp), s, s_len, &info); -} - -//end slre.c - -//######################################################################## -//######################################################################## -//## E N D R E G E X P -//######################################################################## -//######################################################################## - - - - - -//######################################################################## -//######################################################################## -//## X M L -//######################################################################## -//######################################################################## - -// Note: This mini-dom library comes from Pedro, another little project -// of mine. - -typedef std::string String; -typedef unsigned int XMLCh; - - -class Namespace -{ -public: - Namespace() - {} - - Namespace(const String &prefixArg, const String &namespaceURIArg) - { - prefix = prefixArg; - namespaceURI = namespaceURIArg; - } - - Namespace(const Namespace &other) - { - assign(other); - } - - Namespace &operator=(const Namespace &other) - { - assign(other); - return *this; - } - - virtual ~Namespace() - {} - - virtual String getPrefix() - { return prefix; } - - virtual String getNamespaceURI() - { return namespaceURI; } - -protected: - - void assign(const Namespace &other) - { - prefix = other.prefix; - namespaceURI = other.namespaceURI; - } - - String prefix; - String namespaceURI; - -}; - -class Attribute -{ -public: - Attribute() - {} - - Attribute(const String &nameArg, const String &valueArg) - { - name = nameArg; - value = valueArg; - } - - Attribute(const Attribute &other) - { - assign(other); - } - - Attribute &operator=(const Attribute &other) - { - assign(other); - return *this; - } - - virtual ~Attribute() - {} - - virtual String getName() - { return name; } - - virtual String getValue() - { return value; } - -protected: - - void assign(const Attribute &other) - { - name = other.name; - value = other.value; - } - - String name; - String value; - -}; - - -class Element -{ -friend class Parser; - -public: - Element() - { - init(); - } - - Element(const String &nameArg) - { - init(); - name = nameArg; - } - - Element(const String &nameArg, const String &valueArg) - { - init(); - name = nameArg; - value = valueArg; - } - - Element(const Element &other) - { - assign(other); - } - - Element &operator=(const Element &other) - { - assign(other); - return *this; - } - - virtual Element *clone(); - - virtual ~Element() - { - for (std::size_t i=0 ; i<children.size() ; i++) - delete children[i]; - } - - virtual String getName() - { return name; } - - virtual String getValue() - { return value; } - - Element *getParent() - { return parent; } - - std::vector<Element *> getChildren() - { return children; } - - std::vector<Element *> findElements(const String &name); - - String getAttribute(const String &name); - - std::vector<Attribute> &getAttributes() - { return attributes; } - - String getTagAttribute(const String &tagName, const String &attrName); - - String getTagValue(const String &tagName); - - void addChild(Element *child); - - void addAttribute(const String &name, const String &value); - - void addNamespace(const String &prefix, const String &namespaceURI); - - - /** - * Prettyprint an XML tree to an output stream. Elements are indented - * according to element hierarchy. - * @param f a stream to receive the output - * @param elem the element to output - */ - void writeIndented(FILE *f); - - /** - * Prettyprint an XML tree to standard output. This is the equivalent of - * writeIndented(stdout). - * @param elem the element to output - */ - void print(); - - int getLine() - { return line; } - -protected: - - void init() - { - parent = NULL; - line = 0; - } - - void assign(const Element &other) - { - parent = other.parent; - children = other.children; - attributes = other.attributes; - namespaces = other.namespaces; - name = other.name; - value = other.value; - line = other.line; - } - - void findElementsRecursive(std::vector<Element *>&res, const String &name); - - void writeIndentedRecursive(FILE *f, int indent); - - Element *parent; - - std::vector<Element *>children; - - std::vector<Attribute> attributes; - std::vector<Namespace> namespaces; - - String name; - String value; - - int line; -}; - - - - - -class Parser -{ -public: - /** - * Constructor - */ - Parser() - { init(); } - - virtual ~Parser() - {} - - /** - * Parse XML in a char buffer. - * @param buf a character buffer to parse - * @param pos position to start parsing - * @param len number of chars, from pos, to parse. - * @return a pointer to the root of the XML document; - */ - Element *parse(const char *buf,int pos,int len); - - /** - * Parse XML in a char buffer. - * @param buf a character buffer to parse - * @param pos position to start parsing - * @param len number of chars, from pos, to parse. - * @return a pointer to the root of the XML document; - */ - Element *parse(const String &buf); - - /** - * Parse a named XML file. The file is loaded like a data file; - * the original format is not preserved. - * @param fileName the name of the file to read - * @return a pointer to the root of the XML document; - */ - Element *parseFile(const String &fileName); - - /** - * Utility method to preprocess a string for XML - * output, escaping its entities. - * @param str the string to encode - */ - static String encode(const String &str); - - /** - * Removes whitespace from beginning and end of a string - */ - String trim(const String &s); - -private: - - void init() - { - keepGoing = true; - currentNode = NULL; - parselen = 0; - parsebuf = NULL; - currentPosition = 0; - } - - int countLines(int begin, int end); - - void getLineAndColumn(int pos, int *lineNr, int *colNr); - - void error(const char *fmt, ...); - - int peek(int pos); - - int match(int pos, const char *text); - - int skipwhite(int p); - - int getWord(int p0, String &buf); - - int getQuoted(int p0, String &buf, int do_i_parse); - - int parseVersion(int p0); - - int parseDoctype(int p0); - - int parseElement(int p0, Element *par,int depth); - - Element *parse(XMLCh *buf,int pos,int len); - - bool keepGoing; - Element *currentNode; - int parselen; - XMLCh *parsebuf; - String cdatabuf; - int currentPosition; -}; - - - - -//######################################################################## -//# E L E M E N T -//######################################################################## - -Element *Element::clone() -{ - Element *elem = new Element(name, value); - elem->parent = parent; - elem->attributes = attributes; - elem->namespaces = namespaces; - elem->line = line; - - std::vector<Element *>::iterator iter; - for (iter = children.begin(); iter != children.end() ; iter++) - { - elem->addChild((*iter)->clone()); - } - return elem; -} - - -void Element::findElementsRecursive(std::vector<Element *>&res, const String &name) -{ - if (getName() == name) - { - res.push_back(this); - } - for (std::size_t i=0; i<children.size() ; i++) - children[i]->findElementsRecursive(res, name); -} - -std::vector<Element *> Element::findElements(const String &name) -{ - std::vector<Element *> res; - findElementsRecursive(res, name); - return res; -} - -String Element::getAttribute(const String &name) -{ - for (std::size_t i=0 ; i<attributes.size() ; i++) - if (attributes[i].getName() ==name) - return attributes[i].getValue(); - return ""; -} - -String Element::getTagAttribute(const String &tagName, const String &attrName) -{ - std::vector<Element *>elems = findElements(tagName); - if (elems.size() <1) - return ""; - String res = elems[0]->getAttribute(attrName); - return res; -} - -String Element::getTagValue(const String &tagName) -{ - std::vector<Element *>elems = findElements(tagName); - if (elems.size() <1) - return ""; - String res = elems[0]->getValue(); - return res; -} - -void Element::addChild(Element *child) -{ - if (!child) - return; - child->parent = this; - children.push_back(child); -} - - -void Element::addAttribute(const String &name, const String &value) -{ - Attribute attr(name, value); - attributes.push_back(attr); -} - -void Element::addNamespace(const String &prefix, const String &namespaceURI) -{ - Namespace ns(prefix, namespaceURI); - namespaces.push_back(ns); -} - -void Element::writeIndentedRecursive(FILE *f, int indent) -{ - int i; - if (!f) - return; - //Opening tag, and attributes - for (i=0;i<indent;i++) - fputc(' ',f); - fprintf(f,"<%s",name.c_str()); - for (std::size_t i=0 ; i<attributes.size() ; i++) - { - fprintf(f," %s=\"%s\"", - attributes[i].getName().c_str(), - attributes[i].getValue().c_str()); - } - for (std::size_t i=0 ; i<namespaces.size() ; i++) - { - fprintf(f," xmlns:%s=\"%s\"", - namespaces[i].getPrefix().c_str(), - namespaces[i].getNamespaceURI().c_str()); - } - fprintf(f,">\n"); - - //Between the tags - if (value.size() > 0) - { - for (int i=0;i<indent;i++) - fputc(' ', f); - fprintf(f," %s\n", value.c_str()); - } - - for (std::size_t i=0 ; i<children.size() ; i++) - children[i]->writeIndentedRecursive(f, indent+2); - - //Closing tag - for (int i=0; i<indent; i++) - fputc(' ',f); - fprintf(f,"</%s>\n", name.c_str()); -} - -void Element::writeIndented(FILE *f) -{ - writeIndentedRecursive(f, 0); -} - -void Element::print() -{ - writeIndented(stdout); -} - - -//######################################################################## -//# P A R S E R -//######################################################################## - - - -typedef struct - { - const char *escaped; - char value; - } EntityEntry; - -static EntityEntry entities[] = -{ - { "&" , '&' }, - { "<" , '<' }, - { ">" , '>' }, - { "'", '\'' }, - { """, '"' }, - { NULL , '\0' } -}; - - - -/** - * Removes whitespace from beginning and end of a string - */ -String Parser::trim(const String &s) -{ - if (s.size() < 1) - return s; - - //Find first non-ws char - std::size_t begin = 0; - for ( ; begin < s.size() ; begin++) - { - if (!isspace(s[begin])) - break; - } - - //Find first non-ws char, going in reverse - std::size_t end = s.size() - 1; - for ( ; end > begin ; end--) - { - if (!isspace(s[end])) - break; - } - //trace("begin:%d end:%d", begin, end); - - String res = s.substr(begin, end-begin+1); - return res; -} - - -int Parser::countLines(int begin, int end) -{ - int count = 0; - for (int i=begin ; i<end ; i++) - { - XMLCh ch = parsebuf[i]; - if (ch == '\n' || ch == '\r') - count++; - } - return count; -} - - -void Parser::getLineAndColumn(int pos, int *lineNr, int *colNr) -{ - int line = 1; - int col = 1; - for (long i=0 ; i<pos ; i++) - { - XMLCh ch = parsebuf[i]; - if (ch == '\n' || ch == '\r') - { - col = 0; - line ++; - } - else - col++; - } - *lineNr = line; - *colNr = col; - -} - - -void Parser::error(const char *fmt, ...) -{ - int lineNr; - int colNr; - getLineAndColumn(currentPosition, &lineNr, &colNr); - va_list args; - fprintf(stderr, "xml error at line %d, column %d:", lineNr, colNr); - va_start(args,fmt); - vfprintf(stderr,fmt,args); - va_end(args) ; - fprintf(stderr, "\n"); -} - - - -int Parser::peek(int pos) -{ - if (pos >= parselen) - return -1; - currentPosition = pos; - int ch = parsebuf[pos]; - //printf("ch:%c\n", ch); - return ch; -} - - - -String Parser::encode(const String &str) -{ - String ret; - for (std::size_t i=0 ; i<str.size() ; i++) - { - XMLCh ch = (XMLCh)str[i]; - if (ch == '&') - ret.append("&"); - else if (ch == '<') - ret.append("<"); - else if (ch == '>') - ret.append(">"); - else if (ch == '\'') - ret.append("'"); - else if (ch == '"') - ret.append("""); - else - ret.push_back(ch); - - } - return ret; -} - - -int Parser::match(int p0, const char *text) -{ - int p = p0; - while (*text) - { - if (peek(p) != *text) - return p0; - p++; text++; - } - return p; -} - - - -int Parser::skipwhite(int p) -{ - - while (p<parselen) - { - int p2 = match(p, "<!--"); - if (p2 > p) - { - p = p2; - while (p<parselen) - { - p2 = match(p, "-->"); - if (p2 > p) - { - p = p2; - break; - } - p++; - } - } - XMLCh b = peek(p); - if (!isspace(b)) - break; - p++; - } - return p; -} - -/* modify this to allow all chars for an element or attribute name*/ -int Parser::getWord(int p0, String &buf) -{ - int p = p0; - while (p<parselen) - { - XMLCh b = peek(p); - if (b<=' ' || b=='/' || b=='>' || b=='=') - break; - buf.push_back(b); - p++; - } - return p; -} - -int Parser::getQuoted(int p0, String &buf, int do_i_parse) -{ - - int p = p0; - if (peek(p) != '"' && peek(p) != '\'') - return p0; - p++; - - while ( p<parselen ) - { - XMLCh b = peek(p); - if (b=='"' || b=='\'') - break; - if (b=='&' && do_i_parse) - { - bool found = false; - for (EntityEntry *ee = entities ; ee->value ; ee++) - { - int p2 = match(p, ee->escaped); - if (p2>p) - { - buf.push_back(ee->value); - p = p2; - found = true; - break; - } - } - if (!found) - { - error("unterminated entity"); - return false; - } - } - else - { - buf.push_back(b); - p++; - } - } - return p; -} - -int Parser::parseVersion(int p0) -{ - //printf("### parseVersion: %d\n", p0); - - int p = p0; - - p = skipwhite(p0); - - if (peek(p) != '<') - return p0; - - p++; - if (p>=parselen || peek(p)!='?') - return p0; - - p++; - - String buf; - - while (p<parselen) - { - XMLCh ch = peek(p); - if (ch=='?') - { - p++; - break; - } - buf.push_back(ch); - p++; - } - - if (peek(p) != '>') - return p0; - p++; - - //printf("Got version:%s\n",buf.c_str()); - return p; -} - -int Parser::parseDoctype(int p0) -{ - //printf("### parseDoctype: %d\n", p0); - - int p = p0; - p = skipwhite(p); - - if (p>=parselen || peek(p)!='<') - return p0; - - p++; - - if (peek(p)!='!' || peek(p+1)=='-') - return p0; - p++; - - String buf; - while (p<parselen) - { - XMLCh ch = peek(p); - if (ch=='>') - { - p++; - break; - } - buf.push_back(ch); - p++; - } - - //printf("Got doctype:%s\n",buf.c_str()); - return p; -} - - - -int Parser::parseElement(int p0, Element *par,int lineNr) -{ - - int p = p0; - - int p2 = p; - - p = skipwhite(p); - - //## Get open tag - XMLCh ch = peek(p); - if (ch!='<') - return p0; - - //int line, col; - //getLineAndColumn(p, &line, &col); - - p++; - - String openTagName; - p = skipwhite(p); - p = getWord(p, openTagName); - //printf("####tag :%s\n", openTagName.c_str()); - p = skipwhite(p); - - //Add element to tree - Element *n = new Element(openTagName); - n->line = lineNr + countLines(p0, p); - n->parent = par; - par->addChild(n); - - // Get attributes - if (peek(p) != '>') - { - while (p<parselen) - { - p = skipwhite(p); - ch = peek(p); - //printf("ch:%c\n",ch); - if (ch=='>') - break; - else if (ch=='/' && p<parselen+1) - { - p++; - p = skipwhite(p); - ch = peek(p); - if (ch=='>') - { - p++; - //printf("quick close\n"); - return p; - } - } - String attrName; - p2 = getWord(p, attrName); - if (p2==p) - break; - //printf("name:%s",buf); - p=p2; - p = skipwhite(p); - ch = peek(p); - //printf("ch:%c\n",ch); - if (ch!='=') - break; - p++; - p = skipwhite(p); - // ch = parsebuf[p]; - // printf("ch:%c\n",ch); - String attrVal; - p2 = getQuoted(p, attrVal, true); - p=p2+1; - //printf("name:'%s' value:'%s'\n",attrName.c_str(),attrVal.c_str()); - char *namestr = (char *)attrName.c_str(); - if (strncmp(namestr, "xmlns:", 6)==0) - n->addNamespace(attrName, attrVal); - else - n->addAttribute(attrName, attrVal); - } - } - - bool cdata = false; - - p++; - // ### Get intervening data ### */ - String data; - while (p<parselen) - { - //# COMMENT - p2 = match(p, "<!--"); - if (!cdata && p2>p) - { - p = p2; - while (p<parselen) - { - p2 = match(p, "-->"); - if (p2 > p) - { - p = p2; - break; - } - p++; - } - } - - ch = peek(p); - //# END TAG - if (ch=='<' && !cdata && peek(p+1)=='/') - { - break; - } - //# CDATA - p2 = match(p, "<![CDATA["); - if (p2 > p) - { - cdata = true; - p = p2; - continue; - } - - //# CHILD ELEMENT - if (ch == '<') - { - p2 = parseElement(p, n, lineNr + countLines(p0, p)); - if (p2 == p) - { - /* - printf("problem on element:%s. p2:%d p:%d\n", - openTagName.c_str(), p2, p); - */ - return p0; - } - p = p2; - continue; - } - //# ENTITY - if (ch=='&' && !cdata) - { - bool found = false; - for (EntityEntry *ee = entities ; ee->value ; ee++) - { - int p2 = match(p, ee->escaped); - if (p2>p) - { - data.push_back(ee->value); - p = p2; - found = true; - break; - } - } - if (!found) - { - error("unterminated entity"); - return -1; - } - continue; - } - - //# NONE OF THE ABOVE - data.push_back(ch); - p++; - }/*while*/ - - - n->value = data; - //printf("%d : data:%s\n",p,data.c_str()); - - //## Get close tag - p = skipwhite(p); - ch = peek(p); - if (ch != '<') - { - error("no < for end tag\n"); - return p0; - } - p++; - ch = peek(p); - if (ch != '/') - { - error("no / on end tag"); - return p0; - } - p++; - ch = peek(p); - p = skipwhite(p); - String closeTagName; - p = getWord(p, closeTagName); - if (openTagName != closeTagName) - { - error("Mismatched closing tag. Expected </%S>. Got '%S'.", - openTagName.c_str(), closeTagName.c_str()); - return p0; - } - p = skipwhite(p); - if (peek(p) != '>') - { - error("no > on end tag for '%s'", closeTagName.c_str()); - return p0; - } - p++; - // printf("close element:%s\n",closeTagName.c_str()); - p = skipwhite(p); - return p; -} - - - - -Element *Parser::parse(XMLCh *buf,int pos,int len) -{ - parselen = len; - parsebuf = buf; - Element *rootNode = new Element("root"); - pos = parseVersion(pos); - pos = parseDoctype(pos); - pos = parseElement(pos, rootNode, 1); - return rootNode; -} - - -Element *Parser::parse(const char *buf, int pos, int len) -{ - XMLCh *charbuf = new XMLCh[len + 1]; - long i = 0; - for ( ; i < len ; i++) - charbuf[i] = (XMLCh)buf[i]; - charbuf[i] = '\0'; - - Element *n = parse(charbuf, pos, len); - delete[] charbuf; - return n; -} - -Element *Parser::parse(const String &buf) -{ - long len = (long)buf.size(); - XMLCh *charbuf = new XMLCh[len + 1]; - long i = 0; - for ( ; i < len ; i++) - charbuf[i] = (XMLCh)buf[i]; - charbuf[i] = '\0'; - - Element *n = parse(charbuf, 0, len); - delete[] charbuf; - return n; -} - -Element *Parser::parseFile(const String &fileName) -{ - - //##### LOAD INTO A CHAR BUF, THEN CONVERT TO XMLCh - FILE *f = fopen(fileName.c_str(), "rb"); - if (!f) - return NULL; - - struct stat statBuf; - if (fstat(fileno(f),&statBuf)<0) - { - fclose(f); - return NULL; - } - long filelen = statBuf.st_size; - - //printf("length:%d\n",filelen); - XMLCh *charbuf = new XMLCh[filelen + 1]; - for (XMLCh *p=charbuf ; !feof(f) ; p++) - { - *p = (XMLCh)fgetc(f); - } - fclose(f); - charbuf[filelen] = '\0'; - - - /* - printf("nrbytes:%d\n",wc_count); - printf("buf:%ls\n======\n",charbuf); - */ - Element *n = parse(charbuf, 0, filelen); - delete[] charbuf; - return n; -} - -//######################################################################## -//######################################################################## -//## E N D X M L -//######################################################################## -//######################################################################## - - - - - - -//######################################################################## -//######################################################################## -//## U R I -//######################################################################## -//######################################################################## - -//This would normally be a call to a UNICODE function -#define isLetter(x) isalpha(x) - -/** - * A class that implements the W3C URI resource reference. - */ -class URI -{ -public: - - typedef enum - { - SCHEME_NONE =0, - SCHEME_DATA, - SCHEME_HTTP, - SCHEME_HTTPS, - SCHEME_FTP, - SCHEME_FILE, - SCHEME_LDAP, - SCHEME_MAILTO, - SCHEME_NEWS, - SCHEME_TELNET - } SchemeTypes; - - /** - * - */ - URI() - { - init(); - } - - /** - * - */ - URI(const String &str) - { - init(); - parse(str); - } - - - /** - * - */ - URI(const char *str) - { - init(); - String domStr = str; - parse(domStr); - } - - - /** - * - */ - URI(const URI &other) - { - init(); - assign(other); - } - - - /** - * - */ - URI &operator=(const URI &other) - { - init(); - assign(other); - return *this; - } - - - /** - * - */ - virtual ~URI() - {} - - - - /** - * - */ - virtual bool parse(const String &str); - - /** - * - */ - virtual String toString() const; - - /** - * - */ - virtual int getScheme() const; - - /** - * - */ - virtual String getSchemeStr() const; - - /** - * - */ - virtual String getAuthority() const; - - /** - * Same as getAuthority, but if the port has been specified - * as host:port , the port will not be included - */ - virtual String getHost() const; - - /** - * - */ - virtual int getPort() const; - - /** - * - */ - virtual String getPath() const; - - /** - * - */ - virtual String getNativePath() const; - - /** - * - */ - virtual bool isAbsolute() const; - - /** - * - */ - virtual bool isOpaque() const; - - /** - * - */ - virtual String getQuery() const; - - /** - * - */ - virtual String getFragment() const; - - /** - * - */ - virtual URI resolve(const URI &other) const; - - /** - * - */ - virtual void normalize(); - -private: - - /** - * - */ - void init() - { - parsebuf = NULL; - parselen = 0; - scheme = SCHEME_NONE; - schemeStr = ""; - port = 0; - authority = ""; - path = ""; - absolute = false; - opaque = false; - query = ""; - fragment = ""; - } - - - /** - * - */ - void assign(const URI &other) - { - scheme = other.scheme; - schemeStr = other.schemeStr; - authority = other.authority; - port = other.port; - path = other.path; - absolute = other.absolute; - opaque = other.opaque; - query = other.query; - fragment = other.fragment; - } - - int scheme; - - String schemeStr; - - String authority; - - bool portSpecified; - - int port; - - String path; - - bool absolute; - - bool opaque; - - String query; - - String fragment; - - void error(const char *fmt, ...); - - void trace(const char *fmt, ...); - - - int peek(int p); - - int match(int p, const char *key); - - int parseScheme(int p); - - int parseHierarchicalPart(int p0); - - int parseQuery(int p0); - - int parseFragment(int p0); - - int parse(int p); - - char *parsebuf; - - int parselen; - -}; - - - -typedef struct -{ - int ival; - const char *sval; - int port; -} LookupEntry; - -LookupEntry schemes[] = -{ - { URI::SCHEME_DATA, "data:", 0 }, - { URI::SCHEME_HTTP, "http:", 80 }, - { URI::SCHEME_HTTPS, "https:", 443 }, - { URI::SCHEME_FTP, "ftp", 12 }, - { URI::SCHEME_FILE, "file:", 0 }, - { URI::SCHEME_LDAP, "ldap:", 123 }, - { URI::SCHEME_MAILTO, "mailto:", 25 }, - { URI::SCHEME_NEWS, "news:", 117 }, - { URI::SCHEME_TELNET, "telnet:", 23 }, - { 0, NULL, 0 } -}; - - -String URI::toString() const -{ - String str = schemeStr; - if (authority.size() > 0) - { - str.append("//"); - str.append(authority); - } - str.append(path); - if (query.size() > 0) - { - str.append("?"); - str.append(query); - } - if (fragment.size() > 0) - { - str.append("#"); - str.append(fragment); - } - return str; -} - - -int URI::getScheme() const -{ - return scheme; -} - -String URI::getSchemeStr() const -{ - return schemeStr; -} - - -String URI::getAuthority() const -{ - String ret = authority; - if (portSpecified && port>=0) - { - char buf[7]; - snprintf(buf, 6, ":%6d", port); - ret.append(buf); - } - return ret; -} - -String URI::getHost() const -{ - return authority; -} - -int URI::getPort() const -{ - return port; -} - - -String URI::getPath() const -{ - return path; -} - -String URI::getNativePath() const -{ - String npath; -#ifdef __WIN32__ - std::size_t firstChar = 0; - if (path.size() >= 3) - { - if (path[0] == '/' && - isLetter(path[1]) && - path[2] == ':') - firstChar++; - } - for (std::size_t i=firstChar ; i<path.size() ; i++) - { - XMLCh ch = (XMLCh) path[i]; - if (ch == '/') - npath.push_back((XMLCh)'\\'); - else - npath.push_back(ch); - } -#else - npath = path; -#endif - return npath; -} - - -bool URI::isAbsolute() const -{ - return absolute; -} - -bool URI::isOpaque() const -{ - return opaque; -} - - -String URI::getQuery() const -{ - return query; -} - - -String URI::getFragment() const -{ - return fragment; -} - - -URI URI::resolve(const URI &other) const -{ - //### According to w3c, this is handled in 3 cases - - //## 1 - if (opaque || other.isAbsolute()) - return other; - - //## 2 - if (other.fragment.size() > 0 && - other.path.size() == 0 && - other.scheme == SCHEME_NONE && - other.authority.size() == 0 && - other.query.size() == 0 ) - { - URI fragUri = *this; - fragUri.fragment = other.fragment; - return fragUri; - } - - //## 3 http://www.ietf.org/rfc/rfc2396.txt, section 5.2 - URI newUri; - //# 3.1 - newUri.scheme = scheme; - newUri.schemeStr = schemeStr; - newUri.query = other.query; - newUri.fragment = other.fragment; - if (other.authority.size() > 0) - { - //# 3.2 - if (absolute || other.absolute) - newUri.absolute = true; - newUri.authority = other.authority; - newUri.port = other.port;//part of authority - newUri.path = other.path; - } - else - { - //# 3.3 - if (other.absolute) - { - newUri.absolute = true; - newUri.path = other.path; - } - else - { - std::size_t pos = path.find_last_of('/'); - if (pos != path.npos) - { - String tpath = path.substr(0, pos+1); - tpath.append(other.path); - newUri.path = tpath; - } - else - newUri.path = other.path; - } - } - - newUri.normalize(); - return newUri; -} - - - -/** - * This follows the Java URI algorithm: - * 1. All "." segments are removed. - * 2. If a ".." segment is preceded by a non-".." segment - * then both of these segments are removed. This step - * is repeated until it is no longer applicable. - * 3. If the path is relative, and if its first segment - * contains a colon character (':'), then a "." segment - * is prepended. This prevents a relative URI with a path - * such as "a:b/c/d" from later being re-parsed as an - * opaque URI with a scheme of "a" and a scheme-specific - * part of "b/c/d". (Deviation from RFC 2396) - */ -void URI::normalize() -{ - std::vector<String> segments; - - //## Collect segments - if (path.size()<2) - return; - bool abs = false; - std::size_t pos=0; - if (path[0]=='/') - { - abs = true; - pos++; - } - while (pos < path.size()) - { - std::size_t pos2 = path.find('/', pos); - if (pos2==path.npos) - { - String seg = path.substr(pos); - //printf("last segment:%s\n", seg.c_str()); - segments.push_back(seg); - break; - } - if (pos2>pos) - { - String seg = path.substr(pos, pos2-pos); - //printf("segment:%s\n", seg.c_str()); - segments.push_back(seg); - } - pos = pos2; - pos++; - } - - //## Clean up (normalize) segments - bool edited = false; - std::vector<String>::iterator iter; - for (iter=segments.begin() ; iter!=segments.end() ; ) - { - String s = *iter; - if (s == ".") - { - iter = segments.erase(iter); - edited = true; - } - else if (s == ".." && - iter != segments.begin() && - *(iter-1) != "..") - { - iter--; //back up, then erase two entries - iter = segments.erase(iter); - iter = segments.erase(iter); - edited = true; - } - else - iter++; - } - - //## Rebuild path, if necessary - if (edited) - { - path.clear(); - if (abs) - { - path.append("/"); - } - std::vector<String>::iterator iter; - for (iter=segments.begin() ; iter!=segments.end() ; iter++) - { - if (iter != segments.begin()) - path.append("/"); - path.append(*iter); - } - } - -} - - - -//######################################################################### -//# M E S S A G E S -//######################################################################### - -void URI::error(const char *fmt, ...) -{ - va_list args; - fprintf(stderr, "URI error: "); - va_start(args, fmt); - vfprintf(stderr, fmt, args); - va_end(args); - fprintf(stderr, "\n"); -} - -void URI::trace(const char *fmt, ...) -{ - va_list args; - fprintf(stdout, "URI: "); - va_start(args, fmt); - vfprintf(stdout, fmt, args); - va_end(args); - fprintf(stdout, "\n"); -} - - - - -//######################################################################### -//# P A R S I N G -//######################################################################### - - - -int URI::peek(int p) -{ - if (p<0 || p>=parselen) - return -1; - return parsebuf[p]; -} - - - -int URI::match(int p0, const char *key) -{ - int p = p0; - while (p < parselen) - { - if (*key == '\0') - return p; - else if (*key != parsebuf[p]) - break; - p++; key++; - } - return p0; -} - -//######################################################################### -//# Parsing is performed according to: -//# http://www.gbiv.com/protocols/uri/rfc/rfc3986.html#components -//######################################################################### - -int URI::parseScheme(int p0) -{ - int p = p0; - for (LookupEntry *entry = schemes; entry->sval ; entry++) - { - int p2 = match(p, entry->sval); - if (p2 > p) - { - schemeStr = entry->sval; - scheme = entry->ival; - port = entry->port; - p = p2; - return p; - } - } - - return p; -} - - -int URI::parseHierarchicalPart(int p0) -{ - int p = p0; - int ch; - - //# Authority field (host and port, for example) - int p2 = match(p, "//"); - if (p2 > p) - { - p = p2; - portSpecified = false; - String portStr; - while (p < parselen) - { - ch = peek(p); - if (ch == '/') - break; - else if (ch == ':') - portSpecified = true; - else if (portSpecified) - portStr.push_back((XMLCh)ch); - else - authority.push_back((XMLCh)ch); - p++; - } - if (portStr.size() > 0) - { - char *pstr = (char *)portStr.c_str(); - char *endStr; - long val = strtol(pstr, &endStr, 10); - if (endStr > pstr) //successful parse? - port = val; - } - } - - //# Are we absolute? - ch = peek(p); - if (isLetter(ch) && peek(p+1)==':') - { - absolute = true; - path.push_back((XMLCh)'/'); - } - else if (ch == '/') - { - absolute = true; - if (p>p0) //in other words, if '/' is not the first char - opaque = true; - path.push_back((XMLCh)ch); - p++; - } - - while (p < parselen) - { - ch = peek(p); - if (ch == '?' || ch == '#') - break; - path.push_back((XMLCh)ch); - p++; - } - - return p; -} - -int URI::parseQuery(int p0) -{ - int p = p0; - int ch = peek(p); - if (ch != '?') - return p0; - - p++; - while (p < parselen) - { - ch = peek(p); - if (ch == '#') - break; - query.push_back((XMLCh)ch); - p++; - } - - - return p; -} - -int URI::parseFragment(int p0) -{ - - int p = p0; - int ch = peek(p); - if (ch != '#') - return p0; - - p++; - while (p < parselen) - { - ch = peek(p); - if (ch == '?') - break; - fragment.push_back((XMLCh)ch); - p++; - } - - - return p; -} - - -int URI::parse(int p0) -{ - - int p = p0; - - int p2 = parseScheme(p); - if (p2 < 0) - { - error("Scheme"); - return -1; - } - p = p2; - - - p2 = parseHierarchicalPart(p); - if (p2 < 0) - { - error("Hierarchical part"); - return -1; - } - p = p2; - - p2 = parseQuery(p); - if (p2 < 0) - { - error("Query"); - return -1; - } - p = p2; - - - p2 = parseFragment(p); - if (p2 < 0) - { - error("Fragment"); - return -1; - } - p = p2; - - return p; - -} - - - -bool URI::parse(const String &str) -{ - init(); - - parselen = str.size(); - - String tmp; - for (std::size_t i=0 ; i<str.size() ; i++) - { - XMLCh ch = (XMLCh) str[i]; - if (ch == '\\') - tmp.push_back((XMLCh)'/'); - else - tmp.push_back(ch); - } - parsebuf = (char *) tmp.c_str(); - - - int p = parse(0); - normalize(); - - if (p < 0) - { - error("Syntax error"); - return false; - } - - //printf("uri:%s\n", toString().c_str()); - //printf("path:%s\n", path.c_str()); - - return true; - -} - - - - - - - - -//######################################################################## -//######################################################################## -//## M A K E -//######################################################################## -//######################################################################## - -//######################################################################## -//# Stat cache to speed up stat requests -//######################################################################## -struct StatResult { - int result; - struct stat statInfo; -}; -typedef std::map<String, StatResult> statCacheType; -static statCacheType statCache; -static int cachedStat(const String &f, struct stat *s) { - //printf("Stat path: %s\n", f.c_str()); - std::pair<statCacheType::iterator, bool> result = statCache.insert(statCacheType::value_type(f, StatResult())); - if (result.second) { - result.first->second.result = stat(f.c_str(), &(result.first->second.statInfo)); - } - *s = result.first->second.statInfo; - return result.first->second.result; -} -static void removeFromStatCache(const String f) { - //printf("Removing from cache: %s\n", f.c_str()); - statCache.erase(f); -} - -//######################################################################## -//# Dir cache to speed up dir requests -//######################################################################## -/*struct DirListing { - bool available; - std::vector<String> files; - std::vector<String> dirs; -}; -typedef std::map<String, DirListing > dirCacheType; -static dirCacheType dirCache; -static const DirListing &cachedDir(String fullDir) -{ - String dirNative = getNativePath(fullDir); - std::pair<dirCacheType::iterator,bool> result = dirCache.insert(dirCacheType::value_type(dirNative, DirListing())); - if (result.second) { - DIR *dir = opendir(dirNative.c_str()); - if (!dir) - { - error("Could not open directory %s : %s", - dirNative.c_str(), strerror(errno)); - result.first->second.available = false; - } - else - { - result.first->second.available = true; - while (true) - { - struct dirent *de = readdir(dir); - if (!de) - break; - - //Get the directory member name - String s = de->d_name; - if (s.size() == 0 || s[0] == '.') - continue; - String childName; - if (dirName.size()>0) - { - childName.append(dirName); - childName.append("/"); - } - childName.append(s); - String fullChild = baseDir; - fullChild.append("/"); - fullChild.append(childName); - - if (isDirectory(fullChild)) - { - //trace("directory: %s", childName.c_str()); - if (!listFiles(baseDir, childName, res)) - return false; - continue; - } - else if (!isRegularFile(fullChild)) - { - error("unknown file:%s", childName.c_str()); - return false; - } - - //all done! - res.push_back(childName); - - } - closedir(dir); - } - } - return result.first->second; -}*/ - -//######################################################################## -//# F I L E S E T -//######################################################################## -/** - * This is the descriptor for a <fileset> item - */ -class FileSet -{ -public: - - /** - * - */ - FileSet() - {} - - /** - * - */ - FileSet(const FileSet &other) - { assign(other); } - - /** - * - */ - FileSet &operator=(const FileSet &other) - { assign(other); return *this; } - - /** - * - */ - virtual ~FileSet() - {} - - /** - * - */ - String getDirectory() const - { return directory; } - - /** - * - */ - void setDirectory(const String &val) - { directory = val; } - - /** - * - */ - void setFiles(const std::vector<String> &val) - { files = val; } - - /** - * - */ - std::vector<String> getFiles() const - { return files; } - - /** - * - */ - void setIncludes(const std::vector<String> &val) - { includes = val; } - - /** - * - */ - std::vector<String> getIncludes() const - { return includes; } - - /** - * - */ - void setExcludes(const std::vector<String> &val) - { excludes = val; } - - /** - * - */ - std::vector<String> getExcludes() const - { return excludes; } - - /** - * - */ - std::size_t size() const - { return files.size(); } - - /** - * - */ - String operator[](int index) const - { return files[index]; } - - /** - * - */ - void clear() - { - directory = ""; - files.clear(); - includes.clear(); - excludes.clear(); - } - - -private: - - void assign(const FileSet &other) - { - directory = other.directory; - files = other.files; - includes = other.includes; - excludes = other.excludes; - } - - String directory; - std::vector<String> files; - std::vector<String> includes; - std::vector<String> excludes; -}; - - -//######################################################################## -//# F I L E L I S T -//######################################################################## -/** - * This is a simpler, explicitly-named list of files - */ -class FileList -{ -public: - - /** - * - */ - FileList() - {} - - /** - * - */ - FileList(const FileList &other) - { assign(other); } - - /** - * - */ - FileList &operator=(const FileList &other) - { assign(other); return *this; } - - /** - * - */ - virtual ~FileList() - {} - - /** - * - */ - String getDirectory() - { return directory; } - - /** - * - */ - void setDirectory(const String &val) - { directory = val; } - - /** - * - */ - void setFiles(const std::vector<String> &val) - { files = val; } - - /** - * - */ - std::vector<String> getFiles() - { return files; } - - /** - * - */ - std::size_t size() - { return files.size(); } - - /** - * - */ - String operator[](int index) - { return files[index]; } - - /** - * - */ - void clear() - { - directory = ""; - files.clear(); - } - - -private: - - void assign(const FileList &other) - { - directory = other.directory; - files = other.files; - } - - String directory; - std::vector<String> files; -}; - - - - -//######################################################################## -//# M A K E B A S E -//######################################################################## -/** - * Base class for all classes in this file - */ -class MakeBase -{ -public: - - MakeBase() - { line = 0; } - virtual ~MakeBase() - {} - - /** - * Return the URI of the file associated with this object - */ - URI getURI() - { return uri; } - - /** - * Set the uri to the given string - */ - void setURI(const String &uristr) - { uri.parse(uristr); } - - /** - * Set the number of threads that can be used - */ - void setNumThreads(const int num) - { numThreads = num; } - - /** - * Resolve another path relative to this one - */ - String resolve(const String &otherPath); - - /** - * replace variable refs like ${a} with their values - * Assume that the string has already been syntax validated - */ - String eval(const String &s, const String &defaultVal); - - /** - * replace variable refs like ${a} with their values - * return true or false - * Assume that the string has already been syntax validated - */ - bool evalBool(const String &s, bool defaultVal); - - /** - * replace variable refs like ${a} with their values - * return the value parsed as an integer - * Assume that the string has already been syntax validated - */ - int evalInt(const String &s, int defaultVal); - - /** - * Get an element attribute, performing substitutions if necessary - */ - bool getAttribute(Element *elem, const String &name, String &result); - - /** - * Get an element value, performing substitutions if necessary - */ - bool getValue(Element *elem, String &result); - - /** - * Set the current line number in the file - */ - void setLine(int val) - { line = val; } - - /** - * Get the current line number in the file - */ - int getLine() - { return line; } - - - /** - * Set a property to a given value - */ - virtual void setProperty(const String &name, const String &val) - { - properties[name] = val; - } - - /** - * Return a named property is found, else a null string - */ - virtual String getProperty(const String &name) - { - String val; - std::map<String, String>::iterator iter = properties.find(name); - if (iter != properties.end()) - val = iter->second; - String sval; - if (!getSubstitutions(val, sval)) - return String(); - return sval; - } - - /** - * Return true if a named property is found, else false - */ - virtual bool hasProperty(const String &name) - { - std::map<String, String>::iterator iter = properties.find(name); - if (iter == properties.end()) - return false; - return true; - } - - -protected: - - /** - * The path to the file associated with this object - */ - URI uri; - - /** - * The number of threads that can be used - */ - static int numThreads; - - /** - * If this prefix is seen in a substitution, use an environment - * variable. - * example: <property environment="env"/> - * ${env.JAVA_HOME} - */ - String envPrefix; - - /** - * If this prefix is seen in a substitution, use as a - * pkg-config 'all' query - * example: <property pkg-config="pc"/> - * ${pc.gtkmm} - */ - String pcPrefix; - - /** - * If this prefix is seen in a substitution, use as a - * pkg-config 'cflags' query - * example: <property pkg-config="pcc"/> - * ${pcc.gtkmm} - */ - String pccPrefix; - - /** - * If this prefix is seen in a substitution, use as a - * pkg-config 'libs' query - * example: <property pkg-config-libs="pcl"/> - * ${pcl.gtkmm} - */ - String pclPrefix; - - /** - * If this prefix is seen in a substitution, use as a - * Bazaar "bzr revno" query - * example: <property subversion="svn"/> ??? - * ${bzr.Revision} - */ - String bzrPrefix; - - - - - - /** - * Print a printf()-like formatted error message - */ - void error(const char *fmt, ...); - - /** - * Print a printf()-like formatted trace message - */ - void status(const char *fmt, ...); - - /** - * Show target status - */ - void targetstatus(const char *fmt, ...); - - /** - * Print a printf()-like formatted trace message - */ - void trace(const char *fmt, ...); - - /** - * Check if a given string matches a given regex pattern - */ - bool regexMatch(const String &str, const String &pattern); - - /** - * - */ - String getSuffix(const String &fname); - - /** - * Break up a string into substrings delimited the characters - * in delimiters. Null-length substrings are ignored - */ - std::vector<String> tokenize(const String &val, - const String &delimiters); - - /** - * replace runs of whitespace with a space - */ - String strip(const String &s); - - /** - * remove leading whitespace from each line - */ - String leftJustify(const String &s); - - /** - * remove leading and trailing whitespace from string - */ - String trim(const String &s); - - /** - * Return a lower case version of the given string - */ - String toLower(const String &s); - - /** - * Return the native format of the canonical - * path which we store - */ - String getNativePath(const String &path); - - /** - * Execute a shell command. Outbuf is a ref to a string - * to catch the result. - */ - bool executeCommand(const String &call, - const String &inbuf, - String &outbuf, - String &errbuf); - /** - * List all directories in a given base and starting directory - * It is usually called like: - * bool ret = listDirectories("src", "", result); - */ - bool listDirectories(const String &baseName, - const String &dirname, - std::vector<String> &res); - - /** - * Find all files in the named directory - */ - bool listFiles(const String &baseName, - const String &dirname, - std::vector<String> &result); - - /** - * Perform a listing for a fileset - */ - bool listFiles(MakeBase &propRef, FileSet &fileSet); - - /** - * Parse a <patternset> - */ - bool parsePatternSet(Element *elem, - MakeBase &propRef, - std::vector<String> &includes, - std::vector<String> &excludes); - - /** - * Parse a <fileset> entry, and determine which files - * should be included - */ - bool parseFileSet(Element *elem, - MakeBase &propRef, - FileSet &fileSet); - /** - * Parse a <filelist> entry - */ - bool parseFileList(Element *elem, - MakeBase &propRef, - FileList &fileList); - - /** - * Return this object's property list - */ - virtual std::map<String, String> &getProperties() - { return properties; } - - - std::map<String, String> properties; - - /** - * Create a directory, making intermediate dirs - * if necessary - */ - bool createDirectory(const String &dirname); - - /** - * Delete a directory and its children if desired - */ - bool removeDirectory(const String &dirName); - - /** - * Copy a file from one name to another. Perform only if needed - */ - bool copyFile(const String &srcFile, const String &destFile); - - /** - * Delete a file - */ - bool removeFile(const String &file); - - /** - * Tests if the file exists - */ - bool fileExists(const String &fileName); - - /** - * Tests if the file exists and is a regular file - */ - bool isRegularFile(const String &fileName); - - /** - * Tests if the file exists and is a directory - */ - bool isDirectory(const String &fileName); - - /** - * Tests is the modification date of fileA is newer than fileB - */ - bool isNewerThan(const String &fileA, const String &fileB); - -private: - - bool pkgConfigRecursive(const String packageName, - const String &path, - const String &prefix, - int query, - String &result, - std::set<String> &deplist); - - /** - * utility method to query for "all", "cflags", or "libs" for this package and its - * dependencies. 0, 1, 2 - */ - bool pkgConfigQuery(const String &packageName, int query, String &result); - - /** - * replace a variable ref like ${a} with a value - */ - bool lookupProperty(const String &s, String &result); - - /** - * called by getSubstitutions(). This is in case a looked-up string - * has substitutions also. - */ - bool getSubstitutionsRecursive(const String &s, String &result, int depth); - - /** - * replace variable refs in a string like ${a} with their values - */ - bool getSubstitutions(const String &s, String &result); - - int line; - - -}; - -int MakeBase::numThreads = 1; - -/** - * Define the pkg-config class here, since it will be used in MakeBase method - * implementations. - */ -class PkgConfig : public MakeBase -{ - -public: - - /** - * - */ - PkgConfig() - { - path = "."; - prefix = "/target"; - init(); - } - - /** - * - */ - PkgConfig(const PkgConfig &other) - { assign(other); } - - /** - * - */ - PkgConfig &operator=(const PkgConfig &other) - { assign(other); return *this; } - - /** - * - */ - virtual ~PkgConfig() - { } - - /** - * - */ - virtual String getName() - { return name; } - - /** - * - */ - virtual String getPath() - { return path; } - - /** - * - */ - virtual void setPath(const String &val) - { path = val; } - - /** - * - */ - virtual String getPrefix() - { return prefix; } - - /** - * Allow the user to override the prefix in the file - */ - virtual void setPrefix(const String &val) - { prefix = val; } - - /** - * - */ - virtual String getDescription() - { return description; } - - /** - * - */ - virtual String getCflags() - { return cflags; } - - /** - * - */ - virtual String getLibs() - { return libs; } - - /** - * - */ - virtual String getAll() - { - String ret = cflags; - ret.append(" "); - ret.append(libs); - return ret; - } - - /** - * - */ - virtual String getVersion() - { return version; } - - /** - * - */ - virtual int getMajorVersion() - { return majorVersion; } - - /** - * - */ - virtual int getMinorVersion() - { return minorVersion; } - - /** - * - */ - virtual int getMicroVersion() - { return microVersion; } - - /** - * - */ - virtual std::map<String, String> &getAttributes() - { return attrs; } - - /** - * - */ - virtual std::vector<String> &getRequireList() - { return requireList; } - - /** - * Read a file for its details - */ - virtual bool readFile(const String &fileName); - - /** - * Read a file for its details - */ - virtual bool query(const String &name); - -private: - - void init() - { - //do not set path and prefix here - name = ""; - description = ""; - cflags = ""; - libs = ""; - requires = ""; - version = ""; - majorVersion = 0; - minorVersion = 0; - microVersion = 0; - fileName = ""; - attrs.clear(); - requireList.clear(); - } - - void assign(const PkgConfig &other) - { - name = other.name; - path = other.path; - prefix = other.prefix; - description = other.description; - cflags = other.cflags; - libs = other.libs; - requires = other.requires; - version = other.version; - majorVersion = other.majorVersion; - minorVersion = other.minorVersion; - microVersion = other.microVersion; - fileName = other.fileName; - attrs = other.attrs; - requireList = other.requireList; - } - - - - int get(int pos); - - int skipwhite(int pos); - - int getword(int pos, String &ret); - - /** - * Very important - */ - bool parseRequires(); - - void parseVersion(); - - bool parseLine(const String &lineBuf); - - bool parse(const String &buf); - - void dumpAttrs(); - - String name; - - String path; - - String prefix; - - String description; - - String cflags; - - String libs; - - String requires; - - String version; - - int majorVersion; - - int minorVersion; - - int microVersion; - - String fileName; - - std::map<String, String> attrs; - - std::vector<String> requireList; - - char *parsebuf; - int parselen; -}; - -/** - * Execute the "bzr revno" command and return the result. - * This is a simple, small class. - */ -class BzrRevno : public MakeBase -{ -public: - - /** - * Safe way. Execute "bzr revno" and return the result. - * Safe from changes in format. - */ - bool query(String &res) - { - String cmd = "bzr revno"; - - String outString, errString; - bool ret = executeCommand(cmd.c_str(), "", outString, errString); - if (!ret) - { - error("error executing '%s': %s", cmd.c_str(), errString.c_str()); - return false; - } - res = outString; - return true; - } -}; - -/** - * Execute the "svn info" command and parse the result. - * This is a simple, small class. Define here, because it - * is used by MakeBase implementation methods. - */ -class SvnInfo : public MakeBase -{ -public: - -#if 0 - /** - * Safe way. Execute "svn info --xml" and parse the result. Search for - * elements/attributes. Safe from changes in format. - */ - bool query(const String &name, String &res) - { - String cmd = "svn info --xml"; - - String outString, errString; - bool ret = executeCommand(cmd.c_str(), "", outString, errString); - if (!ret) - { - error("error executing '%s': %s", cmd.c_str(), errString.c_str()); - return false; - } - Parser parser; - Element *elem = parser.parse(outString); - if (!elem) - { - error("error parsing 'svn info' xml result: %s", outString.c_str()); - return false; - } - - res = elem->getTagValue(name); - if (res.size()==0) - { - res = elem->getTagAttribute("entry", name); - } - return true; - } -#else - - - /** - * Universal way. Parse the file directly. Not so safe from - * changes in format. - */ - bool query(const String &name, String &res) - { - String fileName = resolve(".svn/entries"); - String nFileName = getNativePath(fileName); - - std::map<String, String> properties; - - FILE *f = fopen(nFileName.c_str(), "r"); - if (!f) - { - error("could not open SVN 'entries' file"); - return false; - } - - const char *fieldNames[] = - { - "format-nbr", - "name", - "kind", - "revision", - "url", - "repos", - "schedule", - "text-time", - "checksum", - "committed-date", - "committed-rev", - "last-author", - "has-props", - "has-prop-mods", - "cachable-props", - }; - - for (int i=0 ; i<15 ; i++) - { - inbuf[0] = '\0'; - if (feof(f) || !fgets(inbuf, 255, f)) - break; - properties[fieldNames[i]] = trim(inbuf); - } - fclose(f); - - res = properties[name]; - - return true; - } - -private: - - char inbuf[256]; - -#endif - -}; - - - - - - -/** - * Print a printf()-like formatted error message - */ -void MakeBase::error(const char *fmt, ...) -{ - va_list args; - va_start(args,fmt); - fprintf(stderr, "Make error line %d: ", line); - vfprintf(stderr, fmt, args); - fprintf(stderr, "\n"); - va_end(args) ; -} - - - -/** - * Print a printf()-like formatted trace message - */ -void MakeBase::status(const char *fmt, ...) -{ - va_list args; - //fprintf(stdout, " "); - va_start(args,fmt); - vfprintf(stdout, fmt, args); - va_end(args); - fprintf(stdout, "\n"); - fflush(stdout); -} - - -/** - * Print a printf()-like formatted trace message - */ -void MakeBase::trace(const char *fmt, ...) -{ - va_list args; - fprintf(stdout, "Make: "); - va_start(args,fmt); - vfprintf(stdout, fmt, args); - va_end(args) ; - fprintf(stdout, "\n"); - fflush(stdout); -} - - - -/** - * Resolve another path relative to this one - */ -String MakeBase::resolve(const String &otherPath) -{ - URI otherURI(otherPath); - URI fullURI = uri.resolve(otherURI); - String ret = fullURI.toString(); - return ret; -} - - - -/** - * Check if a given string matches a given regex pattern - */ -bool MakeBase::regexMatch(const String &str, const String &pattern) -{ - int res = slre_match(pattern.c_str(), str.c_str(), str.length(), NULL, 0, SLRE_IGNORE_CASE); - - bool ret = true; - if (res < 0) - { - ret = false; - - // error cases - if (res < -1) - { - String err; - switch(res) - { - case SLRE_UNEXPECTED_QUANTIFIER: - err = "unexpected quantifier"; break; - case SLRE_UNBALANCED_BRACKETS: - err = "unbalanced brackets"; break; - case SLRE_INTERNAL_ERROR: - err = "internal error"; break; - case SLRE_INVALID_CHARACTER_SET: - err = "invald character set"; break; - case SLRE_INVALID_METACHARACTER: - err = "invalid meta character"; break; - default: - err = "unknown error"; break; - } - error("regex failure (%s) while parsing [%s]!\n", err.c_str(), pattern.c_str()); - } - } - - return ret; -} - -/** - * Return the suffix, if any, of a file name - */ -String MakeBase::getSuffix(const String &fname) -{ - if (fname.size() < 2) - return ""; - std::size_t pos = fname.find_last_of('.'); - if (pos == fname.npos) - return ""; - pos++; - String res = fname.substr(pos, fname.size()-pos); - //trace("suffix:%s", res.c_str()); - return res; -} - - - -/** - * Break up a string into substrings delimited the characters - * in delimiters. Null-length substrings are ignored - */ -std::vector<String> MakeBase::tokenize(const String &str, - const String &delimiters) -{ - - std::vector<String> res; - char *del = (char *)delimiters.c_str(); - String dmp; - for (std::size_t i=0 ; i<str.size() ; i++) - { - char ch = str[i]; - char *p = (char *)0; - for (p=del ; *p ; p++) - if (*p == ch) - break; - if (*p) - { - if (dmp.size() > 0) - { - res.push_back(dmp); - dmp.clear(); - } - } - else - { - dmp.push_back(ch); - } - } - //Add tail - if (dmp.size() > 0) - { - res.push_back(dmp); - dmp.clear(); - } - - return res; -} - - - -/** - * replace runs of whitespace with a single space - */ -String MakeBase::strip(const String &s) -{ - int len = s.size(); - String stripped; - for (int i = 0 ; i<len ; i++) - { - char ch = s[i]; - if (isspace(ch)) - { - stripped.push_back(' '); - for ( ; i<len ; i++) - { - ch = s[i]; - if (!isspace(ch)) - { - stripped.push_back(ch); - break; - } - } - } - else - { - stripped.push_back(ch); - } - } - return stripped; -} - -/** - * remove leading whitespace from each line - */ -String MakeBase::leftJustify(const String &s) -{ - String out; - int len = s.size(); - for (int i = 0 ; i<len ; ) - { - char ch; - //Skip to first visible character - while (i<len) - { - ch = s[i]; - if (ch == '\n' || ch == '\r' - || !isspace(ch)) - break; - i++; - } - //Copy the rest of the line - while (i<len) - { - ch = s[i]; - if (ch == '\n' || ch == '\r') - { - if (ch != '\r') - out.push_back('\n'); - i++; - break; - } - else - { - out.push_back(ch); - } - i++; - } - } - return out; -} - - -/** - * Removes whitespace from beginning and end of a string - */ -String MakeBase::trim(const String &s) -{ - if (s.size() < 1) - return s; - - //Find first non-ws char - std::size_t begin = 0; - for ( ; begin < s.size() ; begin++) - { - if (!isspace(s[begin])) - break; - } - - //Find first non-ws char, going in reverse - std::size_t end = s.size() - 1; - for ( ; end > begin ; end--) - { - if (!isspace(s[end])) - break; - } - //trace("begin:%d end:%d", begin, end); - - String res = s.substr(begin, end-begin+1); - return res; -} - - -/** - * Return a lower case version of the given string - */ -String MakeBase::toLower(const String &s) -{ - if (s.size()==0) - return s; - - String ret; - for(std::size_t i=0; i<s.size() ; i++) - { - ret.push_back(tolower(s[i])); - } - return ret; -} - - -/** - * Return the native format of the canonical - * path which we store - */ -String MakeBase::getNativePath(const String &path) -{ -#ifdef __WIN32__ - String npath; - std::size_t firstChar = 0; - if (path.size() >= 3) - { - if (path[0] == '/' && - isalpha(path[1]) && - path[2] == ':') - firstChar++; - } - for (std::size_t i=firstChar ; i<path.size() ; i++) - { - char ch = path[i]; - if (ch == '/') - npath.push_back('\\'); - else - npath.push_back(ch); - } - return npath; -#else - return path; -#endif -} - - -#ifdef __WIN32__ -#include <tchar.h> - -static String win32LastError() -{ - - DWORD dw = GetLastError(); - - LPVOID str; - FormatMessage( - FORMAT_MESSAGE_ALLOCATE_BUFFER | - FORMAT_MESSAGE_FROM_SYSTEM, - NULL, - dw, - 0, - (LPTSTR) &str, - 0, NULL ); - LPTSTR p = _tcschr((const char *)str, _T('\r')); - if(p != NULL) - { // lose CRLF - *p = _T('\0'); - } - String ret = (char *)str; - LocalFree(str); - - return ret; -} -#endif - - - - -#ifdef __WIN32__ - -/** - * Execute a system call, using pipes to send data to the - * program's stdin, and reading stdout and stderr. - */ -bool MakeBase::executeCommand(const String &command, - const String &inbuf, - String &outbuf, - String &errbuf) -{ - -// status("============ cmd ============\n%s\n=============================", -// command.c_str()); - - outbuf.clear(); - errbuf.clear(); - - - /* - I really hate having win32 code in this program, but the - read buffer in command.com and cmd.exe are just too small - for the large commands we need for compiling and linking. - */ - - bool ret = true; - - //# Allocate a separate buffer for safety - char *paramBuf = new char[command.size() + 1]; - if (!paramBuf) - { - error("executeCommand cannot allocate command buffer"); - return false; - } - strcpy(paramBuf, (char *)command.c_str()); - - //# Go to http://msdn2.microsoft.com/en-us/library/ms682499.aspx - //# to see how Win32 pipes work - - //# Create pipes - SECURITY_ATTRIBUTES saAttr; - saAttr.nLength = sizeof(SECURITY_ATTRIBUTES); - saAttr.bInheritHandle = TRUE; - saAttr.lpSecurityDescriptor = NULL; - HANDLE stdinRead, stdinWrite; - HANDLE stdoutRead, stdoutWrite; - HANDLE stderrRead, stderrWrite; - if (!CreatePipe(&stdinRead, &stdinWrite, &saAttr, 0)) - { - error("executeProgram: could not create pipe"); - delete[] paramBuf; - return false; - } - SetHandleInformation(stdinWrite, HANDLE_FLAG_INHERIT, 0); - if (!CreatePipe(&stdoutRead, &stdoutWrite, &saAttr, 0)) - { - error("executeProgram: could not create pipe"); - delete[] paramBuf; - return false; - } - SetHandleInformation(stdoutRead, HANDLE_FLAG_INHERIT, 0); - if (&outbuf != &errbuf) { - if (!CreatePipe(&stderrRead, &stderrWrite, &saAttr, 0)) - { - error("executeProgram: could not create pipe"); - delete[] paramBuf; - return false; - } - SetHandleInformation(stderrRead, HANDLE_FLAG_INHERIT, 0); - } else { - stderrRead = stdoutRead; - stderrWrite = stdoutWrite; - } - - // Create the process - STARTUPINFO siStartupInfo; - PROCESS_INFORMATION piProcessInfo; - memset(&siStartupInfo, 0, sizeof(siStartupInfo)); - memset(&piProcessInfo, 0, sizeof(piProcessInfo)); - siStartupInfo.cb = sizeof(siStartupInfo); - siStartupInfo.hStdError = stderrWrite; - siStartupInfo.hStdOutput = stdoutWrite; - siStartupInfo.hStdInput = stdinRead; - siStartupInfo.dwFlags |= STARTF_USESTDHANDLES; - - if (!CreateProcess(NULL, paramBuf, NULL, NULL, true, - 0, NULL, NULL, &siStartupInfo, - &piProcessInfo)) - { - error("executeCommand : could not create process : %s", - win32LastError().c_str()); - ret = false; - } - - delete[] paramBuf; - - DWORD bytesWritten; - if (inbuf.size()>0 && - !WriteFile(stdinWrite, inbuf.c_str(), inbuf.size(), - &bytesWritten, NULL)) - { - error("executeCommand: could not write to pipe"); - return false; - } - if (!CloseHandle(stdinWrite)) - { - error("executeCommand: could not close write pipe"); - return false; - } - if (!CloseHandle(stdoutWrite)) - { - error("executeCommand: could not close read pipe"); - return false; - } - if (stdoutWrite != stderrWrite && !CloseHandle(stderrWrite)) - { - error("executeCommand: could not close read pipe"); - return false; - } - - bool lastLoop = false; - while (true) - { - DWORD avail; - DWORD bytesRead; - char readBuf[4096]; - - //trace("## stderr"); - PeekNamedPipe(stderrRead, NULL, 0, NULL, &avail, NULL); - if (avail > 0) - { - bytesRead = 0; - if (avail>4096) avail = 4096; - ReadFile(stderrRead, readBuf, avail, &bytesRead, NULL); - if (bytesRead > 0) - { - for (unsigned int i=0 ; i<bytesRead ; i++) - errbuf.push_back(readBuf[i]); - } - } - - //trace("## stdout"); - PeekNamedPipe(stdoutRead, NULL, 0, NULL, &avail, NULL); - if (avail > 0) - { - bytesRead = 0; - if (avail>4096) avail = 4096; - ReadFile(stdoutRead, readBuf, avail, &bytesRead, NULL); - if (bytesRead > 0) - { - for (unsigned int i=0 ; i<bytesRead ; i++) - outbuf.push_back(readBuf[i]); - } - } - - //Was this the final check after program done? - if (lastLoop) - break; - - DWORD exitCode; - GetExitCodeProcess(piProcessInfo.hProcess, &exitCode); - if (exitCode != STILL_ACTIVE) - lastLoop = true; - - Sleep(10); - } - //trace("outbuf:%s", outbuf.c_str()); - if (!CloseHandle(stdoutRead)) - { - error("executeCommand: could not close read pipe"); - return false; - } - if (stdoutRead != stderrRead && !CloseHandle(stderrRead)) - { - error("executeCommand: could not close read pipe"); - return false; - } - - DWORD exitCode; - GetExitCodeProcess(piProcessInfo.hProcess, &exitCode); - //trace("exit code:%d", exitCode); - if (exitCode != 0) - { - ret = false; - } - - CloseHandle(piProcessInfo.hProcess); - CloseHandle(piProcessInfo.hThread); - - return ret; - -} - -#else /*do it unix style*/ - -#include <sys/wait.h> - - - -/** - * Execute a system call, using pipes to send data to the - * program's stdin, and reading stdout and stderr. - */ -bool MakeBase::executeCommand(const String &command, - const String &inbuf, - String &outbuf, - String &errbuf) -{ - - status("============ cmd ============\n%s\n=============================", - command.c_str()); - - outbuf.clear(); - errbuf.clear(); - - - int outfds[2]; - if (pipe(outfds) < 0) - return false; - int errfds[2]; - if (pipe(errfds) < 0) - return false; - int pid = fork(); - if (pid < 0) - { - close(outfds[0]); - close(outfds[1]); - close(errfds[0]); - close(errfds[1]); - error("launch of command '%s' failed : %s", - command.c_str(), strerror(errno)); - return false; - } - else if (pid > 0) // parent - { - close(outfds[1]); - close(errfds[1]); - } - else // == 0, child - { - close(outfds[0]); - dup2(outfds[1], STDOUT_FILENO); - close(outfds[1]); - close(errfds[0]); - dup2(errfds[1], STDERR_FILENO); - close(errfds[1]); - - char *args[4]; - args[0] = (char *)"sh"; - args[1] = (char *)"-c"; - args[2] = (char *)command.c_str(); - args[3] = NULL; - execv("/bin/sh", args); - exit(EXIT_FAILURE); - } - - String outb; - String errb; - - int outRead = outfds[0]; - int errRead = errfds[0]; - int max = outRead; - if (errRead > max) - max = errRead; - - bool outOpen = true; - bool errOpen = true; - - while (outOpen || errOpen) - { - char ch; - fd_set fdset; - FD_ZERO(&fdset); - if (outOpen) - FD_SET(outRead, &fdset); - if (errOpen) - FD_SET(errRead, &fdset); - int ret = select(max+1, &fdset, NULL, NULL, NULL); - if (ret < 0) - break; - if (FD_ISSET(outRead, &fdset)) - { - if (read(outRead, &ch, 1) <= 0) - { outOpen = false; } - else if (ch <= 0) - { /* outOpen = false; */ } - else - { outb.push_back(ch); } - } - if (FD_ISSET(errRead, &fdset)) - { - if (read(errRead, &ch, 1) <= 0) - { errOpen = false; } - else if (ch <= 0) - { /* errOpen = false; */ } - else - { errb.push_back(ch); } - } - } - - int childReturnValue; - wait(&childReturnValue); - - close(outRead); - close(errRead); - - outbuf = outb; - errbuf = errb; - - if (childReturnValue != 0) - { - error("exec of command '%s' failed : %s", - command.c_str(), strerror(childReturnValue)); - return false; - } - - return true; -} - -#endif - - - - -bool MakeBase::listDirectories(const String &baseName, - const String &dirName, - std::vector<String> &res) -{ - res.push_back(dirName); - String fullPath = baseName; - if (dirName.size()>0) - { - if (dirName[0]!='/') fullPath.append("/"); - fullPath.append(dirName); - } - DIR *dir = opendir(fullPath.c_str()); - while (true) - { - struct dirent *de = readdir(dir); - if (!de) - break; - - //Get the directory member name - String s = de->d_name; - if (s.size() == 0 || s[0] == '.') - continue; - String childName = dirName; - childName.append("/"); - childName.append(s); - - String fullChildPath = baseName; - fullChildPath.append("/"); - fullChildPath.append(childName); - struct stat finfo; - String childNative = getNativePath(fullChildPath); - if (cachedStat(childNative, &finfo)<0) - { - error("cannot stat file:%s", childNative.c_str()); - } - else if (S_ISDIR(finfo.st_mode)) - { - //trace("directory: %s", childName.c_str()); - if (!listDirectories(baseName, childName, res)) - return false; - } - } - closedir(dir); - - return true; -} - - -bool MakeBase::listFiles(const String &baseDir, - const String &dirName, - std::vector<String> &res) -{ - String fullDir = baseDir; - if (dirName.size()>0) - { - fullDir.append("/"); - fullDir.append(dirName); - } - String dirNative = getNativePath(fullDir); - - std::vector<String> subdirs; - DIR *dir = opendir(dirNative.c_str()); - if (!dir) - { - error("Could not open directory %s : %s", - dirNative.c_str(), strerror(errno)); - return false; - } - while (true) - { - struct dirent *de = readdir(dir); - if (!de) - break; - - //Get the directory member name - String s = de->d_name; - if (s.size() == 0 || s[0] == '.') - continue; - String childName; - if (dirName.size()>0) - { - childName.append(dirName); - childName.append("/"); - } - childName.append(s); - String fullChild = baseDir; - fullChild.append("/"); - fullChild.append(childName); - - if (isDirectory(fullChild)) - { - //trace("directory: %s", childName.c_str()); - if (!listFiles(baseDir, childName, res)) - return false; - continue; - } - else if (!isRegularFile(fullChild)) - { - error("unknown file:%s", childName.c_str()); - return false; - } - - //all done! - res.push_back(childName); - - } - closedir(dir); - - return true; -} - - -/** - * Several different classes extend MakeBase. By "propRef", we mean - * the one holding the properties. Likely "Make" itself - */ -bool MakeBase::listFiles(MakeBase &propRef, FileSet &fileSet) -{ - //before doing the list, resolve any property references - //that might have been specified in the directory name, such as ${src} - String fsDir = fileSet.getDirectory(); - String dir; - if (!propRef.getSubstitutions(fsDir, dir)) - return false; - String baseDir = propRef.resolve(dir); - std::vector<String> fileList; - if (!listFiles(baseDir, "", fileList)) - return false; - - std::vector<String> includes = fileSet.getIncludes(); - std::vector<String> excludes = fileSet.getExcludes(); - - std::vector<String> incs; - std::vector<String>::iterator iter; - - std::sort(fileList.begin(), fileList.end()); - - //If there are <includes>, then add files to the output - //in the order of the include list - if (includes.size()==0) - incs = fileList; - else - { - for (iter = includes.begin() ; iter != includes.end() ; iter++) - { - String &pattern = *iter; - std::vector<String>::iterator siter; - for (siter = fileList.begin() ; siter != fileList.end() ; siter++) - { - String s = *siter; - if (regexMatch(s, pattern)) - { - //trace("INCLUDED:%s", s.c_str()); - incs.push_back(s); - } - } - } - } - - //Now trim off the <excludes> - std::vector<String> res; - for (iter = incs.begin() ; iter != incs.end() ; iter++) - { - String s = *iter; - bool skipme = false; - std::vector<String>::iterator siter; - for (siter = excludes.begin() ; siter != excludes.end() ; siter++) - { - String &pattern = *siter; - if (regexMatch(s, pattern)) - { - //trace("EXCLUDED:%s", s.c_str()); - skipme = true; - break; - } - } - if (!skipme) - res.push_back(s); - } - - fileSet.setFiles(res); - - return true; -} - - -/** - * 0 == all, 1 = cflags, 2 = libs - */ -bool MakeBase::pkgConfigRecursive(const String packageName, - const String &path, - const String &prefix, - int query, - String &result, - std::set<String> &deplist) -{ - PkgConfig pkgConfig; - if (path.size() > 0) - pkgConfig.setPath(path); - if (prefix.size() > 0) - pkgConfig.setPrefix(prefix); - if (!pkgConfig.query(packageName)) - return false; - if (query == 0) - result = pkgConfig.getAll(); - else if (query == 1) - result = pkgConfig.getCflags(); - else - result = pkgConfig.getLibs(); - deplist.insert(packageName); - std::vector<String> list = pkgConfig.getRequireList(); - for (std::size_t i = 0 ; i<list.size() ; i++) - { - String depPkgName = list[i]; - if (deplist.find(depPkgName) != deplist.end()) - continue; - String val; - if (!pkgConfigRecursive(depPkgName, path, prefix, query, val, deplist)) - { - error("Based on 'requires' attribute of package '%s'", packageName.c_str()); - return false; - } - result.append(" "); - result.append(val); - } - - return true; -} - -bool MakeBase::pkgConfigQuery(const String &packageName, int query, String &result) -{ - std::set<String> deplist; - String path = getProperty("pkg-config-path"); - if (path.size()>0) - path = resolve(path); - String prefix = getProperty("pkg-config-prefix"); - String val; - if (!pkgConfigRecursive(packageName, path, prefix, query, val, deplist)) - return false; - result = val; - return true; -} - - - -/** - * replace a variable ref like ${a} with a value - */ -bool MakeBase::lookupProperty(const String &propertyName, String &result) -{ - String varname = propertyName; - if (envPrefix.size() > 0 && - varname.compare(0, envPrefix.size(), envPrefix) == 0) - { - varname = varname.substr(envPrefix.size()); - char *envstr = getenv(varname.c_str()); - if (!envstr) - { - error("environment variable '%s' not defined", varname.c_str()); - return false; - } - result = envstr; - } - else if (pcPrefix.size() > 0 && - varname.compare(0, pcPrefix.size(), pcPrefix) == 0) - { - varname = varname.substr(pcPrefix.size()); - String val; - if (!pkgConfigQuery(varname, 0, val)) - return false; - result = val; - } - else if (pccPrefix.size() > 0 && - varname.compare(0, pccPrefix.size(), pccPrefix) == 0) - { - varname = varname.substr(pccPrefix.size()); - String val; - if (!pkgConfigQuery(varname, 1, val)) - return false; - result = val; - } - else if (pclPrefix.size() > 0 && - varname.compare(0, pclPrefix.size(), pclPrefix) == 0) - { - varname = varname.substr(pclPrefix.size()); - String val; - if (!pkgConfigQuery(varname, 2, val)) - return false; - result = val; - } - else if (bzrPrefix.size() > 0 && - varname.compare(0, bzrPrefix.size(), bzrPrefix) == 0) - { - varname = varname.substr(bzrPrefix.size()); - String val; - //SvnInfo svnInfo; - BzrRevno bzrRevno; - if (varname == "revision") - { - if (!bzrRevno.query(val)) - return ""; - result = "r"+val; - } - /*if (!svnInfo.query(varname, val)) - return false; - result = val;*/ - } - else - { - std::map<String, String>::iterator iter; - iter = properties.find(varname); - if (iter != properties.end()) - { - result = iter->second; - } - else - { - error("property '%s' not found", varname.c_str()); - return false; - } - } - return true; -} - - - - -/** - * Analyse a string, looking for any substitutions or other - * things that need resolution - */ -bool MakeBase::getSubstitutionsRecursive(const String &str, - String &result, int depth) -{ - if (depth > 10) - { - error("nesting of substitutions too deep (>10) for '%s'", - str.c_str()); - return false; - } - String s = trim(str); - int len = (int)s.size(); - String val; - for (int i=0 ; i<len ; i++) - { - char ch = s[i]; - if (ch == '$' && s[i+1] == '{') - { - String varname; - int j = i+2; - for ( ; j<len ; j++) - { - ch = s[j]; - if (ch == '$' && s[j+1] == '{') - { - error("attribute %s cannot have nested variable references", - s.c_str()); - return false; - } - else if (ch == '}') - { - varname = trim(varname); - String varval; - if (!lookupProperty(varname, varval)) - return false; - String varval2; - //Now see if the answer has ${} in it, too - if (!getSubstitutionsRecursive(varval, varval2, depth + 1)) - return false; - val.append(varval2); - break; - } - else - { - varname.push_back(ch); - } - } - i = j; - } - else - { - val.push_back(ch); - } - } - result = val; - return true; -} - -/** - * Analyse a string, looking for any substitutions or other - * things that need resilution - */ -bool MakeBase::getSubstitutions(const String &str, String &result) -{ - return getSubstitutionsRecursive(str, result, 0); -} - - - -/** - * replace variable refs like ${a} with their values - * Assume that the string has already been syntax validated - */ -String MakeBase::eval(const String &s, const String &defaultVal) -{ - if (s.size()==0) - return defaultVal; - String ret; - if (getSubstitutions(s, ret)) - return ret; - else - return defaultVal; -} - - -/** - * replace variable refs like ${a} with their values - * return true or false - * Assume that the string has already been syntax validated - */ -bool MakeBase::evalBool(const String &s, bool defaultVal) -{ - if (s.size()==0) - return defaultVal; - String val = eval(s, "false"); - if (val.size()==0) - return defaultVal; - if (val == "true" || val == "TRUE") - return true; - else - return false; -} - -int MakeBase::evalInt(const String &s, int defaultVal) -{ - if (s.size()==0) { - return defaultVal; - } - int val = atoi(s.c_str()); - // perhaps some error checking, but... bah! waste of time - return val; -} - -/** - * Get a string attribute, testing it for proper syntax and - * property names. - */ -bool MakeBase::getAttribute(Element *elem, const String &name, - String &result) -{ - String s = elem->getAttribute(name); - String tmp; - bool ret = getSubstitutions(s, tmp); - if (ret) - result = s; //assign -if- ok - return ret; -} - - -/** - * Get a string value, testing it for proper syntax and - * property names. - */ -bool MakeBase::getValue(Element *elem, String &result) -{ - String s = elem->getValue(); - String tmp; - bool ret = getSubstitutions(s, tmp); - if (ret) - result = s; //assign -if- ok - return ret; -} - - - - -/** - * Parse a <patternset> entry - */ -bool MakeBase::parsePatternSet(Element *elem, - MakeBase &propRef, - std::vector<String> &includes, - std::vector<String> &excludes - ) -{ - std::vector<Element *> children = elem->getChildren(); - for (std::size_t i=0 ; i<children.size() ; i++) - { - Element *child = children[i]; - String tagName = child->getName(); - if (tagName == "exclude") - { - String fname; - if (!propRef.getAttribute(child, "name", fname)) - return false; - //trace("EXCLUDE: %s", fname.c_str()); - excludes.push_back(fname); - } - else if (tagName == "include") - { - String fname; - if (!propRef.getAttribute(child, "name", fname)) - return false; - //trace("INCLUDE: %s", fname.c_str()); - includes.push_back(fname); - } - } - - return true; -} - - - - -/** - * Parse a <fileset> entry, and determine which files - * should be included - */ -bool MakeBase::parseFileSet(Element *elem, - MakeBase &propRef, - FileSet &fileSet) -{ - String name = elem->getName(); - if (name != "fileset") - { - error("expected <fileset>"); - return false; - } - - - std::vector<String> includes; - std::vector<String> excludes; - - //A fileset has one implied patternset - if (!parsePatternSet(elem, propRef, includes, excludes)) - { - return false; - } - //Look for child tags, including more patternsets - std::vector<Element *> children = elem->getChildren(); - for (std::size_t i=0 ; i<children.size() ; i++) - { - Element *child = children[i]; - String tagName = child->getName(); - if (tagName == "patternset") - { - if (!parsePatternSet(child, propRef, includes, excludes)) - { - return false; - } - } - } - - String dir; - //Now do the stuff - //Get the base directory for reading file names - if (!propRef.getAttribute(elem, "dir", dir)) - return false; - - fileSet.setDirectory(dir); - fileSet.setIncludes(includes); - fileSet.setExcludes(excludes); - - /* - std::vector<String> fileList; - if (dir.size() > 0) - { - String baseDir = propRef.resolve(dir); - if (!listFiles(baseDir, "", includes, excludes, fileList)) - return false; - } - std::sort(fileList.begin(), fileList.end()); - result = fileList; - */ - - - /* - for (std::size_t i=0 ; i<result.size() ; i++) - { - trace("RES:%s", result[i].c_str()); - } - */ - - - return true; -} - -/** - * Parse a <filelist> entry. This is far simpler than FileSet, - * since no directory scanning is needed. The file names are listed - * explicitly. - */ -bool MakeBase::parseFileList(Element *elem, - MakeBase &propRef, - FileList &fileList) -{ - std::vector<String> fnames; - //Look for child tags, namely "file" - std::vector<Element *> children = elem->getChildren(); - for (std::size_t i=0 ; i<children.size() ; i++) - { - Element *child = children[i]; - String tagName = child->getName(); - if (tagName == "file") - { - String fname = child->getAttribute("name"); - if (fname.size()==0) - { - error("<file> element requires name="" attribute"); - return false; - } - fnames.push_back(fname); - } - else - { - error("tag <%s> not allowed in <fileset>", tagName.c_str()); - return false; - } - } - - String dir; - //Get the base directory for reading file names - if (!propRef.getAttribute(elem, "dir", dir)) - return false; - fileList.setDirectory(dir); - fileList.setFiles(fnames); - - return true; -} - - - -/** - * Create a directory, making intermediate dirs - * if necessary - */ -bool MakeBase::createDirectory(const String &dirname) -{ - //trace("## createDirectory: %s", dirname.c_str()); - //## first check if it exists - struct stat finfo; - String nativeDir = getNativePath(dirname); - char *cnative = (char *) nativeDir.c_str(); -#ifdef __WIN32__ - if (strlen(cnative)==2 && cnative[1]==':') - return true; -#endif - if (cachedStat(nativeDir, &finfo)==0) - { - if (!S_ISDIR(finfo.st_mode)) - { - error("mkdir: file %s exists but is not a directory", - cnative); - return false; - } - else //exists - { - return true; - } - } - - //## 2: pull off the last path segment, if any, - //## to make the dir 'above' this one, if necessary - std::size_t pos = dirname.find_last_of('/'); - if (pos>0 && pos != dirname.npos) - { - String subpath = dirname.substr(0, pos); - //A letter root (c:) ? - if (!createDirectory(subpath)) - return false; - } - - //## 3: now make -#ifdef __WIN32__ - if (mkdir(cnative)<0) -#else - if (mkdir(cnative, S_IRWXU | S_IRWXG | S_IRWXO)<0) -#endif - { - error("cannot make directory '%s' : %s", - cnative, strerror(errno)); - return false; - } - - removeFromStatCache(nativeDir); - - return true; -} - - -/** - * Remove a directory recursively - */ -bool MakeBase::removeDirectory(const String &dirName) -{ - char *dname = (char *)dirName.c_str(); - - DIR *dir = opendir(dname); - if (!dir) - { - //# Let this fail nicely. - return true; - //error("error opening directory %s : %s", dname, strerror(errno)); - //return false; - } - - while (true) - { - struct dirent *de = readdir(dir); - if (!de) - break; - - //Get the directory member name - String s = de->d_name; - if (s.size() == 0 || s[0] == '.') - continue; - String childName; - if (dirName.size() > 0) - { - childName.append(dirName); - childName.append("/"); - } - childName.append(s); - - - struct stat finfo; - String childNative = getNativePath(childName); - char *cnative = (char *)childNative.c_str(); - if (cachedStat(childNative, &finfo)<0) - { - error("cannot stat file:%s", cnative); - } - else if (S_ISDIR(finfo.st_mode)) - { - //trace("DEL dir: %s", childName.c_str()); - if (!removeDirectory(childName)) - { - return false; - } - } - else if (!S_ISREG(finfo.st_mode)) - { - //trace("not regular: %s", cnative); - } - else - { - //trace("DEL file: %s", childName.c_str()); - if (!removeFile(childName)) - { - return false; - } - } - } - closedir(dir); - - //Now delete the directory - String native = getNativePath(dirName); - if (rmdir(native.c_str())<0) - { - error("could not delete directory %s : %s", - native.c_str() , strerror(errno)); - return false; - } - - removeFromStatCache(native); - - return true; - -} - - -/** - * Copy a file from one name to another. Perform only if needed - */ -bool MakeBase::copyFile(const String &srcFile, const String &destFile) -{ - //# 1 Check up-to-date times - String srcNative = getNativePath(srcFile); - struct stat srcinfo; - if (cachedStat(srcNative, &srcinfo)<0) - { - error("source file %s for copy does not exist", - srcNative.c_str()); - return false; - } - - String destNative = getNativePath(destFile); - struct stat destinfo; - if (cachedStat(destNative, &destinfo)==0) - { - if (destinfo.st_mtime >= srcinfo.st_mtime) - return true; - } - - //# 2 prepare a destination directory if necessary - std::size_t pos = destFile.find_last_of('/'); - if (pos != destFile.npos) - { - String subpath = destFile.substr(0, pos); - if (!createDirectory(subpath)) - return false; - } - - //# 3 do the data copy -#ifndef __WIN32__ - - FILE *srcf = fopen(srcNative.c_str(), "rb"); - if (!srcf) - { - error("copyFile cannot open '%s' for reading", srcNative.c_str()); - return false; - } - FILE *destf = fopen(destNative.c_str(), "wb"); - if (!destf) - { - fclose(srcf); - error("copyFile cannot open %s for writing", srcNative.c_str()); - return false; - } - - while (!feof(srcf)) - { - int ch = fgetc(srcf); - if (ch<0) - break; - fputc(ch, destf); - } - - fclose(destf); - fclose(srcf); - -#else - - if (!CopyFile(srcNative.c_str(), destNative.c_str(), false)) - { - error("copyFile from %s to %s failed", - srcNative.c_str(), destNative.c_str()); - return false; - } - -#endif /* __WIN32__ */ - - removeFromStatCache(destNative); - - return true; -} - - -/** - * Delete a file - */ -bool MakeBase::removeFile(const String &file) -{ - String native = getNativePath(file); - - if (!fileExists(native)) - { - return true; - } - -#ifdef WIN32 - // On Windows 'remove' will only delete files - - if (remove(native.c_str())<0) - { - if (errno==EACCES) - { - error("File %s is read-only", native.c_str()); - } - else if (errno==ENOENT) - { - error("File %s does not exist or is a directory", native.c_str()); - } - else - { - error("Failed to delete file %s: %s", native.c_str(), strerror(errno)); - } - return false; - } - -#else - - if (!isRegularFile(native)) - { - error("File %s does not exist or is not a regular file", native.c_str()); - return false; - } - - if (remove(native.c_str())<0) - { - if (errno==EACCES) - { - error("File %s is read-only", native.c_str()); - } - else - { - error( - errno==EACCES ? "File %s is read-only" : - errno==ENOENT ? "File %s does not exist or is a directory" : - "Failed to delete file %s: %s", native.c_str()); - } - return false; - } - -#endif - - removeFromStatCache(native); - - return true; -} - - -/** - * Tests if the file exists - */ -bool MakeBase::fileExists(const String &fileName) -{ - String native = getNativePath(fileName); - struct stat finfo; - - //Exists? - if (cachedStat(native, &finfo)<0) - return false; - - return true; -} - - -/** - * Tests if the file exists and is a regular file - */ -bool MakeBase::isRegularFile(const String &fileName) -{ - String native = getNativePath(fileName); - struct stat finfo; - - //Exists? - if (cachedStat(native, &finfo)<0) - return false; - - - //check the file mode - if (!S_ISREG(finfo.st_mode)) - return false; - - return true; -} - -/** - * Tests if the file exists and is a directory - */ -bool MakeBase::isDirectory(const String &fileName) -{ - String native = getNativePath(fileName); - struct stat finfo; - - //Exists? - if (cachedStat(native, &finfo)<0) - return false; - - - //check the file mode - if (!S_ISDIR(finfo.st_mode)) - return false; - - return true; -} - - - -/** - * Tests is the modification of fileA is newer than fileB - */ -bool MakeBase::isNewerThan(const String &fileA, const String &fileB) -{ - //trace("isNewerThan:'%s' , '%s'", fileA.c_str(), fileB.c_str()); - String nativeA = getNativePath(fileA); - struct stat infoA; - //IF source does not exist, NOT newer - if (cachedStat(nativeA, &infoA)<0) - { - return false; - } - - String nativeB = getNativePath(fileB); - struct stat infoB; - //IF dest does not exist, YES, newer - if (cachedStat(nativeB, &infoB)<0) - { - return true; - } - - //check the actual times - if (infoA.st_mtime > infoB.st_mtime) - { - return true; - } - - return false; -} - - -//######################################################################## -//# P K G C O N F I G -//######################################################################## - - -/** - * Get a character from the buffer at pos. If out of range, - * return -1 for safety - */ -int PkgConfig::get(int pos) -{ - if (pos>parselen) - return -1; - return parsebuf[pos]; -} - - - -/** - * Skip over all whitespace characters beginning at pos. Return - * the position of the first non-whitespace character. - * Pkg-config is line-oriented, so check for newline - */ -int PkgConfig::skipwhite(int pos) -{ - while (pos < parselen) - { - int ch = get(pos); - if (ch < 0) - break; - if (!isspace(ch)) - break; - pos++; - } - return pos; -} - - -/** - * Parse the buffer beginning at pos, for a word. Fill - * 'ret' with the result. Return the position after the - * word. - */ -int PkgConfig::getword(int pos, String &ret) -{ - while (pos < parselen) - { - int ch = get(pos); - if (ch < 0) - break; - if (!isalnum(ch) && ch != '_' && ch != '-' && ch != '+' && ch != '.') - break; - ret.push_back((char)ch); - pos++; - } - return pos; -} - -bool PkgConfig::parseRequires() -{ - if (requires.size() == 0) - return true; - parsebuf = (char *)requires.c_str(); - parselen = requires.size(); - int pos = 0; - while (pos < parselen) - { - pos = skipwhite(pos); - String val; - int pos2 = getword(pos, val); - if (pos2 == pos) - break; - pos = pos2; - //trace("val %s", val.c_str()); - requireList.push_back(val); - } - return true; -} - - -static int getint(const String str) -{ - char *s = (char *)str.c_str(); - char *ends = NULL; - long val = strtol(s, &ends, 10); - if (ends == s) - return 0L; - else - return val; -} - -void PkgConfig::parseVersion() -{ - if (version.size() == 0) - return; - String s1, s2, s3; - std::size_t pos = 0; - std::size_t pos2 = version.find('.', pos); - if (pos2 == version.npos) - { - s1 = version; - } - else - { - s1 = version.substr(pos, pos2-pos); - pos = pos2; - pos++; - if (pos < version.size()) - { - pos2 = version.find('.', pos); - if (pos2 == version.npos) - { - s2 = version.substr(pos, version.size()-pos); - } - else - { - s2 = version.substr(pos, pos2-pos); - pos = pos2; - pos++; - if (pos < version.size()) - s3 = version.substr(pos, pos2-pos); - } - } - } - - majorVersion = getint(s1); - minorVersion = getint(s2); - microVersion = getint(s3); - //trace("version:%d.%d.%d", majorVersion, - // minorVersion, microVersion ); -} - - -bool PkgConfig::parseLine(const String &lineBuf) -{ - parsebuf = (char *)lineBuf.c_str(); - parselen = lineBuf.size(); - int pos = 0; - - while (pos < parselen) - { - String attrName; - pos = skipwhite(pos); - int ch = get(pos); - if (ch == '#') - { - //comment. eat the rest of the line - while (pos < parselen) - { - ch = get(pos); - if (ch == '\n' || ch < 0) - break; - pos++; - } - continue; - } - pos = getword(pos, attrName); - if (attrName.size() == 0) - continue; - - pos = skipwhite(pos); - ch = get(pos); - if (ch != ':' && ch != '=') - { - error("expected ':' or '='"); - return false; - } - pos++; - pos = skipwhite(pos); - String attrVal; - while (pos < parselen) - { - ch = get(pos); - if (ch == '\n' || ch < 0) - break; - else if (ch == '$' && get(pos+1) == '{') - { - //# this is a ${substitution} - pos += 2; - String subName; - while (pos < parselen) - { - ch = get(pos); - if (ch < 0) - { - error("unterminated substitution"); - return false; - } - else if (ch == '}') - break; - else - subName.push_back((char)ch); - pos++; - } - //trace("subName:%s %s", subName.c_str(), prefix.c_str()); - if (subName == "prefix" && prefix.size()>0) - { - attrVal.append(prefix); - //trace("prefix override:%s", prefix.c_str()); - } - else - { - String subVal = attrs[subName]; - //trace("subVal:%s", subVal.c_str()); - attrVal.append(subVal); - } - } - else - attrVal.push_back((char)ch); - pos++; - } - - attrVal = trim(attrVal); - attrs[attrName] = attrVal; - - String attrNameL = toLower(attrName); - - if (attrNameL == "name") - name = attrVal; - else if (attrNameL == "description") - description = attrVal; - else if (attrNameL == "cflags") - cflags = attrVal; - else if (attrNameL == "libs") - libs = attrVal; - else if (attrNameL == "requires") - requires = attrVal; - else if (attrNameL == "version") - version = attrVal; - - //trace("name:'%s' value:'%s'", - // attrName.c_str(), attrVal.c_str()); - } - - return true; -} - - -bool PkgConfig::parse(const String &buf) -{ - init(); - - String line; - int lineNr = 0; - for (std::size_t p=0 ; p<buf.size() ; p++) - { - int ch = buf[p]; - if (ch == '\n' || ch == '\r') - { - if (!parseLine(line)) - return false; - line.clear(); - lineNr++; - } - else - { - line.push_back(ch); - } - } - if (line.size()>0) - { - if (!parseLine(line)) - return false; - } - - parseRequires(); - parseVersion(); - - return true; -} - - - - -void PkgConfig::dumpAttrs() -{ - //trace("### PkgConfig attributes for %s", fileName.c_str()); - std::map<String, String>::iterator iter; - for (iter=attrs.begin() ; iter!=attrs.end() ; iter++) - { - trace(" %s = %s", iter->first.c_str(), iter->second.c_str()); - } -} - - -bool PkgConfig::readFile(const String &fname) -{ - fileName = getNativePath(fname); - - FILE *f = fopen(fileName.c_str(), "r"); - if (!f) - { - error("cannot open file '%s' for reading", fileName.c_str()); - return false; - } - String buf; - while (true) - { - int ch = fgetc(f); - if (ch < 0) - break; - buf.push_back((char)ch); - } - fclose(f); - - //trace("####### File:\n%s", buf.c_str()); - if (!parse(buf)) - { - return false; - } - - //dumpAttrs(); - - return true; -} - - - -bool PkgConfig::query(const String &pkgName) -{ - name = pkgName; - - String fname = path; - fname.append("/"); - fname.append(name); - fname.append(".pc"); - - if (!readFile(fname)) - { - error("Cannot find package '%s'. Do you have it installed?", - pkgName.c_str()); - return false; - } - - return true; -} - - -//######################################################################## -//# D E P T O O L -//######################################################################## - - - -/** - * Class which holds information for each file. - */ -class FileRec -{ -public: - - typedef enum - { - UNKNOWN, - CFILE, - HFILE, - OFILE - } FileType; - - /** - * Constructor - */ - FileRec() - { init(); type = UNKNOWN; } - - /** - * Copy constructor - */ - FileRec(const FileRec &other) - { init(); assign(other); } - /** - * Constructor - */ - FileRec(int typeVal) - { init(); type = typeVal; } - /** - * Assignment operator - */ - FileRec &operator=(const FileRec &other) - { init(); assign(other); return *this; } - - - /** - * Destructor - */ - ~FileRec() - {} - - /** - * Directory part of the file name - */ - String path; - - /** - * Base name, sans directory and suffix - */ - String baseName; - - /** - * File extension, such as cpp or h - */ - String suffix; - - /** - * Type of file: CFILE, HFILE, OFILE - */ - int type; - - /** - * Used to list files ref'd by this one - */ - std::map<String, FileRec *> files; - - -private: - - void init() - { - } - - void assign(const FileRec &other) - { - type = other.type; - baseName = other.baseName; - suffix = other.suffix; - files = other.files; - } - -}; - - - -/** - * Simpler dependency record - */ -class DepRec -{ -public: - - /** - * Constructor - */ - DepRec() - {init();} - - /** - * Copy constructor - */ - DepRec(const DepRec &other) - {init(); assign(other);} - /** - * Constructor - */ - DepRec(const String &fname) - {init(); name = fname; } - /** - * Assignment operator - */ - DepRec &operator=(const DepRec &other) - {init(); assign(other); return *this;} - - - /** - * Destructor - */ - ~DepRec() - {} - - /** - * Directory part of the file name - */ - String path; - - /** - * Base name, without the path and suffix - */ - String name; - - /** - * Suffix of the source - */ - String suffix; - - - /** - * Used to list files ref'd by this one - */ - std::vector<String> files; - - -private: - - void init() - { - } - - void assign(const DepRec &other) - { - path = other.path; - name = other.name; - suffix = other.suffix; - files = other.files; //avoid recursion - } - -}; - - -class DepTool : public MakeBase -{ -public: - - /** - * Constructor - */ - DepTool() - { init(); } - - /** - * Copy constructor - */ - DepTool(const DepTool &other) - { init(); assign(other); } - - /** - * Assignment operator - */ - DepTool &operator=(const DepTool &other) - { init(); assign(other); return *this; } - - - /** - * Destructor - */ - ~DepTool() - {} - - - /** - * Reset this section of code - */ - virtual void init(); - - /** - * Reset this section of code - */ - virtual void assign(const DepTool &other) - { - } - - /** - * Sets the source directory which will be scanned - */ - virtual void setSourceDirectory(const String &val) - { sourceDir = val; } - - /** - * Returns the source directory which will be scanned - */ - virtual String getSourceDirectory() - { return sourceDir; } - - /** - * Sets the list of files within the directory to analyze - */ - virtual void setFileList(const std::vector<String> &list) - { fileList = list; } - - /** - * Creates the list of all file names which will be - * candidates for further processing. Reads make.exclude - * to see which files for directories to leave out. - */ - virtual bool createFileList(); - - - /** - * Generates the forward dependency list - */ - virtual bool generateDependencies(); - - - /** - * Generates the forward dependency list, saving the file - */ - virtual bool generateDependencies(const String &); - - - /** - * Load a dependency file - */ - std::vector<DepRec> loadDepFile(const String &fileName); - - /** - * Load a dependency file, generating one if necessary - */ - std::vector<DepRec> getDepFile(const String &fileName, - bool forceRefresh); - - /** - * Save a dependency file - */ - bool saveDepFile(const String &fileName); - - -private: - - - /** - * - */ - void parseName(const String &fullname, - String &path, - String &basename, - String &suffix); - - /** - * - */ - int get(int pos); - - /** - * - */ - int skipwhite(int pos); - - /** - * - */ - int getword(int pos, String &ret); - - /** - * - */ - bool sequ(int pos, const char *key); - - /** - * - */ - bool addIncludeFile(FileRec *frec, const String &fname); - - /** - * - */ - bool scanFile(const String &fname, FileRec *frec); - - /** - * - */ - bool processDependency(FileRec *ofile, FileRec *include); - - /** - * - */ - String sourceDir; - - /** - * - */ - std::vector<String> fileList; - - /** - * - */ - std::vector<String> directories; - - /** - * A list of all files which will be processed for - * dependencies. - */ - std::map<String, FileRec *> allFiles; - - /** - * The list of .o files, and the - * dependencies upon them. - */ - std::map<String, FileRec *> oFiles; - - int depFileSize; - char *depFileBuf; - - static const int readBufSize = 8192; - char readBuf[8193];//byte larger - -}; - - - - - -/** - * Clean up after processing. Called by the destructor, but should - * also be called before the object is reused. - */ -void DepTool::init() -{ - sourceDir = "."; - - fileList.clear(); - directories.clear(); - - //clear output file list - std::map<String, FileRec *>::iterator iter; - for (iter=oFiles.begin(); iter!=oFiles.end() ; iter++) - delete iter->second; - oFiles.clear(); - - //allFiles actually contains the master copies. delete them - for (iter= allFiles.begin(); iter!=allFiles.end() ; iter++) - delete iter->second; - allFiles.clear(); - -} - - - - -/** - * Parse a full path name into path, base name, and suffix - */ -void DepTool::parseName(const String &fullname, - String &path, - String &basename, - String &suffix) -{ - if (fullname.size() < 2) - return; - - std::size_t pos = fullname.find_last_of('/'); - if (pos != fullname.npos && pos<fullname.size()-1) - { - path = fullname.substr(0, pos); - pos++; - basename = fullname.substr(pos, fullname.size()-pos); - } - else - { - path = ""; - basename = fullname; - } - - pos = basename.find_last_of('.'); - if (pos != basename.npos && pos<basename.size()-1) - { - suffix = basename.substr(pos+1, basename.size()-pos-1); - basename = basename.substr(0, pos); - } - - //trace("parsename:%s %s %s", path.c_str(), - // basename.c_str(), suffix.c_str()); -} - - - -/** - * Generate our internal file list. - */ -bool DepTool::createFileList() -{ - - for (std::size_t i=0 ; i<fileList.size() ; i++) - { - String fileName = fileList[i]; - //trace("## FileName:%s", fileName.c_str()); - String path; - String basename; - String sfx; - parseName(fileName, path, basename, sfx); - if (sfx == "cpp" || sfx == "c" || sfx == "cxx" || - sfx == "cc" || sfx == "CC") - { - FileRec *fe = new FileRec(FileRec::CFILE); - fe->path = path; - fe->baseName = basename; - fe->suffix = sfx; - allFiles[fileName] = fe; - } - else if (sfx == "h" || sfx == "hh" || - sfx == "hpp" || sfx == "hxx") - { - FileRec *fe = new FileRec(FileRec::HFILE); - fe->path = path; - fe->baseName = basename; - fe->suffix = sfx; - allFiles[fileName] = fe; - } - } - - if (!listDirectories(sourceDir, "", directories)) - return false; - - return true; -} - - - - - -/** - * Get a character from the buffer at pos. If out of range, - * return -1 for safety - */ -int DepTool::get(int pos) -{ - if (pos>depFileSize) - return -1; - return depFileBuf[pos]; -} - - - -/** - * Skip over all whitespace characters beginning at pos. Return - * the position of the first non-whitespace character. - */ -int DepTool::skipwhite(int pos) -{ - while (pos < depFileSize) - { - int ch = get(pos); - if (ch < 0) - break; - if (!isspace(ch)) - break; - pos++; - } - return pos; -} - - -/** - * Parse the buffer beginning at pos, for a word. Fill - * 'ret' with the result. Return the position after the - * word. - */ -int DepTool::getword(int pos, String &ret) -{ - while (pos < depFileSize) - { - int ch = get(pos); - if (ch < 0) - break; - if (isspace(ch)) - break; - ret.push_back((char)ch); - pos++; - } - return pos; -} - -/** - * Return whether the sequence of characters in the buffer - * beginning at pos match the key, for the length of the key - */ -bool DepTool::sequ(int pos, const char *key) -{ - while (*key) - { - if (*key != get(pos)) - return false; - key++; pos++; - } - return true; -} - - - -/** - * Add an include file name to a file record. If the name - * is not found in allFiles explicitly, try prepending include - * directory names to it and try again. - */ -bool DepTool::addIncludeFile(FileRec *frec, const String &iname) -{ - //# if the name is an exact match to a path name - //# in allFiles, like "myinc.h" - std::map<String, FileRec *>::iterator iter = - allFiles.find(iname); - if (iter != allFiles.end()) //already exists - { - //h file in same dir - FileRec *other = iter->second; - //trace("local: '%s'", iname.c_str()); - frec->files[iname] = other; - return true; - } - else - { - //## Ok, it was not found directly - //look in other dirs - std::vector<String>::iterator diter; - for (diter=directories.begin() ; - diter!=directories.end() ; diter++) - { - String dfname = *diter; - dfname.append("/"); - dfname.append(iname); - URI fullPathURI(dfname); //normalize path name - String fullPath = fullPathURI.getPath(); - if (fullPath[0] == '/') - fullPath = fullPath.substr(1); - //trace("Normalized %s to %s", dfname.c_str(), fullPath.c_str()); - iter = allFiles.find(fullPath); - if (iter != allFiles.end()) - { - FileRec *other = iter->second; - //trace("other: '%s'", iname.c_str()); - frec->files[fullPath] = other; - return true; - } - } - } - return true; -} - - - -/** - * Lightly parse a file to find the #include directives. Do - * a bit of state machine stuff to make sure that the directive - * is valid. (Like not in a comment). - */ -bool DepTool::scanFile(const String &fname, FileRec *frec) -{ - String fileName; - if (sourceDir.size() > 0) - { - fileName.append(sourceDir); - fileName.append("/"); - } - fileName.append(fname); - String nativeName = getNativePath(fileName); - FILE *f = fopen(nativeName.c_str(), "r"); - if (!f) - { - error("Could not open '%s' for reading", fname.c_str()); - return false; - } - String buf; - while (!feof(f)) - { - int nrbytes = fread(readBuf, 1, readBufSize, f); - readBuf[nrbytes] = '\0'; - buf.append(readBuf); - } - fclose(f); - - depFileSize = buf.size(); - depFileBuf = (char *)buf.c_str(); - int pos = 0; - - - while (pos < depFileSize) - { - //trace("p:%c", get(pos)); - - //# Block comment - if (get(pos) == '/' && get(pos+1) == '*') - { - pos += 2; - while (pos < depFileSize) - { - if (get(pos) == '*' && get(pos+1) == '/') - { - pos += 2; - break; - } - else - pos++; - } - } - //# Line comment - else if (get(pos) == '/' && get(pos+1) == '/') - { - pos += 2; - while (pos < depFileSize) - { - if (get(pos) == '\n') - { - pos++; - break; - } - else - pos++; - } - } - //# #include! yaay - else if (sequ(pos, "#include")) - { - pos += 8; - pos = skipwhite(pos); - String iname; - pos = getword(pos, iname); - if (iname.size()>2) - { - iname = iname.substr(1, iname.size()-2); - addIncludeFile(frec, iname); - } - } - else - { - pos++; - } - } - - return true; -} - - - -/** - * Recursively check include lists to find all files in allFiles to which - * a given file is dependent. - */ -bool DepTool::processDependency(FileRec *ofile, FileRec *include) -{ - std::map<String, FileRec *>::iterator iter; - for (iter=include->files.begin() ; iter!=include->files.end() ; iter++) - { - String fname = iter->first; - if (ofile->files.find(fname) != ofile->files.end()) - { - //trace("file '%s' already seen", fname.c_str()); - continue; - } - FileRec *child = iter->second; - ofile->files[fname] = child; - - processDependency(ofile, child); - } - - - return true; -} - - - - - -/** - * Generate the file dependency list. - */ -bool DepTool::generateDependencies() -{ - std::map<String, FileRec *>::iterator iter; - //# First pass. Scan for all includes - for (iter=allFiles.begin() ; iter!=allFiles.end() ; iter++) - { - FileRec *frec = iter->second; - if (!scanFile(iter->first, frec)) - { - //quit? - } - } - - //# Second pass. Scan for all includes - for (iter=allFiles.begin() ; iter!=allFiles.end() ; iter++) - { - FileRec *include = iter->second; - if (include->type == FileRec::CFILE) - { - //String cFileName = iter->first; - FileRec *ofile = new FileRec(FileRec::OFILE); - ofile->path = include->path; - ofile->baseName = include->baseName; - ofile->suffix = include->suffix; - String fname = include->path; - if (fname.size()>0) - fname.append("/"); - fname.append(include->baseName); - fname.append(".o"); - oFiles[fname] = ofile; - //add the .c file first? no, don't - //ofile->files[cFileName] = include; - - //trace("ofile:%s", fname.c_str()); - - processDependency(ofile, include); - } - } - - - return true; -} - - - -/** - * High-level call to generate deps and optionally save them - */ -bool DepTool::generateDependencies(const String &fileName) -{ - if (!createFileList()) - return false; - if (!generateDependencies()) - return false; - if (!saveDepFile(fileName)) - return false; - return true; -} - - -/** - * This saves the dependency cache. - */ -bool DepTool::saveDepFile(const String &fileName) -{ - time_t tim; - time(&tim); - - FILE *f = fopen(fileName.c_str(), "w"); - if (!f) - { - trace("cannot open '%s' for writing", fileName.c_str()); - } - fprintf(f, "<?xml version='1.0'?>\n"); - fprintf(f, "<!--\n"); - fprintf(f, "########################################################\n"); - fprintf(f, "## File: build.dep\n"); - fprintf(f, "## Generated by BuildTool at :%s", ctime(&tim)); - fprintf(f, "########################################################\n"); - fprintf(f, "-->\n"); - - fprintf(f, "<dependencies source='%s'>\n\n", sourceDir.c_str()); - std::map<String, FileRec *>::iterator iter; - for (iter=oFiles.begin() ; iter!=oFiles.end() ; iter++) - { - FileRec *frec = iter->second; - if (frec->type == FileRec::OFILE) - { - fprintf(f, "<object path='%s' name='%s' suffix='%s'>\n", - frec->path.c_str(), frec->baseName.c_str(), frec->suffix.c_str()); - std::map<String, FileRec *>::iterator citer; - for (citer=frec->files.begin() ; citer!=frec->files.end() ; citer++) - { - String cfname = citer->first; - fprintf(f, " <dep name='%s'/>\n", cfname.c_str()); - } - fprintf(f, "</object>\n\n"); - } - } - - fprintf(f, "</dependencies>\n"); - fprintf(f, "\n"); - fprintf(f, "<!--\n"); - fprintf(f, "########################################################\n"); - fprintf(f, "## E N D\n"); - fprintf(f, "########################################################\n"); - fprintf(f, "-->\n"); - - fclose(f); - - return true; -} - - - - -/** - * This loads the dependency cache. - */ -std::vector<DepRec> DepTool::loadDepFile(const String &depFile) -{ - std::vector<DepRec> result; - - Parser parser; - Element *root = parser.parseFile(depFile.c_str()); - if (!root) - { - //error("Could not open %s for reading", depFile.c_str()); - return result; - } - - if (root->getChildren().size()==0 || - root->getChildren()[0]->getName()!="dependencies") - { - error("loadDepFile: main xml element should be <dependencies>"); - delete root; - return result; - } - - //########## Start parsing - Element *depList = root->getChildren()[0]; - - std::vector<Element *> objects = depList->getChildren(); - for (std::size_t i=0 ; i<objects.size() ; i++) - { - Element *objectElem = objects[i]; - String tagName = objectElem->getName(); - if (tagName != "object") - { - error("loadDepFile: <dependencies> should have only <object> children"); - return result; - } - - String objName = objectElem->getAttribute("name"); - //trace("object:%s", objName.c_str()); - DepRec depObject(objName); - depObject.path = objectElem->getAttribute("path"); - depObject.suffix = objectElem->getAttribute("suffix"); - //########## DESCRIPTION - std::vector<Element *> depElems = objectElem->getChildren(); - for (std::size_t i=0 ; i<depElems.size() ; i++) - { - Element *depElem = depElems[i]; - tagName = depElem->getName(); - if (tagName != "dep") - { - error("loadDepFile: <object> should have only <dep> children"); - return result; - } - String depName = depElem->getAttribute("name"); - //trace(" dep:%s", depName.c_str()); - depObject.files.push_back(depName); - } - - //Insert into the result list, in a sorted manner - bool inserted = false; - std::vector<DepRec>::iterator iter; - for (iter = result.begin() ; iter != result.end() ; iter++) - { - String vpath = iter->path; - vpath.append("/"); - vpath.append(iter->name); - String opath = depObject.path; - opath.append("/"); - opath.append(depObject.name); - if (vpath > opath) - { - inserted = true; - iter = result.insert(iter, depObject); - break; - } - } - if (!inserted) - result.push_back(depObject); - } - - delete root; - - return result; -} - - -/** - * This loads the dependency cache. - */ -std::vector<DepRec> DepTool::getDepFile(const String &depFile, - bool forceRefresh) -{ - std::vector<DepRec> result; - if (forceRefresh) - { - generateDependencies(depFile); - result = loadDepFile(depFile); - } - else - { - //try once - result = loadDepFile(depFile); - if (result.size() == 0) - { - //fail? try again - generateDependencies(depFile); - result = loadDepFile(depFile); - } - } - return result; -} - - - - -//######################################################################## -//# T A S K -//######################################################################## -//forward decl -class Target; -class Make; - -/** - * - */ -class Task : public MakeBase -{ - -public: - - typedef enum - { - TASK_NONE, - TASK_CC, - TASK_COPY, - TASK_CXXTEST_PART, - TASK_CXXTEST_ROOT, - TASK_CXXTEST_RUN, - TASK_DELETE, - TASK_ECHO, - TASK_JAR, - TASK_JAVAC, - TASK_LINK, - TASK_MAKEFILE, - TASK_MKDIR, - TASK_MSGFMT, - TASK_PKG_CONFIG, - TASK_RANLIB, - TASK_RC, - TASK_SHAREDLIB, - TASK_STATICLIB, - TASK_STRIP, - TASK_TOUCH, - TASK_TSTAMP - } TaskType; - - - /** - * - */ - Task(MakeBase &par) : parent(par) - { init(); } - - /** - * - */ - Task(const Task &other) : parent(other.parent) - { init(); assign(other); } - - /** - * - */ - Task &operator=(const Task &other) - { assign(other); return *this; } - - /** - * - */ - virtual ~Task() - { } - - - /** - * - */ - virtual MakeBase &getParent() - { return parent; } - - /** - * - */ - virtual int getType() - { return type; } - - /** - * - */ - virtual void setType(int val) - { type = val; } - - /** - * - */ - virtual String getName() - { return name; } - - /** - * - */ - virtual bool execute() - { return true; } - - /** - * - */ - virtual bool parse(Element *elem) - { return true; } - - /** - * - */ - Task *createTask(Element *elem, int lineNr); - - -protected: - - void init() - { - type = TASK_NONE; - name = "none"; - } - - void assign(const Task &other) - { - type = other.type; - name = other.name; - } - - /** - * Show task status - */ - void taskstatus(const char *fmt, ...) - { - va_list args; - va_start(args,fmt); - fprintf(stdout, " %s : ", name.c_str()); - vfprintf(stdout, fmt, args); - fprintf(stdout, "\n"); - va_end(args) ; - } - - String getAttribute(Element *elem, const String &attrName) - { - String str; - return str; - } - - MakeBase &parent; - - int type; - - String name; -}; - - - -/** - * This task runs the C/C++ compiler. The compiler is invoked - * for all .c or .cpp files which are newer than their correcsponding - * .o files. - */ -class TaskCC : public Task -{ -public: - - TaskCC(MakeBase &par) : Task(par) - { - type = TASK_CC; - name = "cc"; - } - - virtual ~TaskCC() - {} - - virtual bool isExcludedInc(const String &dirname) - { - for (std::size_t i=0 ; i<excludeInc.size() ; i++) - { - String fname = excludeInc[i]; - if (fname == dirname) - return true; - } - return false; - } - - virtual bool execute() - { - //evaluate our parameters - String command = parent.eval(commandOpt, "gcc"); - String ccCommand = parent.eval(ccCommandOpt, "gcc"); - String cxxCommand = parent.eval(cxxCommandOpt, "g++"); - String source = parent.eval(sourceOpt, "."); - String dest = parent.eval(destOpt, "."); - String ccflags = parent.eval(flagsOpt, ""); - String cxxflags = parent.eval(cxxflagsOpt, ""); - String defines = parent.eval(definesOpt, ""); - String includes = parent.eval(includesOpt, ""); - bool continueOnError = parent.evalBool(continueOnErrorOpt, true); - bool refreshCache = parent.evalBool(refreshCacheOpt, false); - - if (!listFiles(parent, fileSet)) - return false; - - FILE *f = NULL; - f = fopen("compile.lst", "w"); - - //refreshCache is probably false here, unless specified otherwise - String fullName = parent.resolve("build.dep"); - if (refreshCache || isNewerThan(parent.getURI().getPath(), fullName)) - { - taskstatus("regenerating C/C++ dependency cache"); - refreshCache = true; - } - - DepTool depTool; - depTool.setSourceDirectory(source); - depTool.setFileList(fileSet.getFiles()); - std::vector<DepRec> deps = - depTool.getDepFile("build.dep", refreshCache); - - String incs; - incs.append("-I"); - incs.append(parent.resolve(".")); - incs.append(" "); - if (includes.size()>0) - { - incs.append(includes); - incs.append(" "); - } - std::set<String> paths; - std::vector<DepRec>::iterator viter; - for (viter=deps.begin() ; viter!=deps.end() ; viter++) - { - DepRec dep = *viter; - if (dep.path.size()>0) - paths.insert(dep.path); - } - if (source.size()>0) - { - incs.append(" -I"); - incs.append(parent.resolve(source)); - incs.append(" "); - } - std::set<String>::iterator setIter; - for (setIter=paths.begin() ; setIter!=paths.end() ; setIter++) - { - String dirName = *setIter; - //check excludeInc to see if we dont want to include this dir - if (isExcludedInc(dirName)) - continue; - incs.append(" -I"); - String dname; - if (source.size()>0) - { - dname.append(source); - dname.append("/"); - } - dname.append(dirName); - incs.append(parent.resolve(dname)); - } - -// First create all directories, fails if done in OpenMP parallel loop below... goes superfast anyway, so don't optimize - for (std::size_t fi = 0; fi < deps.size() ; ++fi) - { - DepRec dep = deps[fi]; - - //## Make paths - String destPath = dest; - if (dep.path.size()>0) - { - destPath.append("/"); - destPath.append(dep.path); - } - //## Make sure destination directory exists - if (!createDirectory(destPath)) - { - taskstatus("problem creating folder: %s", destPath.c_str()); - if (f) { - fclose(f); - } - return false; - } - } - - /** - * Compile each of the C files that need it - */ - bool errorOccurred = false; - -#ifdef _OPENMP - taskstatus("compile with %d threads in parallel", numThreads); -# pragma omp parallel for num_threads(numThreads) -#endif - - for (std::size_t fi = 0; fi < deps.size() ; ++fi) - { - DepRec dep = deps[fi]; - - //## Select command - String sfx = dep.suffix; - String command = ccCommand; - String flags = ccflags; - if (sfx == "cpp" || sfx == "cxx" || sfx == "c++" || - sfx == "cc" || sfx == "CC") - { - command = cxxCommand; - flags += " " + cxxflags; - } - - //## Make paths - String destPath = dest; - String srcPath = source; - if (dep.path.size()>0) - { - destPath.append("/"); - destPath.append(dep.path); - srcPath.append("/"); - srcPath.append(dep.path); - } - - //## Check whether it needs to be done - String destName; - if (destPath.size()>0) - { - destName.append(destPath); - destName.append("/"); - } - destName.append(dep.name); - destName.append(".o"); - String destFullName = parent.resolve(destName); - String srcName; - if (srcPath.size()>0) - { - srcName.append(srcPath); - srcName.append("/"); - } - srcName.append(dep.name); - srcName.append("."); - srcName.append(dep.suffix); - String srcFullName = parent.resolve(srcName); - bool compileMe = false; - //# First we check if the source is newer than the .o - if (isNewerThan(srcFullName, destFullName)) - { -// taskstatus("compile of %s (req. by: %s)", -// destFullName.c_str(), srcFullName.c_str()); - fprintf(stdout, "compile %s\n", srcFullName.c_str()); - compileMe = true; - } - else - { - //# secondly, we check if any of the included dependencies - //# of the .c/.cpp is newer than the .o - for (std::size_t i=0 ; i<dep.files.size() ; i++) - { - String depName; - if (source.size()>0) - { - depName.append(source); - depName.append("/"); - } - depName.append(dep.files[i]); - String depFullName = parent.resolve(depName); - bool depRequires = isNewerThan(depFullName, destFullName); - //trace("%d %s %s\n", depRequires, - // destFullName.c_str(), depFullName.c_str()); - if (depRequires) - { - taskstatus("compile %s (%s modified)", - srcFullName.c_str(), depFullName.c_str()); - compileMe = true; - break; - } - } - } - if (!compileMe) - { - continue; - } - - //## Assemble the command - String cmd = command; - cmd.append(" -c "); - cmd.append(flags); - cmd.append(" "); - cmd.append(defines); - cmd.append(" "); - cmd.append(incs); - cmd.append(" "); - cmd.append(srcFullName); - cmd.append(" -o "); - cmd.append(destFullName); - - //## Execute the command - - String outString, errString; - bool ret = executeCommand(cmd.c_str(), "", outString, errString); - - if (f) - { - fprintf(f, "########################### File : %s\n", - srcFullName.c_str()); - fprintf(f, "#### COMMAND ###\n"); - int col = 0; - for (std::size_t i = 0 ; i < cmd.size() ; i++) - { - char ch = cmd[i]; - if (isspace(ch) && col > 63) - { - fputc('\n', f); - col = 0; - } - else - { - fputc(ch, f); - col++; - } - if (col > 76) - { - fputc('\n', f); - col = 0; - } - } - fprintf(f, "\n"); - fprintf(f, "#### STDOUT ###\n%s\n", outString.c_str()); - fprintf(f, "#### STDERR ###\n%s\n\n", errString.c_str()); - fflush(f); - } - if (!ret) { - error("problem compiling: %s", errString.c_str()); - errorOccurred = true; - } else if (!errString.empty()) { - fprintf(stdout, "STDERR: \n%s\n", errString.c_str()); - } - - - if (errorOccurred && !continueOnError) { -#ifndef _OPENMP // figure out a way to break the loop here with OpenMP - break; -#endif - } - - removeFromStatCache(getNativePath(destFullName)); - } - - if (f) - { - fclose(f); - } - - return !errorOccurred; - } - - - virtual bool parse(Element *elem) - { - String s; - if (!parent.getAttribute(elem, "command", commandOpt)) - return false; - if (commandOpt.size()>0) - { cxxCommandOpt = ccCommandOpt = commandOpt; } - if (!parent.getAttribute(elem, "cc", ccCommandOpt)) - return false; - if (!parent.getAttribute(elem, "cxx", cxxCommandOpt)) - return false; - if (!parent.getAttribute(elem, "destdir", destOpt)) - return false; - if (!parent.getAttribute(elem, "continueOnError", continueOnErrorOpt)) - return false; - if (!parent.getAttribute(elem, "refreshCache", refreshCacheOpt)) - return false; - - std::vector<Element *> children = elem->getChildren(); - for (std::size_t i=0 ; i<children.size() ; i++) - { - Element *child = children[i]; - String tagName = child->getName(); - if (tagName == "flags") - { - if (!parent.getValue(child, flagsOpt)) - return false; - flagsOpt = strip(flagsOpt); - } - else if (tagName == "cxxflags") - { - if (!parent.getValue(child, cxxflagsOpt)) - return false; - cxxflagsOpt = strip(cxxflagsOpt); - } - else if (tagName == "includes") - { - if (!parent.getValue(child, includesOpt)) - return false; - includesOpt = strip(includesOpt); - } - else if (tagName == "defines") - { - if (!parent.getValue(child, definesOpt)) - return false; - definesOpt = strip(definesOpt); - } - else if (tagName == "fileset") - { - if (!parseFileSet(child, parent, fileSet)) - return false; - sourceOpt = fileSet.getDirectory(); - } - else if (tagName == "excludeinc") - { - if (!parseFileList(child, parent, excludeInc)) - return false; - } - } - - return true; - } - -protected: - - String commandOpt; - String ccCommandOpt; - String cxxCommandOpt; - String sourceOpt; - String destOpt; - String flagsOpt; - String cxxflagsOpt; - String definesOpt; - String includesOpt; - String continueOnErrorOpt; - String refreshCacheOpt; - FileSet fileSet; - FileList excludeInc; - -}; - - - -/** - * - */ -class TaskCopy : public Task -{ -public: - - typedef enum - { - CP_NONE, - CP_TOFILE, - CP_TODIR - } CopyType; - - TaskCopy(MakeBase &par) : Task(par) - { - type = TASK_COPY; - name = "copy"; - cptype = CP_NONE; - haveFileSet = false; - } - - virtual ~TaskCopy() - {} - - virtual bool execute() - { - String fileName = parent.eval(fileNameOpt , "."); - String toFileName = parent.eval(toFileNameOpt , "."); - String toDirName = parent.eval(toDirNameOpt , "."); - bool verbose = parent.evalBool(verboseOpt, false); - switch (cptype) - { - case CP_TOFILE: - { - if (fileName.size()>0) - { - taskstatus("%s to %s", - fileName.c_str(), toFileName.c_str()); - String fullSource = parent.resolve(fileName); - String fullDest = parent.resolve(toFileName); - if (verbose) - taskstatus("copy %s to file %s", fullSource.c_str(), - fullDest.c_str()); - if (!isRegularFile(fullSource)) - { - error("copy : file %s does not exist", fullSource.c_str()); - return false; - } - if (!isNewerThan(fullSource, fullDest)) - { - taskstatus("skipped"); - return true; - } - if (!copyFile(fullSource, fullDest)) - return false; - taskstatus("1 file copied"); - } - return true; - } - case CP_TODIR: - { - if (haveFileSet) - { - if (!listFiles(parent, fileSet)) - return false; - String fileSetDir = parent.eval(fileSet.getDirectory(), "."); - - taskstatus("%s to %s", - fileSetDir.c_str(), toDirName.c_str()); - - int nrFiles = 0; - for (std::size_t i=0 ; i<fileSet.size() ; i++) - { - String fileName = fileSet[i]; - - String sourcePath; - if (fileSetDir.size()>0) - { - sourcePath.append(fileSetDir); - sourcePath.append("/"); - } - sourcePath.append(fileName); - String fullSource = parent.resolve(sourcePath); - - //Get the immediate parent directory's base name - String baseFileSetDir = fileSetDir; - std::size_t pos = baseFileSetDir.find_last_of('/'); - if (pos!=baseFileSetDir.npos && - pos < baseFileSetDir.size()-1) - baseFileSetDir = - baseFileSetDir.substr(pos+1, - baseFileSetDir.size()); - //Now make the new path - String destPath; - if (toDirName.size()>0) - { - destPath.append(toDirName); - destPath.append("/"); - } - if (baseFileSetDir.size()>0) - { - destPath.append(baseFileSetDir); - destPath.append("/"); - } - destPath.append(fileName); - String fullDest = parent.resolve(destPath); - //trace("fileName:%s", fileName.c_str()); - if (verbose) - taskstatus("copy %s to new dir : %s", - fullSource.c_str(), fullDest.c_str()); - if (!isNewerThan(fullSource, fullDest)) - { - if (verbose) - taskstatus("copy skipping %s", fullSource.c_str()); - continue; - } - if (!copyFile(fullSource, fullDest)) - return false; - nrFiles++; - } - taskstatus("%d file(s) copied", nrFiles); - } - else //file source - { - //For file->dir we want only the basename of - //the source appended to the dest dir - taskstatus("%s to %s", - fileName.c_str(), toDirName.c_str()); - String baseName = fileName; - std::size_t pos = baseName.find_last_of('/'); - if (pos!=baseName.npos && pos<baseName.size()-1) - baseName = baseName.substr(pos+1, baseName.size()); - String fullSource = parent.resolve(fileName); - String destPath; - if (toDirName.size()>0) - { - destPath.append(toDirName); - destPath.append("/"); - } - destPath.append(baseName); - String fullDest = parent.resolve(destPath); - if (verbose) - taskstatus("file %s to new dir : %s", fullSource.c_str(), - fullDest.c_str()); - if (!isRegularFile(fullSource)) - { - error("copy : file %s does not exist", fullSource.c_str()); - return false; - } - if (!isNewerThan(fullSource, fullDest)) - { - taskstatus("skipped"); - return true; - } - if (!copyFile(fullSource, fullDest)) - return false; - taskstatus("1 file copied"); - } - return true; - } - } - return true; - } - - - virtual bool parse(Element *elem) - { - if (!parent.getAttribute(elem, "file", fileNameOpt)) - return false; - if (!parent.getAttribute(elem, "tofile", toFileNameOpt)) - return false; - if (toFileNameOpt.size() > 0) - cptype = CP_TOFILE; - if (!parent.getAttribute(elem, "todir", toDirNameOpt)) - return false; - if (toDirNameOpt.size() > 0) - cptype = CP_TODIR; - if (!parent.getAttribute(elem, "verbose", verboseOpt)) - return false; - - haveFileSet = false; - - std::vector<Element *> children = elem->getChildren(); - for (std::size_t i=0 ; i<children.size() ; i++) - { - Element *child = children[i]; - String tagName = child->getName(); - if (tagName == "fileset") - { - if (!parseFileSet(child, parent, fileSet)) - { - error("problem getting fileset"); - return false; - } - haveFileSet = true; - } - } - - //Perform validity checks - if (fileNameOpt.size()>0 && fileSet.size()>0) - { - error("<copy> can only have one of : file= and <fileset>"); - return false; - } - if (toFileNameOpt.size()>0 && toDirNameOpt.size()>0) - { - error("<copy> can only have one of : tofile= or todir="); - return false; - } - if (haveFileSet && toDirNameOpt.size()==0) - { - error("a <copy> task with a <fileset> must have : todir="); - return false; - } - if (cptype == CP_TOFILE && fileNameOpt.size()==0) - { - error("<copy> tofile= must be associated with : file="); - return false; - } - if (cptype == CP_TODIR && fileNameOpt.size()==0 && !haveFileSet) - { - error("<copy> todir= must be associated with : file= or <fileset>"); - return false; - } - - return true; - } - -private: - - int cptype; - bool haveFileSet; - - FileSet fileSet; - String fileNameOpt; - String toFileNameOpt; - String toDirNameOpt; - String verboseOpt; -}; - - -/** - * Generate CxxTest files - */ -class TaskCxxTestPart: public Task -{ -public: - - TaskCxxTestPart(MakeBase &par) : Task(par) - { - type = TASK_CXXTEST_PART; - name = "cxxtestpart"; - } - - virtual ~TaskCxxTestPart() - {} - - virtual bool execute() - { - if (!listFiles(parent, fileSet)) - return false; - String fileSetDir = parent.eval(fileSet.getDirectory(), "."); - - String fullDest = parent.resolve(parent.eval(destPathOpt, ".")); - String cmd = parent.eval(commandOpt, "cxxtestgen.py"); - cmd.append(" --part -o "); - cmd.append(fullDest); - - unsigned int newFiles = 0; - for (std::size_t i=0 ; i<fileSet.size() ; i++) - { - String fileName = fileSet[i]; - if (getSuffix(fileName) != "h") - continue; - String sourcePath; - if (fileSetDir.size()>0) - { - sourcePath.append(fileSetDir); - sourcePath.append("/"); - } - sourcePath.append(fileName); - String fullSource = parent.resolve(sourcePath); - - cmd.append(" "); - cmd.append(fullSource); - if (isNewerThan(fullSource, fullDest)) newFiles++; - } - - if (newFiles>0) { - size_t const lastSlash = fullDest.find_last_of('/'); - if (lastSlash != fullDest.npos) { - String directory(fullDest, 0, lastSlash); - if (!createDirectory(directory)) - return false; - } - - String outString, errString; - if (!executeCommand(cmd.c_str(), "", outString, errString)) - { - error("<cxxtestpart> problem: %s", errString.c_str()); - return false; - } - removeFromStatCache(getNativePath(fullDest)); - } - - return true; - } - - virtual bool parse(Element *elem) - { - if (!parent.getAttribute(elem, "command", commandOpt)) - return false; - if (!parent.getAttribute(elem, "out", destPathOpt)) - return false; - - std::vector<Element *> children = elem->getChildren(); - for (std::size_t i=0 ; i<children.size() ; i++) - { - Element *child = children[i]; - String tagName = child->getName(); - if (tagName == "fileset") - { - if (!parseFileSet(child, parent, fileSet)) - return false; - } - } - return true; - } - -private: - - String commandOpt; - String destPathOpt; - FileSet fileSet; - -}; - - -/** - * Generate the CxxTest root file - */ -class TaskCxxTestRoot: public Task -{ -public: - - TaskCxxTestRoot(MakeBase &par) : Task(par) - { - type = TASK_CXXTEST_ROOT; - name = "cxxtestroot"; - } - - virtual ~TaskCxxTestRoot() - {} - - virtual bool execute() - { - if (!listFiles(parent, fileSet)) - return false; - String fileSetDir = parent.eval(fileSet.getDirectory(), "."); - unsigned int newFiles = 0; - - String fullDest = parent.resolve(parent.eval(destPathOpt, ".")); - String cmd = parent.eval(commandOpt, "cxxtestgen.py"); - cmd.append(" --root -o "); - cmd.append(fullDest); - String templateFile = parent.eval(templateFileOpt, ""); - if (templateFile.size()>0) { - String fullTemplate = parent.resolve(templateFile); - cmd.append(" --template="); - cmd.append(fullTemplate); - if (isNewerThan(fullTemplate, fullDest)) newFiles++; - } - - for (std::size_t i=0 ; i<fileSet.size() ; i++) - { - String fileName = fileSet[i]; - if (getSuffix(fileName) != "h") - continue; - String sourcePath; - if (fileSetDir.size()>0) - { - sourcePath.append(fileSetDir); - sourcePath.append("/"); - } - sourcePath.append(fileName); - String fullSource = parent.resolve(sourcePath); - - cmd.append(" "); - cmd.append(fullSource); - if (isNewerThan(fullSource, fullDest)) newFiles++; - } - - if (newFiles>0) { - size_t const lastSlash = fullDest.find_last_of('/'); - if (lastSlash != fullDest.npos) { - String directory(fullDest, 0, lastSlash); - if (!createDirectory(directory)) - return false; - } - - String outString, errString; - if (!executeCommand(cmd.c_str(), "", outString, errString)) - { - error("<cxxtestroot> problem: %s", errString.c_str()); - return false; - } - removeFromStatCache(getNativePath(fullDest)); - } - - return true; - } - - virtual bool parse(Element *elem) - { - if (!parent.getAttribute(elem, "command", commandOpt)) - return false; - if (!parent.getAttribute(elem, "template", templateFileOpt)) - return false; - if (!parent.getAttribute(elem, "out", destPathOpt)) - return false; - - std::vector<Element *> children = elem->getChildren(); - for (std::size_t i=0 ; i<children.size() ; i++) - { - Element *child = children[i]; - String tagName = child->getName(); - if (tagName == "fileset") - { - if (!parseFileSet(child, parent, fileSet)) - return false; - } - } - return true; - } - -private: - - String commandOpt; - String templateFileOpt; - String destPathOpt; - FileSet fileSet; - -}; - - -/** - * Execute the CxxTest test executable - */ -class TaskCxxTestRun: public Task -{ -public: - - TaskCxxTestRun(MakeBase &par) : Task(par) - { - type = TASK_CXXTEST_RUN; - name = "cxxtestrun"; - } - - virtual ~TaskCxxTestRun() - {} - - virtual bool execute() - { - unsigned int newFiles = 0; - - String workingDir = parent.resolve(parent.eval(workingDirOpt, "inkscape")); - String rawCmd = parent.eval(commandOpt, "build/cxxtests"); - - String cmdExe; - if (fileExists(rawCmd)) { - cmdExe = rawCmd; - } else if (fileExists(rawCmd + ".exe")) { - cmdExe = rawCmd + ".exe"; - } else { - error("<cxxtestrun> problem: cxxtests executable not found! (command=\"%s\")", rawCmd.c_str()); - } - // Note that the log file names are based on the exact name used to call cxxtests (it uses argv[0] + ".log"/".xml") - if (isNewerThan(cmdExe, rawCmd + ".log") || isNewerThan(cmdExe, rawCmd + ".xml")) newFiles++; - - // Prepend the necessary ../'s - String cmd = rawCmd; - unsigned int workingDirDepth = 0; - bool wasSlash = true; - for(size_t i=0; i<workingDir.size(); i++) { - // This assumes no . and .. parts - if (wasSlash && workingDir[i]!='/') workingDirDepth++; - wasSlash = workingDir[i] == '/'; - } - for(size_t i=0; i<workingDirDepth; i++) { - cmd = "../" + cmd; - } - - if (newFiles>0) { - char olddir[1024]; - if (workingDir.size()>0) { - // TODO: Double-check usage of getcwd and handle chdir errors - getcwd(olddir, 1024); - chdir(workingDir.c_str()); - } - - String outString; - if (!executeCommand(cmd.c_str(), "", outString, outString)) - { - error("<cxxtestrun> problem: %s", outString.c_str()); - return false; - } - - if (workingDir.size()>0) { - // TODO: Handle errors? - chdir(olddir); - } - - removeFromStatCache(getNativePath(cmd + ".log")); - removeFromStatCache(getNativePath(cmd + ".xml")); - } - - return true; - } - - virtual bool parse(Element *elem) - { - if (!parent.getAttribute(elem, "command", commandOpt)) - return false; - if (!parent.getAttribute(elem, "workingdir", workingDirOpt)) - return false; - return true; - } - -private: - - String commandOpt; - String workingDirOpt; - -}; - - -/** - * - */ -class TaskDelete : public Task -{ -public: - - typedef enum - { - DEL_FILE, - DEL_DIR, - DEL_FILESET - } DeleteType; - - TaskDelete(MakeBase &par) : Task(par) - { - type = TASK_DELETE; - name = "delete"; - delType = DEL_FILE; - } - - virtual ~TaskDelete() - {} - - virtual bool execute() - { - String dirName = parent.eval(dirNameOpt, "."); - String fileName = parent.eval(fileNameOpt, "."); - bool verbose = parent.evalBool(verboseOpt, false); - bool quiet = parent.evalBool(quietOpt, false); - bool failOnError = parent.evalBool(failOnErrorOpt, true); - switch (delType) - { - case DEL_FILE: - { - taskstatus("file: %s", fileName.c_str()); - String fullName = parent.resolve(fileName); - char *fname = (char *)fullName.c_str(); - if (!quiet && verbose) - taskstatus("path: %s", fname); - if (failOnError && !removeFile(fullName)) - { - //error("Could not delete file '%s'", fullName.c_str()); - return false; - } - return true; - } - case DEL_DIR: - { - taskstatus("dir: %s", dirName.c_str()); - String fullDir = parent.resolve(dirName); - if (!quiet && verbose) - taskstatus("path: %s", fullDir.c_str()); - if (failOnError && !removeDirectory(fullDir)) - { - //error("Could not delete directory '%s'", fullDir.c_str()); - return false; - } - return true; - } - } - return true; - } - - virtual bool parse(Element *elem) - { - if (!parent.getAttribute(elem, "file", fileNameOpt)) - return false; - if (fileNameOpt.size() > 0) - delType = DEL_FILE; - if (!parent.getAttribute(elem, "dir", dirNameOpt)) - return false; - if (dirNameOpt.size() > 0) - delType = DEL_DIR; - if (fileNameOpt.size()>0 && dirNameOpt.size()>0) - { - error("<delete> can have one attribute of file= or dir="); - return false; - } - if (fileNameOpt.size()==0 && dirNameOpt.size()==0) - { - error("<delete> must have one attribute of file= or dir="); - return false; - } - if (!parent.getAttribute(elem, "verbose", verboseOpt)) - return false; - if (!parent.getAttribute(elem, "quiet", quietOpt)) - return false; - if (!parent.getAttribute(elem, "failonerror", failOnErrorOpt)) - return false; - return true; - } - -private: - - int delType; - String dirNameOpt; - String fileNameOpt; - String verboseOpt; - String quietOpt; - String failOnErrorOpt; -}; - - -/** - * Send a message to stdout - */ -class TaskEcho : public Task -{ -public: - - TaskEcho(MakeBase &par) : Task(par) - { type = TASK_ECHO; name = "echo"; } - - virtual ~TaskEcho() - {} - - virtual bool execute() - { - //let message have priority over text - String message = parent.eval(messageOpt, ""); - String text = parent.eval(textOpt, ""); - if (message.size() > 0) - { - fprintf(stdout, "%s\n", message.c_str()); - } - else if (text.size() > 0) - { - fprintf(stdout, "%s\n", text.c_str()); - } - return true; - } - - virtual bool parse(Element *elem) - { - if (!parent.getValue(elem, textOpt)) - return false; - textOpt = leftJustify(textOpt); - if (!parent.getAttribute(elem, "message", messageOpt)) - return false; - return true; - } - -private: - - String messageOpt; - String textOpt; -}; - - - -/** - * - */ -class TaskJar : public Task -{ -public: - - TaskJar(MakeBase &par) : Task(par) - { type = TASK_JAR; name = "jar"; } - - virtual ~TaskJar() - {} - - virtual bool execute() - { - String command = parent.eval(commandOpt, "jar"); - String basedir = parent.eval(basedirOpt, "."); - String destfile = parent.eval(destfileOpt, "."); - - String cmd = command; - cmd.append(" -cf "); - cmd.append(destfile); - cmd.append(" -C "); - cmd.append(basedir); - cmd.append(" ."); - - String execCmd = cmd; - - String outString, errString; - bool ret = executeCommand(execCmd.c_str(), "", outString, errString); - if (!ret) - { - error("<jar> command '%s' failed :\n %s", - execCmd.c_str(), errString.c_str()); - return false; - } - removeFromStatCache(getNativePath(destfile)); - return true; - } - - virtual bool parse(Element *elem) - { - if (!parent.getAttribute(elem, "command", commandOpt)) - return false; - if (!parent.getAttribute(elem, "basedir", basedirOpt)) - return false; - if (!parent.getAttribute(elem, "destfile", destfileOpt)) - return false; - if (basedirOpt.size() == 0 || destfileOpt.size() == 0) - { - error("<jar> required both basedir and destfile attributes to be set"); - return false; - } - return true; - } - -private: - - String commandOpt; - String basedirOpt; - String destfileOpt; -}; - - -/** - * - */ -class TaskJavac : public Task -{ -public: - - TaskJavac(MakeBase &par) : Task(par) - { - type = TASK_JAVAC; name = "javac"; - } - - virtual ~TaskJavac() - {} - - virtual bool execute() - { - String command = parent.eval(commandOpt, "javac"); - String srcdir = parent.eval(srcdirOpt, "."); - String destdir = parent.eval(destdirOpt, "."); - String target = parent.eval(targetOpt, ""); - - std::vector<String> fileList; - if (!listFiles(srcdir, "", fileList)) - { - return false; - } - String cmd = command; - cmd.append(" -d "); - cmd.append(destdir); - cmd.append(" -classpath "); - cmd.append(destdir); - cmd.append(" -sourcepath "); - cmd.append(srcdir); - cmd.append(" "); - if (target.size()>0) - { - cmd.append(" -target "); - cmd.append(target); - cmd.append(" "); - } - String fname = "javalist.btool"; - FILE *f = fopen(fname.c_str(), "w"); - int count = 0; - for (std::size_t i=0 ; i<fileList.size() ; i++) - { - String fname = fileList[i]; - String srcName = fname; - if (fname.size()<6) //x.java - continue; - if (fname.compare(fname.size()-5, 5, ".java") != 0) - continue; - String baseName = fname.substr(0, fname.size()-5); - String destName = baseName; - destName.append(".class"); - - String fullSrc = srcdir; - fullSrc.append("/"); - fullSrc.append(fname); - String fullDest = destdir; - fullDest.append("/"); - fullDest.append(destName); - //trace("fullsrc:%s fulldest:%s", fullSrc.c_str(), fullDest.c_str()); - if (!isNewerThan(fullSrc, fullDest)) - continue; - - count++; - fprintf(f, "%s\n", fullSrc.c_str()); - } - fclose(f); - if (!count) - { - taskstatus("nothing to do"); - return true; - } - - taskstatus("compiling %d files", count); - - String execCmd = cmd; - execCmd.append("@"); - execCmd.append(fname); - - String outString, errString; - bool ret = executeCommand(execCmd.c_str(), "", outString, errString); - if (!ret) - { - error("<javac> command '%s' failed :\n %s", - execCmd.c_str(), errString.c_str()); - return false; - } - // TODO: - //removeFromStatCache(getNativePath(........)); - return true; - } - - virtual bool parse(Element *elem) - { - if (!parent.getAttribute(elem, "command", commandOpt)) - return false; - if (!parent.getAttribute(elem, "srcdir", srcdirOpt)) - return false; - if (!parent.getAttribute(elem, "destdir", destdirOpt)) - return false; - if (srcdirOpt.size() == 0 || destdirOpt.size() == 0) - { - error("<javac> required both srcdir and destdir attributes to be set"); - return false; - } - if (!parent.getAttribute(elem, "target", targetOpt)) - return false; - return true; - } - -private: - - String commandOpt; - String srcdirOpt; - String destdirOpt; - String targetOpt; - -}; - - -/** - * - */ -class TaskLink : public Task -{ -public: - - TaskLink(MakeBase &par) : Task(par) - { - type = TASK_LINK; name = "link"; - } - - virtual ~TaskLink() - {} - - virtual void UniqueParams(std::string& source) { - size_t prev = 0; - size_t next = 0; - std::list<std::string> thelist; - std::list<std::string>::iterator it; - std::string tstring=" "; - source +=std::string(" "); // else the last token may be lost - while ((next = source.find_first_of(" ", prev)) != std::string::npos){ - if (next - prev != 0){ - thelist.push_back(source.substr(prev, next - prev)); - } - prev = next + 1; - } - thelist.sort(); - source.clear(); - source +=std::string(" "); - for(it=thelist.begin(); it!=thelist.end();it++){ - if(*it != tstring){ - tstring = *it; - source +=tstring; - source +=std::string(" "); - } - } - } - - virtual bool execute() - { - String command = parent.eval(commandOpt, "g++"); - String fileName = parent.eval(fileNameOpt, ""); - String flags = parent.eval(flagsOpt, ""); - String libs = parent.eval(libsOpt, ""); - bool doStrip = parent.evalBool(doStripOpt, false); - String symFileName = parent.eval(symFileNameOpt, ""); - String stripCommand = parent.eval(stripCommandOpt, "strip"); - String objcopyCommand = parent.eval(objcopyCommandOpt, "objcopy"); - - if (!listFiles(parent, fileSet)) - return false; - String fileSetDir = parent.eval(fileSet.getDirectory(), "."); - //trace("%d files in %s", fileSet.size(), fileSetDir.c_str()); - bool doit = false; - String fullTarget = parent.resolve(fileName); - String cmd = command; - cmd.append(" -o "); - cmd.append(fullTarget); - cmd.append(" "); - cmd.append(flags); - for (std::size_t i=0 ; i<fileSet.size() ; i++) - { - cmd.append(" "); - String obj; - if (fileSetDir.size()>0) - { - obj.append(fileSetDir); - obj.append("/"); - } - obj.append(fileSet[i]); - String fullObj = parent.resolve(obj); - String nativeFullObj = getNativePath(fullObj); - cmd.append(nativeFullObj); - //trace("link: tgt:%s obj:%s", fullTarget.c_str(), - // fullObj.c_str()); - if (isNewerThan(fullObj, fullTarget)) - doit = true; - } - cmd.append(" "); - // trim it down to unique elements, reduce command line size - UniqueParams(libs); - cmd.append(libs); - if (!doit) - { - //trace("link not needed"); - return true; - } - //trace("LINK cmd:%s", cmd.c_str()); - - - String outbuf, errbuf; - // std::cout << "DEBUG command = " << cmd << std::endl; - if (!executeCommand(cmd.c_str(), "", outbuf, errbuf)) - { - error("LINK problem: %s", errbuf.c_str()); - return false; - } - removeFromStatCache(getNativePath(fullTarget)); - - if (symFileName.size()>0) - { - String symFullName = parent.resolve(symFileName); - cmd = objcopyCommand; - cmd.append(" --only-keep-debug "); - cmd.append(getNativePath(fullTarget)); - cmd.append(" "); - cmd.append(getNativePath(symFullName)); - if (!executeCommand(cmd, "", outbuf, errbuf)) - { - error("<strip> symbol file failed : %s", errbuf.c_str()); - return false; - } - removeFromStatCache(getNativePath(symFullName)); - } - - if (doStrip) - { - cmd = stripCommand; - cmd.append(" "); - cmd.append(getNativePath(fullTarget)); - if (!executeCommand(cmd, "", outbuf, errbuf)) - { - error("<strip> failed : %s", errbuf.c_str()); - return false; - } - removeFromStatCache(getNativePath(fullTarget)); - } - - return true; - } - - virtual bool parse(Element *elem) - { - if (!parent.getAttribute(elem, "command", commandOpt)) - return false; - if (!parent.getAttribute(elem, "objcopycommand", objcopyCommandOpt)) - return false; - if (!parent.getAttribute(elem, "stripcommand", stripCommandOpt)) - return false; - if (!parent.getAttribute(elem, "out", fileNameOpt)) - return false; - if (!parent.getAttribute(elem, "strip", doStripOpt)) - return false; - if (!parent.getAttribute(elem, "symfile", symFileNameOpt)) - return false; - - std::vector<Element *> children = elem->getChildren(); - for (std::size_t i=0 ; i<children.size() ; i++) - { - Element *child = children[i]; - String tagName = child->getName(); - if (tagName == "fileset") - { - if (!parseFileSet(child, parent, fileSet)) - return false; - } - else if (tagName == "flags") - { - if (!parent.getValue(child, flagsOpt)) - return false; - flagsOpt = strip(flagsOpt); - } - else if (tagName == "libs") - { - if (!parent.getValue(child, libsOpt)) - return false; - libsOpt = strip(libsOpt); - } - } - return true; - } - -private: - - FileSet fileSet; - - String commandOpt; - String fileNameOpt; - String flagsOpt; - String libsOpt; - String doStripOpt; - String symFileNameOpt; - String stripCommandOpt; - String objcopyCommandOpt; - -}; - - - -/** - * Create a named file - */ -class TaskMakeFile : public Task -{ -public: - - TaskMakeFile(MakeBase &par) : Task(par) - { type = TASK_MAKEFILE; name = "makefile"; } - - virtual ~TaskMakeFile() - {} - - virtual bool execute() - { - String fileName = parent.eval(fileNameOpt, ""); - bool force = parent.evalBool(forceOpt, false); - String text = parent.eval(textOpt, ""); - - taskstatus("%s", fileName.c_str()); - String fullName = parent.resolve(fileName); - if (!force && !isNewerThan(parent.getURI().getPath(), fullName)) - { - taskstatus("skipped"); - return true; - } - String fullNative = getNativePath(fullName); - //trace("fullName:%s", fullName.c_str()); - FILE *f = fopen(fullNative.c_str(), "w"); - if (!f) - { - error("<makefile> could not open %s for writing : %s", - fullName.c_str(), strerror(errno)); - return false; - } - for (std::size_t i=0 ; i<text.size() ; i++) - fputc(text[i], f); - fputc('\n', f); - fclose(f); - removeFromStatCache(fullNative); - return true; - } - - virtual bool parse(Element *elem) - { - if (!parent.getAttribute(elem, "file", fileNameOpt)) - return false; - if (!parent.getAttribute(elem, "force", forceOpt)) - return false; - if (fileNameOpt.size() == 0) - { - error("<makefile> requires 'file=\"filename\"' attribute"); - return false; - } - if (!parent.getValue(elem, textOpt)) - return false; - textOpt = leftJustify(textOpt); - //trace("dirname:%s", dirName.c_str()); - return true; - } - -private: - - String fileNameOpt; - String forceOpt; - String textOpt; -}; - - - -/** - * Create a named directory - */ -class TaskMkDir : public Task -{ -public: - - TaskMkDir(MakeBase &par) : Task(par) - { type = TASK_MKDIR; name = "mkdir"; } - - virtual ~TaskMkDir() - {} - - virtual bool execute() - { - String dirName = parent.eval(dirNameOpt, "."); - - taskstatus("%s", dirName.c_str()); - String fullDir = parent.resolve(dirName); - //trace("fullDir:%s", fullDir.c_str()); - if (!createDirectory(fullDir)) - return false; - return true; - } - - virtual bool parse(Element *elem) - { - if (!parent.getAttribute(elem, "dir", dirNameOpt)) - return false; - if (dirNameOpt.size() == 0) - { - error("<mkdir> requires 'dir=\"dirname\"' attribute"); - return false; - } - return true; - } - -private: - - String dirNameOpt; -}; - - - -/** - * Create a named directory - */ -class TaskMsgFmt: public Task -{ -public: - - TaskMsgFmt(MakeBase &par) : Task(par) - { type = TASK_MSGFMT; name = "msgfmt"; } - - virtual ~TaskMsgFmt() - {} - - virtual bool execute() - { - String command = parent.eval(commandOpt, "msgfmt"); - String toDirName = parent.eval(toDirNameOpt, "."); - String outName = parent.eval(outNameOpt, ""); - bool owndir = parent.evalBool(owndirOpt, false); - - if (!listFiles(parent, fileSet)) - return false; - String fileSetDir = fileSet.getDirectory(); - - //trace("msgfmt: %d", fileSet.size()); - for (std::size_t i=0 ; i<fileSet.size() ; i++) - { - String fileName = fileSet[i]; - if (getSuffix(fileName) != "po") - continue; - String sourcePath; - if (fileSetDir.size()>0) - { - sourcePath.append(fileSetDir); - sourcePath.append("/"); - } - sourcePath.append(fileName); - String fullSource = parent.resolve(sourcePath); - - String destPath; - if (toDirName.size()>0) - { - destPath.append(toDirName); - destPath.append("/"); - } - if (owndir) - { - String subdir = fileName; - std::size_t pos = subdir.find_last_of('.'); - if (pos != subdir.npos) - subdir = subdir.substr(0, pos); - destPath.append(subdir); - destPath.append("/"); - } - //Pick the output file name - if (outName.size() > 0) - { - destPath.append(outName); - } - else - { - destPath.append(fileName); - destPath[destPath.size()-2] = 'm'; - } - - String fullDest = parent.resolve(destPath); - - if (!isNewerThan(fullSource, fullDest)) - { - //trace("skip %s", fullSource.c_str()); - continue; - } - - String cmd = command; - cmd.append(" "); - cmd.append(fullSource); - cmd.append(" -o "); - cmd.append(fullDest); - - int pos = fullDest.find_last_of('/'); - if (pos>0) - { - String fullDestPath = fullDest.substr(0, pos); - if (!createDirectory(fullDestPath)) - return false; - } - - - - String outString, errString; - if (!executeCommand(cmd.c_str(), "", outString, errString)) - { - error("<msgfmt> problem: %s", errString.c_str()); - return false; - } - removeFromStatCache(getNativePath(fullDest)); - } - - return true; - } - - virtual bool parse(Element *elem) - { - if (!parent.getAttribute(elem, "command", commandOpt)) - return false; - if (!parent.getAttribute(elem, "todir", toDirNameOpt)) - return false; - if (!parent.getAttribute(elem, "out", outNameOpt)) - return false; - if (!parent.getAttribute(elem, "owndir", owndirOpt)) - return false; - - std::vector<Element *> children = elem->getChildren(); - for (std::size_t i=0 ; i<children.size() ; i++) - { - Element *child = children[i]; - String tagName = child->getName(); - if (tagName == "fileset") - { - if (!parseFileSet(child, parent, fileSet)) - return false; - } - } - return true; - } - -private: - - FileSet fileSet; - - String commandOpt; - String toDirNameOpt; - String outNameOpt; - String owndirOpt; - -}; - - - -/** - * Perform a Package-Config query similar to pkg-config - */ -class TaskPkgConfig : public Task -{ -public: - - typedef enum - { - PKG_CONFIG_QUERY_CFLAGS, - PKG_CONFIG_QUERY_LIBS, - PKG_CONFIG_QUERY_ALL - } QueryTypes; - - TaskPkgConfig(MakeBase &par) : Task(par) - { - type = TASK_PKG_CONFIG; - name = "pkg-config"; - } - - virtual ~TaskPkgConfig() - {} - - virtual bool execute() - { - String pkgName = parent.eval(pkgNameOpt, ""); - String prefix = parent.eval(prefixOpt, ""); - String propName = parent.eval(propNameOpt, ""); - String pkgConfigPath = parent.eval(pkgConfigPathOpt,""); - String query = parent.eval(queryOpt, "all"); - - String path = parent.resolve(pkgConfigPath); - PkgConfig pkgconfig; - pkgconfig.setPath(path); - pkgconfig.setPrefix(prefix); - if (!pkgconfig.query(pkgName)) - { - error("<pkg-config> query failed for '%s", name.c_str()); - return false; - } - - String val = ""; - if (query == "cflags") - val = pkgconfig.getCflags(); - else if (query == "libs") - val =pkgconfig.getLibs(); - else if (query == "all") - val = pkgconfig.getAll(); - else - { - error("<pkg-config> unhandled query : %s", query.c_str()); - return false; - } - taskstatus("property %s = '%s'", propName.c_str(), val.c_str()); - parent.setProperty(propName, val); - return true; - } - - virtual bool parse(Element *elem) - { - //# NAME - if (!parent.getAttribute(elem, "name", pkgNameOpt)) - return false; - if (pkgNameOpt.size()==0) - { - error("<pkg-config> requires 'name=\"package\"' attribute"); - return false; - } - - //# PROPERTY - if (!parent.getAttribute(elem, "property", propNameOpt)) - return false; - if (propNameOpt.size()==0) - { - error("<pkg-config> requires 'property=\"name\"' attribute"); - return false; - } - //# PATH - if (!parent.getAttribute(elem, "path", pkgConfigPathOpt)) - return false; - //# PREFIX - if (!parent.getAttribute(elem, "prefix", prefixOpt)) - return false; - //# QUERY - if (!parent.getAttribute(elem, "query", queryOpt)) - return false; - - return true; - } - -private: - - String queryOpt; - String pkgNameOpt; - String prefixOpt; - String propNameOpt; - String pkgConfigPathOpt; - -}; - - - - - - -/** - * Process an archive to allow random access - */ -class TaskRanlib : public Task -{ -public: - - TaskRanlib(MakeBase &par) : Task(par) - { type = TASK_RANLIB; name = "ranlib"; } - - virtual ~TaskRanlib() - {} - - virtual bool execute() - { - String fileName = parent.eval(fileNameOpt, ""); - String command = parent.eval(commandOpt, "ranlib"); - - String fullName = parent.resolve(fileName); - //trace("fullDir:%s", fullDir.c_str()); - String cmd = command; - cmd.append(" "); - cmd.append(fullName); - String outbuf, errbuf; - if (!executeCommand(cmd, "", outbuf, errbuf)) - return false; - // TODO: - //removeFromStatCache(getNativePath(fullDest)); - return true; - } - - virtual bool parse(Element *elem) - { - if (!parent.getAttribute(elem, "command", commandOpt)) - return false; - if (!parent.getAttribute(elem, "file", fileNameOpt)) - return false; - if (fileNameOpt.size() == 0) - { - error("<ranlib> requires 'file=\"fileNname\"' attribute"); - return false; - } - return true; - } - -private: - - String fileNameOpt; - String commandOpt; -}; - - - -/** - * Compile a resource file into a binary object - */ -class TaskRC : public Task -{ -public: - - TaskRC(MakeBase &par) : Task(par) - { type = TASK_RC; name = "rc"; } - - virtual ~TaskRC() - {} - - virtual bool execute() - { - String command = parent.eval(commandOpt, "windres"); - String flags = parent.eval(flagsOpt, ""); - String fileName = parent.eval(fileNameOpt, ""); - String outName = parent.eval(outNameOpt, ""); - - String fullFile = parent.resolve(fileName); - String fullOut = parent.resolve(outName); - if (!isNewerThan(fullFile, fullOut)) - return true; - String cmd = command; - cmd.append(" -o "); - cmd.append(fullOut); - cmd.append(" "); - cmd.append(flags); - cmd.append(" "); - cmd.append(fullFile); - - String outString, errString; - if (!executeCommand(cmd.c_str(), "", outString, errString)) - { - error("RC problem: %s", errString.c_str()); - return false; - } - removeFromStatCache(getNativePath(fullOut)); - return true; - } - - virtual bool parse(Element *elem) - { - if (!parent.getAttribute(elem, "command", commandOpt)) - return false; - if (!parent.getAttribute(elem, "file", fileNameOpt)) - return false; - if (!parent.getAttribute(elem, "out", outNameOpt)) - return false; - std::vector<Element *> children = elem->getChildren(); - for (std::size_t i=0 ; i<children.size() ; i++) - { - Element *child = children[i]; - String tagName = child->getName(); - if (tagName == "flags") - { - if (!parent.getValue(child, flagsOpt)) - return false; - } - } - return true; - } - -private: - - String commandOpt; - String flagsOpt; - String fileNameOpt; - String outNameOpt; - -}; - - - -/** - * Collect .o's into a .so or DLL - */ -class TaskSharedLib : public Task -{ -public: - - TaskSharedLib(MakeBase &par) : Task(par) - { type = TASK_SHAREDLIB; name = "dll"; } - - virtual ~TaskSharedLib() - {} - - virtual bool execute() - { - String command = parent.eval(commandOpt, "dllwrap"); - String fileName = parent.eval(fileNameOpt, ""); - String defFileName = parent.eval(defFileNameOpt, ""); - String impFileName = parent.eval(impFileNameOpt, ""); - String libs = parent.eval(libsOpt, ""); - - //trace("###########HERE %d", fileSet.size()); - bool doit = false; - - String fullOut = parent.resolve(fileName); - //trace("ar fullout: %s", fullOut.c_str()); - - if (!listFiles(parent, fileSet)) - return false; - String fileSetDir = parent.eval(fileSet.getDirectory(), "."); - - for (std::size_t i=0 ; i<fileSet.size() ; i++) - { - String fname; - if (fileSetDir.size()>0) - { - fname.append(fileSetDir); - fname.append("/"); - } - fname.append(fileSet[i]); - String fullName = parent.resolve(fname); - //trace("ar : %s/%s", fullOut.c_str(), fullName.c_str()); - if (isNewerThan(fullName, fullOut)) - doit = true; - } - //trace("Needs it:%d", doit); - if (!doit) - { - return true; - } - - String cmd = "dllwrap"; - cmd.append(" -o "); - cmd.append(fullOut); - if (defFileName.size()>0) - { - cmd.append(" --def "); - cmd.append(defFileName); - cmd.append(" "); - } - if (impFileName.size()>0) - { - cmd.append(" --implib "); - cmd.append(impFileName); - cmd.append(" "); - } - for (std::size_t i=0 ; i<fileSet.size() ; i++) - { - String fname; - if (fileSetDir.size()>0) - { - fname.append(fileSetDir); - fname.append("/"); - } - fname.append(fileSet[i]); - String fullName = parent.resolve(fname); - - cmd.append(" "); - cmd.append(fullName); - } - cmd.append(" "); - cmd.append(libs); - - String outString, errString; - if (!executeCommand(cmd.c_str(), "", outString, errString)) - { - error("<sharedlib> problem: %s", errString.c_str()); - return false; - } - removeFromStatCache(getNativePath(fullOut)); - return true; - } - - virtual bool parse(Element *elem) - { - if (!parent.getAttribute(elem, "command", commandOpt)) - return false; - if (!parent.getAttribute(elem, "file", fileNameOpt)) - return false; - if (!parent.getAttribute(elem, "import", impFileNameOpt)) - return false; - if (!parent.getAttribute(elem, "def", defFileNameOpt)) - return false; - - std::vector<Element *> children = elem->getChildren(); - for (std::size_t i=0 ; i<children.size() ; i++) - { - Element *child = children[i]; - String tagName = child->getName(); - if (tagName == "fileset") - { - if (!parseFileSet(child, parent, fileSet)) - return false; - } - else if (tagName == "libs") - { - if (!parent.getValue(child, libsOpt)) - return false; - libsOpt = strip(libsOpt); - } - } - return true; - } - -private: - - FileSet fileSet; - - String commandOpt; - String fileNameOpt; - String defFileNameOpt; - String impFileNameOpt; - String libsOpt; - -}; - - - -/** - * Run the "ar" command to archive .o's into a .a - */ -class TaskStaticLib : public Task -{ -public: - - TaskStaticLib(MakeBase &par) : Task(par) - { type = TASK_STATICLIB; name = "staticlib"; } - - virtual ~TaskStaticLib() - {} - - virtual bool execute() - { - String command = parent.eval(commandOpt, "ar crv"); - String fileName = parent.eval(fileNameOpt, ""); - - bool doit = false; - - String fullOut = parent.resolve(fileName); - //trace("ar fullout: %s", fullOut.c_str()); - - if (!listFiles(parent, fileSet)) - return false; - String fileSetDir = parent.eval(fileSet.getDirectory(), "."); - //trace("###########HERE %s", fileSetDir.c_str()); - - for (std::size_t i=0 ; i<fileSet.size() ; i++) - { - String fname; - if (fileSetDir.size()>0) - { - fname.append(fileSetDir); - fname.append("/"); - } - fname.append(fileSet[i]); - String fullName = parent.resolve(fname); - //trace("ar : %s/%s", fullOut.c_str(), fullName.c_str()); - if (isNewerThan(fullName, fullOut)) - doit = true; - } - //trace("Needs it:%d", doit); - if (!doit) - { - return true; - } - - String cmd = command; - cmd.append(" "); - cmd.append(fullOut); - for (std::size_t i=0 ; i<fileSet.size() ; i++) - { - String fname; - if (fileSetDir.size()>0) - { - fname.append(fileSetDir); - fname.append("/"); - } - fname.append(fileSet[i]); - String fullName = parent.resolve(fname); - - cmd.append(" "); - cmd.append(fullName); - } - - String outString, errString; - if (!executeCommand(cmd.c_str(), "", outString, errString)) - { - error("<staticlib> problem: %s", errString.c_str()); - return false; - } - removeFromStatCache(getNativePath(fullOut)); - return true; - } - - - virtual bool parse(Element *elem) - { - if (!parent.getAttribute(elem, "command", commandOpt)) - return false; - if (!parent.getAttribute(elem, "file", fileNameOpt)) - return false; - - std::vector<Element *> children = elem->getChildren(); - for (std::size_t i=0 ; i<children.size() ; i++) - { - Element *child = children[i]; - String tagName = child->getName(); - if (tagName == "fileset") - { - if (!parseFileSet(child, parent, fileSet)) - return false; - } - } - return true; - } - -private: - - FileSet fileSet; - - String commandOpt; - String fileNameOpt; - -}; - - - - -/** - * Strip an executable - */ -class TaskStrip : public Task -{ -public: - - TaskStrip(MakeBase &par) : Task(par) - { type = TASK_STRIP; name = "strip"; } - - virtual ~TaskStrip() - {} - - virtual bool execute() - { - String command = parent.eval(commandOpt, "strip"); - String fileName = parent.eval(fileNameOpt, ""); - String symFileName = parent.eval(symFileNameOpt, ""); - - String fullName = parent.resolve(fileName); - //trace("fullDir:%s", fullDir.c_str()); - String cmd; - String outbuf, errbuf; - - if (symFileName.size()>0) - { - String symFullName = parent.resolve(symFileName); - cmd = "objcopy --only-keep-debug "; - cmd.append(getNativePath(fullName)); - cmd.append(" "); - cmd.append(getNativePath(symFullName)); - if (!executeCommand(cmd, "", outbuf, errbuf)) - { - error("<strip> symbol file failed : %s", errbuf.c_str()); - return false; - } - } - - cmd = command; - cmd.append(getNativePath(fullName)); - if (!executeCommand(cmd, "", outbuf, errbuf)) - { - error("<strip> failed : %s", errbuf.c_str()); - return false; - } - removeFromStatCache(getNativePath(fullName)); - return true; - } - - virtual bool parse(Element *elem) - { - if (!parent.getAttribute(elem, "command", commandOpt)) - return false; - if (!parent.getAttribute(elem, "file", fileNameOpt)) - return false; - if (!parent.getAttribute(elem, "symfile", symFileNameOpt)) - return false; - if (fileNameOpt.size() == 0) - { - error("<strip> requires 'file=\"fileName\"' attribute"); - return false; - } - return true; - } - -private: - - String commandOpt; - String fileNameOpt; - String symFileNameOpt; -}; - - -/** - * - */ -class TaskTouch : public Task -{ -public: - - TaskTouch(MakeBase &par) : Task(par) - { type = TASK_TOUCH; name = "touch"; } - - virtual ~TaskTouch() - {} - - virtual bool execute() - { - String fileName = parent.eval(fileNameOpt, ""); - - String fullName = parent.resolve(fileName); - String nativeFile = getNativePath(fullName); - if (!isRegularFile(fullName) && !isDirectory(fullName)) - { - // S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH - int ret = creat(nativeFile.c_str(), 0666); - if (ret != 0) - { - error("<touch> could not create '%s' : %s", - nativeFile.c_str(), strerror(ret)); - return false; - } - return true; - } - int ret = utime(nativeFile.c_str(), (struct utimbuf *)0); - if (ret != 0) - { - error("<touch> could not update the modification time for '%s' : %s", - nativeFile.c_str(), strerror(ret)); - return false; - } - removeFromStatCache(nativeFile); - return true; - } - - virtual bool parse(Element *elem) - { - //trace("touch parse"); - if (!parent.getAttribute(elem, "file", fileNameOpt)) - return false; - if (fileNameOpt.size() == 0) - { - error("<touch> requires 'file=\"fileName\"' attribute"); - return false; - } - return true; - } - - String fileNameOpt; -}; - - -/** - * - */ -class TaskTstamp : public Task -{ -public: - - TaskTstamp(MakeBase &par) : Task(par) - { type = TASK_TSTAMP; name = "tstamp"; } - - virtual ~TaskTstamp() - {} - - virtual bool execute() - { - return true; - } - - virtual bool parse(Element *elem) - { - //trace("tstamp parse"); - return true; - } -}; - - - -/** - * - */ -Task *Task::createTask(Element *elem, int lineNr) -{ - String tagName = elem->getName(); - //trace("task:%s", tagName.c_str()); - Task *task = NULL; - if (tagName == "cc") - task = new TaskCC(parent); - else if (tagName == "copy") - task = new TaskCopy(parent); - else if (tagName == "cxxtestpart") - task = new TaskCxxTestPart(parent); - else if (tagName == "cxxtestroot") - task = new TaskCxxTestRoot(parent); - else if (tagName == "cxxtestrun") - task = new TaskCxxTestRun(parent); - else if (tagName == "delete") - task = new TaskDelete(parent); - else if (tagName == "echo") - task = new TaskEcho(parent); - else if (tagName == "jar") - task = new TaskJar(parent); - else if (tagName == "javac") - task = new TaskJavac(parent); - else if (tagName == "link") - task = new TaskLink(parent); - else if (tagName == "makefile") - task = new TaskMakeFile(parent); - else if (tagName == "mkdir") - task = new TaskMkDir(parent); - else if (tagName == "msgfmt") - task = new TaskMsgFmt(parent); - else if (tagName == "pkg-config") - task = new TaskPkgConfig(parent); - else if (tagName == "ranlib") - task = new TaskRanlib(parent); - else if (tagName == "rc") - task = new TaskRC(parent); - else if (tagName == "sharedlib") - task = new TaskSharedLib(parent); - else if (tagName == "staticlib") - task = new TaskStaticLib(parent); - else if (tagName == "strip") - task = new TaskStrip(parent); - else if (tagName == "touch") - task = new TaskTouch(parent); - else if (tagName == "tstamp") - task = new TaskTstamp(parent); - else - { - error("Unknown task '%s'", tagName.c_str()); - return NULL; - } - - task->setLine(lineNr); - - if (!task->parse(elem)) - { - delete task; - return NULL; - } - return task; -} - - - -//######################################################################## -//# T A R G E T -//######################################################################## - -/** - * - */ -class Target : public MakeBase -{ - -public: - - /** - * - */ - Target(Make &par) : parent(par) - { init(); } - - /** - * - */ - Target(const Target &other) : parent(other.parent) - { init(); assign(other); } - - /** - * - */ - Target &operator=(const Target &other) - { init(); assign(other); return *this; } - - /** - * - */ - virtual ~Target() - { cleanup() ; } - - - /** - * - */ - virtual Make &getParent() - { return parent; } - - /** - * - */ - virtual String getName() - { return name; } - - /** - * - */ - virtual void setName(const String &val) - { name = val; } - - /** - * - */ - virtual String getDescription() - { return description; } - - /** - * - */ - virtual void setDescription(const String &val) - { description = val; } - - /** - * - */ - virtual void addDependency(const String &val) - { deps.push_back(val); } - - /** - * - */ - virtual void parseDependencies(const String &val) - { deps = tokenize(val, ", "); } - - /** - * - */ - virtual std::vector<String> &getDependencies() - { return deps; } - - /** - * - */ - virtual String getIf() - { return ifVar; } - - /** - * - */ - virtual void setIf(const String &val) - { ifVar = val; } - - /** - * - */ - virtual String getUnless() - { return unlessVar; } - - /** - * - */ - virtual void setUnless(const String &val) - { unlessVar = val; } - - /** - * - */ - virtual void addTask(Task *val) - { tasks.push_back(val); } - - /** - * - */ - virtual std::vector<Task *> &getTasks() - { return tasks; } - -private: - - void init() - { - } - - void cleanup() - { - tasks.clear(); - } - - void assign(const Target &other) - { - //parent = other.parent; - name = other.name; - description = other.description; - ifVar = other.ifVar; - unlessVar = other.unlessVar; - deps = other.deps; - tasks = other.tasks; - } - - Make &parent; - - String name; - - String description; - - String ifVar; - - String unlessVar; - - std::vector<String> deps; - - std::vector<Task *> tasks; - -}; - - - - - - - - -//######################################################################## -//# M A K E -//######################################################################## - - -/** - * - */ -class Make : public MakeBase -{ - -public: - - /** - * - */ - Make() - { init(); } - - /** - * - */ - Make(const Make &other) - { assign(other); } - - /** - * - */ - Make &operator=(const Make &other) - { assign(other); return *this; } - - /** - * - */ - virtual ~Make() - { cleanup(); } - - /** - * - */ - virtual std::map<String, Target> &getTargets() - { return targets; } - - - /** - * - */ - virtual String version() - { return BUILDTOOL_VERSION; } - - /** - * Overload a <property> - */ - virtual bool specifyProperty(const String &name, - const String &value); - - /** - * - */ - virtual bool run(); - - /** - * - */ - virtual bool run(const String &target); - - - -private: - - /** - * - */ - void init(); - - /** - * - */ - void cleanup(); - - /** - * - */ - void assign(const Make &other); - - /** - * - */ - bool executeTask(Task &task); - - - /** - * - */ - bool executeTarget(Target &target, - std::set<String> &targetsCompleted); - - - /** - * - */ - bool execute(); - - /** - * - */ - bool checkTargetDependencies(Target &prop, - std::vector<String> &depList); - - /** - * - */ - bool parsePropertyFile(const String &fileName, - const String &prefix); - - /** - * - */ - bool parseProperty(Element *elem); - - /** - * - */ - bool parseFile(); - - /** - * - */ - std::vector<String> glob(const String &pattern); - - - //############### - //# Fields - //############### - - String projectName; - - String currentTarget; - - String defaultTarget; - - String specifiedTarget; - - String baseDir; - - String description; - - //std::vector<Property> properties; - - std::map<String, Target> targets; - - std::vector<Task *> allTasks; - - std::map<String, String> specifiedProperties; - -}; - - -//######################################################################## -//# C L A S S M A I N T E N A N C E -//######################################################################## - -/** - * - */ -void Make::init() -{ - uri = "build.xml"; - projectName = ""; - currentTarget = ""; - defaultTarget = ""; - specifiedTarget = ""; - baseDir = ""; - description = ""; - envPrefix = "env."; - pcPrefix = "pc."; - pccPrefix = "pcc."; - pclPrefix = "pcl."; - bzrPrefix = "bzr."; - properties.clear(); - for (std::size_t i = 0 ; i < allTasks.size() ; i++) - delete allTasks[i]; - allTasks.clear(); -} - - - -/** - * - */ -void Make::cleanup() -{ - for (std::size_t i = 0 ; i < allTasks.size() ; i++) - delete allTasks[i]; - allTasks.clear(); -} - - - -/** - * - */ -void Make::assign(const Make &other) -{ - uri = other.uri; - projectName = other.projectName; - currentTarget = other.currentTarget; - defaultTarget = other.defaultTarget; - specifiedTarget = other.specifiedTarget; - baseDir = other.baseDir; - description = other.description; - properties = other.properties; -} - - - -//######################################################################## -//# U T I L I T Y T A S K S -//######################################################################## - -/** - * Perform a file globbing - */ -std::vector<String> Make::glob(const String &pattern) -{ - std::vector<String> res; - return res; -} - - -//######################################################################## -//# P U B L I C A P I -//######################################################################## - - - -/** - * - */ -bool Make::executeTarget(Target &target, - std::set<String> &targetsCompleted) -{ - - String name = target.getName(); - - //First get any dependencies for this target - std::vector<String> deps = target.getDependencies(); - for (std::size_t i=0 ; i<deps.size() ; i++) - { - String dep = deps[i]; - //Did we do it already? Skip - if (targetsCompleted.find(dep)!=targetsCompleted.end()) - continue; - - std::map<String, Target> &tgts = - target.getParent().getTargets(); - std::map<String, Target>::iterator iter = - tgts.find(dep); - if (iter == tgts.end()) - { - error("Target '%s' dependency '%s' not found", - name.c_str(), dep.c_str()); - return false; - } - Target depTarget = iter->second; - if (!executeTarget(depTarget, targetsCompleted)) - { - return false; - } - } - - status("##### Target : %s\n##### %s", name.c_str(), - target.getDescription().c_str()); - - //Now let's do the tasks - std::vector<Task *> &tasks = target.getTasks(); - for (std::size_t i=0 ; i<tasks.size() ; i++) - { - Task *task = tasks[i]; - status("--- %s / %s", name.c_str(), task->getName().c_str()); - if (!task->execute()) - { - return false; - } - } - - targetsCompleted.insert(name); - - return true; -} - - - -/** - * Main execute() method. Start here and work - * up the dependency tree - */ -bool Make::execute() -{ - status("######## EXECUTE"); - - //Determine initial target - if (specifiedTarget.size()>0) - { - currentTarget = specifiedTarget; - } - else if (defaultTarget.size()>0) - { - currentTarget = defaultTarget; - } - else - { - error("execute: no specified or default target requested"); - return false; - } - - std::map<String, Target>::iterator iter = - targets.find(currentTarget); - if (iter == targets.end()) - { - error("Initial target '%s' not found", - currentTarget.c_str()); - return false; - } - - //Now run - Target target = iter->second; - std::set<String> targetsCompleted; - if (!executeTarget(target, targetsCompleted)) - { - return false; - } - - status("######## EXECUTE COMPLETE"); - return true; -} - - - - -/** - * - */ -bool Make::checkTargetDependencies(Target &target, - std::vector<String> &depList) -{ - String tgtName = target.getName().c_str(); - depList.push_back(tgtName); - - std::vector<String> deps = target.getDependencies(); - for (std::size_t i=0 ; i<deps.size() ; i++) - { - String dep = deps[i]; - //First thing entered was the starting Target - if (dep == depList[0]) - { - error("Circular dependency '%s' found at '%s'", - dep.c_str(), tgtName.c_str()); - std::vector<String>::iterator diter; - for (diter=depList.begin() ; diter!=depList.end() ; diter++) - { - error(" %s", diter->c_str()); - } - return false; - } - - std::map<String, Target> &tgts = - target.getParent().getTargets(); - std::map<String, Target>::iterator titer = tgts.find(dep); - if (titer == tgts.end()) - { - error("Target '%s' dependency '%s' not found", - tgtName.c_str(), dep.c_str()); - return false; - } - if (!checkTargetDependencies(titer->second, depList)) - { - return false; - } - } - return true; -} - - - - - -static int getword(int pos, const String &inbuf, String &result) -{ - int p = pos; - int len = (int)inbuf.size(); - String val; - while (p < len) - { - char ch = inbuf[p]; - if (!isalnum(ch) && ch!='.' && ch!='_') - break; - val.push_back(ch); - p++; - } - result = val; - return p; -} - - - - -/** - * - */ -bool Make::parsePropertyFile(const String &fileName, - const String &prefix) -{ - FILE *f = fopen(fileName.c_str(), "r"); - if (!f) - { - error("could not open property file %s", fileName.c_str()); - return false; - } - int linenr = 0; - while (!feof(f)) - { - char buf[256]; - if (!fgets(buf, 255, f)) - break; - linenr++; - String s = buf; - s = trim(s); - int len = s.size(); - if (len == 0) - continue; - if (s[0] == '#') - continue; - String key; - String val; - int p = 0; - int p2 = getword(p, s, key); - if (p2 <= p) - { - error("property file %s, line %d: expected keyword", - fileName.c_str(), linenr); - fclose(f); - return false; - } - if (prefix.size() > 0) - { - key.insert(0, prefix); - } - - //skip whitespace - for (p=p2 ; p<len ; p++) - if (!isspace(s[p])) - break; - - if (p>=len || s[p]!='=') - { - error("property file %s, line %d: expected '='", - fileName.c_str(), linenr); - return false; - } - p++; - - //skip whitespace - for ( ; p<len ; p++) - if (!isspace(s[p])) - break; - - /* This way expects a word after the = - p2 = getword(p, s, val); - if (p2 <= p) - { - error("property file %s, line %d: expected value", - fileName.c_str(), linenr); - return false; - } - */ - // This way gets the rest of the line after the = - if (p>=len) - { - error("property file %s, line %d: expected value", - fileName.c_str(), linenr); - return false; - } - val = s.substr(p); - if (key.size()==0) - continue; - //allow property to be set, even if val="" - - //trace("key:'%s' val:'%s'", key.c_str(), val.c_str()); - //See if we wanted to overload this property - std::map<String, String>::iterator iter = - specifiedProperties.find(key); - if (iter!=specifiedProperties.end()) - { - val = iter->second; - status("overloading property '%s' = '%s'", - key.c_str(), val.c_str()); - } - properties[key] = val; - } - fclose(f); - return true; -} - - - - -/** - * - */ -bool Make::parseProperty(Element *elem) -{ - std::vector<Attribute> &attrs = elem->getAttributes(); - for (std::size_t i=0 ; i<attrs.size() ; i++) - { - String attrName = attrs[i].getName(); - String attrVal = attrs[i].getValue(); - - if (attrName == "name") - { - String val; - if (!getAttribute(elem, "value", val)) - return false; - if (val.size() > 0) - { - properties[attrVal] = val; - } - else - { - if (!getAttribute(elem, "location", val)) - return false; - //let the property exist, even if not defined - properties[attrVal] = val; - } - //See if we wanted to overload this property - std::map<String, String>::iterator iter = - specifiedProperties.find(attrVal); - if (iter != specifiedProperties.end()) - { - val = iter->second; - status("overloading property '%s' = '%s'", - attrVal.c_str(), val.c_str()); - properties[attrVal] = val; - } - } - else if (attrName == "file") - { - String prefix; - if (!getAttribute(elem, "prefix", prefix)) - return false; - if (prefix.size() > 0) - { - if (prefix[prefix.size()-1] != '.') - prefix.push_back('.'); - } - if (!parsePropertyFile(attrName, prefix)) - return false; - } - else if (attrName == "environment") - { - if (attrVal.find('.') != attrVal.npos) - { - error("environment prefix cannot have a '.' in it"); - return false; - } - envPrefix = attrVal; - envPrefix.push_back('.'); - } - else if (attrName == "pkg-config") - { - if (attrVal.find('.') != attrVal.npos) - { - error("pkg-config prefix cannot have a '.' in it"); - return false; - } - pcPrefix = attrVal; - pcPrefix.push_back('.'); - } - else if (attrName == "pkg-config-cflags") - { - if (attrVal.find('.') != attrVal.npos) - { - error("pkg-config-cflags prefix cannot have a '.' in it"); - return false; - } - pccPrefix = attrVal; - pccPrefix.push_back('.'); - } - else if (attrName == "pkg-config-libs") - { - if (attrVal.find('.') != attrVal.npos) - { - error("pkg-config-libs prefix cannot have a '.' in it"); - return false; - } - pclPrefix = attrVal; - pclPrefix.push_back('.'); - } - else if (attrName == "subversion") - { - if (attrVal.find('.') != attrVal.npos) - { - error("bzr prefix cannot have a '.' in it"); - return false; - } - bzrPrefix = attrVal; - bzrPrefix.push_back('.'); - } - } - - return true; -} - - - - -/** - * - */ -bool Make::parseFile() -{ - status("######## PARSE : %s", uri.getPath().c_str()); - - setLine(0); - - Parser parser; - Element *root = parser.parseFile(uri.getNativePath()); - if (!root) - { - error("Could not open %s for reading", - uri.getNativePath().c_str()); - return false; - } - - setLine(root->getLine()); - - if (root->getChildren().size()==0 || - root->getChildren()[0]->getName()!="project") - { - error("Main xml element should be <project>"); - delete root; - return false; - } - - //########## Project attributes - Element *project = root->getChildren()[0]; - String s = project->getAttribute("name"); - if (s.size() > 0) - projectName = s; - s = project->getAttribute("default"); - if (s.size() > 0) - defaultTarget = s; - s = project->getAttribute("basedir"); - if (s.size() > 0) - baseDir = s; - - //######### PARSE MEMBERS - std::vector<Element *> children = project->getChildren(); - for (std::size_t i=0 ; i<children.size() ; i++) - { - Element *elem = children[i]; - setLine(elem->getLine()); - String tagName = elem->getName(); - - //########## DESCRIPTION - if (tagName == "description") - { - description = parser.trim(elem->getValue()); - } - - //######### PROPERTY - else if (tagName == "property") - { - if (!parseProperty(elem)) - return false; - } - - //######### TARGET - else if (tagName == "target") - { - String tname = elem->getAttribute("name"); - String tdesc = elem->getAttribute("description"); - String tdeps = elem->getAttribute("depends"); - String tif = elem->getAttribute("if"); - String tunless = elem->getAttribute("unless"); - Target target(*this); - target.setName(tname); - target.setDescription(tdesc); - target.parseDependencies(tdeps); - target.setIf(tif); - target.setUnless(tunless); - std::vector<Element *> telems = elem->getChildren(); - for (std::size_t i=0 ; i<telems.size() ; i++) - { - Element *telem = telems[i]; - Task breeder(*this); - Task *task = breeder.createTask(telem, telem->getLine()); - if (!task) - return false; - allTasks.push_back(task); - target.addTask(task); - } - - //Check name - if (tname.size() == 0) - { - error("no name for target"); - return false; - } - //Check for duplicate name - if (targets.find(tname) != targets.end()) - { - error("target '%s' already defined", tname.c_str()); - return false; - } - //more work than targets[tname]=target, but avoids default allocator - auto pair = std::make_pair(tname, target); - targets.insert(pair); - } - //######### none of the above - else - { - error("unknown toplevel tag: <%s>", tagName.c_str()); - return false; - } - - } - - std::map<String, Target>::iterator iter; - for (iter = targets.begin() ; iter!= targets.end() ; iter++) - { - Target tgt = iter->second; - std::vector<String> depList; - if (!checkTargetDependencies(tgt, depList)) - { - return false; - } - } - - - delete root; - status("######## PARSE COMPLETE"); - return true; -} - - -/** - * Overload a <property> - */ -bool Make::specifyProperty(const String &name, const String &value) -{ - if (specifiedProperties.find(name) != specifiedProperties.end()) - { - error("Property %s already specified", name.c_str()); - return false; - } - specifiedProperties[name] = value; - return true; -} - - - -/** - * - */ -bool Make::run() -{ - if (!parseFile()) - return false; - - if (!execute()) - return false; - - return true; -} - - - - -/** - * Get a formatted MM:SS.sss time elapsed string - */ -static String -timeDiffString(struct timeval &x, struct timeval &y) -{ - long microsX = x.tv_usec; - long secondsX = x.tv_sec; - long microsY = y.tv_usec; - long secondsY = y.tv_sec; - if (microsX < microsY) - { - microsX += 1000000; - secondsX -= 1; - } - - int seconds = (int)(secondsX - secondsY); - int millis = (int)((microsX - microsY)/1000); - - int minutes = seconds/60; - seconds -= minutes*60; - char buf[80]; - snprintf(buf, 79, "%dm %d.%03ds", minutes, seconds, millis); - String ret = buf; - return ret; - -} - -/** - * - */ -bool Make::run(const String &target) -{ - status("####################################################"); - status("# %s", version().c_str()); - status("####################################################"); - struct timeval timeStart, timeEnd; - ::gettimeofday(&timeStart, NULL); - specifiedTarget = target; - if (!run()) - return false; - ::gettimeofday(&timeEnd, NULL); - String timeStr = timeDiffString(timeEnd, timeStart); - status("####################################################"); - status("# BuildTool Completed : %s", timeStr.c_str()); - status("####################################################"); - return true; -} - - - - - - - -}// namespace buildtool -//######################################################################## -//# M A I N -//######################################################################## - -typedef buildtool::String String; - -/** - * Format an error message in printf() style - */ -static void error(const char *fmt, ...) -{ - va_list ap; - va_start(ap, fmt); - fprintf(stderr, "BuildTool error: "); - vfprintf(stderr, fmt, ap); - fprintf(stderr, "\n"); - va_end(ap); -} - - -static bool parseProperty(const String &s, String &name, String &val) -{ - int len = s.size(); - int i; - for (i=0 ; i<len ; i++) - { - char ch = s[i]; - if (ch == '=') - break; - name.push_back(ch); - } - if (i>=len || s[i]!='=') - { - error("property requires -Dname=value"); - return false; - } - i++; - for ( ; i<len ; i++) - { - char ch = s[i]; - val.push_back(ch); - } - return true; -} - - -/** - * Compare a buffer with a key, for the length of the key - */ -static bool sequ(const String &buf, const char *key) -{ - int len = buf.size(); - for (int i=0 ; key[i] && i<len ; i++) - { - if (key[i] != buf[i]) - return false; - } - return true; -} - -static void usage(int argc, char **argv) -{ - printf("usage:\n"); - printf(" %s [options] [target]\n", argv[0]); - printf("Options:\n"); - printf(" -help, -h print this message\n"); - printf(" -version print the version information and exit\n"); - printf(" -file <file> use given buildfile\n"); - printf(" -f <file> ''\n"); - printf(" -D<property>=<value> use value for given property\n"); - printf(" -j [N] build using N threads or infinite number of threads if no argument\n"); -} - - - - -/** - * Parse the command-line args, get our options, - * and run this thing - */ -static bool parseOptions(int argc, char **argv) -{ - if (argc < 1) - { - error("Cannot parse arguments"); - return false; - } - - buildtool::Make make; - - String target; - - //char *progName = argv[0]; - for (int i=1 ; i<argc ; i++) - { - String arg = argv[i]; - if (arg.size()>1 && arg[0]=='-') - { - if (arg == "-h" || arg == "-help") - { - usage(argc,argv); - return true; - } - else if (arg == "-version") - { - printf("%s", make.version().c_str()); - return true; - } - else if (arg == "-f" || arg == "-file") - { - if (i>=argc-1) - { - usage(argc, argv); - return false; - } - i++; //eat option - make.setURI(argv[i]); - } - else if (arg == "-j") - { - if (i>=argc-1) { // if -j is given as last argument - make.setNumThreads(20); // default to some high value - } else { - i++; //eat option - if (argv[i] && (*argv[i] == '-')) { // if -j is followed by another '-...' option - make.setNumThreads(20); // default to some high value - } else { - make.setNumThreads(atoi(argv[i])); - } - } - } - else if (arg.size()>2 && sequ(arg, "-D")) - { - String s = arg.substr(2, arg.size()); - String name, value; - if (!parseProperty(s, name, value)) - { - usage(argc, argv); - return false; - } - if (!make.specifyProperty(name, value)) - return false; - } - else - { - error("Unknown option:%s", arg.c_str()); - return false; - } - } - else - { - if (target.size()>0) - { - error("only one initial target"); - usage(argc, argv); - return false; - } - target = arg; - } - } - - //We have the options. Now execute them - if (!make.run(target)) - return false; - - return true; -} - - - - -/* -static bool runMake() -{ - buildtool::Make make; - if (!make.run()) - return false; - return true; -} - - -static bool pkgConfigTest() -{ - buildtool::PkgConfig pkgConfig; - if (!pkgConfig.readFile("gtk+-2.0.pc")) - return false; - return true; -} - - - -static bool depTest() -{ - buildtool::DepTool deptool; - deptool.setSourceDirectory("/dev/ink/inkscape/src"); - if (!deptool.generateDependencies("build.dep")) - return false; - std::vector<buildtool::FileRec> res = - deptool.loadDepFile("build.dep"); - if (res.size() == 0) - return false; - return true; -} - -static bool popenTest() -{ - buildtool::Make make; - buildtool::String out, err; - bool ret = make.executeCommand("gcc xx.cpp", "", out, err); - printf("Popen test:%d '%s' '%s'\n", ret, out.c_str(), err.c_str()); - return true; -} - - -static bool propFileTest() -{ - buildtool::Make make; - make.parsePropertyFile("test.prop", "test."); - return true; -} -*/ - -int main(int argc, char **argv) -{ - - if (!parseOptions(argc, argv)) - return 1; - /* - if (!popenTest()) - return 1; - - if (!depTest()) - return 1; - if (!propFileTest()) - return 1; - if (runMake()) - return 1; - */ - return 0; -} - - -//######################################################################## -//# E N D -//######################################################################## - - diff --git a/configure.ac b/configure.ac deleted file mode 100644 index e57f63885..000000000 --- a/configure.ac +++ /dev/null @@ -1,1057 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. - -AC_PREREQ([2.64]) - -# Always use 0.xx+devel instead of 0.xxdevel for the version, e.g. 0.46+devel. -# Rationale: (i) placate simple version comparison software such as -# `dpkg --compare-versions'. (ii) We don't always know what the next -# version is going to be called until about the time we release it -# (whereas we always know what the previous version was called). -# -# Pre-releases are named "M.NNpreX" where X starts at 0 for the first alpha. -AC_INIT([inkscape], [0.92pre1], - [http://bugs.launchpad.net/inkscape/+filebug], - [inkscape], - [http://inkscape.org/]) - -AC_CONFIG_HEADERS([config.h]) -AC_CONFIG_SRCDIR([src/main.cpp]) -AC_CONFIG_MACRO_DIR([m4]) -AC_CONFIG_AUX_DIR([build-aux]) -AC_CANONICAL_HOST - -# We need version 1.9 of Automake or higher since we no longer distribute the -# obsolete mkinstalldirs script -AM_INIT_AUTOMAKE([-Wall dist-zip dist-bzip2 tar-pax 1.9]) - -m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) dnl Workaround for Automake 1.12 - -AC_ARG_ENABLE([lsb], AS_HELP_STRING([--enable-lsb], [LSB-compatible build configuration]), [ - prefix=/opt/inkscape - PATH="/opt/lsb/bin:$PATH" - CC=lsbcc - CXX=lsbc++ - export CC CXX -]) - -AC_LANG(C++) -AC_PROG_CXX -AC_PROG_CC -AM_PROG_AS -AX_CXX_COMPILE_STDCXX_11([], [mandatory]) - -# Initialize libtool -LT_PREREQ([2.2]) -LT_INIT -AC_HEADER_STDC -INK_BZR_SNAPSHOT_BUILD - -dnl If automake 1.11 shave the output to look nice -m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) - -dnl ********************************************************* -dnl Configure a strict set of build rules to prevent usage of -dnl deprecated features in external libraries and code that -dnl triggers compiler warnings. -dnl ********************************************************* -AC_ARG_ENABLE(strict-build, - [AS_HELP_STRING([--enable-strict-build], [Enable strict build configuration [[default=yes]]. Usage of most deprecated symbols is forbidden by default. Set the argument to "high" to introduce very strict checking that will cause the build to fail on many systems.])], - [enable_strict_build=$enableval], - [enable_strict_build=yes]) - -if test "x$enable_strict_build" = "xno"; then - AC_MSG_WARN([Strict build options disabled]) -elif test "x$enable_strict_build" = "xhigh"; then - AC_MSG_WARN([Strictest build options enabled. This will cause build failure on most systems]) -else - AC_MSG_RESULT([Strict build options enabled]) -fi - -dnl These next few lines are needed only while libcroco is in our source tree. -AM_PROG_CC_C_O -if test "$GCC" = "yes"; then - # Enable some warnings from gcc. - AC_LANG_PUSH(C) - - #### - # Generic cpp flags... - - # What is just plain "-W" ? - # Fortify source requires -O2 or higher, which is handled with newer autoconf - CPPFLAGS="-W -D_FORTIFY_SOURCE=2 $CPPFLAGS" - # Enable format and format security warnings - CPPFLAGS="-Wformat -Wformat-security $CPPFLAGS" - # Enable all default warnings - CPPFLAGS="-Wall $CPPFLAGS" - - # Permit only top-level Glib headers to be used. - # - # TODO: This is already used in Glib >= 2.32 so this flag can be - # dropped when all targeted distros use higher Glib versions. - CPPFLAGS="-DG_DISABLE_SINGLE_INCLUDES $CPPFLAGS" - - # Ensure that private GTK+ fields are not accessible. This strictly - # enforced in Gtk+ 3, so it is important to check this in Gtk+ 2 builds - CPPFLAGS="-DGSEAL_ENABLE $CPPFLAGS" - - # Unfortunately, we cannot (yet) build with -Werror, so we have to manually - # change a ton of warnings into errors. - # After some more work on fixing warning-inducing code, we can change this set into - # it's complement and use -Wno-error=... - # Test for -Werror=... (introduced some time post-4.0) - AC_MSG_CHECKING([compiler support for -Werror=...]) - ink_svd_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="-Werror=format-security -Wswitch -Werror=return-type $CPPFLAGS" - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [ink_opt_ok=yes], [ink_opt_ok=no]) - AC_MSG_RESULT([$ink_opt_ok]) - if test "x$ink_opt_ok" != "xyes"; then - CPPFLAGS="$ink_svd_CPPFLAGS" - fi - - # Uncomment for SVG2 stuff - CPPFLAGS="-DWITH_MESH -DWITH_CSSBLEND -DWITH_CSSCOMPOSITE -DWITH_SVG2 $CPPFLAGS" - - # Uncomment for LPE Tool and All LPEs - CPPFLAGS="-DWITH_LPETOOL -DLPE_ENABLE_TEST_EFFECTS $CPPFLAGS" - - #### - # C-specific flags... - - # -Wno-pointer-sign is probably new in gcc 4.0; certainly it isn't accepted - # by gcc 2.95. - AC_MSG_CHECKING([compiler support for -Wno-pointer-sign]) - ink_svd_CFLAGS="$CFLAGS" - CFLAGS="-Wno-pointer-sign $CFLAGS" - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [ink_opt_ok=yes], [ink_opt_ok=no]) - AC_MSG_RESULT([$ink_opt_ok]) - if test "x$ink_opt_ok" != "xyes"; then - CFLAGS="$ink_svd_CFLAGS" - fi - - - # This Automake variable is only used to suppress warnings in our internal - # fork of GDL. Once we get rid of our GDL fork, we can delete this test - AC_MSG_CHECKING([compiler support for -Wno-unused-but-set-variable]) - ink_svd_CFLAGS="$CFLAGS" - CFLAGS="-Wno-unused-but-set-variable $CFLAGS" - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [ink_opt_ok=yes], [ink_opt_ok=no]) - AC_MSG_RESULT([$ink_opt_ok]) - CFLAGS="$ink_svd_CFLAGS" - AM_CONDITIONAL(CC_WNO_UNUSED_BUT_SET_VARIABLE_SUPPORTED, test "$ink_opt_ok" = "yes") - - - #### - # Linker flags... - - # Have linker produce read-only relocations, if it knows how - AC_MSG_CHECKING([linker tolerates -z relro]) - ink_svd_LDFLAGS="$LDFLAGS" - LDFLAGS="-Wl,-z,relro $LDFLAGS" - AC_LINK_IFELSE([AC_LANG_PROGRAM([])], [ink_opt_ok=yes], [ink_opt_ok=no]) - AC_MSG_RESULT([$ink_opt_ok]) - if test "x$ink_opt_ok" != "xyes"; then - LDFLAGS="$ink_svd_LDFLAGS" - fi - - AC_LANG_POP - - # C++-specific flags are defined further below. Look for CXXFLAGS... -fi - -# Test whether GCC emits a spurious warning when using boost::optional -# If yes, turn off strict aliasing warnings to reduce noise -# and allow the legitimate warnings to stand out -AC_MSG_CHECKING([for overzealous strict aliasing warnings]) -ignore_strict_aliasing=no -CXXFLAGS_SAVE=$CXXFLAGS -CXXFLAGS="$CXXFLAGS -Werror=strict-aliasing" -AC_COMPILE_IFELSE([AC_LANG_SOURCE([ -#include <boost/optional.hpp> -boost::optional<int> x; -int func() { - return *x; -} -])], [ignore_strict_aliasing=no], [ignore_strict_aliasing=yes]) -AC_MSG_RESULT($ignore_strict_aliasing) -CXXFLAGS=$CXXFLAGS_SAVE -if test "x$ignore_strict_aliasing" = "xyes"; then - CXXFLAGS="$CXXFLAGS -Wno-strict-aliasing" -fi - -dnl ****************************** -dnl Gettext stuff -dnl ****************************** -IT_PROG_INTLTOOL([0.40.0]) - -AM_GNU_GETTEXT_VERSION([0.17]) -AM_GNU_GETTEXT([external]) - -GETTEXT_PACKAGE="AC_PACKAGE_NAME" -AC_SUBST(GETTEXT_PACKAGE) -AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Translation domain used]) - -AC_PATH_PROG(PKG_CONFIG, pkg-config, no) -if test "x$PKG_CONFIG" = "xno"; then - AC_MSG_ERROR(You have to install pkg-config to compile inkscape.) -fi - -dnl Find msgfmt. Without this, po/Makefile fails to set MSGFMT on some platforms. -AC_PATH_PROG(MSGFMT, msgfmt, msgfmt) -AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) - -dnl ****************************** -dnl Check for OpenMP -dnl ****************************** -AC_OPENMP -if test "x$ac_cv_prog_cxx_openmp" != "xunsupported"; then - openmp_ok=yes - dnl We have it, now set up the flags - CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS" - AC_DEFINE(HAVE_OPENMP, 1, [Use OpenMP]) -fi - -dnl ******************** -dnl Check for libpotrace -dnl ******************** -AC_CHECK_LIB(potrace, potrace_trace, [AC_CHECK_HEADER(potracelib.h, potrace_ok=yes, potrace_ok=no)], potrace_ok=no) -if test "x$potrace_ok" = "xyes"; then - LIBS="-lpotrace $LIBS" - AC_DEFINE(HAVE_POTRACE, 1, [Use Potrace]) -fi - -AM_CONDITIONAL(HAVE_POTRACE, test "x$potrace_ok" = "xyes") - -dnl ****************************** -dnl Check for libexif -dnl ****************************** -PKG_CHECK_MODULES(EXIF, libexif, exif_ok=yes, exif_ok=no) -if test "x$exif_ok" = "xyes"; then - AC_DEFINE(HAVE_EXIF, 1, [Use libexif]) -fi -AC_SUBST(EXIF_LIBS) -AC_SUBST(EXIF_CFLAGS) - -dnl ****************************** -dnl Check for libjpeg -dnl ****************************** -AC_CHECK_LIB(jpeg, jpeg_CreateDecompress, [AC_CHECK_HEADER(jpeglib.h, jpeg_ok=yes, jpeg_ok=no)], jpeg_ok=no) -if test "x$jpeg_ok" = "xyes"; then - LIBS="-ljpeg $LIBS" - AC_DEFINE(HAVE_JPEG, 1, [Use libjpeg]) -fi - -dnl This check is to get a FIONREAD definition on Solaris 8 -AC_CHECK_HEADERS([sys/filio.h]) - - -AC_CHECK_HEADERS([malloc.h]) -AC_CHECK_FUNCS([mallinfo], [ - AC_CHECK_MEMBERS([struct mallinfo.usmblks, - struct mallinfo.fsmblks, - struct mallinfo.uordblks, - struct mallinfo.fordblks, - struct mallinfo.hblkhd],,, - [#include <malloc.h>]) -]) - -AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, no) -if test "x$FREETYPE_CONFIG" = "xno"; then - AC_MSG_ERROR([Cannot find freetype-config]) -fi -FREETYPE_CFLAGS=`$FREETYPE_CONFIG --cflags` -FREETYPE_LIBS=`$FREETYPE_CONFIG --libs` -AC_SUBST(FREETYPE_CFLAGS) -AC_SUBST(FREETYPE_LIBS) - -dnl ****************************** -dnl Win32 -dnl ****************************** -AC_MSG_CHECKING([for Win32 platform]) -case "$host" in - *-*-mingw*) - platform_win32=yes - WIN32_CFLAGS="-mms-bitfields -DLIBXML_STATIC" - ;; - *) - platform_win32=no - ;; -esac -AC_MSG_RESULT([$platform_win32]) -AM_CONDITIONAL(PLATFORM_WIN32, test "$platform_win32" = "yes") -AC_SUBST(WIN32_CFLAGS) - -dnl TODO - switch to a linker/libtool/feature check, not OS check: -dnl ****************************** -dnl MacOS X -dnl ****************************** -AC_MSG_CHECKING([for OSX platform]) -if test "x$build_vendor" = "xapple" ; then - platform_osx=yes -else - platform_osx=no -fi -AC_MSG_RESULT([$platform_osx]) - -AC_MSG_CHECKING([for Solaris platform]) -case "$host" in - *-solaris2.*) - platform_solaris=yes - solaris_version=`echo $host|sed -e 's/^.*-solaris2\.//' -e s'/\..*$//'` - CFLAGS="$CFLAGS -DSOLARIS=$solaris_version" - CXXFLAGS="$CXXFLAGS -DSOLARIS=$solaris_version" - ;; - *) - platform_solaris=no - ;; -esac -AC_MSG_RESULT([$platform_solaris]) -AM_CONDITIONAL(PLATFORM_SOLARIS, test "$platform_solaris" = "yes") - -dnl ****************************** -dnl gnome vfs checking -dnl ****************************** - -AC_ARG_WITH(gnome-vfs, - AS_HELP_STRING([--with-gnome-vfs],[use gnome vfs for loading files]), - [with_gnome_vfs=$withval], [with_gnome_vfs=auto]) - -if test "x$with_gnome_vfs" = "xno"; then - dnl Asked to ignore gnome-vfs - gnome_vfs=no -else - dnl Have to test gnome-vfs presence - PKG_CHECK_MODULES(GNOME_VFS, gnome-vfs-2.0 >= 2.0, gnome_vfs=yes, gnome_vfs=no) - if test "x$gnome_vfs" != "xyes"; then - dnl No gnome-vfs found - if test "x$with_gnome_vfs" = "xyes"; then - dnl Gnome-VFS was explicitly asked for, so stop - AC_MSG_ERROR([--with-gnome-vfs was specified, but appropriate libgnomevfs development packages could not be found]) - else - # gnome-vfs is no, tell us for the log file - AC_MSG_RESULT($gnome_vfs) - fi - fi -fi - -AM_CONDITIONAL(USE_GNOME_VFS, test "x$gnome_vfs" = "xyes") -if test "x$gnome_vfs" = "xyes"; then - AC_DEFINE(WITH_GNOME_VFS, 1, [Use gnome vfs file load functionality]) -fi - -AC_SUBST(GNOME_VFS_CFLAGS) -AC_SUBST(GNOME_VFS_LIBS) - -dnl ****************************** -dnl libinkjar checking -dnl ****************************** - -AC_ARG_WITH(inkjar, - AS_HELP_STRING([--without-inkjar],[disable openoffice files (SVG jars)]),[with_ij=$withval], [with_ij=yes]) - -if test "x$with_ij" = "xyes"; then - AC_DEFINE(WITH_INKJAR, 1, [enable openoffice files (SVG jars)]) - AC_C_BIGENDIAN - AC_CHECK_HEADERS(zlib.h) - ij=yes -else - ij=no -fi -AM_CONDITIONAL(INKJAR, test "$with_ij" = "yes") - -dnl ****************************** -dnl LittleCms checking -dnl ****************************** - -AC_ARG_ENABLE(lcms, - AS_HELP_STRING([--enable-lcms],[enable LittleCms for color management]), - [enable_lcms=$enableval], [enable_lcms=yes]) - -if test "x$enable_lcms" = "xno"; then - # Asked to ignore LittleCms - lcms=no - have_lcms2=no -else - # Have to test LittleCms presence - PKG_CHECK_MODULES(LCMS2, lcms2, have_lcms2="yes", have_lcms2="no") - - if test "x${have_lcms2}" = "xyes"; then - LIBS="$LIBS $LCMS2_LIBS" - AC_DEFINE(HAVE_LIBLCMS2, 1, [define to 1 if you have lcms version 2.x]) - AC_SUBST(LCMS2_CFLAGS) - AC_SUBST(LCMS2_LIBS) - else - PKG_CHECK_MODULES(LCMS, lcms >= 1.13, lcms=yes, lcms=no) - if test "x$lcms" = "xyes"; then - LIBS="$LIBS $LCMS_LIBS" - AC_DEFINE(HAVE_LIBLCMS1, 1, [define to 1 if you have lcms version 1.x]) - AC_SUBST(LCMS_CFLAGS) - AC_SUBST(LCMS_LIBS) - else - # No lcms found. LittleCms was explicitly asked for, so stop - AC_MSG_ERROR([--enable-lcms was specified, but appropriate LittleCms development packages could not be found]) - fi - fi -fi - -dnl ****************************** -dnl Libpoppler checking -dnl ****************************** - -AC_ARG_ENABLE(poppler-cairo, - AS_HELP_STRING([--enable-poppler-cairo],[Enable libpoppler-cairo for rendering PDF preview]), - [enable_poppler_cairo=$enableval], [enable_poppler_cairo=yes]) - -POPPLER_CFLAGS="" -PKG_CHECK_MODULES(POPPLER, poppler >= 0.20.0, poppler=yes, poppler=no) - -if test "x$poppler" = "xyes"; then - dnl Working libpoppler - dnl Have to test libpoppler-glib presence - PKG_CHECK_MODULES(POPPLER_GLIB, poppler-glib >= 0.20.0, poppler_glib=yes, poppler_glib=no) - if test "x$poppler_glib" = "xyes"; then - dnl Working libpoppler-glib found - dnl Check whether the Cairo SVG backend is available - PKG_CHECK_MODULES(CAIRO_SVG, cairo-svg, cairo_svg=yes, cairo_svg=no) - if test "x$cairo_svg" = "xyes"; then - POPPLER_LIBS="$POPPLER_LIBS $POPPLER_GLIB_LIBS " - fi - fi - if test "x$enable_poppler_cairo" = "xyes"; then - dnl Have to test libpoppler-cairo presence for PDF preview - dnl AC_CHECK_HEADER(Magick++.h, magick_ok=yes, magick_ok=no) - PKG_CHECK_MODULES(POPPLER_CAIRO, poppler-cairo >= 0.20.0, poppler_cairo=yes, poppler_cairo=no) - if test "x$poppler_glib" = "xyes" -a "x$poppler_cairo" = "xyes" -a \ - "x$cairo_svg" = "xno" - then - POPPLER_LIBS="$POPPLER_LIBS $POPPLER_CAIRO_LIBS " - fi - fi -fi - -if test "x$poppler" = "xyes"; then - LIBS="$LIBS $POPPLER_LIBS" - AC_DEFINE(HAVE_POPPLER, 1, [Use libpoppler for direct PDF import]) -fi -if test "x$poppler_cairo" = "xyes" -a "x$poppler_glib" = "xyes"; then - AC_DEFINE(HAVE_POPPLER_CAIRO, 1, [Use libpoppler-cairo for rendering PDF preview]) -fi -if test "x$poppler_glib" = "xyes" -a "x$cairo_svg" = "xyes"; then - AC_DEFINE(HAVE_POPPLER_GLIB, 1, [Use libpoppler-glib and Cairo-SVG for PDF import]) -fi -AC_SUBST(POPPLER_CFLAGS) -AC_SUBST(POPPLER_LIBS) - -ink_svd_CPPFLAGS=$CPPFLAGS -ink_svd_LIBS=$LIBS -CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS" -LIBS="$LIBS $POPPLER_LIBS" - -PKG_CHECK_MODULES(POPPLER_EVEN_NEWER_COLOR_SPACE_API, poppler >= 0.26.0, popplernewercolorspaceapi=yes, popplernewercolorspaceapi=no) -if test "x$popplernewercolorspaceapi" = "xyes"; then - AC_DEFINE(POPPLER_EVEN_NEWER_COLOR_SPACE_API, 1, [Use even newer color space API from Poppler >= 0.26.0]) -fi - -PKG_CHECK_MODULES(POPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API, poppler >= 0.29.0, popplernewernewcolorspaceapi=yes, popplernewernewcolorspaceapi=no) -if test "x$popplernewernewcolorspaceapi" = "xyes"; then - AC_DEFINE(POPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API, 1, [Use even newer new color space API from Poppler >= 0.29.0]) -fi - -CPPFLAGS=$ink_svd_CPPFLAGS -LIBS=$ink_svd_LIBS - -dnl ****************************** -dnl Check for libwpg for extension -dnl ****************************** - -AC_ARG_ENABLE(wpg, - AS_HELP_STRING([--disable-wpg], [compile without support for WordPerfect Graphics]), - enable_wpg=$enableval,enable_wpg=yes) - -with_libwpg=no - -if test "x$enable_wpg" = "xyes"; then - dnl ************************************************************** - dnl Try using librevenge framework first. Fall back to old libs - dnl if unavailable. - dnl TODO: Drop subsequent tests once this is widespread in distros - dnl ************************************************************** - PKG_CHECK_MODULES(LIBWPG03, libwpg-0.3 librevenge-0.0 librevenge-stream-0.0, with_libwpg03=yes, with_libwpg03=no) - if test "x$with_libwpg03" = "xyes"; then - AC_DEFINE(WITH_LIBWPG03,1,[Build using libwpg 0.3.x]) - with_libwpg=yes - AC_SUBST(LIBWPG_LIBS, $LIBWPG03_LIBS) - AC_SUBST(LIBWPG_CFLAGS, $LIBWPG03_CFLAGS) - else - PKG_CHECK_MODULES(LIBWPG02, libwpg-0.2 libwpd-0.9 libwpd-stream-0.9, with_libwpg02=yes, with_libwpg02=no) - if test "x$with_libwpg02" = "xyes"; then - AC_DEFINE(WITH_LIBWPG02,1,[Build using libwpg 0.2.x]) - with_libwpg=yes - AC_SUBST(LIBWPG_LIBS, $LIBWPG02_LIBS) - AC_SUBST(LIBWPG_CFLAGS, $LIBWPG02_CFLAGS) - fi - fi - - if test "x$with_libwpg" = "xyes"; then - AC_DEFINE(WITH_LIBWPG,1,[Build in libwpg]) - fi -fi -AM_CONDITIONAL(WITH_LIBWPG03, test "x$with_libwpg03" = "xyes") -AM_CONDITIONAL(WITH_LIBWPG02, test "x$with_libwpg02" = "xyes") -AM_CONDITIONAL(WITH_LIBWPG, test "x$with_libwpg" = "xyes") - -dnl ******************************** -dnl Check for libvisio for extension -dnl ******************************** - -AC_ARG_ENABLE(visio, - AS_HELP_STRING([--disable-visio], [compile without support for Microsoft Visio Diagrams]), - enable_visio=$enableval,enable_visio=yes) - -with_libvisio=no - -if test "x$enable_visio" = "xyes"; then - dnl ************************************************************** - dnl Try using librevenge framework first. Fall back to old libs - dnl if unavailable. - dnl TODO: Drop subsequent tests once this is widespread in distros - dnl ************************************************************** - PKG_CHECK_MODULES(LIBVISIO01, libvisio-0.1 librevenge-0.0 librevenge-stream-0.0, with_libvisio01=yes, with_libvisio01=no) - if test "x$with_libvisio01" = "xyes"; then - AC_DEFINE(WITH_LIBVISIO01,1,[Build using libvisio 0.1.x]) - with_libvisio=yes - AC_SUBST(LIBVISIO_LIBS, $LIBVISIO01_LIBS) - AC_SUBST(LIBVISIO_CFLAGS, $LIBVISIO01_CFLAGS) - else - PKG_CHECK_MODULES(LIBVISIO00, libvisio-0.0 >= 0.0.20 libwpd-0.9 libwpd-stream-0.9 libwpg-0.2, with_libvisio00=yes, with_libvisio00=no) - if test "x$with_libvisio00" = "xyes"; then - AC_DEFINE(WITH_LIBVISIO00,1,[Build using libvisio 0.0.x]) - with_libvisio=yes - AC_SUBST(LIBVISIO_LIBS, $LIBVISIO00_LIBS) - AC_SUBST(LIBVISIO_CFLAGS, $LIBVISIO00_CFLAGS) - fi - fi - - if test "x$with_libvisio" = "xyes"; then - AC_DEFINE(WITH_LIBVISIO,1,[Build in libvisio]) - fi -fi -AM_CONDITIONAL(WITH_LIBVISIO01, test "x$with_libvisio01" = "xyes") -AM_CONDITIONAL(WITH_LIBVISIO00, test "x$with_libvisio00" = "xyes") -AM_CONDITIONAL(WITH_LIBVISIO, test "x$with_libvisio" = "xyes") - -dnl ******************************** -dnl Check for libcdr for extension -dnl ******************************** - -AC_ARG_ENABLE(cdr, - AS_HELP_STRING([--disable-cdr], [compile without support for CorelDRAW Diagrams]), - enable_cdr=$enableval,enable_cdr=yes) - -with_libcdr=no - -if test "x$enable_cdr" = "xyes"; then - dnl ************************************************************** - dnl Try using librevenge framework first. Fall back to old libs - dnl if unavailable. - dnl TODO: Drop subsequent tests once this is widespread in distros - dnl ************************************************************** - PKG_CHECK_MODULES(LIBCDR01, libcdr-0.1 librevenge-0.0 librevenge-stream-0.0, with_libcdr01=yes, with_libcdr01=no) - if test "x$with_libcdr01" = "xyes"; then - AC_DEFINE(WITH_LIBCDR01,1,[Build using libcdr 0.1.x]) - with_libcdr=yes - AC_SUBST(LIBCDR_LIBS, $LIBCDR01_LIBS) - AC_SUBST(LIBCDR_CFLAGS, $LIBCDR01_CFLAGS) - else - PKG_CHECK_MODULES(LIBCDR00, libcdr-0.0 >= 0.0.3 libwpd-0.9 libwpd-stream-0.9 libwpg-0.2, with_libcdr00=yes, with_libcdr00=no) - if test "x$with_libcdr00" = "xyes"; then - AC_DEFINE(WITH_LIBCDR00,1,[Build using libcdr 0.0.x]) - with_libcdr=yes - AC_SUBST(LIBCDR_LIBS, $LIBCDR00_LIBS) - AC_SUBST(LIBCDR_CFLAGS, $LIBCDR00_CFLAGS) - fi - fi - - if test "x$with_libcdr" = "xyes"; then - AC_DEFINE(WITH_LIBCDR,1,[Build in libcdr]) - fi -fi -AM_CONDITIONAL(WITH_LIBCDR01, test "x$with_libcdr01" = "xyes") -AM_CONDITIONAL(WITH_LIBCDR00, test "x$with_libcdr00" = "xyes") -AM_CONDITIONAL(WITH_LIBCDR, test "x$with_libcdr" = "xyes") - -dnl ****************************** -dnl Support doing a local install -dnl (mostly for distcheck) -dnl ****************************** - -with_localinstall="no" -AC_ARG_ENABLE(localinstall, AS_HELP_STRING([--enable-localinstall], [install system files in the local path (for distcheck)]), with_localinstall=$enableval, with_localinstall=no) - -dnl ****************************** -dnl Check for dbus functionality -dnl ****************************** - -AC_ARG_ENABLE(dbusapi, - AS_HELP_STRING([--enable-dbusapi], [compile with support for DBus interface]), - enable_dbusapi=$enableval,enable_dbusapi=no) - -with_dbus="no" -if test "x$enable_dbusapi" = "xyes"; then - PKG_CHECK_MODULES(DBUS, dbus-glib-1, with_dbus=yes, with_dbus=no) - if test "x$with_dbus" = "xyes"; then - if test "x$with_localinstall" = "xyes"; then - DBUSSERVICEDIR="${datadir}/dbus-1/services/" - else - DBUSSERVICEDIR=`$PKG_CONFIG --variable=session_bus_services_dir dbus-1` - fi - AC_SUBST(DBUSSERVICEDIR) - AC_DEFINE(WITH_DBUS,1,[Build in dbus]) - fi -fi -AC_SUBST(DBUS_LIBS) -AC_SUBST(DBUS_CFLAGS) -AM_CONDITIONAL(WITH_DBUS, test "x$with_dbus" = "xyes") - -dnl ****************************** -dnl Check for ImageMagick Magick++ -dnl ****************************** - -PKG_CHECK_MODULES(IMAGEMAGICK, ImageMagick++, magick_ok=yes, magick_ok=no) -if test "x$magick_ok" = "xyes"; then - AC_DEFINE(WITH_IMAGE_MAGICK,1,[Image Magick++ support for bitmap effects]) -fi -AM_CONDITIONAL(USE_IMAGE_MAGICK, test "x$magick_ok" = "xyes") - -AC_SUBST(IMAGEMAGICK_LIBS) -AC_SUBST(IMAGEMAGICK_CFLAGS) - -dnl ****************************** -dnl Unconditional dependencies -dnl ****************************** - -dnl Separate out dependencies that are known to introduce -dnl C++-specific compiler flags -PKG_CHECK_MODULES(INKSCAPE_CXX_DEPS, - cairomm-1.0 >= 1.9.8 - glibmm-2.4 >= 2.28 - giomm-2.4 - sigc++-2.0 >= 2.0.12 - ) - -PKG_CHECK_MODULES(INKSCAPE, - bdw-gc >= 7.2 - cairo >= 1.10 - glib-2.0 >= 2.28 - gmodule-2.0 - gsl - gthread-2.0 >= 2.0 - libpng >= 1.2 - libxml-2.0 >= 2.6.11 - libxslt >= 1.0.15 - pango >= 1.24 - pangoft2 >= 1.24 - ) - -ink_spell_pkg= -if pkg-config --exists gtkspell-3.0; then - ink_spell_pkg=gtkspell-3.0 - AC_DEFINE(WITH_GTKSPELL, 1, [enable gtk spelling widget]) -fi - -PKG_CHECK_MODULES(GTK, - gtk+-3.0 >= 3.8 - gdk-3.0 >= 3.8 - gdl-3.0 > 3.4 - $ink_spell_pkg) - -dnl Separate out dependencies that are known to introduce -dnl C++-specific compiler flags -PKG_CHECK_MODULES(GTKMM, - gtkmm-3.0 >= 3.8 - gdkmm-3.0 >= 3.8) - -# Check whether we can use new features in Gtkmm 3.10 -# TODO: Drop this test and bump the version number in the GTK test above -# as soon as all supported distributions provide Gtkmm >= 3.10 -PKG_CHECK_MODULES(GTKMM_3_10, - gtkmm-3.0 >= 3.10, - with_gtkmm_3_10=yes, - with_gtkmm_3_10=no) - -if test "x$with_gtkmm_3_10" = "xyes"; then - AC_MSG_RESULT([Using Gtkmm 3.10 build]) - AC_DEFINE(WITH_GTKMM_3_10,1,[Build with Gtkmm 3.10.x or higher]) -fi - -# Check whether we are using Gdl >= 3.6. This version introduced an API/ABI change. -# TODO: We should drop support for older versions of Gdl once all supported distros -# provide Gdl 3.6 or higher -PKG_CHECK_MODULES(GDL_3_6, gdl-3.0 >= 3.6, with_gdl_3_6=yes, with_gdl_3_6=no) - -if test "x$with_gdl_3_6" = "xyes"; then - AC_MSG_RESULT([Using Gdl 3.6 or higher]) - AC_DEFINE(WITH_GDL_3_6,1,[Build with Gdl 3.6 or higher]) -fi - -# Check whether we are using the X11 backend target for Gtk+ 3. -GTK_CHECK_BACKEND([x11], , [have_x11=yes], [have_x11=no]) - -# Enable strict build options that should work on most systems unless -# the build has been configured not to do so -if test "x$enable_strict_build" != "xno"; then - # Add build flags here as soon as Inkscape trunk can build - # against Gtk+ 3 with the option enabled - echo "" -fi - -# Enable strict build options that are known to cause failure in -# Gtk+ 3 builds -if test "x$enable_strict_build" = "xhigh"; then - # Disable deprecated Gtk+ symbols that have been removed since - # Gtk+ 3. - CPPFLAGS="-DGTKMM_DISABLE_DEPRECATED $CPPFLAGS" - CPPFLAGS="-DGTK_DISABLE_DEPRECATED $CPPFLAGS" - CPPFLAGS="-DGDK_DISABLE_DEPRECATED $CPPFLAGS" -fi - -INKSCAPE_CFLAGS="$GTK_CFLAGS $INKSCAPE_CFLAGS" -INKSCAPE_CXX_DEPS_CFLAGS="$GTKMM_CFLAGS $INKSCAPE_CXX_DEPS_CFLAGS" -INKSCAPE_LIBS="$GTK_LIBS $INKSCAPE_LIBS" -INKSCAPE_CXX_DEPS_LIBS="$GTKMM_LIBS $INKSCAPE_CXX_DEPS_LIBS" - -dnl Configure x11 library if Gtk+ uses it as a backend. -dnl Note that this is only here because we directly use X11 functionality. We -dnl wouldn't need this check if we were only using X as the Gtk+ backend. -if test "x$have_x11" = "xyes"; then - PKG_CHECK_MODULES(X11, x11) -fi -AC_SUBST(X11_CFLAGS) -AC_SUBST(X11_LIBS) - -# Prevent usage of deprecated library symbols unless strict build -# checking has been disabled -if test "x$enable_strict_build" != "xno"; then - CPPFLAGS="-DGDKMM_DISABLE_DEPRECATED $CPPFLAGS" - - # Ensure that no deprecated glibmm symbols are introduced. - # lp:inkscape builds cleanly with this option at r10957 - CPPFLAGS="-DGLIBMM_DISABLE_DEPRECATED $CPPFLAGS" - - dnl Pango 1.32.4 uses a deprecated Glib symbol: - dnl https://bugzilla.gnome.org/show_bug.cgi?id=689843 - dnl - dnl TODO: Get rid of this check once we are sure that all targeted - dnl platforms have got rid of this Pango version. Apply the - dnl G_DISABLE_DEPRECATED flag to all builds. - pango_uses_deprecated_glib_symbols=no - - PKG_CHECK_MODULES(PANGO_USES_DEPRECATED_GLIB_SYMBOLS, - pango = 1.32.4, - pango_uses_deprecated_glib_symbols=yes, - pango_uses_deprecated_glib_symbols=no) - - # Don't disable deprecated Glib symbols if it will break stuff in an - # external library header that we use - if test "x$pango_uses_deprecated_glib_symbols" = "xyes"; then - AC_MSG_WARN([The available version of Pango uses deprecated Glib symbols. Deprecated Glib symbol usage will be allowed]) - else - CPPFLAGS="-DG_DISABLE_DEPRECATED $CPPFLAGS" - fi -fi - -# Disable all deprecated symbols if very strict build is requested. -# TODO: Make this a default option for Gtk+ 2 or 3 builds as soon as -# possible. -if test "x$enable_strict_build" = "xhigh"; then - CPPFLAGS="-Werror=deprecated-declarations $CPPFLAGS" -fi - -# Check for some boost header files -AC_CHECK_HEADERS([boost/concept_check.hpp], [], AC_MSG_ERROR([You need the boost package (e.g. libboost-dev)])) - -PKG_CHECK_MODULES(CAIRO_PDF, cairo-pdf, cairo_pdf=yes, cairo_pdf=no) -if test "x$cairo_pdf" = "xyes"; then - AC_DEFINE(HAVE_CAIRO_PDF, 1, [Whether the Cairo PDF backend is available]) -fi - -dnl Shouldn't we test for libz? -INKSCAPE_LIBS="$INKSCAPE_LIBS -lz" -if test "x$openmp_ok" = "xyes"; then - INKSCAPE_LIBS="$INKSCAPE_LIBS -lgomp" -fi - -AC_CHECK_HEADER(popt.h, - [INKSCAPE_LIBS="$INKSCAPE_LIBS -lpopt"], - AC_MSG_ERROR([libpopt is required])) - -dnl ************************** -dnl Check for aspell -dnl ****************************** -AC_CHECK_LIB(aspell, new_aspell_config, [AC_CHECK_HEADER(aspell.h, aspell_ok=yes, aspell_ok=no)], aspell_ok=no, -lz -lm) -if test "x$aspell_ok" = "xyes"; then - AC_DEFINE(HAVE_ASPELL, 1, [Use aspell for built-in spellchecker]) - INKSCAPE_LIBS="$INKSCAPE_LIBS -laspell" -else - AC_MSG_CHECKING([Aspell not found, spell checker will be disabled]) -fi - -dnl Check for bind_textdomain_codeset, including -lintl if GLib brings it in. -sp_save_LIBS=$LIBS -LIBS="$LIBS $INKSCAPE_LIBS" -AC_CHECK_FUNCS(bind_textdomain_codeset) -LIBS=$sp_save_LIBS - - -dnl Check for binary relocation support -dnl Hongli Lai <h.lai@chello.nl> - -AC_ARG_ENABLE(binreloc, - AS_HELP_STRING([--enable-binreloc], [compile with binary relocation support]), - enable_binreloc=$enableval,enable_binreloc=no) - -AC_MSG_CHECKING(whether binary relocation support should be enabled) -if test "$enable_binreloc" = "yes"; then - AC_MSG_RESULT(yes) - AC_MSG_CHECKING(for linker mappings at /proc/self/maps) - if test -e /proc/self/maps; then - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) - AC_MSG_ERROR(/proc/self/maps is not available. Binary relocation cannot be enabled.) - enable_binreloc="no" - fi - -elif test "$enable_binreloc" = "auto"; then - AC_MSG_RESULT(yes when available) - AC_MSG_CHECKING(for linker mappings at /proc/self/maps) - if test -e /proc/self/maps; then - AC_MSG_RESULT(yes) - enable_binreloc=yes - - AC_MSG_CHECKING(whether everything is installed to the same prefix) - if test "$bindir" = '${exec_prefix}/bin' -a "$sbindir" = '${exec_prefix}/sbin' -a \ - "$datadir" = '${prefix}/share' -a "$libdir" = '${exec_prefix}/lib' -a \ - "$libexecdir" = '${exec_prefix}/libexec' -a "$sysconfdir" = '${prefix}/etc' - then - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) - AC_MSG_NOTICE(Binary relocation support will be disabled.) - enable_binreloc=no - fi - - else - AC_MSG_RESULT(no) - enable_binreloc=no - fi - -elif test "$enable_binreloc" = "no"; then - AC_MSG_RESULT(no) -else - AC_MSG_RESULT([no (unknown value "$enable_binreloc")]) - enable_binreloc=no -fi -AC_DEFINE(BR_PTHREADS,[0],[Use binreloc thread support?]) -if test "$enable_binreloc" = "yes"; then - AC_DEFINE(ENABLE_BINRELOC,,[Use AutoPackage?]) -fi - -AC_ARG_ENABLE(osxapp, - AS_HELP_STRING([--enable-osxapp], [compile with OSX .app data dir paths]), - enable_osxapp=$enableval,enable_osxapp=no) -if test "$enable_osxapp" = "yes"; then - AC_DEFINE(ENABLE_OSX_APP_LOCATIONS,,[Build with OSX .app data dir paths?]) - LDFLAGS="$LDFLAGS -headerpad_max_install_names" -fi - -dnl ****************************** -dnl Reported by autoscan -dnl ****************************** -AC_CHECK_FUNCS(pow) -# if we did not find pow(), see if it's in libm. -if test x"$ac_cv_func_pow" = x"no" ; then - AC_CHECK_LIB(m,pow) -fi -AC_CHECK_FUNCS(sqrt) -AC_CHECK_FUNCS(floor) -AC_CHECK_FUNCS(gettimeofday) -AC_CHECK_FUNCS(memmove) -AC_CHECK_FUNCS(memset) -AC_CHECK_FUNCS(mkdir) -AC_CHECK_FUNCS(strncasecmp) -AC_CHECK_FUNCS(strpbrk) -AC_CHECK_FUNCS(strrchr) -AC_CHECK_FUNCS(strspn) -AC_CHECK_FUNCS(strstr) -AC_CHECK_FUNCS(strtoul) -AC_CHECK_FUNCS(fpsetmask) -AC_CHECK_FUNCS(ecvt) -AC_CHECK_HEADERS(ieeefp.h) -AC_CHECK_HEADERS(fcntl.h) -AC_CHECK_HEADERS(libintl.h) -AC_CHECK_HEADERS(stddef.h) -AC_CHECK_HEADERS(sys/time.h) -AC_FUNC_STAT -AC_FUNC_STRFTIME -AC_FUNC_STRTOD -AC_HEADER_STAT -AC_HEADER_TIME -AC_STRUCT_TM -AC_TYPE_MODE_T - -dnl Work around broken gcc 3.3 (seen on OSX) where "ENABLE_NLS" isn't -dnl set correctly because the gettext function isn't noticed. -if test "$ac_cv_header_libintl_h" = "yes" && - test "$ac_cv_func_bind_textdomain_codeset" = "yes" && - test "$gt_cv_func_have_gettext" != "yes"; then - AC_DEFINE([ENABLE_NLS], [], [Description]) -fi - -dnl ****************************** -dnl Compilation warnings -dnl ****************************** -if test "$GXX" = "yes"; then - # Enable some warnings from g++. - - # Rationale: a number of bugs in inkscape have been fixed by enabling g++ - # warnings and addressing the produced warnings. Usually the committing - # developer is the best person to address the warnings. - - ink_svd_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="-Wno-unused-parameter $CXXFLAGS" - # -Wno-unused-parameter isn't accepted by gcc 2.95. - AC_COMPILE_IFELSE([AC_LANG_SOURCE([int dummy;]) -], , CXXFLAGS="-Wno-unused $ink_svd_CXXFLAGS",) - # Note: At least one bug has been caught from unused parameter warnings, - # so it might be worth trying not to disable it. - # One way of selectively disabling the warnings (i.e. only where the - # programmer deliberately isn't using the parameter, e.g. for a callback) - # is to remove the parameter name (leaving just its type), as is done - # in src/seltrans.cpp:sp_seltrans_handle_event; this indicates that the - # programmer deliberately has an unused parameter (e.g. because it's used - # as a callback or similar function pointer use). - - # Add even more stuff - CXXFLAGS="-Wpointer-arith -Wcast-align -Wsign-compare -Woverloaded-virtual -Wswitch $CXXFLAGS" - -fi - -dnl ****************************** -dnl libinkscape -dnl ****************************** -dnl -dnl AC_ARG_ENABLE(libinkscape, AS_HELP_STRING([--enable-libinkscape],[Compile dynamic library (experimental)]), [splib=$enableval], [splib=no]) -dnl -dnl AM_CONDITIONAL(ENABLE_LIBINKSCAPE, test "x$splib" != "xno") -dnl - -AC_SUBST(INKSCAPE_CFLAGS) -AC_SUBST(INKSCAPE_LIBS) -AC_SUBST(INKSCAPE_CXX_DEPS_CFLAGS) -AC_SUBST(INKSCAPE_CXX_DEPS_LIBS) - -dnl Define our data paths for config.h -AC_DEFINE_DIR([INKSCAPE_DATADIR], [datadir], [Base data directory]) -AC_DEFINE_DIR([PACKAGE_LOCALE_DIR], [localedir], [Locatization directory]) - -AC_CONFIG_FILES([ -Makefile -src/Makefile -src/check-header-compile -src/debug/makefile -src/display/makefile -src/extension/implementation/makefile -src/extension/internal/makefile -src/extension/makefile -src/extension/dbus/wrapper/inkdbus.pc -src/filters/makefile -src/helper/makefile -src/io/makefile -src/libcroco/makefile -src/libnrtype/makefile -src/libavoid/makefile -src/libuemf/makefile -src/livarot/makefile -src/live_effects/makefile -src/live_effects/parameter/makefile -src/svg/makefile -src/trace/makefile -src/ui/cache/makefile -src/ui/dialog/makefile -src/ui/makefile -src/ui/view/makefile -src/ui/widget/makefile -src/util/makefile -src/widgets/makefile -src/xml/makefile -src/2geom/makefile -doc/Makefile -po/Makefile.in -share/Makefile -share/attributes/Makefile -share/branding/Makefile -share/examples/Makefile -share/extensions/Makefile -share/extensions/alphabet_soup/Makefile -share/extensions/Barcode/Makefile -share/extensions/Poly3DObjects/Makefile -share/extensions/test/Makefile -share/extensions/xaml2svg/Makefile -share/extensions/ink2canvas/Makefile -share/filters/Makefile -share/fonts/Makefile -share/gradients/Makefile -share/icons/Makefile -share/icons/application/Makefile -share/icons/application/16x16/Makefile -share/icons/application/22x22/Makefile -share/icons/application/24x24/Makefile -share/icons/application/32x32/Makefile -share/icons/application/48x48/Makefile -share/icons/application/256x256/Makefile -share/keys/Makefile -share/markers/Makefile -share/palettes/Makefile -share/patterns/Makefile -share/screens/Makefile -share/symbols/Makefile -share/templates/Makefile -share/tutorials/Makefile -share/ui/Makefile -packaging/autopackage/default.apspec -inkscape.spec -Info.plist -inkview.1 -]) - -AH_BOTTOM([ - - -]) - -AC_OUTPUT - -echo " -Configuration: - - Source code location: ${srcdir} - Destination path prefix: ${prefix} - Compiler: ${CXX} - CPPFLAGS: ${CPPFLAGS} - CXXFLAGS: ${CXXFLAGS} - CFLAGS: ${CFLAGS} - LDFLAGS: ${LDFLAGS} - - Use gnome-vfs: ${gnome_vfs} - Use openoffice files: ${ij} - Use relocation support: ${enable_binreloc} - Enable LittleCms: ${enable_lcms} - Enable DBUS: ${with_dbus} - Enable Poppler-Cairo: ${enable_poppler_cairo} - Enable Potrace: ${potrace_ok} - ImageMagick Magick++: ${magick_ok} - Libwpg: ${with_libwpg} - Libvisio: ${with_libvisio} - Libcdr: ${with_libcdr} - Doing Local Install: ${with_localinstall} -" diff --git a/delautogen.sh b/delautogen.sh deleted file mode 100755 index bc955a913..000000000 --- a/delautogen.sh +++ /dev/null @@ -1,14 +0,0 @@ -#! /bin/sh -# delautogen.sh: Remove files created by autogen.sh, and files created by make -# if compiling in the source directory. -# -# Requires gnu find, gnu xargs. - -set -e -mydir=`dirname "$0"` -cd "$mydir" -rm -rf autom4te.cache -rm -rf src/.libs -for d in `find -name .cvsignore -printf '%h '`; do - (cd "$d" && rm -f *~ && rm -rf .deps && rm -f $(grep '^[][a-zA-Z0-9_.*?-]*$' .cvsignore) ) -done diff --git a/doc/Makefile.am b/doc/Makefile.am deleted file mode 100644 index dd22e7710..000000000 --- a/doc/Makefile.am +++ /dev/null @@ -1,20 +0,0 @@ -EXTRA_DIST = README.document \ - architecture.svg \ - architecture.txt \ - class-hierarchy.dia \ - coordinates.txt \ - HACKING.de.txt \ - HACKING.fr.txt \ - HACKING.it.txt \ - HACKING.pt_BR.txt \ - HACKING.txt \ - keys.css \ - keys.README \ - keys.be.html\ - keys.de.html \ - keys.el.html \ - keys.en.html \ - keys.fr.html \ - keys.ja.html \ - keys.zh_TW.html \ - refcounting.txt diff --git a/m4/Makefile.am b/m4/Makefile.am deleted file mode 100644 index e1b0207fe..000000000 --- a/m4/Makefile.am +++ /dev/null @@ -1,11 +0,0 @@ -EXTRA_DIST = \ - ac_define_dir.m4 \ - codeset.m4 \ - gettext.m4 \ - glibc21.m4 \ - iconv.m4 \ - isc-posix.m4 \ - lcmessage.m4 \ - progtest.m4 \ - relaytool.m4 - diff --git a/m4/ac_define_dir.m4 b/m4/ac_define_dir.m4 deleted file mode 100644 index db42d3eb0..000000000 --- a/m4/ac_define_dir.m4 +++ /dev/null @@ -1,49 +0,0 @@ -# =========================================================================== -# http://autoconf-archive.cryp.to/ac_define_dir.html -# =========================================================================== -# -# SYNOPSIS -# -# AC_DEFINE_DIR(VARNAME, DIR [, DESCRIPTION]) -# -# DESCRIPTION -# -# This macro sets VARNAME to the expansion of the DIR variable, taking -# care of fixing up ${prefix} and such. -# -# VARNAME is then offered as both an output variable and a C preprocessor -# symbol. -# -# Example: -# -# AC_DEFINE_DIR([DATADIR], [datadir], [Where data are placed to.]) -# -# LAST MODIFICATION -# -# 2008-04-12 -# -# COPYLEFT -# -# Copyright (c) 2008 Stepan Kasal <kasal@ucw.cz> -# Copyright (c) 2008 Andreas Schwab <schwab@suse.de> -# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de> -# Copyright (c) 2008 Alexandre Oliva -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. - -AC_DEFUN([AC_DEFINE_DIR], [ - prefix_NONE= - exec_prefix_NONE= - test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix - test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix -dnl In Autoconf 2.60, ${datadir} refers to ${datarootdir}, which in turn -dnl refers to ${prefix}. Thus we have to use `eval' twice. - eval ac_define_dir="\"[$]$2\"" - eval ac_define_dir="\"$ac_define_dir\"" - AC_SUBST($1, "$ac_define_dir") - AC_DEFINE_UNQUOTED($1, "$ac_define_dir", [$3]) - test "$prefix_NONE" && prefix=NONE - test "$exec_prefix_NONE" && exec_prefix=NONE -]) diff --git a/m4/ax_cxx_compile_stdcxx.m4 b/m4/ax_cxx_compile_stdcxx.m4 deleted file mode 100644 index 2c18e49c5..000000000 --- a/m4/ax_cxx_compile_stdcxx.m4 +++ /dev/null @@ -1,562 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional]) -# -# DESCRIPTION -# -# Check for baseline language coverage in the compiler for the specified -# version of the C++ standard. If necessary, add switches to CXX and -# CXXCPP to enable support. VERSION may be '11' (for the C++11 standard) -# or '14' (for the C++14 standard). -# -# The second argument, if specified, indicates whether you insist on an -# extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g. -# -std=c++11). If neither is specified, you get whatever works, with -# preference for an extended mode. -# -# The third argument, if specified 'mandatory' or if left unspecified, -# indicates that baseline support for the specified C++ standard is -# required and that the macro should error out if no mode with that -# support is found. If specified 'optional', then configuration proceeds -# regardless, after defining HAVE_CXX${VERSION} if and only if a -# supporting mode is found. -# -# LICENSE -# -# Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com> -# Copyright (c) 2012 Zack Weinberg <zackw@panix.com> -# Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu> -# Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com> -# Copyright (c) 2015 Paul Norman <penorman@mac.com> -# Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu> -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -#serial 4 - -dnl This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro -dnl (serial version number 13). - -AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl - m4_if([$1], [11], [], - [$1], [14], [], - [$1], [17], [m4_fatal([support for C++17 not yet implemented in AX_CXX_COMPILE_STDCXX])], - [m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl - m4_if([$2], [], [], - [$2], [ext], [], - [$2], [noext], [], - [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX])])dnl - m4_if([$3], [], [ax_cxx_compile_cxx$1_required=true], - [$3], [mandatory], [ax_cxx_compile_cxx$1_required=true], - [$3], [optional], [ax_cxx_compile_cxx$1_required=false], - [m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])]) - AC_LANG_PUSH([C++])dnl - ac_success=no - AC_CACHE_CHECK(whether $CXX supports C++$1 features by default, - ax_cv_cxx_compile_cxx$1, - [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])], - [ax_cv_cxx_compile_cxx$1=yes], - [ax_cv_cxx_compile_cxx$1=no])]) - if test x$ax_cv_cxx_compile_cxx$1 = xyes; then - ac_success=yes - fi - - m4_if([$2], [noext], [], [dnl - if test x$ac_success = xno; then - for switch in -std=gnu++$1 -std=gnu++0x; do - cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch]) - AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch, - $cachevar, - [ac_save_CXX="$CXX" - CXX="$CXX $switch" - AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])], - [eval $cachevar=yes], - [eval $cachevar=no]) - CXX="$ac_save_CXX"]) - if eval test x\$$cachevar = xyes; then - CXX="$CXX $switch" - if test -n "$CXXCPP" ; then - CXXCPP="$CXXCPP $switch" - fi - ac_success=yes - break - fi - done - fi]) - - m4_if([$2], [ext], [], [dnl - if test x$ac_success = xno; then - dnl HP's aCC needs +std=c++11 according to: - dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf - dnl Cray's crayCC needs "-h std=c++11" - for switch in -std=c++$1 -std=c++0x +std=c++$1 "-h std=c++$1"; do - cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch]) - AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch, - $cachevar, - [ac_save_CXX="$CXX" - CXX="$CXX $switch" - AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])], - [eval $cachevar=yes], - [eval $cachevar=no]) - CXX="$ac_save_CXX"]) - if eval test x\$$cachevar = xyes; then - CXX="$CXX $switch" - if test -n "$CXXCPP" ; then - CXXCPP="$CXXCPP $switch" - fi - ac_success=yes - break - fi - done - fi]) - AC_LANG_POP([C++]) - if test x$ax_cxx_compile_cxx$1_required = xtrue; then - if test x$ac_success = xno; then - AC_MSG_ERROR([*** A compiler with support for C++$1 language features is required.]) - fi - fi - if test x$ac_success = xno; then - HAVE_CXX$1=0 - AC_MSG_NOTICE([No compiler with C++$1 support was found]) - else - HAVE_CXX$1=1 - AC_DEFINE(HAVE_CXX$1,1, - [define if the compiler supports basic C++$1 syntax]) - fi - AC_SUBST(HAVE_CXX$1) -]) - - -dnl Test body for checking C++11 support - -m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11], - _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 -) - - -dnl Test body for checking C++14 support - -m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14], - _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 - _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 -) - - -dnl Tests for new features in C++11 - -m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[ - -// If the compiler admits that it is not ready for C++11, why torture it? -// Hopefully, this will speed up the test. - -#ifndef __cplusplus - -#error "This is not a C++ compiler" - -#elif __cplusplus < 201103L - -#error "This is not a C++11 compiler" - -#else - -namespace cxx11 -{ - - namespace test_static_assert - { - - template <typename T> - struct check - { - static_assert(sizeof(int) <= sizeof(T), "not big enough"); - }; - - } - - namespace test_final_override - { - - struct Base - { - virtual void f() {} - }; - - struct Derived : public Base - { - virtual void f() override {} - }; - - } - - namespace test_double_right_angle_brackets - { - - template < typename T > - struct check {}; - - typedef check<void> single_type; - typedef check<check<void>> double_type; - typedef check<check<check<void>>> triple_type; - typedef check<check<check<check<void>>>> quadruple_type; - - } - - namespace test_decltype - { - - int - f() - { - int a = 1; - decltype(a) b = 2; - return a + b; - } - - } - - namespace test_type_deduction - { - - template < typename T1, typename T2 > - struct is_same - { - static const bool value = false; - }; - - template < typename T > - struct is_same<T, T> - { - static const bool value = true; - }; - - template < typename T1, typename T2 > - auto - add(T1 a1, T2 a2) -> decltype(a1 + a2) - { - return a1 + a2; - } - - int - test(const int c, volatile int v) - { - static_assert(is_same<int, decltype(0)>::value == true, ""); - static_assert(is_same<int, decltype(c)>::value == false, ""); - static_assert(is_same<int, decltype(v)>::value == false, ""); - auto ac = c; - auto av = v; - auto sumi = ac + av + 'x'; - auto sumf = ac + av + 1.0; - static_assert(is_same<int, decltype(ac)>::value == true, ""); - static_assert(is_same<int, decltype(av)>::value == true, ""); - static_assert(is_same<int, decltype(sumi)>::value == true, ""); - static_assert(is_same<int, decltype(sumf)>::value == false, ""); - static_assert(is_same<int, decltype(add(c, v))>::value == true, ""); - return (sumf > 0.0) ? sumi : add(c, v); - } - - } - - namespace test_noexcept - { - - int f() { return 0; } - int g() noexcept { return 0; } - - static_assert(noexcept(f()) == false, ""); - static_assert(noexcept(g()) == true, ""); - - } - - namespace test_constexpr - { - - template < typename CharT > - unsigned long constexpr - strlen_c_r(const CharT *const s, const unsigned long acc) noexcept - { - return *s ? strlen_c_r(s + 1, acc + 1) : acc; - } - - template < typename CharT > - unsigned long constexpr - strlen_c(const CharT *const s) noexcept - { - return strlen_c_r(s, 0UL); - } - - static_assert(strlen_c("") == 0UL, ""); - static_assert(strlen_c("1") == 1UL, ""); - static_assert(strlen_c("example") == 7UL, ""); - static_assert(strlen_c("another\0example") == 7UL, ""); - - } - - namespace test_rvalue_references - { - - template < int N > - struct answer - { - static constexpr int value = N; - }; - - answer<1> f(int&) { return answer<1>(); } - answer<2> f(const int&) { return answer<2>(); } - answer<3> f(int&&) { return answer<3>(); } - - void - test() - { - int i = 0; - const int c = 0; - static_assert(decltype(f(i))::value == 1, ""); - static_assert(decltype(f(c))::value == 2, ""); - static_assert(decltype(f(0))::value == 3, ""); - } - - } - - namespace test_uniform_initialization - { - - struct test - { - static const int zero {}; - static const int one {1}; - }; - - static_assert(test::zero == 0, ""); - static_assert(test::one == 1, ""); - - } - - namespace test_lambdas - { - - void - test1() - { - auto lambda1 = [](){}; - auto lambda2 = lambda1; - lambda1(); - lambda2(); - } - - int - test2() - { - auto a = [](int i, int j){ return i + j; }(1, 2); - auto b = []() -> int { return '0'; }(); - auto c = [=](){ return a + b; }(); - auto d = [&](){ return c; }(); - auto e = [a, &b](int x) mutable { - const auto identity = [](int y){ return y; }; - for (auto i = 0; i < a; ++i) - a += b--; - return x + identity(a + b); - }(0); - return a + b + c + d + e; - } - - int - test3() - { - const auto nullary = [](){ return 0; }; - const auto unary = [](int x){ return x; }; - using nullary_t = decltype(nullary); - using unary_t = decltype(unary); - const auto higher1st = [](nullary_t f){ return f(); }; - const auto higher2nd = [unary](nullary_t f1){ - return [unary, f1](unary_t f2){ return f2(unary(f1())); }; - }; - return higher1st(nullary) + higher2nd(nullary)(unary); - } - - } - - namespace test_variadic_templates - { - - template <int...> - struct sum; - - template <int N0, int... N1toN> - struct sum<N0, N1toN...> - { - static constexpr auto value = N0 + sum<N1toN...>::value; - }; - - template <> - struct sum<> - { - static constexpr auto value = 0; - }; - - static_assert(sum<>::value == 0, ""); - static_assert(sum<1>::value == 1, ""); - static_assert(sum<23>::value == 23, ""); - static_assert(sum<1, 2>::value == 3, ""); - static_assert(sum<5, 5, 11>::value == 21, ""); - static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); - - } - - // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae - // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function - // because of this. - namespace test_template_alias_sfinae - { - - struct foo {}; - - template<typename T> - using member = typename T::member_type; - - template<typename T> - void func(...) {} - - template<typename T> - void func(member<T>*) {} - - void test(); - - void test() { func<foo>(0); } - - } - -} // namespace cxx11 - -#endif // __cplusplus >= 201103L - -]]) - - -dnl Tests for new features in C++14 - -m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_14], [[ - -// If the compiler admits that it is not ready for C++14, why torture it? -// Hopefully, this will speed up the test. - -#ifndef __cplusplus - -#error "This is not a C++ compiler" - -#elif __cplusplus < 201402L - -#error "This is not a C++14 compiler" - -#else - -namespace cxx14 -{ - - namespace test_polymorphic_lambdas - { - - int - test() - { - const auto lambda = [](auto&&... args){ - const auto istiny = [](auto x){ - return (sizeof(x) == 1UL) ? 1 : 0; - }; - const int aretiny[] = { istiny(args)... }; - return aretiny[0]; - }; - return lambda(1, 1L, 1.0f, '1'); - } - - } - - namespace test_binary_literals - { - - constexpr auto ivii = 0b0000000000101010; - static_assert(ivii == 42, "wrong value"); - - } - - namespace test_generalized_constexpr - { - - template < typename CharT > - constexpr unsigned long - strlen_c(const CharT *const s) noexcept - { - auto length = 0UL; - for (auto p = s; *p; ++p) - ++length; - return length; - } - - static_assert(strlen_c("") == 0UL, ""); - static_assert(strlen_c("x") == 1UL, ""); - static_assert(strlen_c("test") == 4UL, ""); - static_assert(strlen_c("another\0test") == 7UL, ""); - - } - - namespace test_lambda_init_capture - { - - int - test() - { - auto x = 0; - const auto lambda1 = [a = x](int b){ return a + b; }; - const auto lambda2 = [a = lambda1(x)](){ return a; }; - return lambda2(); - } - - } - - namespace test_digit_seperators - { - - constexpr auto ten_million = 100'000'000; - static_assert(ten_million == 100000000, ""); - - } - - namespace test_return_type_deduction - { - - auto f(int& x) { return x; } - decltype(auto) g(int& x) { return x; } - - template < typename T1, typename T2 > - struct is_same - { - static constexpr auto value = false; - }; - - template < typename T > - struct is_same<T, T> - { - static constexpr auto value = true; - }; - - int - test() - { - auto x = 0; - static_assert(is_same<int, decltype(f(x))>::value, ""); - static_assert(is_same<int&, decltype(g(x))>::value, ""); - return x; - } - - } - -} // namespace cxx14 - -#endif // __cplusplus >= 201402L - -]]) diff --git a/m4/ax_cxx_compile_stdcxx_11.m4 b/m4/ax_cxx_compile_stdcxx_11.m4 deleted file mode 100644 index 0aadeafe7..000000000 --- a/m4/ax_cxx_compile_stdcxx_11.m4 +++ /dev/null @@ -1,39 +0,0 @@ -# ============================================================================ -# http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html -# ============================================================================ -# -# SYNOPSIS -# -# AX_CXX_COMPILE_STDCXX_11([ext|noext], [mandatory|optional]) -# -# DESCRIPTION -# -# Check for baseline language coverage in the compiler for the C++11 -# standard; if necessary, add switches to CXX and CXXCPP to enable -# support. -# -# This macro is a convenience alias for calling the AX_CXX_COMPILE_STDCXX -# macro with the version set to C++11. The two optional arguments are -# forwarded literally as the second and third argument respectively. -# Please see the documentation for the AX_CXX_COMPILE_STDCXX macro for -# more information. If you want to use this macro, you also need to -# download the ax_cxx_compile_stdcxx.m4 file. -# -# LICENSE -# -# Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com> -# Copyright (c) 2012 Zack Weinberg <zackw@panix.com> -# Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu> -# Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com> -# Copyright (c) 2015 Paul Norman <penorman@mac.com> -# Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu> -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -#serial 17 - -AX_REQUIRE_DEFINED([AX_CXX_COMPILE_STDCXX]) -AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [AX_CXX_COMPILE_STDCXX([11], [$1], [$2])]) diff --git a/m4/ink_bzr_snapshot_build.m4 b/m4/ink_bzr_snapshot_build.m4 deleted file mode 100644 index 4dc2df54f..000000000 --- a/m4/ink_bzr_snapshot_build.m4 +++ /dev/null @@ -1,14 +0,0 @@ -# Check for BZR snapshot build -# (c) 2009 Krzysztof Kosiński -# Released under GNU GPL; see the file COPYING for more information - -AC_DEFUN([INK_BZR_SNAPSHOT_BUILD], -[ - AC_CACHE_CHECK([for BZR snapshot build], ink_cv_bzr_snapshot_build, - [ink_cv_bzr_snapshot_build=no - if which bzr > /dev/null && test -e $srcdir/.bzr/branch/last-revision; then - ink_cv_bzr_snapshot_build=yes - fi - ]) - AM_CONDITIONAL([USE_BZR_VERSION], [test "x$ink_cv_bzr_snapshot_build" = "xyes"]) -]) diff --git a/m4/relaytool.m4 b/m4/relaytool.m4 deleted file mode 100644 index 5cd65aea0..000000000 --- a/m4/relaytool.m4 +++ /dev/null @@ -1,30 +0,0 @@ -dnl Usage: RELAYTOOL(LIBRARY_NAME, LIBS, CFLAGS, ACTION-IF-WEAK-LINK-IS-POSSIBLE) - -dnl Example: -dnl RELAYTOOL("gtkspell", GTKSPELL_LIBS, GTKSPELL_CFLAGS, gtkspell_weak=yes) -dnl Will modify GTKSPELL_LIBS to include a call to relaytool if available -dnl or if not, will modify GTKSPELL_CFLAGS to include -D switches to define -dnl libgtkspell_is_present=1 and libgtkspell_symbol_is_present=1 - -AC_DEFUN([RELAYTOOL], [ - if test -z "$RELAYTOOL_PROG"; then - AC_PATH_PROG(RELAYTOOL_PROG, relaytool, no) - fi - - AC_MSG_CHECKING(whether we can weak link $1) - - _RELAYTOOL_PROCESSED_NAME=`echo "$1" | sed 's/-/_/g;s/\./_/g;'` - _RELAYTOOL_UPPER_NAME=`echo $_RELAYTOOL_PROCESSED_NAME | tr '[[:lower:]]' '[[:upper:]]'` - - if test "$RELAYTOOL_PROG" = "no"; then - AC_MSG_RESULT(no) - $3="-DRELAYTOOL_${_RELAYTOOL_UPPER_NAME}='static const int lib${_RELAYTOOL_PROCESSED_NAME}_is_present = 1; static int __attribute__((unused)) lib${_RELAYTOOL_PROCESSED_NAME}_symbol_is_present(char *m) { return 1; }' $$3" - else - AC_MSG_RESULT(yes) - $2=`echo $$2|sed 's/\`/\\\\\`/g;'` - $2="-Wl,--gc-sections \`relaytool --relay $1 $$2\`" - $3="-DRELAYTOOL_${_RELAYTOOL_UPPER_NAME}='extern int lib${_RELAYTOOL_PROCESSED_NAME}_is_present; extern int lib${_RELAYTOOL_PROCESSED_NAME}_symbol_is_present(char *s);' $$3" - $4 - fi -]) - diff --git a/share/Makefile.am b/share/Makefile.am deleted file mode 100644 index fa778b031..000000000 --- a/share/Makefile.am +++ /dev/null @@ -1,25 +0,0 @@ -SUBDIRS = attributes \ - branding \ - examples \ - extensions \ - filters \ - fonts \ - gradients \ - icons \ - keys \ - markers \ - palettes \ - patterns \ - screens \ - symbols \ - templates \ - tutorials \ - ui - -## COPY THE REST OF THE FOLDERS TO THE PROPER LOCATION - -## dist-hook: -## mkdir $(distdir)/samples -## cp $(datadir)/samples/*svg $(distdir)/samples -## cp $(datadir)/samples/*png $(distdir)/samples - diff --git a/share/attributes/Makefile.am b/share/attributes/Makefile.am deleted file mode 100644 index 9834c5b14..000000000 --- a/share/attributes/Makefile.am +++ /dev/null @@ -1,10 +0,0 @@ - -attributesdir = $(datadir)/inkscape/attributes - -attributes_DATA = \ - svgprops \ - cssprops \ - css_defaults \ - README - -EXTRA_DIST = $(attributes_DATA) diff --git a/share/branding/Makefile.am b/share/branding/Makefile.am deleted file mode 100644 index 1561dbf2c..000000000 --- a/share/branding/Makefile.am +++ /dev/null @@ -1,18 +0,0 @@ - -brandingdir = $(datadir)/inkscape/branding -iconsdir = $(datadir)/inkscape/icons - -branding_DATA = \ - README \ - inkscape.svg \ - inkscape-flat.svg \ - inkscape-text.svg \ - sodipodi.svg \ - LinLibertine_DR.otf \ - EuphoriaScript-Regular.otf \ - tux.svg - -icons_DATA = \ - inkscape.svg - -EXTRA_DIST = $(branding_DATA) $(icons_DATA) diff --git a/share/examples/Makefile.am b/share/examples/Makefile.am deleted file mode 100644 index a89246048..000000000 --- a/share/examples/Makefile.am +++ /dev/null @@ -1,37 +0,0 @@ - -exampledir = $(datadir)/inkscape/examples - -example_DATA = \ - README \ - istest.pov \ - gradient.svg \ - tiger.svgz \ - markers.svg \ - i18n.svg \ - stars.svgz \ - text-on-path.svg \ - flowsample.svg \ - data_uri.svg \ - tesselation-P3.svg \ - art-nouveau-P3.svg \ - eastern-motive-P4G.svg \ - l-systems.svgz \ - glass.svg \ - car.svgz \ - gallardo.svgz \ - gradient-mesh-experimental.svgz \ - rope-3D.svg \ - animated-clock.svg \ - blend_modes.svg \ - flow-go.svg \ - lighting_filters.svg \ - turbulence_filters.svg \ - live-path-effects-curvestitch.svg \ - live-path-effects-gears.svg \ - live-path-effects-pathalongpath.svg \ - filters.svg \ - svgfont.svg \ - tref.svg \ - replace-hue.svg - -EXTRA_DIST = $(example_DATA) diff --git a/share/extensions/Barcode/Makefile.am b/share/extensions/Barcode/Makefile.am deleted file mode 100644 index 08e2f58b4..000000000 --- a/share/extensions/Barcode/Makefile.am +++ /dev/null @@ -1,23 +0,0 @@ - -barcodedir = $(datadir)/inkscape/extensions/Barcode - -barcode_DATA = \ - Base.py \ - BaseEan.py \ - Code128.py \ - Code39Ext.py \ - Code39.py \ - Code25i.py \ - Code93.py \ - Ean13.py \ - Ean8.py \ - Ean5.py \ - Ean2.py \ - __init__.py \ - Rm4scc.py \ - Upca.py \ - Upce.py - -EXTRA_DIST = \ - $(barcode_DATA) - diff --git a/share/extensions/Makefile.am b/share/extensions/Makefile.am deleted file mode 100644 index f247cd8bb..000000000 --- a/share/extensions/Makefile.am +++ /dev/null @@ -1,42 +0,0 @@ - -SUBDIRS = \ - alphabet_soup \ - Barcode \ - ink2canvas \ - Poly3DObjects \ - test \ - xaml2svg - -extensiondir = $(datadir)/inkscape/extensions - -otherstuffdir = $(datadir)/inkscape/extensions - -moduledir = $(datadir)/inkscape/extensions - -extension_SCRIPTS = \ - $(wildcard $(srcdir)/*.py) \ - $(wildcard $(srcdir)/*.pl) \ - $(wildcard $(srcdir)/*.sh) \ - $(wildcard $(srcdir)/*.rb) - -otherstuff_DATA = \ - fontfix.conf \ - inkweb.js \ - jessyInk.js \ - jessyInk_core_mouseHandler_noclick.js \ - jessyInk_core_mouseHandler_zoomControl.js \ - aisvg.xslt \ - colors.xml \ - jessyInk_video.svg \ - seamless_pattern.svg \ - svg2fxg.xsl \ - svg2xaml.xsl \ - xaml2svg.xsl \ - inkscape.extension.rng - -module_DATA = $(wildcard $(srcdir)/*.inx) - -EXTRA_DIST = \ - $(extension_SCRIPTS) $(otherstuff_DATA) $(module_DATA) - - diff --git a/share/extensions/Poly3DObjects/Makefile.am b/share/extensions/Poly3DObjects/Makefile.am deleted file mode 100644 index 82a81af42..000000000 --- a/share/extensions/Poly3DObjects/Makefile.am +++ /dev/null @@ -1,33 +0,0 @@ - -Poly3DObjectsdir = $(datadir)/inkscape/extensions/Poly3DObjects - -Poly3DObjects_DATA = \ - cube.obj \ - cuboct.obj \ - dodec.obj \ - great_dodec.obj \ - great_rhombicosidodec.obj \ - great_rhombicuboct.obj \ - great_stel_dodec.obj \ - icos.obj \ - icosidodec.obj \ - jessens_orthog_icos.obj \ - methane.obj \ - oct.obj \ - rhomb_dodec.obj \ - rhomb_triacont.obj \ - rh_axes.obj \ - small_rhombicosidodec.obj \ - small_rhombicuboct.obj \ - small_triam_icos.obj \ - snub_cube.obj \ - snub_dodec.obj \ - szilassi.obj \ - tet.obj \ - trunc_cube.obj \ - trunc_dodec.obj \ - trunc_icos.obj \ - trunc_oct.obj \ - trunc_tet.obj - -EXTRA_DIST = $(Poly3DObjects_DATA) diff --git a/share/extensions/alphabet_soup/Makefile.am b/share/extensions/alphabet_soup/Makefile.am deleted file mode 100644 index 004da4e8c..000000000 --- a/share/extensions/alphabet_soup/Makefile.am +++ /dev/null @@ -1,78 +0,0 @@ - -alphabet_soupdir = $(datadir)/inkscape/extensions/alphabet_soup - -alphabet_soup_DATA = \ - 2.svg \ - 3.svg \ - 6.svg \ - 7.svg \ - abase.svg \ - a.svg \ - acap.svg \ - bar2.svg \ - barcap.svg \ - bar.svg \ - b.svg \ - Cblob.svg \ - Chook.svg \ - cross.svg \ - cserif.svg \ - c.svg \ - Ctail.svg \ - Delta.svg \ - Eb.svg \ - epsilon.svg \ - Eserif.svg \ - e.svg \ - Et.svg \ - f.svg \ - gamma.svg \ - G.svg \ - h2.svg \ - hcap.svg \ - h.svg \ - IBSerif.svg \ - idot.svg \ - ITSerif.svg \ - j.svg \ - k.svg \ - Lb.svg \ - lserif.svg \ - l.svg \ - Lt.svg \ - mcap.svg \ - m.svg \ - n.svg \ - ocap.svg \ - Ocross.svg \ - o.svg \ - Oterm.svg \ - P.svg \ - Q.svg \ - question.svg \ - Rblock.svg \ - rcap.svg \ - r.svg \ - serif.svg \ - s.svg \ - Tb.svg \ - tserif.svg \ - t.svg \ - Tt.svg \ - U.svg \ - vcap.svg \ - vserl.svg \ - vserr.svg \ - Vser.svg \ - v.svg \ - Xh.svg \ - Xne.svg \ - Xnw.svg \ - x.svg \ - Xvb.svg \ - Xvt.svg \ - yogh.svg \ - y.svg \ - z.svg - -EXTRA_DIST = $(alphabet_soup_DATA) diff --git a/share/extensions/ink2canvas/Makefile.am b/share/extensions/ink2canvas/Makefile.am deleted file mode 100644 index ab6e7661d..000000000 --- a/share/extensions/ink2canvas/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ - -ink2canvasdir = $(datadir)/inkscape/extensions/ink2canvas - -ink2canvas_DATA = \ - __init__.py \ - canvas.py \ - svg.py - -EXTRA_DIST = $(ink2canvas_DATA) diff --git a/share/extensions/test/Makefile.am b/share/extensions/test/Makefile.am deleted file mode 100644 index cd1929a7f..000000000 --- a/share/extensions/test/Makefile.am +++ /dev/null @@ -1,60 +0,0 @@ - -# List of all tests to be run. -#TESTS = svgcalendar.test.py -# that is not working :-/ - -EXTRA_DIST = \ - addnodes.test.py \ - chardataeffect.test.py \ - color_randomize_test.py \ - coloreffect.test.py \ - create_test_from_template.sh \ - dots.test.py \ - draw_from_triangle.test.py \ - dxf_outlines.test.py \ - edge3d.test.py \ - embedimage.test.py \ - eqtexsvg.test.py \ - extractimage.test.py \ - extrude.test.py \ - flatten.test.py \ - foldablebox.test.py \ - fractalize.test.py \ - funcplot.test.py \ - gimp_xcf.test.py \ - grid_cartesian.test.py \ - grid_polar.test.py \ - guides_creator.test.py \ - handles.test.py \ - hpgl_output.test.py \ - inkweb-debug.js \ - inkwebeffect.test.py \ - inkwebjs-move.test.svg \ - interp_att_g.test.py \ - interp.test.py \ - lindenmayer.test.py \ - lorem_ipsum.test.py \ - markers_strokepaint.test.py \ - measure.test.py \ - minimal-blank.svg \ - motion.test.py \ - pathmodifier.test.py \ - perfectboundcover.test.py \ - perspective.test.py \ - polyhedron_3d.test.py \ - radiusrand.test.py \ - render_alphabetsoup.test.py \ - render_barcode.test.py \ - render_barcode.data \ - render_gears.test.py \ - restack.test.py \ - rtree.test.py \ - run-all-extension-tests \ - spirograph.test.py \ - straightseg.test.py \ - summersnight.test.py \ - svg_and_media_zip_output.test.py \ - svgcalendar.test.py \ - test_template.py.txt \ - triangle.test.py \ - whirl.test.py diff --git a/share/extensions/xaml2svg/Makefile.am b/share/extensions/xaml2svg/Makefile.am deleted file mode 100644 index 89a901fde..000000000 --- a/share/extensions/xaml2svg/Makefile.am +++ /dev/null @@ -1,19 +0,0 @@ - -xaml2svg_otherstuffdir = $(datadir)/inkscape/extensions/xaml2svg - -xaml2svg_otherstuff = \ - animation.xsl \ - brushes.xsl \ - canvas.xsl \ - geometry.xsl \ - Makefile.am \ - properties.xsl \ - shapes.xsl \ - transform.xsl - -xaml2svg_otherstuff_DATA = \ - $(xaml2svg_otherstuff) - -EXTRA_DIST = \ - $(xaml2svg_otherstuff_DATA) - diff --git a/share/filters/Makefile.am b/share/filters/Makefile.am deleted file mode 100644 index 1a871a992..000000000 --- a/share/filters/Makefile.am +++ /dev/null @@ -1,13 +0,0 @@ - -filtersdir = $(datadir)/inkscape/filters - -filters_DATA = \ - README \ - filters.svg \ - filters.svg.h - -filters.svg.h: filters.svg i18n.py - $(srcdir)/i18n.py $(srcdir)/filters.svg > $(srcdir)/filters.svg.h - -EXTRA_DIST = $(filters_DATA) \ - i18n.py diff --git a/share/fonts/Makefile.am b/share/fonts/Makefile.am deleted file mode 100644 index 30a2f6997..000000000 --- a/share/fonts/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ - -fontsdir = $(datadir)/inkscape/fonts - -fonts_DATA = \ - README - -EXTRA_DIST = $(fonts_DATA) diff --git a/share/gradients/Makefile.am b/share/gradients/Makefile.am deleted file mode 100644 index 9eadc5e57..000000000 --- a/share/gradients/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ - -gradientsdir = $(datadir)/inkscape/gradients - -gradients_DATA = \ - README - -EXTRA_DIST = $(gradients_DATA) diff --git a/share/icons/Makefile.am b/share/icons/Makefile.am deleted file mode 100644 index 5830f1254..000000000 --- a/share/icons/Makefile.am +++ /dev/null @@ -1,58 +0,0 @@ -SUBDIRS = application - -iconsdir = $(datadir)/inkscape/icons - -pixmaps = \ - too-much-ink-icon.png \ - too-much-ink-icon.svg \ - out-of-gamut-icon.png \ - out-of-gamut-icon.svg \ - color-management-icon.png \ - remove-color.png \ - remove-color.svg \ - ticotico.jpg \ - feBlend-icon.png \ - feBlend-icon.svg \ - feColorMatrix-icon.png \ - feColorMatrix-icon.svg \ - feComposite-icon.png \ - feComposite-icon.svg \ - feConvolveMatrix-icon.png \ - feConvolveMatrix-icon.svg \ - feDiffuseLighting-icon.png \ - feDiffuseLighting-icon.svg \ - feDisplacementMap-icon.png \ - feDisplacementMap-icon.svg \ - feFlood-icon.png \ - feFlood-icon.svg \ - feGaussianBlur-icon.png \ - feGaussianBlur-icon.svg \ - feImage-icon.png \ - feImage-icon.svg \ - feMerge-icon.png \ - feMerge-icon.svg \ - feMorphology-icon.png \ - feMorphology-icon.svg \ - feOffset-icon.png \ - feOffset-icon.svg \ - feSpecularLighting-icon.png \ - feSpecularLighting-icon.svg \ - feTurbulence-icon.png \ - feTurbulence-icon.svg \ - OCAL.png - -icons_DATA = \ - $(pixmaps) \ - \ - icons.svg \ - tango_icons.svg \ - symbolic_icons.svg \ - \ - inkscape.file.svg \ - inkscape.file.png \ - README - -EXTRA_DIST = \ - $(icons_DATA) \ - hicolor/index.theme - diff --git a/share/icons/application/16x16/Makefile.am b/share/icons/application/16x16/Makefile.am deleted file mode 100644 index a87c2cbfa..000000000 --- a/share/icons/application/16x16/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -icondir = $(datadir)/icons/hicolor/16x16/apps -icon_DATA = inkscape.png - -EXTRA_DIST = $(icon_DATA) - diff --git a/share/icons/application/22x22/Makefile.am b/share/icons/application/22x22/Makefile.am deleted file mode 100644 index 8beeed331..000000000 --- a/share/icons/application/22x22/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -icondir = $(datadir)/icons/hicolor/22x22/apps -icon_DATA = inkscape.png - -EXTRA_DIST = $(icon_DATA) - diff --git a/share/icons/application/24x24/Makefile.am b/share/icons/application/24x24/Makefile.am deleted file mode 100644 index 8fc9b59aa..000000000 --- a/share/icons/application/24x24/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -icondir = $(datadir)/icons/hicolor/24x24/apps -icon_DATA = inkscape.png - -EXTRA_DIST = $(icon_DATA) - diff --git a/share/icons/application/256x256/Makefile.am b/share/icons/application/256x256/Makefile.am deleted file mode 100644 index 34969a4a9..000000000 --- a/share/icons/application/256x256/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -icondir = $(datadir)/icons/hicolor/256x256/apps -icon_DATA = inkscape.png - -EXTRA_DIST = $(icon_DATA) - diff --git a/share/icons/application/32x32/Makefile.am b/share/icons/application/32x32/Makefile.am deleted file mode 100644 index cdccebd02..000000000 --- a/share/icons/application/32x32/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -icondir = $(datadir)/icons/hicolor/32x32/apps -icon_DATA = inkscape.png - -EXTRA_DIST = $(icon_DATA) - diff --git a/share/icons/application/48x48/Makefile.am b/share/icons/application/48x48/Makefile.am deleted file mode 100644 index ffa5c1a55..000000000 --- a/share/icons/application/48x48/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -icondir = $(datadir)/icons/hicolor/48x48/apps -icon_DATA = inkscape.png - -EXTRA_DIST = $(icon_DATA) - diff --git a/share/icons/application/Makefile.am b/share/icons/application/Makefile.am deleted file mode 100644 index 0e9bb7d7d..000000000 --- a/share/icons/application/Makefile.am +++ /dev/null @@ -1,15 +0,0 @@ -SUBDIRS = 16x16 22x22 24x24 32x32 48x48 256x256 - -gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor - -install-data-hook: update-icon-cache -uninstall-hook: update-icon-cache - -update-icon-cache: - @-if test -z "$(DESTDIR)"; then \ - echo "Updating Gtk icon cache."; \ - $(gtk_update_icon_cache); \ - else \ - echo "*** Icon cache not updated. After (un)install, run this:"; \ - echo "*** $(gtk_update_icon_cache)"; \ - fi diff --git a/share/keys/Makefile.am b/share/keys/Makefile.am deleted file mode 100644 index 98b720c2b..000000000 --- a/share/keys/Makefile.am +++ /dev/null @@ -1,17 +0,0 @@ - -keysdir = $(datadir)/inkscape/keys - -keys_DATA = \ - default.xml \ - inkscape.xml \ - xara.xml \ - macromedia-freehand-mx.xml \ - adobe-illustrator-cs2.xml \ - right-handed-illustration.xml \ - corel-draw-x4.xml \ - corel-draw-x8.xml \ - zoner-draw.xml \ - acd-canvas.xml - -EXTRA_DIST = $(keys_DATA) - diff --git a/share/markers/Makefile.am b/share/markers/Makefile.am deleted file mode 100644 index 5db048146..000000000 --- a/share/markers/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ - -markersdir = $(datadir)/inkscape/markers - -markers_DATA = \ - markers.svg - - -EXTRA_DIST = $(markers_DATA) - diff --git a/share/palettes/Makefile.am b/share/palettes/Makefile.am deleted file mode 100644 index b25b35a06..000000000 --- a/share/palettes/Makefile.am +++ /dev/null @@ -1,38 +0,0 @@ - -palettesdir = $(datadir)/inkscape/palettes - -palettes_DATA = \ - README \ - Android-icon-palette.gpl \ - Blues.gpl \ - echo-palette.gpl \ - Gold.gpl \ - Greens.gpl \ - Gray.gpl \ - Hilite.gpl \ - inkscape.gpl \ - LaTeX-Beamer.gpl \ - Khaki.gpl \ - MATLAB-Jet-72.gpl \ - Reds.gpl \ - Royal.gpl \ - svg.gpl \ - Tango-Palette.gpl \ - Topographic.gpl \ - Ubuntu.gpl \ - webhex.gpl \ - websafe22.gpl \ - windowsXP.gpl \ - palettes.h - -palettes_i18n = \ - inkscape.gpl \ - svg.gpl \ - Tango-Palette.gpl - -palettes.h: i18n.py $(palettes_i18n) - $(srcdir)/i18n.py $(foreach i,$(palettes_i18n),$(srcdir)/$(i)) > $(srcdir)/palettes.h - -EXTRA_DIST = $(palettes_DATA) \ - i18n.py - diff --git a/share/patterns/Makefile.am b/share/patterns/Makefile.am deleted file mode 100644 index 8a0f02ba8..000000000 --- a/share/patterns/Makefile.am +++ /dev/null @@ -1,12 +0,0 @@ - -patternsdir = $(datadir)/inkscape/patterns - -patterns_DATA = \ - README \ - patterns.svg \ - patterns.svg.h - -patterns.svg.h: patterns.svg i18n.py - $(srcdir)/i18n.py $(srcdir)/patterns.svg > $(srcdir)/patterns.svg.h - -EXTRA_DIST = $(patterns_DATA) i18n.py diff --git a/share/screens/Makefile.am b/share/screens/Makefile.am deleted file mode 100644 index f18982221..000000000 --- a/share/screens/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ - -screensdir = $(datadir)/inkscape/screens - -screens_DATA = \ - about.svg - -EXTRA_DIST = $(screens_DATA) - diff --git a/share/symbols/Makefile.am b/share/symbols/Makefile.am deleted file mode 100644 index a7d21d2a8..000000000 --- a/share/symbols/Makefile.am +++ /dev/null @@ -1,17 +0,0 @@ - -symbolsdir = $(datadir)/inkscape/symbols - -# Adding srcdir allows out-of-src builds to work -symbols_DATA = \ - README \ - $(wildcard $(srcdir)/*.svg) \ - symbols.h - -symbols_i18n = $(wildcard $(srcdir)/*.svg) - -symbols.h: i18n.py $(symbols_i18n) - $(srcdir)/i18n.py $(symbols_i18n) > $(srcdir)/symbols.h - -EXTRA_DIST = $(symbols_DATA) \ - i18n.py - diff --git a/share/templates/Makefile.am b/share/templates/Makefile.am deleted file mode 100644 index 9bd6a0ddc..000000000 --- a/share/templates/Makefile.am +++ /dev/null @@ -1,67 +0,0 @@ - -templatesdir = $(datadir)/inkscape/templates - -templates_DATA = \ - README \ - CD_label_120x120.svg \ - default.svg \ - default.be.svg \ - default.ca.svg \ - default.cs.svg \ - default.de.svg \ - default.en_US.svg \ - default.eo.svg \ - default.eu.svg \ - default.es.svg \ - default.fi.svg \ - default.fr.svg \ - default.hu.svg \ - default.is.svg \ - default.it.svg \ - default.ja.svg \ - default.lt.svg \ - default.nl.svg \ - default.pl.svg \ - default.pt_BR.svg \ - default.sk.svg \ - default_pt.svg \ - default_px.svg \ - no_layers.svg \ - LaTeX_Beamer.svg \ - Typography_Canvas.svg \ - templates.h - -templates_i18n = \ - CD_label_120x120.svg \ - default.svg \ - default.be.svg \ - default.ca.svg \ - default.cs.svg \ - default.de.svg \ - default.en_US.svg \ - default.eo.svg \ - default.eu.svg \ - default.es.svg \ - default.fi.svg \ - default.fr.svg \ - default.hu.svg \ - default.is.svg \ - default.it.svg \ - default.ja.svg \ - default.lt.svg \ - default.nl.svg \ - default.pl.svg \ - default.pt_BR.svg \ - default.sk.svg \ - default_pt.svg \ - default_px.svg \ - no_layers.svg \ - LaTeX_Beamer.svg \ - Typography_Canvas.svg - -templates.h: i18n.py $(templates_i18n) - $(srcdir)/i18n.py $(foreach i,$(templates_i18n),$(srcdir)/$(i)) > $(srcdir)/templates.h - -EXTRA_DIST = $(templates_DATA) \ - i18n.py - diff --git a/share/tutorials/Makefile.am b/share/tutorials/Makefile.am deleted file mode 100644 index d625826cb..000000000 --- a/share/tutorials/Makefile.am +++ /dev/null @@ -1,214 +0,0 @@ - -tutorialdir = $(datadir)/inkscape/tutorials - -tutorial_DATA = \ - README \ - edge3d.svg \ - gpl-2.svg \ - making_markers.svg \ - oldguitar.jpg \ - potrace-be.png \ - potrace-ca.png \ - potrace-de.png \ - potrace-el.png \ - potrace-en.png \ - potrace-es.png \ - potrace-eu.png \ - potrace-fr.png \ - potrace-gl.png \ - potrace-hu.png \ - potrace-id.png \ - potrace-ja.png \ - potrace-nl.png \ - potrace.png \ - potrace-pl.png \ - potrace-pt_BR.png \ - potrace-ru.png \ - potrace-sk.png \ - potrace-sl.png \ - potrace-vi.png \ - potrace-zh_CN.png \ - potrace-zh_TW.png \ - tutorial-advanced.svg \ - tutorial-advanced.be.svg \ - tutorial-advanced.ca.svg \ - tutorial-advanced.cs.svg \ - tutorial-advanced.de.svg \ - tutorial-advanced.el.svg \ - tutorial-advanced.es.svg \ - tutorial-advanced.eu.svg \ - tutorial-advanced.fa.svg \ - tutorial-advanced.fr.svg \ - tutorial-advanced.hu.svg \ - tutorial-advanced.id.svg \ - tutorial-advanced.it.svg \ - tutorial-advanced.ja.svg \ - tutorial-advanced.nl.svg \ - tutorial-advanced.pl.svg \ - tutorial-advanced.pt_BR.svg \ - tutorial-advanced.ru.svg \ - tutorial-advanced.sk.svg \ - tutorial-advanced.sl.svg \ - tutorial-advanced.vi.svg \ - tutorial-advanced.zh_CN.svg \ - tutorial-advanced.zh_TW.svg \ - tutorial-basic.svg \ - tutorial-basic.be.svg \ - tutorial-basic.bg.svg \ - tutorial-basic.ca.svg \ - tutorial-basic.cs.svg \ - tutorial-basic.da.svg \ - tutorial-basic.de.svg \ - tutorial-basic.el.svg \ - tutorial-basic.eo.svg \ - tutorial-basic.es.svg \ - tutorial-basic.eu.svg \ - tutorial-basic.fa.svg \ - tutorial-basic.fr.svg \ - tutorial-basic.gl.svg \ - tutorial-basic.hu.svg \ - tutorial-basic.id.svg \ - tutorial-basic.it.svg \ - tutorial-basic.ja.svg \ - tutorial-basic.nl.svg \ - tutorial-basic.nn.svg \ - tutorial-basic.pl.svg \ - tutorial-basic.pt_BR.svg \ - tutorial-basic.ru.svg \ - tutorial-basic.sk.svg \ - tutorial-basic.sl.svg \ - tutorial-basic.tr.svg \ - tutorial-basic.vi.svg \ - tutorial-basic.zh_CN.svg \ - tutorial-basic.zh_TW.svg \ - tutorial-calligraphy.svg \ - tutorial-calligraphy.be.svg \ - tutorial-calligraphy.ca.svg \ - tutorial-calligraphy.cs.svg \ - tutorial-calligraphy.de.svg \ - tutorial-calligraphy.el.svg \ - tutorial-calligraphy.es.svg \ - tutorial-calligraphy.eu.svg \ - tutorial-calligraphy.fa.svg \ - tutorial-calligraphy.fr.svg \ - tutorial-calligraphy.hu.svg \ - tutorial-calligraphy.id.svg \ - tutorial-calligraphy.ja.svg \ - tutorial-calligraphy.nl.svg \ - tutorial-calligraphy.pl.svg \ - tutorial-calligraphy.pt_BR.svg \ - tutorial-calligraphy.ru.svg \ - tutorial-calligraphy.sk.svg \ - tutorial-calligraphy.sl.svg \ - tutorial-calligraphy.vi.svg \ - tutorial-calligraphy.zh_TW.svg \ - tutorial-elements.svg \ - tutorial-elements.be.svg \ - tutorial-elements.ca.svg \ - tutorial-elements.de.svg \ - tutorial-elements.el.svg \ - tutorial-elements.es.svg \ - tutorial-elements.eu.svg \ - tutorial-elements.fa.svg \ - tutorial-elements.fr.svg \ - tutorial-elements.hu.svg \ - tutorial-elements.id.svg \ - tutorial-elements.ja.svg \ - tutorial-elements.nl.svg \ - tutorial-elements.pl.svg \ - tutorial-elements.pt_BR.svg \ - tutorial-elements.ru.svg \ - tutorial-elements.sk.svg \ - tutorial-elements.sl.svg \ - tutorial-elements.zh_TW.svg \ - tutorial-interpolate.svg \ - tutorial-interpolate.be.svg \ - tutorial-interpolate.de.svg \ - tutorial-interpolate.el.svg \ - tutorial-interpolate.fr.svg \ - tutorial-interpolate.hu.svg \ - tutorial-interpolate.ja.svg \ - tutorial-interpolate.nl.svg \ - tutorial-interpolate.pl.svg \ - tutorial-interpolate.pt_BR.svg \ - tutorial-interpolate.ru.svg \ - tutorial-interpolate.sk.svg \ - tutorial-interpolate.sl.svg \ - tutorial-interpolate.vi.svg \ - tutorial-interpolate.zh_TW.svg \ - tutorial-shapes.svg \ - tutorial-shapes.be.svg \ - tutorial-shapes.ca.svg \ - tutorial-shapes.cs.svg \ - tutorial-shapes.de.svg \ - tutorial-shapes.el.svg \ - tutorial-shapes.es.svg \ - tutorial-shapes.eu.svg \ - tutorial-shapes.fa.svg \ - tutorial-shapes.fr.svg \ - tutorial-shapes.hu.svg \ - tutorial-shapes.id.svg \ - tutorial-shapes.it.svg \ - tutorial-shapes.ja.svg \ - tutorial-shapes.nl.svg \ - tutorial-shapes.pl.svg \ - tutorial-shapes.pt_BR.svg \ - tutorial-shapes.ru.svg \ - tutorial-shapes.sk.svg \ - tutorial-shapes.sl.svg \ - tutorial-shapes.vi.svg \ - tutorial-shapes.zh_CN.svg \ - tutorial-shapes.zh_TW.svg \ - tutorial-tips.svg \ - tutorial-tips.be.svg \ - tutorial-tips.ca.svg \ - tutorial-tips.de.svg \ - tutorial-tips.el.svg \ - tutorial-tips.es.svg \ - tutorial-tips.eu.svg \ - tutorial-tips.fa.svg \ - tutorial-tips.fr.svg \ - tutorial-shapes.gl.svg \ - tutorial-tips.hu.svg \ - tutorial-tips.ja.svg \ - tutorial-tips.id.svg \ - tutorial-tips.it.svg \ - tutorial-tips.nl.svg \ - tutorial-tips.pl.svg \ - tutorial-tips.pt_BR.svg \ - tutorial-tips.ru.svg \ - tutorial-tips.sk.svg \ - tutorial-tips.sl.svg \ - tutorial-tips.vi.svg \ - tutorial-tips.zh_TW.svg \ - tutorial-tracing.svg \ - tutorial-tracing.be.svg \ - tutorial-tracing.ca.svg \ - tutorial-tracing.de.svg \ - tutorial-tracing.el.svg \ - tutorial-tracing.es.svg \ - tutorial-tracing.eu.svg \ - tutorial-tracing.fa.svg \ - tutorial-tracing.fr.svg \ - tutorial-tracing.gl.svg \ - tutorial-tracing.hu.svg \ - tutorial-tracing.id.svg \ - tutorial-tracing.ja.svg \ - tutorial-tracing.nl.svg \ - tutorial-tracing.pl.svg \ - tutorial-tracing.pt_BR.svg \ - tutorial-tracing.ru.svg \ - tutorial-tracing.sk.svg \ - tutorial-tracing.sl.svg \ - tutorial-tracing.vi.svg \ - tutorial-tracing.zh_TW.svg \ - tutorial-tracing-pixelart.svg \ - tutorial-tracing-pixelart.el.svg \ - tutorial-tracing-pixelart.fr.svg \ - tutorial-tracing-pixelart.nl.svg \ - tutorial-tracing-pixelart.zh_TW.svg \ - tux.png - - -EXTRA_DIST = $(tutorial_DATA) - diff --git a/share/ui/Makefile.am b/share/ui/Makefile.am deleted file mode 100644 index 1e55ea58f..000000000 --- a/share/ui/Makefile.am +++ /dev/null @@ -1,11 +0,0 @@ - -uidir = $(datadir)/inkscape/ui - -ui_DATA = \ - keybindings.rc \ - menus-bars.xml \ - style.css \ - toolbox.xml \ - units.xml - -EXTRA_DIST = $(ui_DATA) diff --git a/src/2geom/Makefile_insert b/src/2geom/Makefile_insert deleted file mode 100644 index 4d41de297..000000000 --- a/src/2geom/Makefile_insert +++ /dev/null @@ -1,131 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -2geom/all: 2geom/lib2geom.a - -2geom/clean: - rm -f 2geom/lib2geom.a $(2geom_lib2geom_a_OBJECTS) - -2geom_lib2geom_a_SOURCES = \ - 2geom/2geom.h \ - 2geom/affine.cpp \ - 2geom/affine.h \ - 2geom/angle.h \ - 2geom/basic-intersection.cpp \ - 2geom/basic-intersection.h \ - 2geom/bezier-clipping.cpp \ - 2geom/bezier-curve.cpp \ - 2geom/bezier-curve.h \ - 2geom/bezier.cpp \ - 2geom/bezier.h \ - 2geom/bezier-to-sbasis.h \ - 2geom/bezier-utils.cpp \ - 2geom/bezier-utils.h \ - 2geom/cairo-path-sink.cpp \ - 2geom/cairo-path-sink.h \ - 2geom/choose.h \ - 2geom/circle.cpp \ - 2geom/circle.h \ - 2geom/circulator.h \ - 2geom/CMakeLists.txt \ - 2geom/concepts.h \ - 2geom/conicsec.cpp \ - 2geom/conicsec.h \ - 2geom/conic_section_clipper_cr.h \ - 2geom/conic_section_clipper.h \ - 2geom/conic_section_clipper_impl.cpp \ - 2geom/conic_section_clipper_impl.h \ - 2geom/convex-hull.cpp \ - 2geom/convex-hull.h \ - 2geom/coord.cpp \ - 2geom/coord.h \ - 2geom/crossing.cpp \ - 2geom/crossing.h \ - 2geom/curve.cpp \ - 2geom/curve.h \ - 2geom/curves.h \ - 2geom/d2.h \ - 2geom/d2-sbasis.cpp \ - 2geom/ellipse.cpp \ - 2geom/ellipse.h \ - 2geom/elliptical-arc.cpp \ - 2geom/elliptical-arc.h \ - 2geom/elliptical-arc-from-sbasis.cpp \ - 2geom/exception.h \ - 2geom/forward.h \ - 2geom/generic-interval.h \ - 2geom/generic-rect.h \ - 2geom/geom.cpp \ - 2geom/geom.h \ - 2geom/intersection.h \ - 2geom/intersection-graph.cpp \ - 2geom/intersection-graph.h \ - 2geom/interval.h \ - 2geom/int-interval.h \ - 2geom/int-point.h \ - 2geom/int-rect.h \ - 2geom/linear.h \ - 2geom/line.cpp \ - 2geom/line.h \ - 2geom/math-utils.h \ - 2geom/nearest-time.cpp \ - 2geom/nearest-time.h \ - 2geom/ord.h \ - 2geom/path.cpp \ - 2geom/path.h \ - 2geom/path-intersection.cpp \ - 2geom/path-intersection.h \ - 2geom/path-sink.cpp \ - 2geom/path-sink.h \ - 2geom/pathvector.cpp \ - 2geom/pathvector.h \ - 2geom/piecewise.cpp \ - 2geom/piecewise.h \ - 2geom/point.cpp \ - 2geom/point.h \ - 2geom/polynomial.cpp \ - 2geom/polynomial.h \ - 2geom/ray.h \ - 2geom/rect.cpp \ - 2geom/rect.h \ - 2geom/recursive-bezier-intersection.cpp \ - 2geom/sbasis-2d.cpp \ - 2geom/sbasis-2d.h \ - 2geom/sbasis.cpp \ - 2geom/sbasis-curve.h \ - 2geom/sbasis-geometric.cpp \ - 2geom/sbasis-geometric.h \ - 2geom/sbasis.h \ - 2geom/sbasis-math.cpp \ - 2geom/sbasis-math.h \ - 2geom/sbasis-poly.cpp \ - 2geom/sbasis-poly.h \ - 2geom/sbasis-roots.cpp \ - 2geom/sbasis-to-bezier.cpp \ - 2geom/sbasis-to-bezier.h \ - 2geom/solve-bezier.cpp \ - 2geom/solve-bezier-one-d.cpp \ - 2geom/solve-bezier-parametric.cpp \ - 2geom/solver.h \ - 2geom/svg-path-parser.cpp \ - 2geom/svg-path-parser.h \ - 2geom/svg-path-writer.cpp \ - 2geom/svg-path-writer.h \ - 2geom/sweep-bounds.cpp \ - 2geom/sweep-bounds.h \ - 2geom/sweeper.h \ - 2geom/toposweep.cpp \ - 2geom/toposweep.h \ - 2geom/transforms.cpp \ - 2geom/transforms.h \ - 2geom/utils.cpp \ - 2geom/utils.h \ - 2geom/numeric/fitting-model.h \ - 2geom/numeric/fitting-tool.h \ - 2geom/numeric/linear_system.h \ - 2geom/numeric/matrix.cpp \ - 2geom/numeric/matrix.h \ - 2geom/numeric/symmetric-matrix-fs.h \ - 2geom/numeric/symmetric-matrix-fs-operation.h \ - 2geom/numeric/symmetric-matrix-fs-trace.h \ - 2geom/numeric/vector.h - diff --git a/src/Makefile.am b/src/Makefile.am deleted file mode 100644 index 9076aaac3..000000000 --- a/src/Makefile.am +++ /dev/null @@ -1,278 +0,0 @@ -## Process this file with automake to produce Makefile.in - -# ################################################ -# G L O B A L -# ################################################ - -# Should work in either automake1.7 or 1.8, but 1.6 doesn't -# handle foo/libfoo_a_CPPFLAGS properly (if at all). -# Update: We now avoid setting foo/libfoo_a_CPPFLAGS, -# so perhaps 1.6 will work. -AUTOMAKE_OPTIONS = 1.7 subdir-objects - -# Executables compiled by "make" and installed by "make install" -bin_PROGRAMS = inkscape inkview - -# Libraries which should be compiled by "make" but not installed. -# Use this only for libraries that are really standalone, rather than for -# source tree subdirectories. -noinst_LIBRARIES = \ - libcroco/libcroco.a \ - libavoid/libavoid.a \ - libuemf/libuemf.a \ - libcola/libcola.a \ - inkgc/libinkgc.a \ - libvpsc/libvpsc.a \ - livarot/libvarot.a \ - 2geom/lib2geom.a \ - libdepixelize/libdepixelize.a \ - util/libutil.a \ - libinkversion.a -# libinkscape.a - -all_libs = \ - $(noinst_LIBRARIES) \ - $(INKSCAPE_LIBS) \ - $(INKSCAPE_CXX_DEPS_LIBS) \ - $(EXIF_LIBS) \ - $(GNOME_VFS_LIBS) \ - $(XFT_LIBS) \ - $(FREETYPE_LIBS) \ - $(kdeldadd) \ - $(win32ldflags) \ - $(LIBWPG_LIBS) \ - $(LIBVISIO_LIBS) \ - $(LIBCDR_LIBS) \ - $(DBUS_LIBS) \ - $(IMAGEMAGICK_LIBS) \ - $(X11_LIBS) - -# Add sources common for Inkscape and Inkview to this variable. -ink_common_sources = -# Add Inkscape-only sources here. -inkscape_SOURCES = -# Add Inkview-only sources here. -inkview_SOURCES = -# Add sources that are built from meta files -BUILT_SOURCES = -# Extra files to distribute -EXTRA_DIST = - -# C++-specific flags defined here -AM_CXXFLAGS = \ - $(INKSCAPE_CXX_DEPS_CFLAGS) - -AM_CPPFLAGS = \ - -I$(top_srcdir)/cxxtest \ - -I$(builddir)/extension/dbus \ - $(EXIF_CFLAGS) \ - $(FREETYPE_CFLAGS) \ - $(GNOME_PRINT_CFLAGS) \ - $(GNOME_VFS_CFLAGS) \ - $(IMAGEMAGICK_CFLAGS) \ - $(LIBWPG_CFLAGS) \ - $(LIBVISIO_CFLAGS) \ - $(LIBCDR_CFLAGS) \ - $(DBUS_CFLAGS) \ - $(XFT_CFLAGS) \ - $(LCMS_CFLAGS) \ - $(POPPLER_CFLAGS) \ - $(POPPLER_GLIB_CFLAGS) \ - -DPOTRACE=\"potrace\" \ - $(INKSCAPE_CFLAGS) \ - $(WIN32_CFLAGS) \ - $(X11_CFLAGS) - -CXXTEST_TEMPLATE = $(srcdir)/cxxtest-template.tpl -CXXTESTGENFLAGS = --root --have-eh --template=$(CXXTEST_TEMPLATE) -CXXTESTGEN = $(top_srcdir)/cxxtest/cxxtestgen.pl $(CXXTESTGENFLAGS) -# Add test cases to this variable -CXXTEST_TESTSUITES = - -# ################################################ -# -# E X T R A -# -# ################################################ - -if PLATFORM_WIN32 -win32_sources = winmain.cpp registrytool.cpp registrytool.h -win32ldflags = -lcomdlg32 -lmscms -mwindows = -mwindows -endif - -# Include all partial makefiles from subdirectories -include Makefile_insert -include display/Makefile_insert -include extension/Makefile_insert -include extension/dbus/Makefile_insert -include extension/implementation/Makefile_insert -include extension/internal/Makefile_insert -include filters/Makefile_insert -include helper/Makefile_insert -include io/Makefile_insert -include libcroco/Makefile_insert -include inkgc/Makefile_insert -include libnrtype/Makefile_insert -include libavoid/Makefile_insert -include livarot/Makefile_insert -include live_effects/Makefile_insert -include live_effects/parameter/Makefile_insert -include libvpsc/Makefile_insert -include libcola/Makefile_insert -include libuemf/Makefile_insert -include svg/Makefile_insert -include widgets/Makefile_insert -include debug/Makefile_insert -include xml/Makefile_insert -include ui/Makefile_insert -include ui/cache/Makefile_insert -include ui/dialog/Makefile_insert -include ui/tool/Makefile_insert -include ui/tools/Makefile_insert -include ui/view/Makefile_insert -include ui/widget/Makefile_insert -include util/Makefile_insert -include trace/Makefile_insert -include 2geom/Makefile_insert -include libdepixelize/Makefile_insert - -# Extra files not mentioned as sources to include in the source tarball -EXTRA_DIST += \ - 2geom/makefile.in \ - debug/makefile.in \ - display/makefile.in \ - extension/implementation/makefile.in \ - extension/internal/makefile.in \ - extension/makefile.in \ - filters/makefile.in \ - helper/makefile.in \ - io/makefile.in \ - libavoid/makefile.in \ - libcroco/makefile.in \ - libnrtype/makefile.in \ - libuemf/makefile.in \ - livarot/makefile.in \ - live_effects/makefile.in \ - live_effects/parameter/makefile.in \ - svg/makefile.in \ - trace/makefile.in \ - ui/cache/makefile.in \ - ui/dialog/makefile.in \ - ui/makefile.in \ - ui/view/makefile.in \ - ui/widget/makefile.in \ - util/makefile.in \ - util/makefile.in \ - widgets/makefile.in \ - xml/makefile.in \ - \ - $(top_srcdir)/Doxyfile \ - extension/internal/emf-inout.cpp \ - extension/internal/emf-inout.h \ - extension/internal/emf-print.cpp \ - extension/internal/emf-print.h \ - helper/sp-marshal.list \ - io/crystalegg.xml \ - io/doc2html.xsl \ - show-preview.bmp \ - winconsole.cpp \ - libdepixelize/makefile.in \ - $(CXXTEST_TEMPLATE) - -# Extra files to remove when doing "make distclean" -DISTCLEANFILES = \ - helper/sp-marshal.cpp \ - helper/sp-marshal.h \ - inkscape-version.cpp - -# ################################################ -# B I N A R I E S -# ################################################ - -# this should speed up the build -#libinkscape_a_SOURCES = $(ink_common_sources) - -inkscape_SOURCES += main.cpp $(ink_common_sources) $(win32_sources) -inkscape_LDADD = $(all_libs) -inkscape_LDFLAGS = $(kdeldflags) $(mwindows) - -inkview_SOURCES += inkview.cpp $(ink_common_sources) $(win32_sources) -inkview_LDADD = $(all_libs) -inkview_LDFLAGS = $(mwindows) - -# ################################################ -# VERSION REPORTING -# ################################################ - -libinkversion_a_SOURCES = inkscape-version.cpp inkscape-version.h - -if USE_BZR_VERSION -inkscape_version_deps = $(top_srcdir)/.bzr/branch/last-revision -endif - -# If this is an BZR snapshot build, regenerate this file every time -# someone updates the BZR working directory. -inkscape-version.cpp: $(inkscape_version_deps) - VER_PREFIX="$(VERSION)";\ - VER_BZRREV=" r`bzr revno --tree $(top_srcdir)`"; \ - if test ! -z "`bzr status -S -V $(srcdir)`"; then \ - VER_CUSTOM=" custom"; \ - fi; \ - VERSION="$$VER_PREFIX$$VER_BZRREV$$VER_CUSTOM"; \ - echo "namespace Inkscape { " \ - "char const *version_string = \"$$VERSION\"; " \ - "}" > inkscape-version.new.cpp; \ - if cmp -s inkscape-version.new.cpp inkscape-version.cpp; then \ - rm inkscape-version.new.cpp; \ - else \ - mv inkscape-version.new.cpp inkscape-version.cpp; \ - fi; \ - echo $$VERSION - -# ################################# -# ## TESTING STUFF (make check) ### -# ################################# - -# List of all programs that should be built before testing. Note that this is -# different from TESTS, because some tests can be scripts that don't -# need to be built. There should be one test program per directory. -# automake adds $(EXEEXT) to check_PROGRAMS items but not to TESTS items: -# TESTS items can be scripts etc. -check_PROGRAMS = cxxtests - -# streamtest is unfinished and can't handle the relocations done during -# "make distcheck". - -# List of all tests to be run. -TESTS = $(check_PROGRAMS) -check-local: - $(top_srcdir)/share/extensions/test/run-all-extension-tests - -# FIXME: Currently, a number of cxxtest tests fail. These should be fixed and -# the XFAIL_TESTS build target should be removed. -# See the following Launchpad bugs: -# -# LP #1208013 <cxxtest: curve-test.h fails> -# LP #1208005 <cxxtest: svg-path-geom-test.h fails> -# LP #1207502 <cxxtest: svg-affine-test.h fails> - -XFAIL_TESTS = $(check_PROGRAMS) - -# including the testsuites here ensures that they get distributed -cxxtests_SOURCES = cxxtests.cpp $(CXXTEST_TESTSUITES) $(ink_common_sources) $(win32_sources) -cxxtests_LDADD = $(all_libs) - -cxxtests.cpp: $(CXXTEST_TESTSUITES) $(CXXTEST_TEMPLATE) - $(CXXTESTGEN) -o cxxtests.cpp $(CXXTEST_TESTSUITES) - -# ################################################ -# D I S T -# ################################################ - -dist-hook: - mkdir $(distdir)/pixmaps - cp $(srcdir)/pixmaps/*xpm $(distdir)/pixmaps - -distclean-local: - rm -f cxxtests.xml cxxtests.log diff --git a/src/Makefile_insert b/src/Makefile_insert deleted file mode 100644 index 55fde4dd2..000000000 --- a/src/Makefile_insert +++ /dev/null @@ -1,251 +0,0 @@ -## Makefile.am fragment, included by src/Makefile.am. - -ink_common_sources += \ - util/find-last-if.h \ - util/longest-common-suffix.h \ - remove-last.h \ - attributes.cpp attributes.h \ - attribute-rel-svg.cpp attribute-rel-svg.h \ - attribute-rel-css.cpp attribute-rel-css.h \ - attribute-rel-util.cpp attribute-rel-util.h \ - attribute-sort-util.cpp attribute-sort-util.h \ - axis-manip.cpp axis-manip.h \ - bad-uri-exception.h \ - box3d.cpp box3d.h \ - box3d-side.cpp box3d-side.h \ - brokenimage.xpm \ - cms-color-types.h \ - cms-system.h \ - color.cpp color.h \ - color-profile.cpp color-profile.h \ - color-profile-cms-fns.h \ - color-rgba.h \ - colorspace.h \ - composite-undo-stack-observer.cpp \ - composite-undo-stack-observer.h \ - conditions.cpp conditions.h \ - conn-avoid-ref.cpp conn-avoid-ref.h \ - console-output-undo-observer.h console-output-undo-observer.cpp \ - context-fns.cpp context-fns.h \ - decimal-round.h \ - desktop.cpp desktop.h \ - desktop-events.cpp desktop-events.h \ - desktop-style.cpp desktop-style.h \ - device-manager.cpp device-manager.h \ - dir-util.cpp dir-util.h \ - document.cpp document.h document-private.h \ - document-subset.cpp document-subset.h \ - document-undo.cpp document-undo.h \ - ege-color-prof-tracker.cpp ege-color-prof-tracker.h \ - enums.h \ - event-log.cpp event-log.h event.h \ - extract-uri.cpp extract-uri.h \ - file.cpp file.h \ - fill-or-stroke.h \ - filter-chemistry.cpp filter-chemistry.h \ - filter-enums.cpp filter-enums.h \ - gc-anchored.cpp gc-anchored.h \ - gc-finalized.cpp gc-finalized.h \ - gradient-chemistry.cpp gradient-chemistry.h \ - gradient-drag.cpp gradient-drag.h \ - graphlayout.cpp graphlayout.h \ - guide-snapper.cpp guide-snapper.h \ - help.cpp help.h \ - helper-fns.h \ - helper/pixbuf-ops.cpp \ - helper/pixbuf-ops.h \ - icon-size.h \ - id-clash.cpp id-clash.h \ - inkscape.cpp inkscape.h \ - isinf.h \ - knot.cpp knot.h \ - knot-enums.h \ - knotholder.cpp knotholder.h \ - knot-holder-entity.h knot-holder-entity.cpp \ - knot-ptr.h knot-ptr.cpp \ - layer-fns.cpp layer-fns.h \ - layer-manager.cpp layer-manager.h \ - layer-model.cpp layer-model.h \ - line-geometry.cpp line-geometry.h \ - line-snapper.cpp line-snapper.h \ - macros.h \ - main-cmdlineact.cpp main-cmdlineact.h \ - media.cpp media.h \ - menus-skeleton.h \ - message-context.cpp message-context.h \ - message.h \ - message-stack.cpp message-stack.h \ - mod360.cpp mod360.h \ - object-hierarchy.cpp object-hierarchy.h \ - object-snapper.cpp object-snapper.h \ - path-chemistry.cpp path-chemistry.h \ - path-prefix.h \ - persp3d.cpp persp3d.h \ - persp3d-reference.cpp persp3d-reference.h \ - perspective-line.cpp perspective-line.h \ - preferences.cpp preferences.h \ - preferences-skeleton.h \ - prefix.cpp prefix.h \ - print.cpp print.h \ - profile-manager.cpp profile-manager.h \ - proj_pt.cpp proj_pt.h \ - pure-transform.cpp pure-transform.h \ - removeoverlap.cpp removeoverlap.h \ - rdf.cpp rdf.h \ - resource-manager.cpp resource-manager.h \ - require-config.h \ - round.h \ - rubberband.cpp rubberband.h \ - satisfied-guide-cns.cpp satisfied-guide-cns.h \ - selcue.cpp selcue.h \ - selection-chemistry.cpp selection-chemistry.h \ - selection.cpp selection.h \ - selection-describer.cpp selection-describer.h \ - seltrans.cpp seltrans.h \ - seltrans-handles.cpp seltrans-handles.h \ - shortcuts.cpp shortcuts.h \ - snap.cpp snap.h \ - snap-enums.h snap-candidate.h \ - snapped-curve.cpp snapped-curve.h \ - snapped-line.cpp snapped-line.h \ - snapped-point.cpp snapped-point.h \ - snapper.cpp snapper.h \ - snap-preferences.cpp snap-preferences.h \ - sp-anchor.cpp sp-anchor.h \ - sp-clippath.cpp sp-clippath.h \ - sp-conn-end.cpp sp-conn-end.h \ - sp-conn-end-pair.cpp sp-conn-end-pair.h \ - sp-cursor.cpp sp-cursor.h \ - sp-defs.cpp sp-defs.h \ - sp-desc.cpp sp-desc.h \ - sp-ellipse.cpp sp-ellipse.h \ - sp-factory.h sp-factory.cpp \ - sp-filter.cpp sp-filter.h number-opt-number.h \ - sp-filter-primitive.cpp sp-filter-primitive.h \ - sp-filter-reference.cpp sp-filter-reference.h \ - sp-filter-units.h \ - sp-flowdiv.h sp-flowdiv.cpp \ - sp-flowregion.h sp-flowregion.cpp \ - sp-flowtext.h sp-flowtext.cpp \ - sp-font.cpp sp-font.h \ - sp-font-face.cpp sp-font-face.h \ - sp-glyph.cpp sp-glyph.h \ - sp-glyph-kerning.cpp sp-glyph-kerning.h \ - sp-gradient.cpp sp-gradient.h \ - sp-gradient-reference.cpp sp-gradient-reference.h \ - sp-gradient-spread.h \ - sp-gradient-units.h \ - sp-gradient-vector.h \ - sp-guide-attachment.h \ - sp-guide-constraint.h \ - sp-guide.cpp sp-guide.h \ - sp-hatch.cpp sp-hatch.h \ - sp-hatch-path.cpp sp-hatch-path.h \ - sp-image.cpp sp-image.h \ - sp-item.cpp sp-item.h \ - sp-item-group.cpp sp-item-group.h \ - sp-item-notify-moveto.cpp sp-item-notify-moveto.h \ - sp-item-rm-unsatisfied-cns.cpp sp-item-rm-unsatisfied-cns.h \ - sp-item-transform.cpp sp-item-transform.h \ - sp-item-update-cns.cpp sp-item-update-cns.h \ - sp-linear-gradient.cpp sp-linear-gradient.h \ - sp-line.cpp sp-line.h \ - splivarot.cpp splivarot.h \ - sp-lpe-item.cpp sp-lpe-item.h \ - sp-marker.cpp sp-marker.h \ - sp-marker-loc.h \ - sp-mask.cpp sp-mask.h \ - sp-metadata.cpp sp-metadata.h \ - sp-mesh.cpp sp-mesh.h \ - sp-mesh-array.cpp sp-mesh-array.h \ - sp-mesh-patch.cpp sp-mesh-patch.h \ - sp-mesh-row.cpp sp-mesh-row.h \ - sp-missing-glyph.cpp sp-missing-glyph.h \ - sp-namedview.cpp sp-namedview.h \ - sp-object.cpp sp-object.h \ - sp-object-group.cpp sp-object-group.h \ - sp-offset.cpp sp-offset.h \ - sp-paint-server.cpp sp-paint-server.h \ - sp-paint-server-reference.h \ - sp-path.cpp sp-path.h \ - sp-pattern.cpp sp-pattern.h \ - sp-polygon.cpp sp-polygon.h \ - sp-polyline.cpp sp-polyline.h \ - sp-radial-gradient.cpp sp-radial-gradient.h \ - sp-rect.cpp sp-rect.h \ - sp-root.cpp sp-root.h \ - sp-script.cpp sp-script.h \ - sp-shape.cpp sp-shape.h \ - sp-solid-color.cpp sp-solid-color.h \ - sp-spiral.cpp sp-spiral.h \ - sp-star.cpp sp-star.h \ - sp-stop.cpp sp-stop.h \ - sp-string.cpp sp-string.h \ - sp-style-elem.cpp sp-style-elem.h \ - sp-switch.cpp sp-switch.h \ - sp-symbol.cpp sp-symbol.h \ - sp-tag.cpp sp-tag.h \ - sp-tag-use.cpp sp-tag-use.h \ - sp-tag-use-reference.cpp sp-tag-use-reference.h \ - sp-text.cpp sp-text.h \ - sp-textpath.h \ - sp-title.cpp sp-title.h \ - sp-tref.cpp sp-tref.h \ - sp-tref-reference.cpp sp-tref-reference.h \ - sp-tspan.cpp sp-tspan.h \ - sp-use.cpp sp-use.h \ - sp-use-reference.cpp sp-use-reference.h \ - streq.h \ - strneq.h \ - style.cpp style.h \ - style-enums.h \ - style-internal.cpp style-internal.h \ - svg-profile.h \ - svg-view.cpp svg-view.h \ - svg-view-widget.cpp svg-view-widget.h \ - syseq.h \ - text-chemistry.cpp text-chemistry.h \ - text-editing.cpp text-editing.h \ - text-tag-attributes.h \ - transf_mat_3x4.cpp transf_mat_3x4.h \ - unclump.cpp unclump.h \ - undo-stack-observer.h \ - unicoderange.cpp unicoderange.h \ - uri.cpp uri.h \ - uri-references.cpp uri-references.h \ - vanishing-point.cpp vanishing-point.h \ - verbs.cpp verbs.h \ - version.cpp version.h \ - viewbox.cpp viewbox.h - -# Additional dependencies - -desktop.$(OBJEXT): helper/sp-marshal.h -document.$(OBJEXT): helper/sp-marshal.h -inkscape.$(OBJEXT): helper/sp-marshal.h -knot.$(OBJEXT): helper/sp-marshal.h -selection.$(OBJEXT): helper/sp-marshal.h -sp-object.$(OBJEXT): helper/sp-marshal.h -view.$(OBJEXT): helper/sp-marshal.h - -# ###################### -# ### CxxTest stuff #### -# ###################### -CXXTEST_TESTSUITES += \ - $(srcdir)/MultiPrinter.h \ - $(srcdir)/TRPIFormatter.h \ - $(srcdir)/PylogFormatter.h \ - $(srcdir)/attributes-test.h \ - $(srcdir)/color-profile-test.h \ - $(srcdir)/dir-util-test.h \ - $(srcdir)/extract-uri-test.h \ - $(srcdir)/marker-test.h \ - $(srcdir)/mod360-test.h \ - $(srcdir)/object-test.h \ - $(srcdir)/preferences-test.h \ - $(srcdir)/round-test.h \ - $(srcdir)/sp-gradient-test.h \ - $(srcdir)/sp-style-elem-test.h \ - $(srcdir)/style-test.h \ - $(srcdir)/test-helpers.h \ - $(srcdir)/verbs-test.h diff --git a/src/debug/Makefile_insert b/src/debug/Makefile_insert deleted file mode 100644 index 47cc2b704..000000000 --- a/src/debug/Makefile_insert +++ /dev/null @@ -1,15 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -ink_common_sources += \ - debug/demangle.cpp debug/demangle.h \ - debug/event.h \ - debug/event-tracker.h \ - debug/heap.cpp debug/heap.h \ - debug/gc-heap.h \ - debug/logger.cpp debug/logger.h \ - debug/log-display-config.cpp debug/log-display-config.h \ - debug/simple-event.h \ - debug/sysv-heap.cpp debug/sysv-heap.h \ - debug/gdk-event-latency-tracker.cpp debug/gdk-event-latency-tracker.h \ - debug/timestamp.cpp debug/timestamp.h - diff --git a/src/display/Makefile_insert b/src/display/Makefile_insert deleted file mode 100644 index 419852f7d..000000000 --- a/src/display/Makefile_insert +++ /dev/null @@ -1,125 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -display/canvas-arena.$(OBJEXT): helper/sp-marshal.h -display/sp-canvas.$(OBJEXT): helper/sp-marshal.h - -ink_common_sources += \ - display/cairo-templates.h \ - display/cairo-utils.cpp \ - display/cairo-utils.h \ - display/canvas-arena.cpp \ - display/canvas-arena.h \ - display/canvas-axonomgrid.cpp \ - display/canvas-axonomgrid.h \ - display/canvas-bpath.cpp \ - display/canvas-bpath.h \ - display/canvas-grid.cpp \ - display/canvas-grid.h \ - display/canvas-temporary-item.cpp \ - display/canvas-temporary-item.h \ - display/canvas-temporary-item-list.cpp \ - display/canvas-temporary-item-list.h \ - display/canvas-text.cpp \ - display/canvas-text.h \ - display/curve.cpp \ - display/curve.h \ - display/drawing.cpp \ - display/drawing.h \ - display/drawing-context.cpp \ - display/drawing-context.h \ - display/drawing-group.cpp \ - display/drawing-group.h \ - display/drawing-image.cpp \ - display/drawing-image.h \ - display/drawing-item.cpp \ - display/drawing-item.h \ - display/drawing-pattern.cpp \ - display/drawing-pattern.h \ - display/drawing-shape.cpp \ - display/drawing-shape.h \ - display/drawing-surface.cpp \ - display/drawing-surface.h \ - display/drawing-text.cpp \ - display/drawing-text.h \ - display/gnome-canvas-acetate.cpp \ - display/gnome-canvas-acetate.h \ - display/grayscale.cpp \ - display/grayscale.h \ - display/guideline.cpp \ - display/guideline.h \ - display/nr-3dutils.cpp \ - display/nr-3dutils.h \ - display/nr-filter-blend.cpp \ - display/nr-filter-blend.h \ - display/nr-filter-colormatrix.cpp \ - display/nr-filter-colormatrix.h \ - display/nr-filter-component-transfer.cpp \ - display/nr-filter-component-transfer.h \ - display/nr-filter-composite.cpp \ - display/nr-filter-composite.h \ - display/nr-filter-convolve-matrix.cpp \ - display/nr-filter-convolve-matrix.h \ - display/nr-filter.cpp \ - display/nr-filter-diffuselighting.cpp \ - display/nr-filter-diffuselighting.h \ - display/nr-filter-displacement-map.cpp \ - display/nr-filter-displacement-map.h \ - display/nr-filter-flood.cpp \ - display/nr-filter-flood.h \ - display/nr-filter-gaussian.cpp \ - display/nr-filter-gaussian.h \ - display/nr-filter.h \ - display/nr-filter-image.cpp \ - display/nr-filter-image.h \ - display/nr-filter-merge.cpp \ - display/nr-filter-merge.h \ - display/nr-filter-morphology.cpp \ - display/nr-filter-morphology.h \ - display/nr-filter-offset.cpp \ - display/nr-filter-offset.h \ - display/nr-filter-primitive.cpp \ - display/nr-filter-primitive.h \ - display/nr-filter-slot.cpp \ - display/nr-filter-slot.h \ - display/nr-filter-specularlighting.cpp \ - display/nr-filter-specularlighting.h \ - display/nr-filter-tile.cpp \ - display/nr-filter-tile.h \ - display/nr-filter-turbulence.cpp \ - display/nr-filter-turbulence.h \ - display/nr-filter-types.h \ - display/nr-filter-units.cpp \ - display/nr-filter-units.h \ - display/nr-filter-utils.h \ - display/nr-light.cpp \ - display/nr-light.h \ - display/nr-light-types.h \ - display/nr-style.cpp \ - display/nr-style.h \ - display/nr-svgfonts.cpp \ - display/nr-svgfonts.h \ - display/rendermode.h \ - display/snap-indicator.cpp \ - display/snap-indicator.h \ - display/sodipodi-ctrl.cpp \ - display/sodipodi-ctrl.h \ - display/sodipodi-ctrlrect.cpp \ - display/sodipodi-ctrlrect.h \ - display/sp-canvas.cpp \ - display/sp-canvas.h \ - display/sp-canvas-item.h \ - display/sp-canvas-group.h \ - display/sp-canvas-util.cpp \ - display/sp-canvas-util.h \ - display/sp-ctrlcurve.cpp \ - display/sp-ctrlcurve.h \ - display/sp-ctrlline.cpp \ - display/sp-ctrlline.h \ - display/sp-ctrlquadr.cpp \ - display/sp-ctrlquadr.h - -# ###################### -# ### CxxTest stuff #### -# ###################### -CXXTEST_TESTSUITES += \ - $(srcdir)/display/curve-test.h diff --git a/src/extension/Makefile_insert b/src/extension/Makefile_insert deleted file mode 100644 index fb9713904..000000000 --- a/src/extension/Makefile_insert +++ /dev/null @@ -1,54 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -ink_common_sources += \ - extension/extension.cpp \ - extension/extension.h \ - extension/db.cpp \ - extension/db.h \ - extension/dependency.cpp \ - extension/dependency.h \ - extension/error-file.cpp \ - extension/error-file.h \ - extension/execution-env.cpp \ - extension/execution-env.h \ - extension/init.cpp \ - extension/init.h \ - extension/loader.h \ - extension/loader.cpp \ - extension/param/parameter.h \ - extension/param/parameter.cpp \ - extension/param/notebook.h \ - extension/param/notebook.cpp \ - extension/param/bool.h \ - extension/param/bool.cpp \ - extension/param/color.h \ - extension/param/color.cpp \ - extension/param/description.h \ - extension/param/description.cpp \ - extension/param/enum.h \ - extension/param/enum.cpp \ - extension/param/float.h \ - extension/param/float.cpp \ - extension/param/int.h \ - extension/param/int.cpp \ - extension/param/radiobutton.h \ - extension/param/radiobutton.cpp \ - extension/param/string.h \ - extension/param/string.cpp \ - extension/prefdialog.cpp \ - extension/prefdialog.h \ - extension/system.cpp \ - extension/system.h \ - extension/timer.cpp \ - extension/timer.h \ - extension/input.h \ - extension/input.cpp \ - extension/output.h \ - extension/output.cpp \ - extension/effect.h \ - extension/effect.cpp \ - extension/patheffect.h \ - extension/patheffect.cpp \ - extension/print.h \ - extension/print.cpp - diff --git a/src/extension/dbus/Makefile_insert b/src/extension/dbus/Makefile_insert deleted file mode 100644 index 192651d87..000000000 --- a/src/extension/dbus/Makefile_insert +++ /dev/null @@ -1,111 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -if WITH_DBUS - -############################# -# Sources for DBus interface -############################# - -ink_common_sources += \ - extension/dbus/dbus-init.cpp \ - extension/dbus/dbus-init.h \ - extension/dbus/application-interface.cpp \ - extension/dbus/application-interface.h \ - extension/dbus/document-interface.cpp \ - extension/dbus/document-interface.h \ - extension/dbus/org.inkscape.service.in - -########################### -# Build DBus wrapper files -########################### - -extension/dbus/application-server-glue.h: extension/dbus/application-interface.xml - dbus-binding-tool --mode=glib-server --output=$@ --prefix=application_interface $^ - -extension/dbus/document-server-glue.h: extension/dbus/document-interface.xml - dbus-binding-tool --mode=glib-server --output=$@ --prefix=document_interface $^ - -extension/dbus/document-client-glue.h: extension/dbus/document-interface.xml - dbus-binding-tool --mode=glib-client --output=$@ --prefix=document_interface $^ - -BUILT_SOURCES += \ - extension/dbus/application-server-glue.h \ - extension/dbus/document-server-glue.h \ - extension/dbus/document-client-glue.h - -########################### -# Distribut DBus interface -########################### - -EXTRA_DIST += \ - extension/dbus/application-interface.xml \ - extension/dbus/document-interface.xml - -########################### -# DBus Activation Service -########################### - -# Dbus service file -servicedir = $(DBUSSERVICEDIR) -service_in_files = extension/dbus/org.inkscape.service.in -service_DATA = $(service_in_files:.service.in=.service) - -# Rule to make the service file with bindir expanded -$(service_DATA): $(service_in_files) Makefile - @sed -e "s|bindir|$(prefix)|" $<> $@ - -############################ -# DBus Interface Helper Lib -############################ - -lib_LTLIBRARIES = \ - libinkdbus.la - -libinkdbusincludedir = $(includedir)/libinkdbus-0.48/libinkdbus -libinkdbusinclude_HEADERS = \ - extension/dbus/wrapper/inkscape-dbus-wrapper.h - -libinkdbus_la_SOURCES = \ - extension/dbus/wrapper/inkscape-dbus-wrapper.h \ - extension/dbus/wrapper/inkscape-dbus-wrapper.c - -libinkdbus_la_LDFLAGS = \ - -version-info 0:0:0 \ - -no-undefined \ - -export-symbols-regex "^[^_d].*" - -libinkdbus_la_CFLAGS = \ - $(DBUS_CFLAGS) \ - $(INKSCAPE_CFLAGS) \ - -I$(builddir)/extension/dbus \ - -Wall - -libinkdbus_la_LIBADD = \ - $(DBUS_LIBS) \ - $(INKSCAPE_LIBS) - -############################ -# DBus Pkgconfig file -############################ - -pkgconfig_DATA = extension/dbus/wrapper/inkdbus.pc -pkgconfigdir = $(libdir)/pkgconfig - -else # WITH_DBUS - -EXTRA_DIST += \ - extension/dbus/dbus-init.cpp \ - extension/dbus/dbus-init.h \ - extension/dbus/application-interface.cpp \ - extension/dbus/application-interface.h \ - extension/dbus/document-interface.cpp \ - extension/dbus/document-interface.h \ - extension/dbus/wrapper/inkscape-dbus-wrapper.h \ - extension/dbus/wrapper/inkscape-dbus-wrapper.c \ - extension/dbus/wrapper/inkdbus.pc \ - extension/dbus/org.inkscape.service.in \ - extension/dbus/application-interface.xml \ - extension/dbus/document-interface.xml - -endif - diff --git a/src/extension/implementation/Makefile_insert b/src/extension/implementation/Makefile_insert deleted file mode 100644 index 1b9080f1a..000000000 --- a/src/extension/implementation/Makefile_insert +++ /dev/null @@ -1,9 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -ink_common_sources += \ - extension/implementation/implementation.cpp \ - extension/implementation/implementation.h \ - extension/implementation/script.cpp \ - extension/implementation/script.h \ - extension/implementation/xslt.cpp \ - extension/implementation/xslt.h diff --git a/src/extension/internal/Makefile_insert b/src/extension/internal/Makefile_insert deleted file mode 100644 index 125776d41..000000000 --- a/src/extension/internal/Makefile_insert +++ /dev/null @@ -1,173 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -if WITH_LIBWPG -ink_common_sources += \ - extension/internal/wpg-input.cpp \ - extension/internal/wpg-input.h -endif - -if WITH_LIBVISIO -ink_common_sources += \ - extension/internal/vsd-input.cpp \ - extension/internal/vsd-input.h -endif - -if WITH_LIBCDR -ink_common_sources += \ - extension/internal/cdr-input.cpp \ - extension/internal/cdr-input.h -endif - -if USE_IMAGE_MAGICK -ink_common_sources += \ - extension/internal/bitmap/imagemagick.cpp \ - extension/internal/bitmap/imagemagick.h \ - extension/internal/bitmap/adaptiveThreshold.cpp \ - extension/internal/bitmap/adaptiveThreshold.h \ - extension/internal/bitmap/addNoise.cpp \ - extension/internal/bitmap/addNoise.h \ - extension/internal/bitmap/blur.cpp \ - extension/internal/bitmap/blur.h \ - extension/internal/bitmap/channel.cpp \ - extension/internal/bitmap/channel.h \ - extension/internal/bitmap/charcoal.cpp \ - extension/internal/bitmap/charcoal.h \ - extension/internal/bitmap/colorize.cpp \ - extension/internal/bitmap/colorize.h \ - extension/internal/bitmap/contrast.cpp \ - extension/internal/bitmap/contrast.h \ - extension/internal/bitmap/crop.cpp \ - extension/internal/bitmap/crop.h \ - extension/internal/bitmap/cycleColormap.cpp \ - extension/internal/bitmap/cycleColormap.h \ - extension/internal/bitmap/despeckle.cpp \ - extension/internal/bitmap/despeckle.h \ - extension/internal/bitmap/edge.cpp \ - extension/internal/bitmap/edge.h \ - extension/internal/bitmap/emboss.cpp \ - extension/internal/bitmap/emboss.h \ - extension/internal/bitmap/enhance.cpp \ - extension/internal/bitmap/enhance.h \ - extension/internal/bitmap/equalize.cpp \ - extension/internal/bitmap/equalize.h \ - extension/internal/bitmap/gaussianBlur.cpp \ - extension/internal/bitmap/gaussianBlur.h \ - extension/internal/bitmap/implode.cpp \ - extension/internal/bitmap/implode.h \ - extension/internal/bitmap/level.cpp \ - extension/internal/bitmap/level.h \ - extension/internal/bitmap/levelChannel.cpp \ - extension/internal/bitmap/levelChannel.h \ - extension/internal/bitmap/medianFilter.cpp \ - extension/internal/bitmap/medianFilter.h \ - extension/internal/bitmap/modulate.cpp \ - extension/internal/bitmap/modulate.h \ - extension/internal/bitmap/negate.cpp \ - extension/internal/bitmap/negate.h \ - extension/internal/bitmap/normalize.cpp \ - extension/internal/bitmap/normalize.h \ - extension/internal/bitmap/oilPaint.cpp \ - extension/internal/bitmap/oilPaint.h \ - extension/internal/bitmap/opacity.cpp \ - extension/internal/bitmap/opacity.h \ - extension/internal/bitmap/raise.cpp \ - extension/internal/bitmap/raise.h \ - extension/internal/bitmap/reduceNoise.cpp \ - extension/internal/bitmap/reduceNoise.h \ - extension/internal/bitmap/sample.cpp \ - extension/internal/bitmap/sample.h \ - extension/internal/bitmap/shade.cpp \ - extension/internal/bitmap/shade.h \ - extension/internal/bitmap/sharpen.cpp \ - extension/internal/bitmap/sharpen.h \ - extension/internal/bitmap/solarize.cpp \ - extension/internal/bitmap/solarize.h \ - extension/internal/bitmap/spread.cpp \ - extension/internal/bitmap/spread.h \ - extension/internal/bitmap/swirl.cpp \ - extension/internal/bitmap/swirl.h \ - extension/internal/bitmap/threshold.cpp \ - extension/internal/bitmap/threshold.h \ - extension/internal/bitmap/unsharpmask.cpp \ - extension/internal/bitmap/unsharpmask.h \ - extension/internal/bitmap/wave.cpp \ - extension/internal/bitmap/wave.h -endif - -ink_common_sources += \ - extension/internal/bluredge.h \ - extension/internal/bluredge.cpp \ - extension/internal/clear-n_.h \ - extension/internal/grid.h \ - extension/internal/grid.cpp \ - extension/internal/gimpgrad.h \ - extension/internal/gimpgrad.cpp \ - extension/internal/svg.h \ - extension/internal/svg.cpp \ - extension/internal/svgz.h \ - extension/internal/svgz.cpp \ - extension/internal/cairo-ps-out.h \ - extension/internal/cairo-ps-out.cpp \ - extension/internal/cairo-render-context.h \ - extension/internal/cairo-render-context.cpp \ - extension/internal/cairo-renderer.h \ - extension/internal/cairo-renderer.cpp \ - extension/internal/cairo-renderer-pdf-out.h \ - extension/internal/cairo-renderer-pdf-out.cpp \ - extension/internal/cairo-png-out.h \ - extension/internal/cairo-png-out.cpp \ - extension/internal/javafx-out.cpp \ - extension/internal/javafx-out.h \ - extension/internal/gdkpixbuf-input.h \ - extension/internal/gdkpixbuf-input.cpp \ - extension/internal/latex-text-renderer.h \ - extension/internal/latex-text-renderer.cpp \ - extension/internal/pdfinput/svg-builder.h \ - extension/internal/pdfinput/svg-builder.cpp \ - extension/internal/pdfinput/pdf-parser.h \ - extension/internal/pdfinput/pdf-parser.cpp \ - extension/internal/pdfinput/pdf-input.h \ - extension/internal/pdfinput/pdf-input.cpp \ - extension/internal/pov-out.cpp \ - extension/internal/pov-out.h \ - extension/internal/odf.cpp \ - extension/internal/odf.h \ - extension/internal/latex-pstricks.cpp \ - extension/internal/latex-pstricks.h \ - extension/internal/latex-pstricks-out.cpp \ - extension/internal/latex-pstricks-out.h \ - extension/internal/filter/bevels.h \ - extension/internal/filter/blurs.h \ - extension/internal/filter/bumps.h \ - extension/internal/filter/color.h \ - extension/internal/filter/distort.h \ - extension/internal/filter/filter.h \ - extension/internal/filter/image.h \ - extension/internal/filter/morphology.h \ - extension/internal/filter/overlays.h \ - extension/internal/filter/paint.h \ - extension/internal/filter/protrusions.h \ - extension/internal/filter/shadows.h \ - extension/internal/filter/textures.h \ - extension/internal/filter/transparency.h \ - extension/internal/filter/filter-all.cpp \ - extension/internal/filter/filter-file.cpp \ - extension/internal/filter/filter.cpp \ - extension/internal/filter/filter.h \ - extension/internal/text_reassemble.c \ - extension/internal/text_reassemble.h \ - extension/internal/emf-print.h \ - extension/internal/emf-print.cpp \ - extension/internal/emf-inout.h \ - extension/internal/emf-inout.cpp \ - extension/internal/metafile-inout.h \ - extension/internal/metafile-inout.cpp \ - extension/internal/metafile-print.h \ - extension/internal/metafile-print.cpp \ - extension/internal/wmf-print.h \ - extension/internal/wmf-print.cpp \ - extension/internal/wmf-inout.h \ - extension/internal/wmf-inout.cpp \ - extension/internal/image-resolution.h \ - extension/internal/image-resolution.cpp - diff --git a/src/filters/Makefile_insert b/src/filters/Makefile_insert deleted file mode 100644 index ea9ff4b56..000000000 --- a/src/filters/Makefile_insert +++ /dev/null @@ -1,46 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -ink_common_sources += \ - filters/blend.cpp \ - filters/blend.h \ - filters/colormatrix.cpp \ - filters/colormatrix.h \ - filters/componenttransfer.cpp \ - filters/componenttransfer-funcnode.cpp \ - filters/componenttransfer-funcnode.h \ - filters/componenttransfer.h \ - filters/composite.cpp \ - filters/composite.h \ - filters/convolvematrix.cpp \ - filters/convolvematrix.h \ - filters/diffuselighting.cpp \ - filters/diffuselighting.h \ - filters/displacementmap.cpp \ - filters/displacementmap.h \ - filters/distantlight.cpp \ - filters/distantlight.h \ - filters/flood.cpp \ - filters/flood.h \ - filters/gaussian-blur.cpp \ - filters/gaussian-blur.h \ - filters/image.cpp \ - filters/image.h \ - filters/merge.cpp \ - filters/merge.h \ - filters/mergenode.cpp \ - filters/mergenode.h \ - filters/morphology.cpp \ - filters/morphology.h \ - filters/offset.cpp \ - filters/offset.h \ - filters/pointlight.cpp \ - filters/pointlight.h \ - filters/specularlighting.cpp \ - filters/specularlighting.h \ - filters/spotlight.cpp \ - filters/spotlight.h \ - filters/tile.cpp \ - filters/tile.h \ - filters/turbulence.cpp \ - filters/turbulence.h - diff --git a/src/helper/Makefile_insert b/src/helper/Makefile_insert deleted file mode 100644 index e59fcfb70..000000000 --- a/src/helper/Makefile_insert +++ /dev/null @@ -1,45 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -helper/unit-menu.$(OBJEXT): helper/sp-marshal.h - -ink_common_sources += \ - helper/action.cpp \ - helper/action.h \ - helper/action-context.cpp \ - helper/action-context.h \ - helper/geom.cpp \ - helper/geom.h \ - helper/geom-curves.h \ - helper/geom-nodetype.cpp \ - helper/geom-nodetype.h \ - helper/geom-pathstroke.cpp \ - helper/geom-pathstroke.h \ - helper/gnome-utils.cpp \ - helper/gnome-utils.h \ - helper/mathfns.h \ - helper/png-write.cpp \ - helper/png-write.h \ - helper/sp-marshal.cpp \ - helper/sp-marshal.h \ - helper/window.cpp \ - helper/window.h \ - helper/stock-items.cpp \ - helper/stock-items.h - -# cmp exits with status 0 when there are no differences. "if" executes the commands -# after "then" when the exit status of the if command is 0 (this is crazy). -helper/sp-marshal.h: helper/sp-marshal.list - glib-genmarshal --prefix=sp_marshal --header $(srcdir)/helper/sp-marshal.list > helper/tmp.sp-marshal.h - if cmp -s helper/sp-marshal.h helper/tmp.sp-marshal.h; \ - then rm helper/tmp.sp-marshal.h; \ - else mv helper/tmp.sp-marshal.h helper/sp-marshal.h; fi - -helper/sp-marshal.cpp: helper/sp-marshal.list helper/sp-marshal.h - ( echo '#include "helper/sp-marshal.h"' && \ - glib-genmarshal --prefix=sp_marshal --body $(srcdir)/helper/sp-marshal.list ) \ - > helper/tmp.sp-marshal.cpp; \ - if cmp -s helper/sp-marshal.cpp helper/tmp.sp-marshal.cpp; \ - then rm helper/tmp.sp-marshal.cpp; \ - else mv helper/tmp.sp-marshal.cpp helper/sp-marshal.cpp; fi - -helper/sp-marshal.cpp helper/sp-marshal.h: helper/sp-marshal.list diff --git a/src/inkgc/Makefile_insert b/src/inkgc/Makefile_insert deleted file mode 100644 index 58aa39bb9..000000000 --- a/src/inkgc/Makefile_insert +++ /dev/null @@ -1,13 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -inkgc/all: inkgc/libinkgc.a - -inkgc/clean: - rm -f inkgc/libinkgc.a $(inkgc_libinkgc_a_OBJECTS) - -inkgc_libinkgc_a_SOURCES = \ - inkgc/gc.cpp \ - inkgc/gc-alloc.h \ - inkgc/gc-core.h \ - inkgc/gc-managed.h \ - inkgc/gc-soft-ptr.h diff --git a/src/io/Makefile_insert b/src/io/Makefile_insert deleted file mode 100644 index 35119ec7b..000000000 --- a/src/io/Makefile_insert +++ /dev/null @@ -1,26 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -ink_common_sources += \ - io/base64stream.h \ - io/base64stream.cpp \ - io/bufferstream.cpp \ - io/bufferstream.h \ - io/gzipstream.cpp \ - io/gzipstream.h \ - io/inkjar.cpp \ - io/inkjar.h \ - io/inkscapestream.cpp \ - io/inkscapestream.h \ - io/resource.cpp \ - io/resource.h \ - io/stringstream.cpp \ - io/stringstream.h \ - io/sys.h \ - io/sys.cpp \ - io/uristream.cpp \ - io/uristream.h \ - io/xsltstream.cpp \ - io/xsltstream.h - -#io_streamtest_SOURCES = io/streamtest.cpp -#io_streamtest_LDADD = $(all_libs) diff --git a/src/libavoid/Makefile_insert b/src/libavoid/Makefile_insert deleted file mode 100644 index 3a9b97cef..000000000 --- a/src/libavoid/Makefile_insert +++ /dev/null @@ -1,37 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -libavoid/all: libavoid/libavoid.a - -libavoid/clean: - rm -f libavoid/libavoid.a $(libavoid_libavoid_a_OBJECTS) - -libavoid_libavoid_a_SOURCES = \ - libavoid/assertions.h \ - libavoid/connector.cpp \ - libavoid/connector.h \ - libavoid/debug.h \ - libavoid/geometry.cpp \ - libavoid/geometry.h \ - libavoid/geomtypes.cpp \ - libavoid/geomtypes.h \ - libavoid/graph.cpp \ - libavoid/graph.h \ - libavoid/makepath.cpp \ - libavoid/makepath.h \ - libavoid/orthogonal.cpp \ - libavoid/orthogonal.h \ - libavoid/vpsc.cpp \ - libavoid/vpsc.h \ - libavoid/router.cpp \ - libavoid/router.h \ - libavoid/shape.cpp \ - libavoid/shape.h \ - libavoid/timer.cpp \ - libavoid/timer.h \ - libavoid/vertices.cpp \ - libavoid/vertices.h \ - libavoid/visibility.cpp \ - libavoid/visibility.h \ - libavoid/viscluster.cpp \ - libavoid/viscluster.h \ - libavoid/libavoid.h diff --git a/src/libcola/Makefile_insert b/src/libcola/Makefile_insert deleted file mode 100644 index dc032a289..000000000 --- a/src/libcola/Makefile_insert +++ /dev/null @@ -1,18 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -libcola/all: libcola.a - -libcola/clean: - rm -f libcola/libcola.a $(libcola_libcola_a_OBJECTS) - -libcola_libcola_a_SOURCES = libcola/cola.h\ - libcola/cola.cpp\ - libcola/conjugate_gradient.cpp\ - libcola/conjugate_gradient.h\ - libcola/gradient_projection.cpp\ - libcola/gradient_projection.h\ - libcola/shortest_paths.cpp\ - libcola/shortest_paths.h\ - libcola/straightener.h\ - libcola/straightener.cpp\ - libcola/connected_components.cpp diff --git a/src/libcroco/Makefile_insert b/src/libcroco/Makefile_insert deleted file mode 100644 index 97ed49ee8..000000000 --- a/src/libcroco/Makefile_insert +++ /dev/null @@ -1,64 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -libcroco/all: libcroco/libcroco.a - -libcroco/clean: - rm -f libcroco/libcroco.a $(libcroco_libcroco_a_OBJECTS) - -libcroco_libcroco_a_SOURCES = \ - libcroco/cr-utils.c \ - libcroco/cr-utils.h \ - libcroco/cr-input.c \ - libcroco/cr-input.h \ - libcroco/cr-enc-handler.c \ - libcroco/cr-enc-handler.h \ - libcroco/cr-num.c \ - libcroco/cr-num.h \ - libcroco/cr-rgb.c \ - libcroco/cr-rgb.h \ - libcroco/cr-token.c \ - libcroco/cr-token.h \ - libcroco/cr-tknzr.c \ - libcroco/cr-tknzr.h \ - libcroco/cr-term.c \ - libcroco/cr-term.h \ - libcroco/cr-attr-sel.c \ - libcroco/cr-attr-sel.h \ - libcroco/cr-pseudo.c \ - libcroco/cr-pseudo.h \ - libcroco/cr-additional-sel.c \ - libcroco/cr-additional-sel.h \ - libcroco/cr-simple-sel.c \ - libcroco/cr-simple-sel.h \ - libcroco/cr-selector.c \ - libcroco/cr-selector.h \ - libcroco/cr-doc-handler.c \ - libcroco/cr-doc-handler.h \ - libcroco/cr-parser.c \ - libcroco/cr-parser.h \ - libcroco/cr-declaration.c \ - libcroco/cr-declaration.h \ - libcroco/cr-statement.c \ - libcroco/cr-statement.h \ - libcroco/cr-stylesheet.c \ - libcroco/cr-stylesheet.h \ - libcroco/cr-cascade.c \ - libcroco/cr-cascade.h \ - libcroco/cr-om-parser.c \ - libcroco/cr-om-parser.h \ - libcroco/cr-style.c \ - libcroco/cr-style.h \ - libcroco/cr-libxml-node-iface.c \ - libcroco/cr-libxml-node-iface.h \ - libcroco/cr-node-iface.h \ - libcroco/cr-sel-eng.c \ - libcroco/cr-sel-eng.h \ - libcroco/cr-fonts.c \ - libcroco/cr-fonts.h \ - libcroco/cr-prop-list.c \ - libcroco/cr-prop-list.h \ - libcroco/cr-parsing-location.c \ - libcroco/cr-parsing-location.h \ - libcroco/cr-string.c \ - libcroco/cr-string.h \ - libcroco/libcroco.h diff --git a/src/libdepixelize/Makefile_insert b/src/libdepixelize/Makefile_insert deleted file mode 100644 index 8aed7244f..000000000 --- a/src/libdepixelize/Makefile_insert +++ /dev/null @@ -1,22 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -libdepixelize/all: libdepixelize/libdepixelize.a - -libdepixelize/clean: - rm -f libdepixelize/libdepixelize.a $(libdepixelize_libdepixelize_a_OBJECTS) - -libdepixelize_libdepixelize_a_SOURCES = \ - libdepixelize/kopftracer2011.cpp \ - libdepixelize/kopftracer2011.h \ - libdepixelize/splines.h \ - libdepixelize/priv/branchless.h \ - libdepixelize/priv/colorspace.h \ - libdepixelize/priv/curvature.h \ - libdepixelize/priv/homogeneoussplines.h \ - libdepixelize/priv/integral.h \ - libdepixelize/priv/iterator.h \ - libdepixelize/priv/optimization-kopf2011.h \ - libdepixelize/priv/pixelgraph.h \ - libdepixelize/priv/point.h \ - libdepixelize/priv/simplifiedvoronoi.h \ - libdepixelize/priv/splines-kopf2011.h diff --git a/src/libnrtype/Makefile_insert b/src/libnrtype/Makefile_insert deleted file mode 100644 index ab9465daa..000000000 --- a/src/libnrtype/Makefile_insert +++ /dev/null @@ -1,28 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -ink_common_sources += \ - libnrtype/boundary-type.h \ - libnrtype/font-glyph.h \ - libnrtype/font-instance.h \ - libnrtype/font-style.h \ - libnrtype/nr-type-primitives.cpp \ - libnrtype/nr-type-primitives.h \ - libnrtype/FontFactory.cpp \ - libnrtype/FontFactory.h \ - libnrtype/FontInstance.cpp \ - libnrtype/font-lister.h \ - libnrtype/font-lister.cpp \ - libnrtype/one-box.h \ - libnrtype/one-glyph.h \ - libnrtype/one-para.h \ - libnrtype/text-boundary.h \ - libnrtype/TextWrapper.cpp \ - libnrtype/TextWrapper.h \ - libnrtype/Layout-TNG-Compute.cpp \ - libnrtype/Layout-TNG-Input.cpp \ - libnrtype/Layout-TNG-OutIter.cpp \ - libnrtype/Layout-TNG-Output.cpp \ - libnrtype/Layout-TNG-Scanline-Maker.h \ - libnrtype/Layout-TNG-Scanline-Makers.cpp \ - libnrtype/Layout-TNG.cpp \ - libnrtype/Layout-TNG.h diff --git a/src/libuemf/Makefile_insert b/src/libuemf/Makefile_insert deleted file mode 100644 index 427a0e80e..000000000 --- a/src/libuemf/Makefile_insert +++ /dev/null @@ -1,30 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -libuemf/all: libuemf.a - -libuemf/clean: - rm -f libuemf/libuemf.a $(libuemf_libuemf_a_OBJECTS) - -libuemf_libuemf_a_SOURCES = \ - libuemf/uemf.c \ - libuemf/uemf.h \ - libuemf/uemf_endian.c \ - libuemf/uemf_endian.h \ - libuemf/uemf_print.c \ - libuemf/uemf_print.h \ - libuemf/uemf_safe.c \ - libuemf/uemf_safe.h \ - libuemf/uemf_utf.c \ - libuemf/uemf_utf.h \ - libuemf/uwmf.c \ - libuemf/uwmf.h \ - libuemf/uwmf_endian.c \ - libuemf/uwmf_endian.h \ - libuemf/uwmf_print.c \ - libuemf/uwmf_print.h \ - libuemf/upmf.c \ - libuemf/upmf.h \ - libuemf/upmf_print.c \ - libuemf/upmf_print.h \ - libuemf/symbol_convert.c \ - libuemf/symbol_convert.h diff --git a/src/libvpsc/Makefile_insert b/src/libvpsc/Makefile_insert deleted file mode 100644 index cb05be6c0..000000000 --- a/src/libvpsc/Makefile_insert +++ /dev/null @@ -1,23 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. -libvpsc/all: libvpsc/libvpsc.a - -libvpsc/clean: - rm -f libvpsc/libvpsc.a $(libvpsc_libvpsc_a_OBJECTS) - -libvpsc_libvpsc_a_SOURCES = libvpsc/block.cpp\ - libvpsc/blocks.cpp\ - libvpsc/constraint.cpp\ - libvpsc/generate-constraints.cpp\ - libvpsc/pairingheap/PairingHeap.cpp\ - libvpsc/remove_rectangle_overlap.cpp\ - libvpsc/solve_VPSC.cpp\ - libvpsc/variable.cpp\ - libvpsc/block.h\ - libvpsc/blocks.h\ - libvpsc/constraint.h\ - libvpsc/generate-constraints.h\ - libvpsc/pairingheap/PairingHeap.h\ - libvpsc/pairingheap/dsexceptions.h\ - libvpsc/remove_rectangle_overlap.h\ - libvpsc/solve_VPSC.h\ - libvpsc/variable.h diff --git a/src/livarot/Makefile_insert b/src/livarot/Makefile_insert deleted file mode 100644 index 69078d073..000000000 --- a/src/livarot/Makefile_insert +++ /dev/null @@ -1,41 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -livarot/all: livarot/libvarot.a - -livarot/clean: - rm -f livarot/libvarot.a $(livarot_libvarot_a_OBJECTS) - -livarot_libvarot_a_SOURCES = \ - livarot/AVL.cpp \ - livarot/AVL.h \ - livarot/AlphaLigne.cpp \ - livarot/AlphaLigne.h \ - livarot/BitLigne.cpp \ - livarot/BitLigne.h \ - livarot/float-line.cpp \ - livarot/float-line.h \ - livarot/int-line.cpp \ - livarot/int-line.h \ - livarot/LivarotDefs.h \ - livarot/Path.cpp \ - livarot/Path.h \ - livarot/PathConversion.cpp \ - livarot/PathCutting.cpp \ - livarot/PathOutline.cpp \ - livarot/PathSimplify.cpp \ - livarot/PathStroke.cpp \ - livarot/Shape.cpp \ - livarot/Shape.h \ - livarot/ShapeDraw.cpp \ - livarot/ShapeMisc.cpp \ - livarot/ShapeRaster.cpp \ - livarot/ShapeSweep.cpp \ - livarot/sweep-tree-list.cpp \ - livarot/sweep-tree-list.h \ - livarot/sweep-tree.cpp \ - livarot/sweep-tree.h \ - livarot/sweep-event.cpp \ - livarot/sweep-event.h \ - livarot/sweep-event-queue.h \ - livarot/path-description.h \ - livarot/path-description.cpp diff --git a/src/live_effects/Makefile_insert b/src/live_effects/Makefile_insert deleted file mode 100644 index b5bee55c8..000000000 --- a/src/live_effects/Makefile_insert +++ /dev/null @@ -1,115 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -ink_common_sources += \ - live_effects/effect.cpp \ - live_effects/effect.h \ - live_effects/effect-enum.h \ - live_effects/lpeobject.cpp \ - live_effects/lpeobject.h \ - live_effects/lpegroupbbox.cpp \ - live_effects/lpegroupbbox.h \ - live_effects/lpeobject-reference.cpp \ - live_effects/lpeobject-reference.h \ - live_effects/lpe-patternalongpath.cpp \ - live_effects/lpe-patternalongpath.h \ - live_effects/lpe-bendpath.cpp \ - live_effects/lpe-bendpath.h \ - live_effects/lpe-dynastroke.cpp \ - live_effects/lpe-dynastroke.h \ - live_effects/lpe-extrude.cpp \ - live_effects/lpe-extrude.h \ - live_effects/lpe-sketch.cpp \ - live_effects/lpe-sketch.h \ - live_effects/lpe-knot.cpp \ - live_effects/lpe-knot.h \ - live_effects/lpe-vonkoch.cpp \ - live_effects/lpe-vonkoch.h \ - live_effects/lpe-rough-hatches.cpp \ - live_effects/lpe-rough-hatches.h \ - live_effects/lpe-curvestitch.cpp \ - live_effects/lpe-curvestitch.h \ - live_effects/lpe-constructgrid.cpp \ - live_effects/lpe-constructgrid.h \ - live_effects/lpe-fillet-chamfer.cpp \ - live_effects/lpe-fillet-chamfer.h \ - live_effects/lpe-gears.cpp \ - live_effects/lpe-gears.h \ - live_effects/lpe-interpolate.cpp \ - live_effects/lpe-interpolate.h \ - live_effects/lpe-interpolate_points.cpp \ - live_effects/lpe-interpolate_points.h \ - live_effects/lpe-test-doEffect-stack.cpp \ - live_effects/lpe-test-doEffect-stack.h \ - live_effects/lpe-bspline.cpp \ - live_effects/lpe-bspline.h \ - live_effects/lpe-lattice.cpp \ - live_effects/lpe-lattice.h \ - live_effects/lpe-lattice2.cpp \ - live_effects/lpe-lattice2.h \ - live_effects/lpe-roughen.cpp \ - live_effects/lpe-roughen.h \ - live_effects/lpe-show_handles.cpp \ - live_effects/lpe-show_handles.h \ - live_effects/lpe-simplify.cpp \ - live_effects/lpe-simplify.h \ - live_effects/lpe-envelope.cpp \ - live_effects/lpe-envelope.h \ - live_effects/lpe-spiro.cpp \ - live_effects/lpe-spiro.h \ - live_effects/lpe-tangent_to_curve.cpp \ - live_effects/lpe-tangent_to_curve.h \ - live_effects/lpe-perp_bisector.cpp \ - live_effects/lpe-perp_bisector.h \ - live_effects/spiro.h \ - live_effects/spiro.cpp \ - live_effects/spiro-converters.h \ - live_effects/spiro-converters.cpp \ - live_effects/lpe-circle_with_radius.cpp \ - live_effects/lpe-circle_with_radius.h \ - live_effects/lpe-perspective_path.cpp \ - live_effects/lpe-perspective_path.h \ - live_effects/lpe-perspective-envelope.cpp \ - live_effects/lpe-perspective-envelope.h \ - live_effects/lpe-mirror_symmetry.cpp \ - live_effects/lpe-mirror_symmetry.h \ - live_effects/lpe-circle_3pts.cpp \ - live_effects/lpe-circle_3pts.h \ - live_effects/lpe-transform_2pts.cpp \ - live_effects/lpe-transform_2pts.h \ - live_effects/lpe-angle_bisector.cpp \ - live_effects/lpe-angle_bisector.h \ - live_effects/lpe-parallel.cpp \ - live_effects/lpe-parallel.h \ - live_effects/lpe-copy_rotate.cpp \ - live_effects/lpe-copy_rotate.h \ - live_effects/lpe-powerstroke.cpp \ - live_effects/lpe-powerstroke.h \ - live_effects/lpe-powerstroke-interpolators.h \ - live_effects/lpe-offset.cpp \ - live_effects/lpe-offset.h \ - live_effects/lpe-clone-original.cpp \ - live_effects/lpe-clone-original.h \ - live_effects/lpe-ruler.cpp \ - live_effects/lpe-ruler.h \ - live_effects/lpe-recursiveskeleton.cpp \ - live_effects/lpe-recursiveskeleton.h \ - live_effects/lpe-text_label.cpp \ - live_effects/lpe-text_label.h \ - live_effects/lpe-path_length.cpp \ - live_effects/lpe-path_length.h \ - live_effects/lpe-line_segment.cpp \ - live_effects/lpe-line_segment.h \ - live_effects/lpe-bounding-box.cpp \ - live_effects/lpe-bounding-box.h \ - live_effects/lpe-attach-path.cpp \ - live_effects/lpe-attach-path.h \ - live_effects/lpe-fill-between-strokes.cpp \ - live_effects/lpe-fill-between-strokes.h \ - live_effects/lpe-fill-between-many.cpp \ - live_effects/lpe-fill-between-many.h \ - live_effects/lpe-ellipse_5pts.cpp \ - live_effects/lpe-ellipse_5pts.h \ - live_effects/lpe-jointype.cpp \ - live_effects/lpe-jointype.h \ - live_effects/lpe-taperstroke.cpp \ - live_effects/lpe-taperstroke.h diff --git a/src/live_effects/parameter/Makefile_insert b/src/live_effects/parameter/Makefile_insert deleted file mode 100644 index bd1c5b600..000000000 --- a/src/live_effects/parameter/Makefile_insert +++ /dev/null @@ -1,36 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -ink_common_sources += \ - live_effects/parameter/parameter.cpp \ - live_effects/parameter/parameter.h \ - live_effects/parameter/array.cpp \ - live_effects/parameter/array.h \ - live_effects/parameter/bool.cpp \ - live_effects/parameter/bool.h \ - live_effects/parameter/random.cpp \ - live_effects/parameter/random.h \ - live_effects/parameter/point.cpp \ - live_effects/parameter/point.h \ - live_effects/parameter/enum.h \ - live_effects/parameter/path-reference.cpp \ - live_effects/parameter/path-reference.h \ - live_effects/parameter/path.cpp \ - live_effects/parameter/path.h \ - live_effects/parameter/originalpath.cpp \ - live_effects/parameter/originalpath.h \ - live_effects/parameter/originalpatharray.cpp \ - live_effects/parameter/originalpatharray.h \ - live_effects/parameter/powerstrokepointarray.cpp \ - live_effects/parameter/powerstrokepointarray.h \ - live_effects/parameter/filletchamferpointarray.cpp \ - live_effects/parameter/filletchamferpointarray.h \ - live_effects/parameter/text.cpp \ - live_effects/parameter/text.h \ - live_effects/parameter/transformedpoint.cpp \ - live_effects/parameter/transformedpoint.h \ - live_effects/parameter/togglebutton.cpp \ - live_effects/parameter/togglebutton.h \ - live_effects/parameter/unit.cpp \ - live_effects/parameter/unit.h \ - live_effects/parameter/vector.cpp \ - live_effects/parameter/vector.h diff --git a/src/svg/Makefile_insert b/src/svg/Makefile_insert deleted file mode 100644 index 4f82bdd76..000000000 --- a/src/svg/Makefile_insert +++ /dev/null @@ -1,32 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -ink_common_sources += \ - svg/css-ostringstream.h \ - svg/css-ostringstream.cpp \ - svg/path-string.h \ - svg/path-string.cpp \ - svg/stringstream.h \ - svg/stringstream.cpp \ - svg/strip-trailing-zeros.h \ - svg/strip-trailing-zeros.cpp \ - svg/svg-affine.cpp \ - svg/svg-color.cpp \ - svg/svg-color.h \ - svg/svg-icc-color.h \ - svg/svg-angle.cpp \ - svg/svg-angle.h \ - svg/svg-length.cpp \ - svg/svg-length.h \ - svg/svg-path.cpp \ - svg/svg.h - -# ###################### -# ### CxxTest stuff #### -# ###################### -CXXTEST_TESTSUITES += \ - $(srcdir)/svg/css-ostringstream-test.h \ - $(srcdir)/svg/stringstream-test.h \ - $(srcdir)/svg/svg-affine-test.h \ - $(srcdir)/svg/svg-color-test.h \ - $(srcdir)/svg/svg-length-test.h \ - $(srcdir)/svg/svg-path-geom-test.h diff --git a/src/trace/Makefile_insert b/src/trace/Makefile_insert deleted file mode 100644 index 27353df15..000000000 --- a/src/trace/Makefile_insert +++ /dev/null @@ -1,23 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -if HAVE_POTRACE - -ink_common_sources += \ - trace/pool.h \ - trace/trace.h \ - trace/trace.cpp \ - trace/imagemap-gdk.cpp \ - trace/imagemap-gdk.h \ - trace/imagemap.cpp \ - trace/imagemap.h \ - trace/quantize.h \ - trace/quantize.cpp \ - trace/filterset.h \ - trace/filterset.cpp \ - trace/siox.h \ - trace/siox.cpp \ - trace/potrace/bitmap.h \ - trace/potrace/inkscape-potrace.cpp \ - trace/potrace/inkscape-potrace.h - -endif diff --git a/src/ui/Makefile_insert b/src/ui/Makefile_insert deleted file mode 100644 index bbfdb532c..000000000 --- a/src/ui/Makefile_insert +++ /dev/null @@ -1,31 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -ink_common_sources += \ - ui/clipboard.cpp \ - ui/clipboard.h \ - ui/control-manager.cpp \ - ui/control-manager.h \ - ui/control-types.h \ - ui/dialog-events.cpp \ - ui/dialog-events.h \ - ui/draw-anchor.cpp \ - ui/draw-anchor.h \ - ui/icon-names.h \ - ui/interface.cpp \ - ui/interface.h \ - ui/object-edit.cpp \ - ui/object-edit.h \ - ui/previewable.h \ - ui/previewfillable.h \ - ui/previewholder.cpp \ - ui/previewholder.h \ - ui/selected-color.h \ - ui/selected-color.cpp \ - ui/shape-editor.cpp \ - ui/shape-editor.h \ - ui/tool-factory.cpp \ - ui/tool-factory.h \ - ui/tools-switch.cpp \ - ui/tools-switch.h \ - ui/uxmanager.cpp \ - ui/uxmanager.h diff --git a/src/ui/cache/Makefile_insert b/src/ui/cache/Makefile_insert deleted file mode 100644 index c648777f8..000000000 --- a/src/ui/cache/Makefile_insert +++ /dev/null @@ -1,6 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -ink_common_sources += \ - ui/cache/svg_preview_cache.h \ - ui/cache/svg_preview_cache.cpp - diff --git a/src/ui/dialog/Makefile_insert b/src/ui/dialog/Makefile_insert deleted file mode 100644 index 71628973e..000000000 --- a/src/ui/dialog/Makefile_insert +++ /dev/null @@ -1,133 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -ink_common_sources += \ - ui/dialog/aboutbox.cpp \ - ui/dialog/aboutbox.h \ - ui/dialog/align-and-distribute.cpp \ - ui/dialog/align-and-distribute.h \ - ui/dialog/arrange-tab.h \ - ui/dialog/behavior.h \ - ui/dialog/calligraphic-profile-rename.h \ - ui/dialog/calligraphic-profile-rename.cpp \ - ui/dialog/clonetiler.cpp \ - ui/dialog/clonetiler.h \ - ui/dialog/color-item.cpp \ - ui/dialog/color-item.h \ - ui/dialog/debug.cpp \ - ui/dialog/debug.h \ - ui/dialog/desktop-tracker.cpp \ - ui/dialog/desktop-tracker.h \ - ui/dialog/dialog.cpp \ - ui/dialog/dialog.h \ - ui/dialog/dialog-manager.cpp \ - ui/dialog/dialog-manager.h \ - ui/dialog/dock-behavior.cpp \ - ui/dialog/dock-behavior.h \ - ui/dialog/document-metadata.cpp \ - ui/dialog/document-metadata.h \ - ui/dialog/document-properties.cpp \ - ui/dialog/document-properties.h \ - ui/dialog/export.cpp \ - ui/dialog/export.h \ - ui/dialog/extension-editor.cpp \ - ui/dialog/extension-editor.h \ - ui/dialog/extensions.cpp \ - ui/dialog/extensions.h \ - ui/dialog/filedialog.cpp \ - ui/dialog/filedialog.h \ - ui/dialog/filedialogimpl-gtkmm.cpp \ - ui/dialog/filedialogimpl-gtkmm.h \ - ui/dialog/filedialogimpl-win32.cpp \ - ui/dialog/filedialogimpl-win32.h \ - ui/dialog/fill-and-stroke.cpp \ - ui/dialog/fill-and-stroke.h \ - ui/dialog/filter-effects-dialog.cpp \ - ui/dialog/filter-effects-dialog.h \ - ui/dialog/find.cpp \ - ui/dialog/find.h \ - ui/dialog/font-substitution.cpp \ - ui/dialog/font-substitution.h \ - ui/dialog/floating-behavior.cpp \ - ui/dialog/floating-behavior.h \ - ui/dialog/glyphs.cpp \ - ui/dialog/glyphs.h \ - ui/dialog/grid-arrange-tab.h \ - ui/dialog/grid-arrange-tab.cpp \ - ui/dialog/guides.cpp \ - ui/dialog/guides.h \ - ui/dialog/icon-preview.cpp \ - ui/dialog/icon-preview.h \ - ui/dialog/inkscape-preferences.cpp \ - ui/dialog/inkscape-preferences.h \ - ui/dialog/input.cpp \ - ui/dialog/input.h \ - ui/dialog/knot-properties.cpp \ - ui/dialog/knot-properties.h \ - ui/dialog/layer-properties.cpp \ - ui/dialog/layer-properties.h \ - ui/dialog/layers.cpp \ - ui/dialog/layers.h \ - ui/dialog/livepatheffect-add.cpp \ - ui/dialog/livepatheffect-add.h \ - ui/dialog/livepatheffect-editor.cpp \ - ui/dialog/livepatheffect-editor.h \ - ui/dialog/memory.cpp \ - ui/dialog/memory.h \ - ui/dialog/messages.cpp \ - ui/dialog/messages.h \ - ui/dialog/new-from-template.cpp \ - ui/dialog/new-from-template.h \ - ui/dialog/ocaldialogs.cpp \ - ui/dialog/ocaldialogs.h \ - ui/dialog/object-attributes.cpp \ - ui/dialog/object-attributes.h \ - ui/dialog/object-properties.cpp \ - ui/dialog/object-properties.h \ - ui/dialog/panel-dialog.h \ - ui/dialog/polar-arrange-tab.cpp \ - ui/dialog/polar-arrange-tab.h \ - ui/dialog/print.cpp \ - ui/dialog/print.h \ - ui/dialog/print-colors-preview-dialog.cpp \ - ui/dialog/print-colors-preview-dialog.h \ - ui/dialog/spellcheck.cpp \ - ui/dialog/spellcheck.h \ - ui/dialog/svg-fonts-dialog.cpp \ - ui/dialog/svg-fonts-dialog.h \ - ui/dialog/swatches.cpp \ - ui/dialog/swatches.h \ - ui/dialog/symbols.cpp \ - ui/dialog/symbols.h \ - ui/dialog/template-load-tab.cpp \ - ui/dialog/template-load-tab.h \ - ui/dialog/template-widget.cpp \ - ui/dialog/template-widget.h \ - ui/dialog/tags.cpp \ - ui/dialog/tags.h \ - ui/dialog/text-edit.cpp \ - ui/dialog/text-edit.h \ - ui/dialog/tile.cpp \ - ui/dialog/tile.h \ - ui/dialog/pixelartdialog.cpp \ - ui/dialog/pixelartdialog.h \ - ui/dialog/transformation.cpp \ - ui/dialog/transformation.h \ - ui/dialog/undo-history.cpp \ - ui/dialog/undo-history.h \ - ui/dialog/xml-tree.cpp \ - ui/dialog/xml-tree.h \ - ui/dialog/lpe-powerstroke-properties.cpp \ - ui/dialog/lpe-powerstroke-properties.h \ - ui/dialog/objects.cpp \ - ui/dialog/objects.h \ - ui/dialog/lpe-fillet-chamfer-properties.cpp \ - ui/dialog/lpe-fillet-chamfer-properties.h \ - $(inkboard_dialogs) - -if HAVE_POTRACE - -ink_common_sources += \ - ui/dialog/tracedialog.cpp \ - ui/dialog/tracedialog.h - -endif diff --git a/src/ui/tool/Makefile_insert b/src/ui/tool/Makefile_insert deleted file mode 100644 index f46f48b72..000000000 --- a/src/ui/tool/Makefile_insert +++ /dev/null @@ -1,30 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -ink_common_sources += \ - ui/tool/control-point.cpp \ - ui/tool/control-point.h \ - ui/tool/control-point-selection.cpp \ - ui/tool/control-point-selection.h \ - ui/tool/commit-events.h \ - ui/tool/curve-drag-point.cpp \ - ui/tool/curve-drag-point.h \ - ui/tool/event-utils.cpp \ - ui/tool/event-utils.h \ - ui/tool/manipulator.cpp \ - ui/tool/manipulator.h \ - ui/tool/modifier-tracker.cpp \ - ui/tool/modifier-tracker.h \ - ui/tool/multi-path-manipulator.cpp \ - ui/tool/multi-path-manipulator.h \ - ui/tool/node.cpp \ - ui/tool/node.h \ - ui/tool/node-types.h \ - ui/tool/path-manipulator.cpp \ - ui/tool/path-manipulator.h \ - ui/tool/selectable-control-point.cpp \ - ui/tool/selectable-control-point.h \ - ui/tool/selector.cpp \ - ui/tool/selector.h \ - ui/tool/shape-record.h \ - ui/tool/transform-handle-set.cpp \ - ui/tool/transform-handle-set.h diff --git a/src/ui/tools/Makefile_insert b/src/ui/tools/Makefile_insert deleted file mode 100644 index 686dfedd8..000000000 --- a/src/ui/tools/Makefile_insert +++ /dev/null @@ -1,34 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -ink_common_sources += \ - ui/tools/arc-tool.cpp ui/tools/arc-tool.h \ - ui/tools/box3d-tool.cpp ui/tools/box3d-tool.h \ - ui/tools/calligraphic-tool.cpp ui/tools/calligraphic-tool.h \ - ui/tools/connector-tool.cpp ui/tools/connector-tool.h \ - ui/tools/dropper-tool.cpp ui/tools/dropper-tool.h \ - ui/tools/dynamic-base.cpp ui/tools/dynamic-base.h \ - ui/tools/eraser-tool.cpp ui/tools/eraser-tool.h \ - ui/tools/freehand-base.cpp ui/tools/freehand-base.h \ - ui/tools/gradient-tool.cpp ui/tools/gradient-tool.h \ - ui/tools/lpe-tool.cpp ui/tools/lpe-tool.h \ - ui/tools/measure-tool.cpp ui/tools/measure-tool.h \ - ui/tools/mesh-tool.cpp ui/tools/mesh-tool.h \ - ui/tools/node-tool.cpp ui/tools/node-tool.h \ - ui/tools/pen-tool.cpp ui/tools/pen-tool.h \ - ui/tools/pencil-tool.cpp ui/tools/pencil-tool.h \ - ui/tools/rect-tool.cpp ui/tools/rect-tool.h \ - ui/tools/select-tool.cpp ui/tools/select-tool.h \ - ui/tools/spiral-tool.cpp ui/tools/spiral-tool.h \ - ui/tools/spray-tool.cpp ui/tools/spray-tool.h \ - ui/tools/star-tool.cpp ui/tools/star-tool.h \ - ui/tools/text-tool.cpp ui/tools/text-tool.h \ - ui/tools/tool-base.cpp ui/tools/tool-base.h \ - ui/tools/tweak-tool.cpp ui/tools/tweak-tool.h \ - ui/tools/zoom-tool.cpp ui/tools/zoom-tool.h - -if HAVE_POTRACE - -ink_common_sources += \ - ui/tools/flood-tool.cpp ui/tools/flood-tool.h - -endif diff --git a/src/ui/view/Makefile_insert b/src/ui/view/Makefile_insert deleted file mode 100644 index b3ab598d4..000000000 --- a/src/ui/view/Makefile_insert +++ /dev/null @@ -1,9 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -ink_common_sources += \ - ui/view/edit-widget-interface.h \ - ui/view/view.h \ - ui/view/view.cpp \ - ui/view/view-widget.cpp \ - ui/view/view-widget.h - diff --git a/src/ui/widget/Makefile_insert b/src/ui/widget/Makefile_insert deleted file mode 100644 index b22e4bd74..000000000 --- a/src/ui/widget/Makefile_insert +++ /dev/null @@ -1,106 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -ink_common_sources += \ - ui/widget/anchor-selector.h \ - ui/widget/anchor-selector.cpp \ - ui/widget/attr-widget.h \ - ui/widget/button.h \ - ui/widget/button.cpp \ - ui/widget/color-entry.cpp \ - ui/widget/color-entry.h \ - ui/widget/color-icc-selector.cpp \ - ui/widget/color-icc-selector.h \ - ui/widget/color-notebook.cpp \ - ui/widget/color-notebook.h \ - ui/widget/color-wheel-selector.cpp \ - ui/widget/color-wheel-selector.h \ - ui/widget/color-picker.cpp \ - ui/widget/color-picker.h \ - ui/widget/color-preview.cpp \ - ui/widget/color-preview.h \ - ui/widget/color-slider.cpp \ - ui/widget/color-slider.h \ - ui/widget/color-scales.cpp \ - ui/widget/color-scales.h \ - ui/widget/combo-enums.h \ - ui/widget/dock.h \ - ui/widget/dock.cpp \ - ui/widget/dock-item.h \ - ui/widget/dock-item.cpp \ - ui/widget/entity-entry.cpp \ - ui/widget/entity-entry.h \ - ui/widget/entry.cpp \ - ui/widget/entry.h \ - ui/widget/filter-effect-chooser.h \ - ui/widget/filter-effect-chooser.cpp \ - ui/widget/font-variants.h \ - ui/widget/font-variants.cpp \ - ui/widget/frame.cpp \ - ui/widget/frame.h \ - ui/widget/imageicon.cpp \ - ui/widget/imageicon.h \ - ui/widget/imagetoggler.cpp \ - ui/widget/imagetoggler.h \ - ui/widget/labelled.cpp \ - ui/widget/labelled.h \ - ui/widget/layer-selector.cpp \ - ui/widget/layer-selector.h \ - ui/widget/licensor.cpp \ - ui/widget/licensor.h \ - ui/widget/notebook-page.cpp \ - ui/widget/notebook-page.h \ - ui/widget/object-composite-settings.cpp \ - ui/widget/object-composite-settings.h \ - ui/widget/page-sizer.cpp \ - ui/widget/page-sizer.h \ - ui/widget/panel.cpp \ - ui/widget/panel.h \ - ui/widget/point.cpp \ - ui/widget/point.h \ - ui/widget/preferences-widget.cpp \ - ui/widget/preferences-widget.h \ - ui/widget/random.cpp \ - ui/widget/random.h \ - ui/widget/registered-widget.cpp \ - ui/widget/registered-widget.h \ - ui/widget/registered-enums.h \ - ui/widget/registry.cpp \ - ui/widget/registry.h \ - ui/widget/rendering-options.cpp \ - ui/widget/rendering-options.h \ - ui/widget/rotateable.h \ - ui/widget/rotateable.cpp \ - ui/widget/scalar-unit.cpp \ - ui/widget/scalar-unit.h \ - ui/widget/scalar.cpp \ - ui/widget/scalar.h \ - ui/widget/selected-style.h \ - ui/widget/selected-style.cpp \ - ui/widget/spinbutton.h \ - ui/widget/spinbutton.cpp \ - ui/widget/spin-scale.h \ - ui/widget/spin-scale.cpp \ - ui/widget/spin-slider.h \ - ui/widget/spin-slider.cpp \ - ui/widget/style-subject.h \ - ui/widget/style-subject.cpp \ - ui/widget/style-swatch.h \ - ui/widget/style-swatch.cpp \ - ui/widget/text.cpp \ - ui/widget/text.h \ - ui/widget/tolerance-slider.cpp \ - ui/widget/tolerance-slider.h \ - ui/widget/unit-menu.cpp \ - ui/widget/unit-menu.h \ - ui/widget/unit-tracker.h \ - ui/widget/unit-tracker.cpp \ - ui/widget/clipmaskicon.cpp \ - ui/widget/clipmaskicon.h \ - ui/widget/highlight-picker.cpp \ - ui/widget/highlight-picker.h \ - ui/widget/layertypeicon.cpp \ - ui/widget/layertypeicon.h \ - ui/widget/insertordericon.cpp \ - ui/widget/insertordericon.h \ - ui/widget/addtoicon.cpp \ - ui/widget/addtoicon.h diff --git a/src/util/Makefile_insert b/src/util/Makefile_insert deleted file mode 100644 index 2a778e660..000000000 --- a/src/util/Makefile_insert +++ /dev/null @@ -1,49 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -util/all: util/libutil.a - -util/clean: - rm -f util/libutil.a $(util_libutil_a_OBJECTS) - -util_libutil_a_SOURCES = \ - util/ziptool.h \ - util/ziptool.cpp \ - util/accumulators.h \ - util/compose.hpp \ - util/copy.h \ - util/enums.h \ - util/ege-appear-time-tracker.cpp \ - util/ege-appear-time-tracker.h \ - util/ege-tags.h \ - util/ege-tags.cpp \ - util/expression-evaluator.h \ - util/expression-evaluator.cpp \ - util/filter-list.h \ - util/find-if-before.h \ - util/find-last-if.h \ - util/fixed_point.h \ - util/format.h \ - util/forward-pointer-iterator.h \ - util/function.h \ - util/list.h \ - util/list-container.h \ - util/list-copy.h \ - util/longest-common-suffix.h \ - util/map-list.h \ - util/reference.h \ - util/reverse-list.h \ - util/share.h \ - util/share.cpp \ - util/signal-blocker.h \ - util/tuple.h \ - util/ucompose.hpp \ - util/units.cpp \ - util/units.h \ - util/unordered-containers.h - -# ###################### -# ### CxxTest stuff #### -# ###################### - -CXXTEST_TESTSUITES += \ - $(srcdir)/util/list-container-test.h diff --git a/src/widgets/Makefile_insert b/src/widgets/Makefile_insert deleted file mode 100644 index 99a85c5b6..000000000 --- a/src/widgets/Makefile_insert +++ /dev/null @@ -1,129 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -ink_common_sources += \ - widgets/arc-toolbar.cpp \ - widgets/arc-toolbar.h \ - widgets/box3d-toolbar.cpp \ - widgets/box3d-toolbar.h \ - widgets/button.cpp \ - widgets/button.h \ - widgets/calligraphy-toolbar.cpp \ - widgets/calligraphy-toolbar.h \ - widgets/connector-toolbar.cpp \ - widgets/connector-toolbar.h \ - widgets/dash-selector.cpp \ - widgets/dash-selector.h \ - widgets/desktop-widget.cpp \ - widgets/desktop-widget.h \ - widgets/dropper-toolbar.cpp \ - widgets/dropper-toolbar.h \ - widgets/eek-preview.cpp \ - widgets/eek-preview.h \ - widgets/ege-adjustment-action.cpp \ - widgets/ege-adjustment-action.h \ - widgets/ege-paint-def.cpp \ - widgets/ege-paint-def.h \ - widgets/ege-output-action.cpp \ - widgets/ege-output-action.h \ - widgets/ege-select-one-action.cpp \ - widgets/ege-select-one-action.h \ - widgets/eraser-toolbar.cpp \ - widgets/eraser-toolbar.h \ - widgets/fill-style.cpp \ - widgets/fill-style.h \ - widgets/fill-n-stroke-factory.h \ - widgets/font-selector.cpp \ - widgets/font-selector.h \ - widgets/gradient-image.cpp \ - widgets/gradient-image.h \ - widgets/gradient-selector.cpp \ - widgets/gradient-selector.h \ - widgets/gradient-toolbar.cpp \ - widgets/gradient-toolbar.h \ - widgets/gradient-vector.cpp \ - widgets/gradient-vector.h \ - widgets/icon.cpp \ - widgets/icon.h \ - widgets/image-menu-item.c \ - widgets/image-menu-item.h \ - widgets/ink-action.cpp \ - widgets/ink-action.h \ - widgets/ink-comboboxentry-action.cpp \ - widgets/ink-comboboxentry-action.h \ - widgets/ink-radio-action.cpp \ - widgets/ink-radio-action.h \ - widgets/ink-toggle-action.cpp \ - widgets/ink-toggle-action.h \ - widgets/ink-tool-menu-action.cpp \ - widgets/ink-tool-menu-action.h \ - widgets/lpe-toolbar.cpp \ - widgets/lpe-toolbar.h \ - widgets/measure-toolbar.cpp \ - widgets/measure-toolbar.h \ - widgets/mesh-toolbar.cpp \ - widgets/mesh-toolbar.h \ - widgets/node-toolbar.cpp \ - widgets/node-toolbar.h \ - widgets/paint-selector.cpp \ - widgets/paint-selector.h \ - widgets/pencil-toolbar.cpp \ - widgets/pencil-toolbar.h \ - widgets/rect-toolbar.cpp \ - widgets/rect-toolbar.h \ - widgets/gimp/gimpspinscale.c \ - widgets/gimp/gimpspinscale.h \ - widgets/gimp/gimpcolorwheel.c \ - widgets/gimp/gimpcolorwheel.h \ - widgets/gimp/ruler.cpp \ - widgets/gimp/ruler.h \ - widgets/select-toolbar.cpp \ - widgets/select-toolbar.h \ - widgets/spray-toolbar.cpp \ - widgets/spray-toolbar.h \ - widgets/spiral-toolbar.cpp \ - widgets/spiral-toolbar.h \ - widgets/sp-attribute-widget.cpp \ - widgets/sp-attribute-widget.h \ - widgets/sp-color-selector.cpp \ - widgets/sp-color-selector.h \ - widgets/spinbutton-events.cpp \ - widgets/spinbutton-events.h \ - widgets/sp-widget.cpp \ - widgets/sp-widget.h \ - widgets/spw-utilities.cpp \ - widgets/spw-utilities.h \ - widgets/sp-xmlview-attr-list.cpp \ - widgets/sp-xmlview-attr-list.h \ - widgets/sp-xmlview-content.cpp \ - widgets/sp-xmlview-content.h \ - widgets/sp-xmlview-tree.cpp \ - widgets/sp-xmlview-tree.h \ - widgets/star-toolbar.cpp \ - widgets/star-toolbar.h \ - widgets/stroke-marker-selector.cpp \ - widgets/stroke-marker-selector.h \ - widgets/stroke-style.cpp \ - widgets/stroke-style.h \ - widgets/swatch-selector.cpp \ - widgets/swatch-selector.h \ - widgets/text-toolbar.cpp \ - widgets/text-toolbar.h \ - widgets/toolbox.cpp \ - widgets/toolbox.h \ - widgets/tweak-toolbar.cpp \ - widgets/tweak-toolbar.h \ - widgets/widget-sizes.h \ - widgets/zoom-toolbar.cpp \ - widgets/zoom-toolbar.h \ - widgets/widget-sizes.h - -if HAVE_POTRACE - -ink_common_sources += \ - widgets/paintbucket-toolbar.cpp \ - widgets/paintbucket-toolbar.h - -endif - -widgets/button.$(OBJEXT): helper/sp-marshal.h -widgets/menu.$(OBJEXT): helper/sp-marshal.h diff --git a/src/xml/Makefile_insert b/src/xml/Makefile_insert deleted file mode 100644 index da55d7f7e..000000000 --- a/src/xml/Makefile_insert +++ /dev/null @@ -1,51 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -ink_common_sources += \ - xml/comment-node.h \ - xml/composite-node-observer.cpp xml/composite-node-observer.h \ - xml/element-node.h \ - xml/helper-observer.cpp \ - xml/helper-observer.h \ - xml/node-observer.h \ - xml/quote.cpp \ - xml/quote.h \ - xml/repr-css.cpp \ - xml/log-builder.cpp \ - xml/log-builder.h \ - xml/node-fns.cpp \ - xml/node-fns.h \ - xml/pi-node.h \ - xml/rebase-hrefs.cpp \ - xml/rebase-hrefs.h \ - xml/repr-io.cpp \ - xml/repr-sorting.cpp \ - xml/repr-sorting.h \ - xml/repr-util.cpp \ - xml/repr.cpp \ - xml/repr.h \ - xml/simple-document.h \ - xml/simple-document.cpp \ - xml/simple-node.h \ - xml/simple-node.cpp \ - xml/node.h \ - xml/croco-node-iface.cpp \ - xml/croco-node-iface.h \ - xml/attribute-record.h \ - xml/sp-css-attr.h \ - xml/event.cpp xml/event.h xml/event-fns.h \ - xml/document.h \ - xml/node-event-vector.h \ - xml/node-iterators.h \ - xml/sp-css-attr.h \ - xml/subtree.cpp \ - xml/subtree.h \ - xml/text-node.h \ - xml/invalid-operation-exception.h - -# ###################### -# ### CxxTest stuff #### -# ###################### -CXXTEST_TESTSUITES += \ - $(srcdir)/xml/rebase-hrefs-test.h \ - $(srcdir)/xml/repr-action-test.h \ - $(srcdir)/xml/quote-test.h |
