#!/usr/bin/make -rf # Disable pre-existing implicit rules and suffix rules for easier dep debugging. %.o : %.s % : RCS/%,v % : RCS/% % : %,v % : s.% % : SCCS/s.% .SUFFIXES: SUFFIXES := # Get configuration data. config.mk: configure ./configure include config.mk GLIB_GENMARSHAL ?= glib-genmarshal PYGTK_CODEGEN ?= pygobject-codegen-2.0 ICON_SLICER ?= icon-slicer ICONMAP ?= $(shell $(PKG_CONFIG) --variable=program_path icon-naming-utils)/icon-name-mapping EMPY ?= artwork/gtk/theme/em.py PYGTK_DEFSDIR = $(shell $(PKG_CONFIG) --variable=defsdir pygtk-2.0) INTLTOOL_MERGE = intltool-merge UPDATE_MIME_DATABASE = update-mime-database GCONFTOOL2 = gconftool-2 # Build crazy metadatareader C extension DS_SRCDIR = datastore/src/carquinyol DS_EXTRA_CFLAGS=-fPIC -I$(DS_SRCDIR) -I/usr/include/python$(PYTHON_VERSION) -DPACKAGE=\"sugar-datastore\" -DVERSION=\"$(SUCROSE_VERSION)\" DS_EXTRA_LDFLAGS=-fPIC -L/usr/lib/python$(PYTHON_VERSION) -lpython$(PYTHON_VERSION) DS_OBJS=$(patsubst %.c,%.o,$(shell find $(DS_SRCDIR) -name '*.c')) $(DS_SRCDIR)/metadatareader.so: $(DS_OBJS) $(CC) -shared $(LDFLAGS) $(DS_EXTRA_LDFLAGS) -o $@ -Wl,-soname,$(basename $@) $^ datastore/%.o: datastore/%.c $(CC) $(ALLCFLAGS) $(DS_EXTRA_CFLAGS) -c -o $@ $< # Build crazy sugar toolkit python C extension TK_SRCDIR = toolkit/src/sugar $(TK_SRCDIR)/_sugarext.c: $(TK_SRCDIR)/_sugarext.defs $(TK_SRCDIR)/_sugarext.override $(PYGTK_CODEGEN) \ --register $(PYGTK_DEFSDIR)/gdk-types.defs \ --register $(PYGTK_DEFSDIR)/gtk-types.defs \ --override $(TK_SRCDIR)/_sugarext.override \ --prefix py_sugarext $(TK_SRCDIR)/_sugarext.defs > $@ $(TK_SRCDIR)/sugar-marshal.h: $(TK_SRCDIR)/sugar-marshal.list $(GLIB_GENMARSHAL) --prefix=sugar_marshal $< --header > $@ $(TK_SRCDIR)/sugar-marshal.c: $(TK_SRCDIR)/sugar-marshal.list $(TK_SRCDIR)/sugar-marshal.h $(GLIB_GENMARSHAL) --prefix=sugar_marshal $< --header --body > $@ TK_LIBDEPS=pygtk-2.0 gtk+-2.0 sm ice alsa TK_EXTRA_CFLAGS=-fPIC $(shell $(PKG_CONFIG) --cflags $(TK_LIBDEPS)) -Itoolkit/src/sugar -I/usr/include/python$(PYTHON_VERSION) \ -DPACKAGE=\"sugar-toolkit\" -DVERSION=\"$(SUCROSE_VERSION)\" TK_EXTRA_LDFLAGS=-fPIC $(shell $(PKG_CONFIG) --libs $(TK_LIBDEPS)) -L/usr/lib/python$(PYTHON_VERSION) -lpython$(PYTHON_VERSION) toolkit/%.o: toolkit/%.c $(CC) $(ALLCFLAGS) $(TK_EXTRA_CFLAGS) -c -o $@ $< TK_OBJS=$(TK_SRCDIR)/sugar-marshal.o $(TK_SRCDIR)/_sugarext.o $(patsubst %.c,%.o,$(shell find $(TK_SRCDIR) -name '*.c')) $(TK_SRCDIR)/_sugarext.so: $(TK_OBJS) $(CC) -shared $(LDFLAGS) $(TK_EXTRA_LDFLAGS) -o $@ -Wl,-soname,$(basename $@) $^ # End crazy sugar toolkit python C module # Build crazy sugar python C extension BASE_SRCDIR = base/src/sugar $(BASE_SRCDIR)/_sugarbaseext.c: $(BASE_SRCDIR)/_sugarbaseext.defs $(BASE_SRCDIR)/_sugarbaseext.override $(PYGTK_CODEGEN) \ --override $(BASE_SRCDIR)/_sugarbaseext.override \ --prefix py_sugarbaseext $(BASE_SRCDIR)/_sugarbaseext.defs > $@ BASE_LIBDEPS=pygobject-2.0 BASE_EXTRA_CFLAGS=-fPIC $(shell $(PKG_CONFIG) --cflags $(BASE_LIBDEPS)) -Ibase/src/sugar -I/usr/include/python$(PYTHON_VERSION) \ -DPACKAGE=\"sugar-base\" -DVERSION=\"$(SUCROSE_VERSION)\" -DXDG_PREFIX=sugar_mime BASE_EXTRA_LDFLAGS=-fPIC $(shell $(PKG_CONFIG) --libs $(BASE_LIBDEPS)) -L/usr/lib/python$(PYTHON_VERSION) -lpython$(PYTHON_VERSION) base/%.o: base/%.c $(CC) $(ALLCFLAGS) $(BASE_EXTRA_CFLAGS) -c -o $@ $< BASE_OBJS=$(BASE_SRCDIR)/_sugarbaseext.o $(patsubst %.c,%.o,$(shell find $(BASE_SRCDIR) -name '*.c')) $(BASE_SRCDIR)/_sugarbaseext.so: $(BASE_OBJS) $(CC) -shared $(LDFLAGS) $(BASE_EXTRA_LDFLAGS) -o $@ -Wl,-soname,$(basename $@) $^ # End crazy sugar python C module # Build gtk engine ENGINE_SRCDIR = artwork/gtk/engine ENGINE_LIBDEPS=gtk+-2.0 gobject-2.0 cairo ENGINE_EXTRA_CFLAGS=-fPIC $(shell $(PKG_CONFIG) --cflags $(ENGINE_LIBDEPS)) -Iartwork/gtk/engine ENGINE_EXTRA_LDFLAGS=-fPIC $(shell $(PKG_CONFIG) --libs $(ENGINE_LIBDEPS)) artwork/gtk/engine/%.o: artwork/gtk/engine/%.c $(CC) $(ALLCFLAGS) $(ENGINE_EXTRA_CFLAGS) -c -o $@ $< ENGINE_OBJS=$(patsubst %.c,%.o,$(shell find $(ENGINE_SRCDIR) -name '*.c')) $(ENGINE_SRCDIR)/libsugar.so: $(ENGINE_OBJS) $(CC) -shared $(LDFLAGS) $(ENGINE_EXTRA_LDFLAGS) -o $@ -Wl,-soname,$(basename $@) $^ # End gtk engine # D-Bus service files; ick. DBUS_FILES=datastore/etc/org.laptop.sugar.DataStore.service presence-service/org.laptop.Sugar.Presence.service presence-service/org.laptop.Sugar.Presence.service: presence-service/src/org.laptop.Sugar.Presence.service.in config.mk sed -e "s,@bindir@,$(BINDIR)," $< > $@ datastore/etc/org.laptop.sugar.DataStore.service: datastore/etc/org.laptop.sugar.DataStore.service.in config.mk sed -e s,@bindir@,$(BINDIR), $< > $@ main/data/sugar.schemas: main/data/sugar.schemas.in config.mk #$(INTLTOOL_MERGE) main/po;#$(wildcard main/po/*.po); #LC_ALL=C $(INTLTOOL_MERGE) -s -u -c po/.intltool-merge-cache main/po $< $@; LC_ALL=C $(INTLTOOL_MERGE) -s -u main/po $< $@; main/data/sugar.xml: main/data/sugar.xml.in config.mk #$(INTLTOOL_MERGE) main/po;#$(wildcard main/po/*.po); #LC_ALL=C $(INTLTOOL_MERGE) -x -u -c po/.intltool-merge-cache main/po $< $@; LC_ALL=C $(INTLTOOL_MERGE) -x -u main/po $< $@; main/src/jarabe/config.py: main/src/jarabe/config.py.in config.mk sed -e s,@prefix@,$(DESTDIR)$(prefix),g -e s,@SUCROSE_VERSION@,$(SUCROSE_VERSION),g $< > $@ main/bin/sugar-env: main/data/sugar-env.in config.mk sed -e s,@prefix@,$(DESTDIR)$(prefix),g \ -e s,@DATADIR@,$(DATADIR),g \ -e s,@SYSCONFDIR@,$(SYSCONFDIR),g \ -e s,@LIBDIR@,$(LIBDIR),g \ -e s,@BINDIR@,$(BINDIR),g \ -e s,@PYTHON_SITEPACKAGES@,$(PYTHON_SITEPACKAGES),g \ $< > $@ # End D-Bus service files. # GTK Themes artwork/gtk/theme/sugar-%.gtkrc: artwork/gtk/theme/gtkrc.em $(EMPY) -p $$ -D scaling=\'$*\' $^ > $@ # End GTK Themes # PS binary presence-service/sugar-presence-service: presence-service/src/sugar-presence-service.in sed -e "s,@prefix@,$(DESTDIR)$(prefix)," $^ > $@ presence-service/src/config.py: config.mk echo "VERSION = \"$(SUCROSE_VERSION)\"" > $@ # End PS binary. # Cursors artwork/cursor/sugar/cursors: $(wildcard artwork/cursor/*.png) artwork/cursor/sugar/sugar.cursortheme $(ICON_SLICER) --image-dir=artwork/cursor/sugar --output-dir=artwork/cursor/sugar artwork/cursor/sugar/sugar.cursortheme # End Cursors. ALL_OBJS=$(BASE_OBJS) $(DS_OBJS) $(TK_OBJS) $(ENGINE_OBJS) BINARIES = $(wildcard main/bin/*) $(wildcard datastore/bin/*) presence-service/sugar-presence-service main/bin/sugar-env DATA = $(addprefix main/data/,sugar-72.gtkrc sugar-100.gtkrc activities.defaults kbdconfig mime.defaults) CLEAN = $(ALL_OBJS) $(ALL_OBJS:%.o=%.d) $(DS_SRCDIR)/metadatareader.so $(BASE_SRCDIR)/_sugarbaseext.so $(TK_SRCDIR)/_sugarext.so \ presence-service/sugar-presence-service presence-service/org.laptop.Sugar.Presence.service presence-service/src/config.py \ artwork/cursor/sugar/cursors artwork/gtk/theme/*.gtkrc artwork/gtk/engine/libsugar.so \ main/data/sugar.xml main/data/sugar.schemas main/jarabe/config.py main/bin/sugar-env main/src/config.py \ tree DS_PYTHON_DIRS=$(shell cd datastore/src; find * -type d) DS_PYTHON_FILES=$(shell cd datastore/src; find * -name '*.py') carquinyol/metadatareader.so BASE_PYTHON_DIRS=$(shell cd base/src; find * -type d) BASE_PYTHON_FILES=$(shell cd base/src; find * -name '*.py') sugar/_sugarbaseext.so MAIN_PYTHON_DIRS=$(shell cd main/src; find * -type d) MAIN_PYTHON_FILES=$(shell cd main/src; find * -name '*.py' -o -name '*.png') jarabe/config.py TOOLKIT_PYTHON_DIRS=$(shell cd toolkit/src; find * -type d) TOOLKIT_PYTHON_FILES=$(shell cd toolkit/src; find * -name '*.py') sugar/_sugarext.so ARTWORK_THEME_FILES=artwork/icons/index.theme PS_PYTHON_DIRS=sugar-presence-service PS_PYTHON_FILES=$(shell cd presence-service/src; find * -name '*.py') config.py PS_PYTHON_SITEPACKAGES:=$(DESTDIR)/$(prefix)/share/sugar-presence-service EXTENSION_DIRS=$(shell cd main/extensions; find * -type d) EXTENSION_FILES=$(shell cd main/extensions; find * -name '*.py') EXTENSIONSDIR=$(DATADIR)/sugar/extensions PYTHON_DIRS = $(DS_PYTHON_DIRS) $(BASE_PYTHON_DIRS) $(MAIN_PYTHON_DIRS) $(TOOLKIT_PYTHON_DIRS) all: $(BINARIES) $(DATA) $(DBUS_FILES) \ $(addprefix datastore/src/,$(DS_PYTHON_FILES)) \ $(addprefix presence-service/src/,$(PS_PYTHON_FILES)) \ $(addprefix base/src/,$(BASE_PYTHON_FILES)) \ $(addprefix main/src/,$(MAIN_PYTHON_FILES)) \ $(addprefix toolkit/src/,$(TOOLKIT_PYTHON_FILES)) \ $(addprefix main/extensions/,$(EXTENSION_FILES)) \ $(addprefix main/data/,sugar.xml sugar.schemas) \ artwork/cursor/sugar/cursors \ artwork/gtk/theme/sugar-72.gtkrc \ artwork/gtk/theme/sugar-100.gtkrc \ artwork/gtk/engine/libsugar.so install-fast: all for d in $(BINDIR) $(SYSCONFDIR) $(DBUSDIR) $(SUGARDIR) $(SUGARDIR)/icons \ $(addprefix $(PYTHON_SITEPACKAGES)/,$(PYTHON_DIRS)) \ $(EXTENSIONSDIR) $(addprefix $(EXTENSIONSDIR)/,$(EXTENSION_DIRS)) \ $(DATADIR)/themes/sugar-72/gtk-2.0 $(DATADIR)/themes/sugar-100/gtk-2.0 \ $(DATADIR)/locale $(SCHEMADIR) $(MIMEDIR) $(CURSORDIR) $(ENGINEDIR) \ $(addprefix $(PS_PYTHON_SITEPACKAGES)/,$(PS_PYTHON_DIRS)); do \ install -d $$d; \ done for f in $(BINARIES); do \ install -m0755 $$f $(BINDIR); \ done for f in $(DBUS_FILES); do \ install -m0644 $$f $(DBUSDIR); \ done for f in $(DATA); do \ install -m0644 $$f $(SUGARDIR); \ done for f in $(wildcard main/data/icons/*); do \ install -m0644 $$f $(SUGARDIR)/icons; \ done for f in $(DS_PYTHON_FILES); do \ install -m0644 datastore/src/$$f $(PYTHON_SITEPACKAGES)/$$(dirname $$f); \ done for f in $(BASE_PYTHON_FILES); do \ install -m0644 base/src/$$f $(PYTHON_SITEPACKAGES)/$$(dirname $$f); \ done for f in $(MAIN_PYTHON_FILES); do \ install -m0644 main/src/$$f $(PYTHON_SITEPACKAGES)/$$(dirname $$f); \ done for f in $(TOOLKIT_PYTHON_FILES); do \ install -m0644 toolkit/src/$$f $(PYTHON_SITEPACKAGES)/$$(dirname $$f); \ done for f in $(PS_PYTHON_FILES); do \ install -m0644 presence-service/src/$$f $(PS_PYTHON_SITEPACKAGES)/$$(dirname $$f); \ done for f in $(EXTENSION_FILES); do \ install -m0644 main/extensions/$$f $(EXTENSIONSDIR)/$$(dirname $$f); \ done for f in $(ARTWORK_THEME_FILES); do \ install -m0644 $$f $(ICONDIR); \ done for f in artwork/cursor/sugar/cursors/*; do \ install -m0644 $$f $(CURSORDIR); \ done install -m0644 artwork/gtk/theme/sugar-72.gtkrc $(DATADIR)/themes/sugar-72/gtk-2.0/gtkrc; install -m0644 artwork/gtk/theme/sugar-100.gtkrc $(DATADIR)/themes/sugar-100/gtk-2.0/gtkrc; install -m0644 artwork/gtk/engine/libsugar.so $(ENGINEDIR); install -m0644 main/data/sugar.schemas $(SCHEMADIR); install -m0644 main/data/sugar.xml $(MIMEDIR); install-slow: all (export GCONF_CONFIG_SOURCE="xml::$(SYSCONFDIR)/gconf/gconf.xml.defaults";\ $(GCONFTOOL2) --makefile-install-rule $(SCHEMADIR)/sugar.schemas); if [ `id -ru` -ne 0 ] && ! `grep -q "xml:readonly:$(SYSCONFDIR)/gconf/gconf.xml.defaults" $(GCONF_PATHS_FILE)`; then \ echo "adding gconf defaults to the gconf search path"; \ echo "xml:readonly:$(SYSCONFDIR)/gconf/gconf.xml.defaults" >> "$(GCONF_PATHS_FILE)"; \ else \ echo "skipping schema installation"; \ fi $(UPDATE_MIME_DATABASE) $(DATADIR)/mime; for d in $(shell ls artwork/icons/scalable); do \ install -d $(ICONDIR)/scalable/$$d; \ for f in artwork/icons/scalable/$$d/*; do \ install -m0644 $$f $(ICONDIR)/scalable/$$d; \ done; \ (cd $(ICONDIR)/scalable && $(ICONMAP) -c $$d) \ done gtk-update-icon-cache -f $(ICONDIR) install: install-fast install-slow clean: rm -rf $(CLEAN); distclean: clean rm -f config.mk main/src/jarabe/config.py presence-service/src/config.py # Development helpers DEBIAN_DEPS = chrpath debhelper devscripts dh-buildinfo gettext icon-naming-utils icon-slicer intltool libasound2-dev libcairo2-dev libgconf2-dev libglib2.0-dev libgtk2.0-dev libice-dev libsm-dev libxml-parser-perl metacity openssh-client patchutils python-all-dev python-central python-cjson python-dateutil python-dbus python-decorator python-dev python-empy python-gconf python-gnome2 python-gobject python-gobject-dev python-gst0.10 python-gtk2-dev python-gtksourceview2 python-hippocanvas python-hulahop python-rsvg python-simplejson python-telepathy python-wnck python-xapian quilt shared-mime-info telepathy-gabble telepathy-salut vnc4server x11-apps x11-xserver-utils xvnc4viewer FEDORA_DEPS = pkgconfig perl-XML-Parser gettext python pygtk2-devel gtk2-devel GConf2-devel intltool libSM-devel alsa-lib-devel icon-slicer icon-naming-utils xorg-x11-apps pygtk2-codegen python-decorator tigervnc tigervnc-server vte gcc glibc-devel redhat-lsb deps: -(lsb_release -i | grep 'Debian\|Ubuntu') && sudo aptitude install $(DEBIAN_DEPS) -(grep 'Fedora' /etc/fedora-release) && sudo yum install $(FEDORA_DEPS) run: $(MAKE) DESTDIR=`pwd`/tree install `pwd`/tree/usr/bin/sugar-env sugar-emulator # .PHONY: .DEFAULT_GOAL := all -include $(ALL_OBJS:%.o=%.d)