X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fautomake.mk;h=7468c89038d1e459cdc1aa74921b0219386bd358;hb=da08e8b9ea6bfa772b4daec4a944279267852515;hp=1595fdd00e356bca8d6504e271087c9fe3ad559c;hpb=25f47bf48c0aca4c3b75487ffa749637c792de92;p=pspp diff --git a/src/ui/gui/automake.mk b/src/ui/gui/automake.mk index 1595fdd00e..0200348656 100644 --- a/src/ui/gui/automake.mk +++ b/src/ui/gui/automake.mk @@ -1,49 +1,81 @@ ## Process this file with automake to produce Makefile.in -*- makefile -*- -include $(top_srcdir)/src/ui/gui/sheet/automake.mk - UI_FILES = \ src/ui/gui/aggregate.ui \ + src/ui/gui/autorecode.ui \ src/ui/gui/binomial.ui \ src/ui/gui/compute.ui \ + src/ui/gui/barchart.ui \ src/ui/gui/correlation.ui \ + src/ui/gui/count.ui \ + src/ui/gui/comments.ui \ src/ui/gui/crosstabs.ui \ src/ui/gui/chi-square.ui \ + src/ui/gui/data-sheet.ui \ src/ui/gui/descriptives.ui \ + src/ui/gui/entry-dialog.ui \ src/ui/gui/examine.ui \ src/ui/gui/goto-case.ui \ src/ui/gui/factor.ui \ src/ui/gui/find.ui \ src/ui/gui/frequencies.ui \ + src/ui/gui/histogram.ui \ + src/ui/gui/indep-samples.ui \ + src/ui/gui/k-means.ui \ src/ui/gui/k-related.ui \ + src/ui/gui/ks-one-sample.ui \ + src/ui/gui/logistic.ui \ + src/ui/gui/means.ui \ + src/ui/gui/missing-val-dialog.ui \ src/ui/gui/oneway.ui \ - src/ui/gui/psppire.ui \ + src/ui/gui/paired-samples.ui \ src/ui/gui/rank.ui \ + src/ui/gui/runs.ui \ src/ui/gui/sort.ui \ src/ui/gui/split-file.ui \ src/ui/gui/recode.ui \ src/ui/gui/regression.ui \ src/ui/gui/reliability.ui \ src/ui/gui/roc.ui \ + src/ui/gui/scatterplot.ui \ src/ui/gui/select-cases.ui \ src/ui/gui/t-test.ui \ src/ui/gui/text-data-import.ui \ - src/ui/gui/var-sheet-dialogs.ui \ + src/ui/gui/transpose.ui \ + src/ui/gui/univariate.ui \ + src/ui/gui/val-labs-dialog.ui \ src/ui/gui/variable-info.ui \ src/ui/gui/data-editor.ui \ - src/ui/gui/output-viewer.ui \ - src/ui/gui/syntax-editor.ui + src/ui/gui/output-window.ui \ + src/ui/gui/syntax-editor.ui \ + src/ui/gui/var-sheet.ui \ + src/ui/gui/var-type-dialog.ui \ + src/ui/gui/weight.ui + + +$(top_srcdir)/doc/help-pages-list: $(UI_FILES) + cat $^ | grep '"help[-_]page"' | \ + $(SED) -e 's% *\([^<]*\)%//*[@id='"'"'\1'"'"']%' \ + -e 's%#%'"'"']/*[@id='"'"'%g' > $@ + +EXTRA_DIST += doc/help-pages-list + EXTRA_DIST += \ - src/ui/gui/OChangeLog \ - src/ui/gui/psppicon.png \ + src/ui/gui/memorandum.txt \ + src/ui/gui/artwork/actions/.empty \ + src/ui/gui/artwork/apps/scalable/.empty \ + src/ui/gui/gen-dot-desktop.sh \ src/ui/gui/marshaller-list \ - src/ui/gui/pspp.desktop + src/ui/gui/pspplogo.svg + if HAVE_GUI bin_PROGRAMS += src/ui/gui/psppire +noinst_PROGRAMS += src/ui/gui/spreadsheet-test -src_ui_gui_psppire_CFLAGS = $(GTK_CFLAGS) -Wall -DGDK_MULTIHEAD_SAFE=1 +src_ui_gui_psppire_CFLAGS = $(GTK_CFLAGS) $(GTKSOURCEVIEW_CFLAGS) -Wall -DGDK_MULTIHEAD_SAFE=1 +src_ui_gui_spreadsheet_test_CFLAGS = $(GTK_CFLAGS) -Wall -DGDK_MULTIHEAD_SAFE=1 src_ui_gui_psppire_LDFLAGS = \ @@ -59,188 +91,242 @@ endif src_ui_gui_psppire_LDADD = \ - src/ui/gui/sheet/libsheet.la \ - lib/gtk-contrib/libgtksheet.a \ + lib/gtk-contrib/libxpaned.a \ src/ui/libuicommon.la \ src/libpspp.la \ src/libpspp-core.la \ $(GTK_LIBS) \ + $(GTHREAD_LIBS) \ + $(GTKSOURCEVIEW_LIBS) \ $(CAIRO_LIBS) \ - $(LIBINTL) + $(LIBINTL) \ + $(GSL_LIBS) -src_ui_gui_psppiredir = $(pkgdatadir) +src_ui_gui_spreadsheet_test_LDADD = \ + src/libpspp-core.la \ + $(GTK_LIBS) \ + $(GTHREAD_LIBS) -themedir = $(DESTDIR)$(datadir)/icons/hicolor -context = apps +src_ui_gui_spreadsheet_test_SOURCES = src/ui/gui/spreadsheet-test.c src/ui/gui/psppire-spreadsheet-model.c -install-icons: - for size in 16x16 ; do \ - $(MKDIR_P) $(themedir)/$$size/$(context) ; \ - $(INSTALL) $(top_srcdir)/src/ui/gui/psppicon.png $(themedir)/$$size/$(context) ; \ - done - gtk-update-icon-cache --ignore-theme-index $(themedir) +src_ui_gui_psppiredir = $(pkgdatadir) -INSTALL_DATA_HOOKS += install-icons -uninstall-icons: - for size in 16x16 ; do \ - rm -f $(themedir)/$$size/$(context)/psppicon.png ; \ - done - gtk-update-icon-cache --ignore-theme-index $(themedir) +install-lang: + $(INSTALL_DATA) $(top_srcdir)/src/ui/gui/pspp.lang $(DESTDIR)$(pkgdatadir) -UNINSTALL_DATA_HOOKS += uninstall-icons +INSTALL_DATA_HOOKS += install-lang dist_src_ui_gui_psppire_DATA = \ $(UI_FILES) \ - $(top_srcdir)/src/ui/gui/pspplogo.png \ - $(top_srcdir)/src/ui/gui/icons/value-labels.png \ - $(top_srcdir)/src/ui/gui/icons/goto-variable.png\ - $(top_srcdir)/src/ui/gui/icons/insert-case.png \ - $(top_srcdir)/src/ui/gui/icons/insert-variable.png \ - $(top_srcdir)/src/ui/gui/icons/recent-dialogs.png \ - $(top_srcdir)/src/ui/gui/icons/split-file.png \ - $(top_srcdir)/src/ui/gui/icons/select-cases.png \ - $(top_srcdir)/src/ui/gui/icons/weight-cases.png \ - $(top_srcdir)/src/ui/gui/icons/16x16/nominal.png \ - $(top_srcdir)/src/ui/gui/icons/16x16/ordinal.png \ - $(top_srcdir)/src/ui/gui/icons/16x16/scale.png \ - $(top_srcdir)/src/ui/gui/icons/16x16/string.png \ - $(top_srcdir)/src/ui/gui/icons/16x16/date-scale.png \ - $(top_srcdir)/src/ui/gui/icons/splash.png - + $(top_srcdir)/src/ui/gui/pspp.lang \ + $(top_srcdir)/src/ui/gui/psppire.gtkrc src_ui_gui_psppire_SOURCES = \ + src/ui/gui/pspp-sheet-private.h \ + src/ui/gui/pspp-sheet-selection.c \ + src/ui/gui/pspp-sheet-selection.h \ + src/ui/gui/pspp-sheet-view-column.c \ + src/ui/gui/pspp-sheet-view-column.h \ + src/ui/gui/pspp-sheet-view.c \ + src/ui/gui/pspp-sheet-view.h \ + src/ui/gui/pspp-widget-facade.c \ + src/ui/gui/pspp-widget-facade.h \ + src/ui/gui/psppire-button-editable.c \ + src/ui/gui/psppire-button-editable.h \ + src/ui/gui/psppire-cell-renderer-button.c \ + src/ui/gui/psppire-cell-renderer-button.h \ src/ui/gui/psppire-dialog.c \ src/ui/gui/psppire-keypad.c \ src/ui/gui/psppire-selector.c \ src/ui/gui/psppire-buttonbox.c \ src/ui/gui/psppire-hbuttonbox.c \ src/ui/gui/psppire-vbuttonbox.c \ + src/ui/gui/psppire-scanf.c \ + src/ui/gui/psppire-scanf.h \ src/ui/gui/psppire-acr.c \ - src/ui/gui/aggregate-dialog.c \ - src/ui/gui/aggregate-dialog.h \ - src/ui/gui/binomial-dialog.c \ - src/ui/gui/binomial-dialog.h \ - src/ui/gui/checkbox-treeview.c \ - src/ui/gui/checkbox-treeview.h \ + src/ui/gui/builder-wrapper.c \ + src/ui/gui/builder-wrapper.h \ src/ui/gui/comments-dialog.c \ src/ui/gui/comments-dialog.h \ - src/ui/gui/compute-dialog.c \ - src/ui/gui/compute-dialog.h \ - src/ui/gui/chi-square-dialog.c \ - src/ui/gui/chi-square-dialog.h \ - src/ui/gui/correlation-dialog.c \ - src/ui/gui/correlation-dialog.h \ - src/ui/gui/crosstabs-dialog.c \ - src/ui/gui/crosstabs-dialog.h \ - src/ui/gui/customentry.c \ - src/ui/gui/customentry.h \ - src/ui/gui/descriptives-dialog.c \ - src/ui/gui/descriptives-dialog.h \ src/ui/gui/dialog-common.c \ src/ui/gui/dialog-common.h \ src/ui/gui/dict-display.h \ src/ui/gui/dict-display.c \ - src/ui/gui/examine-dialog.c \ - src/ui/gui/examine-dialog.h \ + src/ui/gui/entry-dialog.c \ + src/ui/gui/entry-dialog.h \ src/ui/gui/executor.c \ src/ui/gui/executor.h \ src/ui/gui/find-dialog.c \ src/ui/gui/find-dialog.h \ - src/ui/gui/factor-dialog.c \ - src/ui/gui/factor-dialog.h \ - src/ui/gui/frequencies-dialog.c \ - src/ui/gui/frequencies-dialog.h \ src/ui/gui/goto-case-dialog.c \ src/ui/gui/goto-case-dialog.h \ src/ui/gui/helper.c \ src/ui/gui/help-menu.c \ src/ui/gui/help-menu.h \ src/ui/gui/helper.h \ - src/ui/gui/k-related-dialog.c \ - src/ui/gui/k-related-dialog.h \ src/ui/gui/main.c \ src/ui/gui/missing-val-dialog.c \ src/ui/gui/missing-val-dialog.h \ - src/ui/gui/oneway-anova-dialog.c \ - src/ui/gui/oneway-anova-dialog.h \ src/ui/gui/psppire.c \ src/ui/gui/psppire.h \ src/ui/gui/psppire-acr.h \ src/ui/gui/psppire-buttonbox.h \ + src/ui/gui/psppire-checkbox-treeview.c \ + src/ui/gui/psppire-checkbox-treeview.h \ src/ui/gui/psppire-conf.c \ src/ui/gui/psppire-conf.h \ src/ui/gui/psppire-data-editor.c \ src/ui/gui/psppire-data-editor.h \ + src/ui/gui/psppire-data-sheet.c \ + src/ui/gui/psppire-data-sheet.h \ src/ui/gui/psppire-data-store.c \ src/ui/gui/psppire-data-store.h \ src/ui/gui/psppire-data-window.c \ src/ui/gui/psppire-data-window.h \ src/ui/gui/psppire-dialog.h \ + src/ui/gui/psppire-dialog-action.c \ + src/ui/gui/psppire-dialog-action.h \ + src/ui/gui/psppire-dialog-action-aggregate.c \ + src/ui/gui/psppire-dialog-action-aggregate.h \ + src/ui/gui/psppire-dialog-action-autorecode.c \ + src/ui/gui/psppire-dialog-action-autorecode.h \ + src/ui/gui/psppire-dialog-action-1sks.c \ + src/ui/gui/psppire-dialog-action-1sks.h \ + src/ui/gui/psppire-dialog-action-barchart.c \ + src/ui/gui/psppire-dialog-action-barchart.h \ + src/ui/gui/psppire-dialog-action-binomial.c \ + src/ui/gui/psppire-dialog-action-binomial.h \ + src/ui/gui/psppire-dialog-action-chisquare.c \ + src/ui/gui/psppire-dialog-action-chisquare.h \ + src/ui/gui/psppire-dialog-action-compute.c \ + src/ui/gui/psppire-dialog-action-compute.h \ + src/ui/gui/psppire-dialog-action-count.c \ + src/ui/gui/psppire-dialog-action-count.h \ + src/ui/gui/psppire-dialog-action-correlation.c \ + src/ui/gui/psppire-dialog-action-correlation.h \ + src/ui/gui/psppire-dialog-action-crosstabs.c \ + src/ui/gui/psppire-dialog-action-crosstabs.h \ + src/ui/gui/psppire-dialog-action-descriptives.c \ + src/ui/gui/psppire-dialog-action-descriptives.h \ + src/ui/gui/psppire-dialog-action-examine.c \ + src/ui/gui/psppire-dialog-action-examine.h \ + src/ui/gui/psppire-dialog-action-factor.c \ + src/ui/gui/psppire-dialog-action-factor.h \ + src/ui/gui/psppire-dialog-action-flip.c \ + src/ui/gui/psppire-dialog-action-flip.h \ + src/ui/gui/psppire-dialog-action-frequencies.c \ + src/ui/gui/psppire-dialog-action-frequencies.h \ + src/ui/gui/psppire-dialog-action-histogram.c \ + src/ui/gui/psppire-dialog-action-histogram.h \ + src/ui/gui/psppire-dialog-action-indep-samps.c \ + src/ui/gui/psppire-dialog-action-indep-samps.h \ + src/ui/gui/psppire-dialog-action-kmeans.c \ + src/ui/gui/psppire-dialog-action-kmeans.h \ + src/ui/gui/psppire-dialog-action-logistic.c \ + src/ui/gui/psppire-dialog-action-logistic.h \ + src/ui/gui/psppire-dialog-action-k-related.c \ + src/ui/gui/psppire-dialog-action-k-related.h \ + src/ui/gui/psppire-dialog-action-means.c \ + src/ui/gui/psppire-dialog-action-means.h \ + src/ui/gui/psppire-dialog-action-oneway.c \ + src/ui/gui/psppire-dialog-action-oneway.h \ + src/ui/gui/psppire-dialog-action-paired.c \ + src/ui/gui/psppire-dialog-action-paired.h \ + src/ui/gui/psppire-dialog-action-rank.c \ + src/ui/gui/psppire-dialog-action-rank.h \ + src/ui/gui/psppire-dialog-action-regression.c \ + src/ui/gui/psppire-dialog-action-regression.h \ + src/ui/gui/psppire-dialog-action-reliability.c \ + src/ui/gui/psppire-dialog-action-reliability.h \ + src/ui/gui/psppire-dialog-action-roc.c \ + src/ui/gui/psppire-dialog-action-roc.h \ + src/ui/gui/psppire-dialog-action-runs.c \ + src/ui/gui/psppire-dialog-action-runs.h \ + src/ui/gui/psppire-dialog-action-scatterplot.c \ + src/ui/gui/psppire-dialog-action-scatterplot.h \ + src/ui/gui/psppire-dialog-action-sort.c \ + src/ui/gui/psppire-dialog-action-sort.h \ + src/ui/gui/psppire-dialog-action-tt1s.c \ + src/ui/gui/psppire-dialog-action-tt1s.h \ + src/ui/gui/psppire-dialog-action-two-sample.c \ + src/ui/gui/psppire-dialog-action-two-sample.h \ + src/ui/gui/psppire-dialog-action-univariate.c \ + src/ui/gui/psppire-dialog-action-univariate.h \ + src/ui/gui/psppire-dialog-action-var-info.c \ + src/ui/gui/psppire-dialog-action-var-info.h \ src/ui/gui/psppire-dict.c \ src/ui/gui/psppire-dict.h \ src/ui/gui/psppire-dictview.c \ src/ui/gui/psppire-dictview.h \ + src/ui/gui/psppire-empty-list-store.c \ + src/ui/gui/psppire-empty-list-store.h \ + src/ui/gui/psppire-encoding-selector.c \ + src/ui/gui/psppire-encoding-selector.h \ + src/ui/gui/psppire-format.c \ + src/ui/gui/psppire-format.h \ src/ui/gui/psppire-hbuttonbox.h \ src/ui/gui/psppire-keypad.h \ + src/ui/gui/psppire-lex-reader.c \ + src/ui/gui/psppire-lex-reader.h \ + src/ui/gui/psppire-means-layer.c \ + src/ui/gui/psppire-means-layer.h \ + src/ui/gui/psppire-output-view.c \ + src/ui/gui/psppire-output-view.h \ src/ui/gui/psppire-output-window.c \ src/ui/gui/psppire-output-window.h \ src/ui/gui/psppire-var-view.c \ src/ui/gui/psppire-var-view.h \ + src/ui/gui/psppire-spreadsheet-model.c \ + src/ui/gui/psppire-spreadsheet-model.h \ src/ui/gui/psppire-selector.h \ src/ui/gui/psppire-select-dest.c \ src/ui/gui/psppire-select-dest.h \ src/ui/gui/psppire-syntax-window.c \ src/ui/gui/psppire-syntax-window.h \ + src/ui/gui/psppire-val-chooser.c \ + src/ui/gui/psppire-val-chooser.h \ + src/ui/gui/psppire-value-entry.c \ + src/ui/gui/psppire-value-entry.h \ src/ui/gui/psppire-var-ptr.c \ src/ui/gui/psppire-var-ptr.h \ src/ui/gui/psppire-var-sheet.c \ src/ui/gui/psppire-var-sheet.h \ - src/ui/gui/psppire-var-store.c \ - src/ui/gui/psppire-var-store.h \ src/ui/gui/psppire-vbuttonbox.h \ src/ui/gui/psppire-window.c \ src/ui/gui/psppire-window.h \ + src/ui/gui/psppire-window-base.c \ + src/ui/gui/psppire-window-base.h \ src/ui/gui/psppire-window-register.c \ src/ui/gui/psppire-window-register.h \ - src/ui/gui/rank-dialog.c \ - src/ui/gui/rank-dialog.h \ src/ui/gui/recode-dialog.c \ src/ui/gui/recode-dialog.h \ - src/ui/gui/regression-dialog.c \ - src/ui/gui/regression-dialog.h \ - src/ui/gui/reliability-dialog.c \ - src/ui/gui/reliability-dialog.h \ - src/ui/gui/roc-dialog.c \ - src/ui/gui/roc-dialog.h \ src/ui/gui/select-cases-dialog.c \ src/ui/gui/select-cases-dialog.h \ - src/ui/gui/sort-cases-dialog.c \ - src/ui/gui/sort-cases-dialog.h \ src/ui/gui/split-file-dialog.c \ src/ui/gui/split-file-dialog.h \ - src/ui/gui/syntax-editor-source.c \ - src/ui/gui/syntax-editor-source.h \ + src/ui/gui/page-assistant.c \ + src/ui/gui/page-intro.c \ + src/ui/gui/page-intro.h \ + src/ui/gui/page-file.c \ + src/ui/gui/page-first-line.c \ + src/ui/gui/page-first-line.h \ + src/ui/gui/page-formats.c \ + src/ui/gui/page-formats.h \ + src/ui/gui/page-separators.c \ + src/ui/gui/page-separators.h \ + src/ui/gui/page-sheet-spec.c \ + src/ui/gui/page-sheet-spec.h \ src/ui/gui/text-data-import-dialog.c \ src/ui/gui/text-data-import-dialog.h \ - src/ui/gui/transpose-dialog.c \ - src/ui/gui/transpose-dialog.h \ - src/ui/gui/t-test-independent-samples-dialog.c \ - src/ui/gui/t-test-independent-samples-dialog.h \ - src/ui/gui/t-test-one-sample.c \ - src/ui/gui/t-test-one-sample.h \ src/ui/gui/t-test-options.c \ src/ui/gui/t-test-options.h \ - src/ui/gui/t-test-paired-samples.c \ - src/ui/gui/t-test-paired-samples.h \ src/ui/gui/val-labs-dialog.c \ src/ui/gui/val-labs-dialog.h \ src/ui/gui/var-display.c \ src/ui/gui/var-display.h \ - src/ui/gui/variable-info-dialog.c \ - src/ui/gui/variable-info-dialog.h \ src/ui/gui/var-type-dialog.c \ src/ui/gui/var-type-dialog.h \ src/ui/gui/weight-cases-dialog.c \ @@ -254,7 +340,6 @@ nodist_src_ui_gui_psppire_SOURCES = \ src/ui/gui/psppire-marshal.c \ src/ui/gui/psppire-marshal.h - yelp-check: @if ! yelp --version > /dev/null 2>&1 ; then \ echo ; \ @@ -269,16 +354,24 @@ PHONY += yelp-check AM_CPPFLAGS += -Isrc +src/ui/gui/pspp.desktop: src/ui/gui/gen-dot-desktop.sh $(POFILES) + $(AM_V_GEN)POFILES="$(POFILES)" top_builddir="$(top_builddir)" $(SHELL) $< > $@ + +CLEANFILES+=src/ui/gui/pspp.desktop + src/ui/gui/psppire-marshal.c: src/ui/gui/marshaller-list - echo '#include ' > $@ - $(GLIB_GENMARSHAL) --body --prefix=psppire_marshal $? >> $@ + $(AM_V_GEN)echo '#include ' > $@ + $(AM_V_at)$(GLIB_GENMARSHAL) --body --prefix=psppire_marshal $? >> $@ src/ui/gui/psppire-marshal.h: src/ui/gui/marshaller-list - $(GLIB_GENMARSHAL) --header --prefix=psppire_marshal $? > $@ + $(AM_V_GEN)$(GLIB_GENMARSHAL) --header --prefix=psppire_marshal $? > $@ desktopdir = $(datadir)/applications desktop_DATA = src/ui/gui/pspp.desktop +appdatadir = $(datadir)/appdata +dist_appdata_DATA = src/ui/gui/pspp.appdata.xml + BUILT_SOURCES += src/ui/gui/psppire-marshal.c src/ui/gui/psppire-marshal.h CLEANFILES += src/ui/gui/psppire-marshal.c src/ui/gui/psppire-marshal.h \ $(nodist_src_ui_gui_psppire_DATA) @@ -287,3 +380,26 @@ endif HAVE_GUI #ensure the installcheck passes even if there is no X server available installcheck-local: DISPLAY=/invalid/port $(MAKE) $(AM_MAKEFLAGS) installcheck-binPROGRAMS + +# wrapper +src_ui_gui_psppire_CPPFLAGS = $(AM_CPPFLAGS) -Isrc/ui/gui/include +BUILT_SOURCES += src/ui/gui/include/gtk/gtk.h +src/ui/gui/include/gtk/gtk.h: src/ui/gui/include/gtk/gtk.in.h + @$(MKDIR_P) src/ui/gui/include/gtk + $(AM_V_GEN)rm -f $@-t $@ && \ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + $(SED) -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ + -e 's|@''NEXT_GTK_GTK_H''@|$(NEXT_GTK_GTK_H)|g' \ + < $(srcdir)/src/ui/gui/include/gtk/gtk.in.h; \ + } > $@-t && \ + mv $@-t $@ +CLEANFILES += src/ui/gui/include/gtk/gtk.h +EXTRA_DIST += src/ui/gui/include/gtk/gtk.in.h + +include $(top_srcdir)/src/ui/gui/icons/automake.mk + +UNINSTALL_DATA_HOOKS += update-icon-cache +INSTALL_DATA_HOOKS += update-icon-cache +