Makefile.nx-libs 7.03 KB
Newer Older
1 2
#!/usr/bin/make -f

3 4 5
INSTALL_DIR=install -d -m 755
INSTALL_FILE=install -m 644
INSTALL_PROGRAM=install -m 755
6
INSTALL_SYMLINK=ln -s -f
7
COPY_SYMLINK=cp -a
8 9 10
RM_FILE=rm -f
RM_DIR=rmdir -p --ignore-fail-on-non-empty

11
ETCDIR_NX   ?= /etc/nxagent
12
ETCDIR_X2GO ?= /etc/x2go
13 14 15 16 17 18 19 20
PREFIX      ?= /usr/local
BINDIR      ?= $(PREFIX)/bin
LIBDIR      ?= $(PREFIX)/lib
USRLIBDIR   ?= $(LIBDIR)
INCLUDEDIR  ?= $(PREFIX)/include
NXLIBDIR    ?= $(PREFIX)/lib/nx
X2GOLIBDIR  ?= $(PREFIX)/lib/x2go
CONFIGURE   ?= ./configure
21 22

SHELL:=/bin/bash
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56

%:
	if test -f nxcomp/Makefile; then ${MAKE} -C nxcomp $@; fi
	if test -f nxproxy/Makefile; then ${MAKE} -C nxproxy $@; fi
	if test -d nx-X11; then \
	    if test -f nxcompext/Makefile; then ${MAKE} -C nxcompext $@; fi; \
	    if test -f nxcompshad/Makefile; then ${MAKE} -C nxcompshad $@; fi; \
	    if test -f nx-X11/Makefile; then ${MAKE} -C nx-X11 $@; fi; \
	fi

all: build

test:
	echo "No testing for NX (redistributed)"

build-lite:
	cd nxcomp && autoconf && (${CONFIGURE}) && ${MAKE}
	cd nxproxy && autoconf && (${CONFIGURE}) && ${MAKE}

build-full:
# in the full case, we rely on "magic" in the nx-X11 imake-based makefiles...
	cd nxcomp && autoconf
	cd nxcompext && autoconf
	cd nxcompshad && autoconf
	cd nx-X11 && ${MAKE} World
	cd nxproxy && autoconf && (${CONFIGURE}) && ${MAKE}

build:
	if ! test -d nx-X11; then \
	    ${MAKE} build-lite; \
	else \
	    ${MAKE} build-full; \
	fi

57
install:
58 59 60 61
	$(MAKE) install-lite
	[ ! -d nx-X11 ] || $(MAKE) install-full

install-lite:
62 63 64 65
	# install nxcomp library
	$(MAKE) -C nxcomp install

	# install nxproxy wrapper script
66
	$(INSTALL_DIR) $(DESTDIR)$(BINDIR)
67 68 69 70 71 72
	$(INSTALL_PROGRAM) bin/nxproxy $(DESTDIR)$(BINDIR)

	# FIXME: the below install logic should work via nxproxy/Makefile.in
	# overriding for now...
	$(INSTALL_DIR) $(DESTDIR)$(NXLIBDIR)/bin
	$(INSTALL_PROGRAM) nxproxy/nxproxy $(DESTDIR)$(NXLIBDIR)/bin
73

74
	$(INSTALL_DIR) $(DESTDIR)$(PREFIX)/share/man/man1/
75
	$(INSTALL_FILE) nxproxy/man/nxproxy.1 $(DESTDIR)$(PREFIX)/share/man/man1/
