Skip to content

Instantly share code, notes, and snippets.

@mexisme
Last active January 22, 2018 21:48
Show Gist options
  • Save mexisme/83844d1b7c65a03cceda to your computer and use it in GitHub Desktop.
Save mexisme/83844d1b7c65a03cceda to your computer and use it in GitHub Desktop.
Install config and scripts to $HOME
#!/usr/bin/make -f
colon := :
$(colon) := :
BINS = e ediff emacs-xauth emacs.my emacs-agenda \
lpc xterm.my \
local-apt \
nx-session nx-menu chrome
LIBS =
SHARED = emacs/.emacs $(EMACS_SHARED_SITE)/irc.el $(EMACS_SHARED_SITE)/elisp-cache.el
BIN_SYMLINKS =
PROFILES = .zshrc .zshenv .bashrc .profile .zprofile
EMACS_SHARED_SITE = emacs/site-lisp
NOPREFIX = /../NOPREFIXSET
PREFIX = $(NOPREFIX)
SOURCE_BIN_DIR = bin
SOURCE_LIB_DIR = lib
SOURCE_SHARED_DIR = share
SOURCE_PROFILE_DIR = share/profile
TARGET_BIN_DIR = $(PREFIX)/bin
TARGET_LIB_DIR = $(PREFIX)/lib
TARGET_SHARED_DIR = $(PREFIX)/share
TARGET_PROFILE_DIR = $(HOME)
XSTOW_DIR = $(dir $(PREFIX))
XSTOW_SOURCE = $(notdir $(PREFIX))
INSTALL = install -D -T -v
CURL = curl -O
install: check-prefix install-bin install-lib install-shared install-symlinks
$(SOURCE_SHARED_DIR) $(TARGET_SHARED_DIR) $(SOURCE_SHARED_DIR)/$(EMACS_SHARED_SITE):
@mkdir -p $@
$(EMACS_SHARED_SITE)/elisp-cache.el: http//elisp-cache.googlecode.com/svn/trunk/elisp-cache.el
http//%.el: $(SOURCE_SHARED_DIR)/$(EMACS_SHARED_SITE)
(cd $<; $(CURL) `echo "$@"| sed -e "s%//%://%"`)
/google/%.el: $(SOURCE_SHARED_DIR)/$(EMACS_SHARED_SITE)
@cp -v $@ $</
@chmod u+w $</*
xstow: install
@(cd $(XSTOW_DIR); \
xstow -v -D "$(XSTOW_SOURCE)"; \
xstow -v "$(XSTOW_SOURCE)")
check-prefix:
@(if [ "$(PREFIX)" == "$(NOPREFIX)" ]; then \
echo "\$$(PREFIX) is not set" >&2; \
exit 1; fi )
install-bin:
@(cd $(SOURCE_BIN_DIR); \
for F in $(BINS); do \
$(INSTALL) $$F $(TARGET_BIN_DIR)/$$F; \
done )
install-lib:
@(cd $(SOURCE_LIB_DIR); \
for F in $(LIBS); do \
$(INSTALL) $$F $(TARGET_LIB_DIR)/$$F; \
done )
download-shared: $(EMACS_SHARED_SITE)/ncl-mode.el $(EMACS_SHARED_SITE)/okra-mode.el $(EMACS_SHARED_SITE)/elisp-cache.el
install-shared:
@(cd $(SOURCE_SHARED_DIR); \
for F in $(SHARED); do \
$(INSTALL) $$F $(TARGET_SHARED_DIR)/$$F; \
done )
install-profile:
@(cd $(SOURCE_PROFILE_DIR); \
for F in $(PROFILES); do \
$(INSTALL) $$F $(TARGET_PROFILE_DIR)/$$F; \
done )
install-symlinks:
@(cd $(TARGET_BIN_DIR); \
for F in $(BIN_SYMLINKS); do \
ln -svf $$F; \
done )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment