shellinabox/Makefile.am
zodiac@gmail.com 445d3c66a6 Another attempt at coming up with Makefile rules that work for
both Linux and BSD.


git-svn-id: https://shellinabox.googlecode.com/svn/trunk@210 0da03de8-d603-11dd-86c2-0f8696b7b6f9
2010-07-09 17:22:26 +00:00

302 lines
16 KiB
Makefile

AM_CPPFLAGS =
AM_CFLAGS = -g -std=gnu99 -Wall
AM_LDFLAGS = -g -lm
OBJCOPY ?= objcopy
OBJDUMP ?= objdump
noinst_LTLIBRARIES = libhttp.la \
liblogging.la
noinst_DATA = $(top_srcdir)/demo/demo.js
bin_PROGRAMS = shellinaboxd
man_MANS = shellinaboxd.1
noinst_HEADERS = libhttp/http.h
dist_doc_DATA = AUTHORS \
COPYING \
GPL-2 \
ChangeLog \
INSTALL \
NEWS \
README \
TODO \
shellinabox/white-on-black.css \
shellinabox/black-on-white.css \
shellinabox/monochrome.css \
shellinabox/color.css
EXTRA_DIST = INSTALL.Debian \
README.Fedora \
demo/beep.wav \
demo/favicon.ico \
demo/demo.html \
demo/demo.js \
demo/demo.jspp \
demo/demo.xml \
demo/enabled.gif \
demo/styles.css \
demo/print-styles.css \
demo/vt100.js \
demo/usercss-0.css \
demo/usercss-1.css \
demo/usercss-2.css \
demo/usercss-3.css \
etc-pam.d-shellinabox-example \
shellinabox/shellinaboxd.man.in \
shellinabox/shell_in_a_box.js \
shellinabox/vt100.js \
shellinabox/cgi-mode-example.sh \
debian/README \
debian/README.available \
debian/README.enabled \
debian/changelog \
debian/compat \
debian/control \
debian/copyright \
debian/docs \
debian/rules \
debian/shellinabox.default \
debian/shellinabox.dirs \
debian/shellinabox.init \
debian/shellinabox.install \
debian/shellinabox.postinst \
debian/shellinabox.postrm \
debian/watch
LIBLOGGING_INCLUDES = logging/logging.h \
config.h
liblogging_la_SOURCES= logging/logging.c \
$(LIBLOGGING_INCLUDES)
liblogging_la_LDFLAGS= -version 1:0:0
LIBHTTP_INCLUDES = libhttp/hashmap.h \
libhttp/trie.h \
libhttp/httpconnection.h \
libhttp/server.h \
libhttp/ssl.h \
libhttp/url.h \
config.h
libhttp_la_SOURCES = libhttp/hashmap.c \
libhttp/trie.c \
libhttp/httpconnection.c \
libhttp/server.c \
libhttp/ssl.c \
libhttp/url.c \
$(LIBHTTP_INCLUDES) \
libhttp/libhttp.sym
libhttp_la_LDFLAGS = -export-symbols $(top_srcdir)/libhttp/libhttp.sym \
-version 1:0:0
shellinaboxd_SOURCES = shellinabox/shellinaboxd.c \
shellinabox/externalfile.c \
shellinabox/externalfile.h \
shellinabox/launcher.c \
shellinabox/launcher.h \
shellinabox/privileges.c \
shellinabox/privileges.h \
shellinabox/service.c \
shellinabox/service.h \
shellinabox/session.c \
shellinabox/session.h \
shellinabox/usercss.c \
shellinabox/usercss.h \
shellinabox/cgi_root.html \
shellinabox/root_page.html \
shellinabox/vt100.jspp \
shellinabox/shell_in_a_box.jspp \
shellinabox/styles.css \
shellinabox/print-styles.css \
shellinabox/enabled.gif \
shellinabox/favicon.ico \
shellinabox/beep.wav \
config.h
shellinaboxd_LDADD = liblogging.la \
libhttp.la
shellinaboxd_LDFLAGS = -static
objcopyflags = case "$(host_cpu)" in \
i[0-9]86)echo '-O elf32-i386 -B i386';; \
x86_64) echo '-O elf64-x86-64 -B i386:x86-64';; \
*) trap 'rm -f /tmp/probe$$$$.o' EXIT; \
$(CC) $(AM_CFLAGS) $(CFLAGS) -c -xc \
-o /tmp/probe$$$$.o /dev/null && \
$(OBJDUMP) -f /tmp/probe$$$$.o | \
sed -e 's/.*file format */-O /;t; \
s/architecture: *\([^,]*\).*/-B \1/;t; \
d';; \
esac
renamesymbols = \
sed -e 's/\(.*\/\)\([^.]*\)\([.].*\)/\1\2\3=\2 /' \
-e 't0' \
-e 's/\([^.]*\)\([.].*\)/\1\2=\1 /' \
-e 't0' \
-e 's/.*/&=& /' \
-e ':0' \
-e 's/$$/aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ/' \
-e ':1' \
-e 's/\(=[^-_]*\)[-_]\([a-z]\)\([^ ]* .*\2\)\(.\)/\1\4\3\4/' \
-e 't1' \
-e 's/.\{53\}$$//' \
-e 's/[-/.]/_/g' \
-e 's/^/--redefine-sym _binary_/' \
-e 's/\([^=]*\)\(=[^ ]*\)/& \1_end\2End/' \
-e 's/\([^=]*\)\(=[^ ]*\)/& \1_start\2Start/' \
-e 's/[^ ]*\([^=]*\)=[^ ]*/-N\1_size/'
libtool: $(LIBTOOL_DEPS)
$(SHELL) ./config.status --recheck
${top_srcdir}/demo/demo.js: ${top_srcdir}/demo/beep.wav \
${top_srcdir}/demo/demo.jspp \
${top_srcdir}/demo/favicon.ico \
${top_srcdir}/demo/styles.css \
${top_srcdir}/demo/print-styles.css \
${top_srcdir}/demo/vt100.js \
${top_srcdir}/demo/usercss-0.css \
${top_srcdir}/demo/usercss-1.css \
${top_srcdir}/demo/usercss-2.css \
${top_srcdir}/demo/usercss-3.css
${top_srcdir}/demo/beep.wav: ${top_srcdir}/shellinabox/beep.wav
@rm -f "$@"
ln "$?" "$@"
${top_srcdir}/demo/enabled.gif: ${top_srcdir}/shellinabox/enabled.gif
@rm -f "$@"
ln "$?" "$@"
${top_srcdir}/demo/favicon.ico: ${top_srcdir}/shellinabox/favicon.ico
@rm -f "$@"
ln "$?" "$@"
${top_srcdir}/demo/styles.css: ${top_srcdir}/shellinabox/styles.css
@rm -f "$@"
sed -e '/\[if DEFINES_COLORS\]/,/\[endif DEFINES_COLORS\]/d' "$?" >"$@"
${top_srcdir}/demo/print-styles.css: ${top_srcdir}/shellinabox/print-styles.css
@rm -f "$@"
ln "$?" "$@"
${top_srcdir}/demo/usercss-0.css: ${top_srcdir}/shellinabox/white-on-black.css
@rm -f "$@"
ln "$?" "$@"
${top_srcdir}/demo/usercss-1.css: ${top_srcdir}/shellinabox/black-on-white.css
@rm -f "$@"
ln "$?" "$@"
${top_srcdir}/demo/usercss-2.css: ${top_srcdir}/shellinabox/monochrome.css
@rm -f "$@"
ln "$?" "$@"
${top_srcdir}/demo/usercss-3.css: ${top_srcdir}/shellinabox/color.css
@rm -f "$@"
ln "$?" "$@"
${top_srcdir}/demo/vt100.js: ${top_srcdir}/shellinabox/vt100.js
@rm -f "$@"
ln "$?" "$@"
shellinaboxd.1: shellinabox/shellinaboxd.man.in config.h
@src="${top_srcdir}/shellinabox/shellinaboxd.man.in"; \
echo preprocess "$$src" '>'"$@"; \
if sed -e 's/^#define \([^ ]*\).*/\1/' -e t -e d config.h | \
grep 'HAVE_BIN_LOGIN' >/dev/null 2>&1; then \
sed -e '/^#ifndef *HAVE_BIN_LOGIN$$/,/^#endif$$/d' "$$src"; \
else \
sed -e '/^#ifdef *HAVE_BIN_LOGIN$$/,/^#endif$$/d' "$$src"; \
fi | \
if [ `sed -e 's/^#define \([^ ]*\).*/\1/' -e t -e d config.h | \
egrep 'HAVE_OPENSSL_BIO_H|HAVE_OPENSSL_ERR_H|HAVE_OPENSSL_SSL_H'|\
wc -l` -eq 3 ]; then \
sed -e '/^#ifndef *HAVE_OPENSSL$$/,/^#endif$$/d'; \
else \
sed -e '/^#ifdef *HAVE_OPENSSL$$/,/^#endif$$/d'; \
fi | \
if sed -e 's/^#define \([^ ]*\).*/\1/' -e t -e d config.h | \
grep 'HAVE_SECURITY_PAM_APPL_H' >/dev/null 2>&1; then \
sed -e '/^#ifndef *HAVE_PAM$$/,/^#endif$$/d'; \
else \
sed -e '/^#ifdef *HAVE_PAM$$/,/^#endif$$/d'; \
fi | \
if [ -n "${DPKGBUILD}" ]; then \
sed -e '/^#ifndef *DPKGBUILD$$/,/^#endif$$/d'; \
else \
sed -e '/^#ifdef *DPKGBUILD$$/,/^#endif$$/d'; \
fi | \
sed -e '/^#/d' >"$@"
@out=`echo "$@" 2>/dev/null|sed -e 's/\.[^.]*$$/.ps/'`; \
man -Tps "./$@" >"$${out}" 2>/dev/null || rm -f "$${out}"
clean-local:
-rm -rf shellinaboxd.1 \
shellinaboxd.ps
-rm -rf debian/shellinabox \
debian/shellinabox*.debhelper* \
debian/shellinabox.substvars \
debian/tmp
-rm -rf GNU-stack
.css.o:
@echo $(OBJCOPY) "$<" "$@"
@$(OBJCOPY) -I binary `$(objcopyflags)` `echo "$<" | $(renamesymbols)`\
"$<" "$@"
@-printf '\000' >GNU-stack && \
$(OBJCOPY) --add-section .note.GNU-stack=GNU-stack "$@"; \
rm -f GNU-stack
.gif.o:
@echo $(OBJCOPY) "$<" "$@"
@$(OBJCOPY) -I binary `$(objcopyflags)` `echo "$<" | $(renamesymbols)`\
"$<" "$@"
@-printf '\000' >GNU-stack && \
$(OBJCOPY) --add-section .note.GNU-stack=GNU-stack "$@"; \
rm -f GNU-stack
.html.o:
@echo $(OBJCOPY) "$<" "$@"
@$(OBJCOPY) -I binary `$(objcopyflags)` `echo "$<" | $(renamesymbols)`\
"$<" "$@"
@-printf '\000' >GNU-stack && \
$(OBJCOPY) --add-section .note.GNU-stack=GNU-stack "$@"; \
rm -f GNU-stack
.ico.o:
@echo $(OBJCOPY) "$<" "$@"
@$(OBJCOPY) -I binary `$(objcopyflags)` `echo "$<" | $(renamesymbols)`\
"$<" "$@"
@-printf '\000' >GNU-stack && \
$(OBJCOPY) --add-section .note.GNU-stack=GNU-stack "$@"; \
rm -f GNU-stack
shellinabox/shell_in_a_box.o: shellinabox/shell_in_a_box.js config.h
.jspp.js:
@echo preprocess "$<" "$@"
@sed -e "`sed -e 's/^#define *\([^ ]*\) *\(.*\)/\/^[^#]\/s\/\1\/\2 \\\\\/* \1 *\\\\\/\/g/' \
-e t \
-e d "$<"`" \
-e "s/^#/\/\/ #/" \
-e "s/VERSION/\"@VERSION@ (revision @VCS_REVISION@)\"/g" \
"$<" >"$@"
.js.o:
@echo $(OBJCOPY) "$<" "$@"
@$(OBJCOPY) -I binary `$(objcopyflags)` `echo "$<" | $(renamesymbols)`\
"$<" "$@"
@-printf '\000' >GNU-stack && \
$(OBJCOPY) --add-section .note.GNU-stack=GNU-stack "$@"; \
rm -f GNU-stack
.wav.o:
@echo $(OBJCOPY) "$<" "$@"
@$(OBJCOPY) -I binary `$(objcopyflags)` `echo "$<" | $(renamesymbols)`\
"$<" "$@"
@-printf '\000' >GNU-stack && \
$(OBJCOPY) --add-section .note.GNU-stack=GNU-stack "$@"; \
rm -f GNU-stack