76 77
	gzip $(DESTDIR)$(PREFIX)/share/man/man1/*.1

78 79 80 81
install-full:
	for f in nxagent nxauth x2goagent; do \
	   $(INSTALL_PROGRAM) bin/$$f $(DESTDIR)$(BINDIR); done
	for d in nxcompext nxcompshad; do \
82
	   $(MAKE) -C $$d install; done
83

84
	$(INSTALL_DIR) $(DESTDIR)$(X2GOLIBDIR)/bin/
85
	cd $(DESTDIR)$(X2GOLIBDIR)/bin/ && ln -sf $(NXLIBDIR)/bin/nxagent x2goagent
86

87 88
	$(INSTALL_DIR) $(DESTDIR)$(PREFIX)/share/pixmaps
	$(INSTALL_FILE) nx-X11/programs/Xserver/hw/nxagent/x2go.xpm $(DESTDIR)$(PREFIX)/share/pixmaps
89
	$(INSTALL_FILE) nx-X11/programs/Xserver/hw/nxagent/nxagent.xpm $(DESTDIR)$(PREFIX)/share/pixmaps
90 91 92 93

	$(INSTALL_DIR) $(DESTDIR)$(PREFIX)/share/nx
	$(INSTALL_FILE) nx-X11/programs/Xserver/Xext/SecurityPolicy $(DESTDIR)$(PREFIX)/share/nx

94 95
	$(INSTALL_DIR) $(DESTDIR)$(PREFIX)/share/x2go/versions
	$(INSTALL_FILE) VERSION.x2goagent $(DESTDIR)$(PREFIX)/share/x2go/versions
96

97 98
	$(INSTALL_DIR) $(DESTDIR)$(NXLIBDIR)/bin
	$(INSTALL_PROGRAM) nx-X11/programs/nxauth/nxauth $(DESTDIR)$(NXLIBDIR)/bin
99 100
	$(INSTALL_PROGRAM) nx-X11/programs/Xserver/nxagent $(DESTDIR)$(NXLIBDIR)/bin

101 102 103 104 105 106 107
	$(INSTALL_DIR) $(DESTDIR)$(PREFIX)/share/man/man1/
	$(INSTALL_FILE) nx-X11/programs/Xserver/hw/nxagent/man/x2goagent.1 $(DESTDIR)$(PREFIX)/share/man/man1/
	$(INSTALL_FILE) nx-X11/programs/Xserver/hw/nxagent/man/nxagent.1 $(DESTDIR)$(PREFIX)/share/man/man1/
	$(INSTALL_FILE) nx-X11/programs/nxauth/nxauth.man $(DESTDIR)$(PREFIX)/share/man/man1/
	mv -f $(DESTDIR)$(PREFIX)/share/man/man1/nxauth.man $(DESTDIR)$(PREFIX)/share/man/man1/nxauth.1
	gzip $(DESTDIR)$(PREFIX)/share/man/man1/*.1

108 109 110 111 112 113 114 115
	# create a clean nx-X11/.build-exports space
	rm -Rf nx-X11/.build-exports
	mkdir -p nx-X11/.build-exports/include
	mkdir -p nx-X11/.build-exports/lib

	# copy headers (for libnx-x11-dev)
	cp -aL nx-X11/exports/include/* nx-X11/.build-exports/include

116
	# copy libs (for libnx-x11), we want the targets of the links
117
	. replace.sh; set -x; find nx-X11/exports/lib/ | grep -F ".so" | while read libpath; do \
118 119
	    libfile=$$(basename $$libpath); \
	    libdir=$$(dirname $$libpath); \
120
	    link=$$(readlink $$libpath); \
121
	\
122 123
	    mkdir -p "$$(string_rep "$$libdir" exports .build-exports)"; \
	    cp -a "$$(string_rep "$$libpath" "$$libfile" "$$link")" "$$(string_rep "$$libdir" exports .build-exports)"; \
124 125
	done;

126 127
	$(INSTALL_DIR) $(DESTDIR)$(USRLIBDIR)
	$(COPY_SYMLINK) nx-X11/.build-exports/lib/*.so* $(DESTDIR)$(USRLIBDIR)/
128

129
	. replace.sh; set -x; find nx-X11/.build-exports/include/ -type d | grep -v "include/X11/bitmaps" | \
130
	    while read dirname; do \
131
	        $(INSTALL_DIR) "$$(string_rep "$$dirname" nx-X11/.build-exports/include "$(DESTDIR)$(INCLUDEDIR)/nx")"; \
132
	        $(INSTALL_FILE) $${dirname}/*.h \
133
	                        "$$(string_rep "$$dirname" nx-X11/.build-exports/include "$(DESTDIR)$(INCLUDEDIR)/nx")"/ || true; \
134 135
	    done; \

136
	# Provide means for Xinerama support in NX/X2Go sessions. This
137 138 139 140 141
	# This also requires three post-install symlinks created by libnx-xinerama1:
	# $(DESTDIR)$(NXLIBDIR)/X11/Xinerama/libNX_X11.so.6 -> /usr/<libdir>/libX11.so.6
	# $(DESTDIR)$(NXLIBDIR)/X11/Xinerama/libNX_Xext.so.6 -> /usr/<libdir>/libXext.so.6
	# $(DESTDIR)$(NXLIBDIR)/X11/Xinerama/libXinerama.so.1 -> /usr/<libdir>/libNX_Xinerama.so.1
	# Only create the owned directory here for nx-x11-common.
142
	$(INSTALL_DIR) $(DESTDIR)$(NXLIBDIR)/X11/Xinerama
143

144
	$(INSTALL_DIR) $(DESTDIR)$(INCLUDEDIR)/nx/X11/bitmaps
145
	$(INSTALL_FILE) nx-X11/.build-exports/include/X11/bitmaps/* \
146
	                $(DESTDIR)$(INCLUDEDIR)/nx/X11/bitmaps/
147

148 149 150 151
	$(INSTALL_DIR) $(DESTDIR)/$(ETCDIR_NX)
	$(INSTALL_DIR) $(DESTDIR)/$(ETCDIR_X2GO)
	$(INSTALL_FILE) etc/keystrokes.cfg $(DESTDIR)/$(ETCDIR_NX)/
	$(INSTALL_FILE) etc/keystrokes.cfg $(DESTDIR)/$(ETCDIR_X2GO)/
152 153 154 155 156 157
	$(INSTALL_FILE) etc/rgb $(DESTDIR)$(ETCDIR_X2GO)/
	$(INSTALL_FILE) etc/rgb $(DESTDIR)$(ETCDIR_NX)/
	$(INSTALL_FILE) etc/nxagent.keyboard $(DESTDIR)$(ETCDIR_NX)/
	$(INSTALL_FILE) etc/x2goagent.keyboard $(DESTDIR)$(ETCDIR_X2GO)/

	$(INSTALL_DIR) $(DESTDIR)$(PREFIX)/share/x2go
158
	$(INSTALL_SYMLINK) $(ETCDIR_X2GO)/rgb $(DESTDIR)$(PREFIX)/share/x2go/rgb
159 160

	$(INSTALL_DIR) $(DESTDIR)$(PREFIX)/share/nx
161
	$(INSTALL_SYMLINK) $(ETCDIR_NX)/rgb $(DESTDIR)$(PREFIX)/share/nx/rgb
162

163
uninstall:
164 165 166 167
	$(MAKE) uninstall-lite
	[ ! -d nx-X11 ] || $(MAKE) uninstall-full

uninstall-lite:
168 169 170 171 172 173 174 175 176
	if test -f nxcomp/Makefile; then ${MAKE} -C nxcomp $@; fi

	# uninstall nproxy wrapper script
	$(RM_FILE) $(DESTDIR)$(BINDIR)/nxproxy
	# FIXME: don't use uninstall rule in nxproxy/Makefile.in, let's do
        # it on our own for now...
	$(RM_FILE) $(DESTDIR)$(NXLIBDIR)/bin/nxproxy
	$(RM_DIR) $(DESTDIR)$(NXLIBDIR)/bin/
	$(RM_FILE) $(DESTDIR)$(PREFIX)/share/man/man1/*.1
177 178 179 180 181

uninstall-full:
	for f in nxagent nxauth x2goagent; do \
	    $(RM_FILE) $(DESTDIR)$(BINDIR)/$$f; done

182 183
	$(RM_FILE) $(DESTDIR)$(X2GOLIBDIR)/bin/x2goagent
	$(RM_DIR) $(DESTDIR)$(X2GOLIBDIR)/bin/
184

185 186 187 188
	if test -d nx-X11; then \
	    if test -f nxcompext/Makefile; then ${MAKE} -C nxcompext $@; fi; \
	    if test -f nxcompshad/Makefile; then ${MAKE} -C nxcompshad $@; fi; \
	    if test -f nx-X11/Makefile; then \
189 190
	        if test -d $(NXLIBDIR); then rm -rf $(NXLIBDIR); fi; \
	        if test -d $(INCLUDEDIR)/nx; then rm -rf $(INCLUDEDIR)/nx; fi; \
191 192
	    fi; \
	fi