Makefile.in 7.37 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
#/**************************************************************************/
#/*                                                                        */
#/* Copyright (c) 2001, 2011 NoMachine (http://www.nomachine.com)          */
#/* Copyright (c) 2008-2014 Oleksandr Shneyder <o.shneyder@phoca-gmbh.de>  */
#/* Copyright (c) 2014-2016 Ulrich Sibiller <uli42@gmx.de>                 */
#/* Copyright (c) 2014-2016 Mihai Moldovan <ionic@ionic.de>                */
#/* Copyright (c) 2011-2016 Mike Gabriel <mike.gabriel@das-netzwerkteam.de>*/
#/* Copyright (c) 2015-2016 Qindel Group (http://www.qindel.com)           */
#/*                                                                        */
#/* NXCOMPSHAD, NX protocol compression and NX extensions to this software */
#/* are copyright of the aforementioned persons and companies.             */
#/*                                                                        */
#/* Redistribution and use of the present software is allowed according    */
#/* to terms specified in the file LICENSE which comes in the source       */
#/* distribution.                                                          */
#/*                                                                        */
#/* All rights reserved.                                                   */
#/*                                                                        */
#/* NOTE: This software has received contributions from various other      */
#/* contributors, only the core maintainers and supporters are listed as   */
#/* copyright holders. Please contact us, if you feel you should be listed */
#/* as copyright holder, as well.                                          */
#/*                                                                        */
#/**************************************************************************/
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46

#
# Get values from configure script.
#

VERSION=@VERSION@
LIBVERSION=@LIBVERSION@

#
# We would really like to enable all warnings, -Wredundant-decls,
# though, gives a warning caused by pthread.h and unistd.h and
# GCC 3.4 was changed in a way that it now complains about some
# of the -W directives we used before (-Wmissing-declarations,
# -Wnested-externs, -Wstrict-prototypes and -Wmissing-prototypes).
#

CXX         = @CXX@
CXXFLAGS    = @CXXFLAGS@ @X_CFLAGS@ @DEFS@ \
              -Wall -Wpointer-arith
CXXINCLUDES =
CXXDEFINES  =

47 48
CPPFLAGS    = @CPPFLAGS@

49 50 51 52 53 54 55 56 57 58 59 60
#
# C programs don't share the C++ flags. They should
# have their own @CCFLAGS@.
#

CC          = @CC@
CCFLAGS     = @X_CFLAGS@ @DEFS@ \
              -Wall -Wpointer-arith
CCINCLUDES  =
CCDEFINES   =

LDFLAGS     = @LDFLAGS@
61
LIBS        = @LIBS@ -lNX_X11
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80

#
# Only if THREADS is defined.
#
# LIBS = $(LIBS) -lpthread
#

#
# Only if you want ElectricFence.
#
# LIBS = $(LIBS) -lefence
#

#
# Only if you want mpatrol.
#
# LIBS = $(LIBS) -lmpatrol -lbfd -liberty
#

81 82
srcdir       = @srcdir@
prefix       = @prefix@
83 84
datarootdir  = @datarootdir@
datadir      = @datadir@
85 86 87 88 89 90 91
exec_prefix  = @exec_prefix@
bindir       = @bindir@
man1dir      = @mandir@/man1
VPATH        = @srcdir@
libdir       = @libdir@
includedir   = @includedir@
pkgconfigdir = @pkgconfigdir@
92 93

INSTALL         = @INSTALL@
94
INSTALL_DIR     = $(INSTALL) -d -o root -g root -m 0755 
95 96
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA    = @INSTALL_DATA@
97 98 99 100
INSTALL_LINK    = cp -av
DESTDIR         =
RM_FILE         = rm -f
RM_DIR          = rmdir -p --ignore-fail-on-non-empty
101 102 103 104 105 106 107 108 109 110 111

#
# This should be autodetected.
#

MAKEDEPEND     = @MAKEDEPEND@
DEPENDINCLUDES = -I/usr/include/g++ -I/usr/include/g++-3

.SUFFIXES: .cpp.c

.cpp.o:
112
	$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $(CXXINCLUDES) $(CXXDEFINES) $<
113
.c.o:
114
	$(CC) -c $(CPPFLAGS) $(CCFLAGS) $(CCINCLUDES) $(CCDEFINES) $<
115 116 117 118

LIBRARY = Xcompshad

LIBNAME    = lib$(LIBRARY)
119 120 121 122
ifeq ($(shell uname),Darwin)
LIBFULL    = lib$(LIBRARY).$(VERSION).dylib
LIBLOAD    = lib$(LIBRARY).$(LIBVERSION).dylib
LIBSHARED  = lib$(LIBRARY).dylib
123 124
COMP_VER   = $(shell echo '$(VERSION)' | cut -d '.' -f 1-3)
LIBFLAGS   = -install_name $(libdir)/$(LIBLOAD) -compatibility_version $(LIBVERSION) -current_version $(COMP_VER)
125
else
126 127 128
LIBFULL    = lib$(LIBRARY).so.$(VERSION)
LIBLOAD    = lib$(LIBRARY).so.$(LIBVERSION)
LIBSHARED  = lib$(LIBRARY).so
129 130
LIBFLAGS   =
endif
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
LIBARCHIVE = lib$(LIBRARY).a

MSRC   = Main.c

CSRC   =

CXXSRC = Core.cpp \
	 Input.cpp \
	 Logger.cpp \
	 Shadow.cpp \
	 X11.cpp \
	 Win.cpp \
	 Updater.cpp \
	 Manager.cpp

