Makefile.nx-libs 6.96 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 137 138 139 140
	# Provide means for Xinerama support in NX/X2Go sessions. This
	# This also requires two post-install symlinks:
	# (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
	$(INSTALL_DIR) $(DESTDIR)$(NXLIBDIR)/X11/Xinerama
141
	$(INSTALL_SYMLINK) $(USRLIBDIR)/libNX_Xinerama.so.1 $(DESTDIR)$(NXLIBDIR)/X11/Xinerama/libXinerama.so.1
142

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

147 148 149 150
	$(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)/
151 152 153 154 155 156
	$(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
157
	$(INSTALL_SYMLINK) $(ETCDIR_X2GO)/rgb $(DESTDIR)$(PREFIX)/share/x2go/rgb
158 159

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

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

uninstall-lite:
167 168 169 170 171 172 173 174 175
	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
176 177 178 179 180

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

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

184 185 186 187
	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 \
188 189
	        if test -d $(NXLIBDIR); then rm -rf $(NXLIBDIR); fi; \
	        if test -d $(INCLUDEDIR)/nx; then rm -rf $(INCLUDEDIR)/nx; fi; \
190 191
	    fi; \
	fi