MOBJ   = $(MSRC:.c.cpp=.o)
COBJ   = $(CSRC:.c=.o)
CXXOBJ = $(CXXSRC:.cpp=.o)

MLIBS  = -L. -lXShadow

ifeq ($(findstring -lgdi32,$(LIBS)),-lgdi32)

# We need a smarter way to detect windows
# platform.

LIBDLL       = cyg$(LIBRARY).dll
LIBDLLSTATIC = lib${LIBRARY}.dll.a

all: depend $(LIBARCHIVE) $(LIBDLL)

else

164
EXTRALIBS = -lXext -lXtst -lXrandr -lXdamage
165 166 167 168 169 170

all: depend $(LIBFULL) $(LIBLOAD) $(LIBSHARED) $(LIBARCHIVE)

endif

$(LIBFULL):	$(CXXOBJ) $(COBJ)
171
		$(CXX) -o $@ $(LDFLAGS) $(LIBFLAGS) $(CXXOBJ) $(COBJ) $(LIBS) $(EXTRALIBS)
172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193

$(LIBLOAD):	$(LIBFULL)
		rm -f $(LIBLOAD)
		ln -s $(LIBFULL) $(LIBLOAD)

$(LIBSHARED):	$(LIBFULL)
		rm -f $(LIBSHARED)
		ln -s $(LIBFULL) $(LIBSHARED)

$(LIBARCHIVE):	$(CXXOBJ) $(COBJ)
		rm -f  $(LIBARCHIVE)
		ar clq $(LIBARCHIVE) $(CXXOBJ) $(COBJ)
		ranlib $(LIBARCHIVE)

$(LIBDLL): $(LIBARCHIVE)
		$(CC) -o $@ \
		-shared \
		-Wl,--out-implib=$(LIBDLLSTATIC) \
		-Wl,--export-all-symbols \
		-Wl,--enable-auto-import \
		-Wl,--whole-archive ${LIBARCHIVE} \
		-Wl,--no-whole-archive \
194
		${LIBS}
195 196 197 198 199 200 201 202 203

$(PROGRAM):	$(MOBJ) $(COBJ) $(CXXOBJ) $(LIBDLL)
#		$(CC) $(CCFLAGS) -o $@ $(MOBJ) $(MLIBS)

depends:	depend.status

depend:		depend.status

depend.status:	
204
		if [ -n "$(MAKEDEPEND)" ] && [ -x "$(MAKEDEPEND)" ] ; then \
205
			$(MAKEDEPEND) $(CXXINCLUDES) $(CCINCLUDES) \
206
			$(DEPENDINCLUDES) -f Makefile $(MSRC) $(CSRC) $(CXXSRC) 2>/dev/null; \
207 208 209
		fi
		touch depend.status

210
install:       install.bin install.lib install.man
211 212 213

install.bin:

214 215
install.lib: all
	$(INSTALL_DIR)                          $(DESTDIR)${libdir}
216
	$(INSTALL_DIR)                          $(DESTDIR)${pkgconfigdir}
217
	$(INSTALL_DIR)                          $(DESTDIR)${includedir}/nx
218
	$(INSTALL_DIR)                          $(DESTDIR)${pkgconfigdir}
219
	$(INSTALL_DATA) $(LIBFULL)              $(DESTDIR)${libdir}
220 221 222
	$(INSTALL_LINK) $(LIBLOAD)              $(DESTDIR)${libdir}
	$(INSTALL_LINK) $(LIBSHARED)            $(DESTDIR)${libdir}
	$(INSTALL_DATA) $(LIBARCHIVE)           $(DESTDIR)${libdir}
223
	$(INSTALL_DATA) Shadow.h                $(DESTDIR)${includedir}/nx
224
	$(INSTALL_DATA) nxcompshad.pc           $(DESTDIR)${pkgconfigdir}
225 226
	echo "Running ldconfig tool, this may take a while..." && ldconfig || true

227 228
install.man:

229 230 231 232 233 234
uninstall:     uninstall.bin uninstall.lib uninstall.man

uninstall.bin:

uninstall.lib:
	$(RM_FILE) $(DESTDIR)${libdir}/$(LIBFULL)
235 236 237
	$(RM_FILE) $(DESTDIR)${libdir}/$(LIBLOAD)
	$(RM_FILE) $(DESTDIR)${libdir}/$(LIBSHARED)
	$(RM_FILE) $(DESTDIR)${libdir}/$(LIBARCHIVE)
238 239 240
	for header in *.h; do $(RM_FILE) $(DESTDIR)${includedir}/nx/$$header; done
	$(RM_DIR) $(DESTDIR)${libdir}/nx/
	$(RM_DIR) $(DESTDIR)${includedir}/nx/
241
	$(RM_FILE) $(DESTDIR)${pkgconfigdir}/nxcompshad.pc
242 243 244 245
	echo "Running ldconfig tool, this may take a while..." && ldconfig || true

uninstall.man:

246
clean:
247
		-rm -f *~ *.o *.gch *.bak st?????? core core.* *.out.* *.exe.stackdump *.pc \
248 249 250
		$(LIBFULL) $(LIBLOAD) $(LIBSHARED) $(LIBARCHIVE) $(LIBDLL) $(LIBDLLSTATIC) $(PROGRAM) $(PROGRAM).exe

distclean:	clean
251
		-rm -rf config.status config.log config.cache depend.status Makefile tags autom4te.cache configure