2025-08-08 20:00:36 +02:00

434 lines
14 KiB
Plaintext

/**************************************************************************/
/* */
/* Copyright (c) 2001, 2011 NoMachine (http://www.nomachine.com) */
/* Copyright (c) 2008-2017 Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> */
/* Copyright (c) 2011-2022 Mike Gabriel <mike.gabriel@das-netzwerkteam.de>*/
/* Copyright (c) 2014-2019 Mihai Moldovan <ionic@ionic.de> */
/* Copyright (c) 2014-2022 Ulrich Sibiller <uli42@gmx.de> */
/* Copyright (c) 2015-2016 Qindel Group (http://www.qindel.com) */
/* */
/* nx-X11, 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. */
/* */
/**************************************************************************/
/*
* Server Master Makefile
*/
NULL =
#include <Server.tmpl>
/* On most systems the linker requires the libraries in dependency order.
But we have no real order because there are cycles. We fix this by adding
some libraries twice on the commandline. dependLib will add the
dependency library to the commandline if the link order is important */
#if 1 /* This is currently enabled for all systems */
#define dependLib(x) x
#else
#define dependLib(x)
#endif
#if defined(XorgVersion)
/* Do not strip server binaries */
INSTPGMFLAGS =
#endif
#define PreFbLibs $(DIX) $(OS) $(XPDDX)
#define BarePostFbLibs $(XPFBLIBS) $(MI)
#define PostFbLibs BarePostFbLibs $(EXTENSIONS)
#if !BuildXinerama
#define FbPostFbLibs $(FB) BarePostFbLibs $(EXTENSIONS)
#else
#define FbPostFbLibs $(FB) $(EXTENSIONS) BarePostFbLibs $(EXTENSIONS)
#endif
#define FBLibs PreFbLibs FbPostFbLibs
#define MiExtLibs $(SHADOW)
#define AllFBLibs PreFbLibs $(FB) PostFbLibs
#if BuildGlxExt
GLXLIB = GL/glx/ModuleLibraryTargetName(glx) \
GL/mesa/GLcore/ModuleLibraryTargetName(GLcore)
GLXDIR = GL
GLXEXT = $(GLXLIB)
#endif
#if BuildXInputExt
XINPUTEXT = Xi/LibraryTargetName(xinput)
XIDIR = Xi
#endif
#if BuildXKB
XKBEXT = xkb/LibraryTargetName(xkb) dependLib($(OS))
XKBDIR = xkb
#if defined(XorgVersion)
XF86XKBOBJS = xkb/xf86KillSrv.o xkb/xf86VT.o xkb/xf86Private.o
#endif
#endif
#if BuildDBE
DBEEXT = dbe/LibraryTargetName(dbe)
#endif
#if BuildDBE
DBEDIR = dbe
#endif
#if BuildRECORD
RECORDEXT = record/LibraryTargetName(record)
#endif
#if BuildRECORD || BuildRECORDlib
RECORDDIR = record
#endif
#ifdef SiteExtensionLibs
SITEEXTS = SiteExtensionLibs
#endif
#ifdef SiteExtensionDirs
SITEEXTDIRS = SiteExtensionDirs
#endif
LIBREGEX = RegexLibrary
#if BuildRender
RENDERDIR = render
RENDERLIB = $(RENDERDIR)/librender.a
#endif
#if BuildRandR
RANDRDIR = randr
RANDRLIB = $(RANDRDIR)/librandr.a
#endif
#if BuildXfixes
FIXESDIR = xfixes
FIXESLIB = $(FIXESDIR)/libxfixes.a
#endif
#if BuildDamage
DAMAGEDIR = damageext
DAMAGELIB = $(DAMAGEDIR)/libdamageext.a
#endif
#if BuildComposite
CWDIR = miext/cw
COMPOSITEDIR = composite
COMPOSITELIB = $(COMPOSITEDIR)/libcomposite.a
CW = miext/cw/LibraryTargetName(cw)
#endif
EXTENSIONS = $(COMPOSITELIB) $(DAMAGELIB) $(DAMAGE) $(FIXESLIB) $(CW) \
$(OTHEREXTS) $(GLXEXT) $(RANDRLIB) $(RENDERLIB)
OTHEREXTS = Xext/LibraryTargetName(ext) $(XKBEXT) $(XINPUTEXT) \
$(DBEEXT) $(RECORDEXT) $(SITEEXTS)
EXTDIRS = Xext $(XKBDIR) $(XIDIR) $(GLXDIR) \
$(DBEDIR) $(RECORDDIR) $(SITEEXTDIRS) \
$(RANDRDIR) $(RENDERDIR) $(XPCONFIGDIR) \
$(FIXESDIR) $(DAMAGEDIR) $(CWDIR) $(COMPOSITEDIR)
OS = os/LibraryTargetName(os)
BSDEMUL = $(DEPXBSDLIB)
FB = fb/LibraryTargetName(fb)
DAMAGE = miext/damage/LibraryTargetName(damage)
SHADOW = miext/shadow/LibraryTargetName(shadow)
LAYER = miext/layer/LibraryTargetName(layer)
#if !HasFfs && (defined(mingwArchitecture) || defined(cygwinArchitecture))
/* Order of libraries is important when linking in mingw or
* cygwin. libmi.a requires ffs from libdix.a. So it is added
* after libmi.a on the commandline */
MI = mi/LibraryTargetName(mi) $(DIX)
#else
MI = mi/LibraryTargetName(mi)
#endif
MIINITEXTOBJ = mi/miinitext.o
DIX = dix/LibraryTargetName(dix)
#if UsbMouseSupport
#if !HasLibUsb
USB = $(XF86OSSRC)/bsd/libusb/LibraryTargetName(usb)
#else
USB = UsbHidLib
#endif
#endif
#ifdef ServerExtraSysLibs
EXTRASYSLIBS = ServerExtraSysLibs
#endif
#if HasPam && HasPamMisc
PAMLIBS = PamLibraries PamMiscLibraries
#endif
SYSLIBS = $(ZLIB) MathLibrary $(USB) \
$(PAMLIBS) $(EXTRASYSLIBS)
#if !HasCbrt
CBRT = mi/LibraryTargetName(cbrt)
#endif
STDDIRS = include dix os mi $(XPDDXDIR) $(EXTDIRS)
FBDIR = fb
XCOMM
XCOMM This turns off the default rule for compiling .c files because
XCOMM this makefile does not really know how to build it. This is really
XCOMM just a hack because of the Sun version of make and nfs.
XCOMM
.c.o:
.s.o:
#if HasParallelMake
XCOMM
XCOMM force non-parallel build of XF86 servers to prevent MUTEX overrides
XCOMM
#if defined(NXAgentServer) && NXAgentServer
NXAGENT = nxagent
#endif
MakeMutex($(STDDIRS) fb)
#endif
#if defined(NXAgentServer) && NXAgentServer
XCOMM
XCOMM Nested server with NXlib-based ddx and compressed transport.
XCOMM
FBSUBDIR = fb
MIDAMAGEDIR = miext/damage
FBDIR = fb
#ifndef Win32Architecture
NXAGENTDDXDIR = hw/nxagent
#else
NXAGENTDDXDIR = hw
#endif
NXAGENTDIRS = $(STDDIRS) $(FBDIR) $(MIDAMAGEDIR) $(NXAGENTDDXDIR) $(DEPDIRS)
NX_XCOMP_HEADERS = \
../../../nxcomp/include/MD5.h \
../../../nxcomp/include/NXalert.h \
../../../nxcomp/include/NX.h \
../../../nxcomp/include/NXpack.h \
../../../nxcomp/include/NXproto.h \
../../../nxcomp/include/NXvars.h \
$(NULL)
NX_XCOMPSHAD_HEADERS = \
../../../nxcompshad/include/Shadow.h \
$(NULL)
NX_HEADERS = \
$(NX_XCOMP_HEADERS) \
$(NX_XCOMPSHAD_HEADERS) \
$(NULL)
BuildIncludes($(NX_HEADERS),nx,..)
#if defined(SunArchitecture) || \
defined(SparcArchitecture)
NXAGENTOBJS = hw/nxagent/miinitext.o \
hw/nxagent/NXwindow.o \
hw/nxagent/NXevents.o \
hw/nxagent/NXproperty.o \
hw/nxagent/NXdixfonts.o \
hw/nxagent/NXglyphcurs.o \
hw/nxagent/NXdispatch.o \
hw/nxagent/NXrender.o \
hw/nxagent/NXglyph.o \
hw/nxagent/NXpicture.o \
hw/nxagent/NXglxext.o \
hw/nxagent/NXresource.o \
$(NULL)
#elif !defined(Win32Architecture)
NXAGENTOBJS = hw/nxagent/miinitext.o \
hw/nxagent/NXwindow.o \
hw/nxagent/NXevents.o \
hw/nxagent/NXproperty.o \
hw/nxagent/NXdixfonts.o \
hw/nxagent/NXglyphcurs.o \
hw/nxagent/NXdispatch.o \
hw/nxagent/NXrender.o \
hw/nxagent/NXglyph.o \
hw/nxagent/NXpicture.o \
hw/nxagent/NXglxext.o \
hw/nxagent/NXxvdisp.o \
hw/nxagent/NXresource.o \
$(NULL)
#else
NXAGENTOBJS = hw/nxagent/miinitext.o \
hw/nxagent/NXwindow.o \
hw/nxagent/NXevents.o \
hw/nxagent/NXproperty.o \
hw/nxagent/NXdixfonts.o \
hw/nxagent/NXglyphcurs.o \
hw/nxagent/NXdispatch.o \
hw/nxagent/NXrender.o \
hw/nxagent/NXglyph.o \
hw/nxagent/NXpicture.o \
hw/nxagent/NXglxext.o \
hw/nxagent/NXxvdisp.o \
hw/nxagent/NXresource.o \
dix/main.o \
$(NULL)
#endif
XPMLIB = -lXpm
XMLLIB = `pkg-config --libs libxml-2.0`
PIXMANLIB = `pkg-config --libs pixman-1`
ZLIB = $$(pkg-config --exists 'zlib' >/dev/null 2>&1 && pkg-config --libs 'zlib' || printf '%s' '-lz')
PNGLIB = `pkg-config --libs libpng`
JPEGLIB = -ljpeg
TIRPC_LIB =
#if HasSecureRPC
#if UseTIRPC
TIRPC_LIB = $$(pkg-config --libs 'libtirpc')
#endif
#endif
NXAGENT = hw/nxagent/LibraryTargetName(nxagent)
NXCOMPEXT = hw/nxagent/compext/LibraryTargetName(compext)
NXAGENTLIBS = PreFbLibs $(NXAGENT) FbPostFbLibs $(NXCOMPEXT) $(NXAGENT) $(MI)
NXAGENTSYSLIBS = $(XLIB) $(SYSLIBS) $(XPMLIB) $(XMLLIB) $(PIXMANLIB) $(TIRPC_LIB)
NXCOMPEXTSYSLIBS = $(ZLIB) $(PNGLIB) $(JPEGLIB)
#if HasParallelMake
MakeMutex($(NXAGENTDIRS) $(NXCOMPEXT) $(NXAGENTOBJS) $(NXAGENTLIBS) $(NXCOMPEXTSYSLIBS) $(NXAGENTSYSLIBS))
#endif
#if ForceServerRemake
$(NXAGENTOBJS) $(NXAGENTLIBS):: $(NXAGENTDIRS)
@if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi
#endif
#if NXLibraries
/*
* We need this as the linker will try to locate dependencies of X11 and Xext.
*/
#if defined(SunArchitecture)
NXAGENTNXLIBS = -L/usr/sfw/lib \
-L../../../nxcomp/src/.libs \
-L../../../nxcompshad/src/.libs \
-L../../lib/src/.libs \
-lrt \
-lX11 \
-lXcomp \
-lXcompshad \
-lXrender \
-lXfixes \
$(XFONTLIB) \
-lXcomposite \
-lXinerama \
-lXdmcp \
-lNX_X11 \
-lXext \
$(NULL)
#elif defined(cygwinArchitecture)
NXAGENTNXLIBS = -L../../../nxcomp/src/.libs \
-L../../../nxcompshad/src/.libs \
-L../../lib/src/.libs \
-lX11 \
-lXcomp \
-lXcompshad \
-lXrender \
-lXfixes \
$(XFONTLIB) \
-lXcomposite \
-lXdmcp \
-lNX_X11 \
-lXext \
$(NULL)
#elif defined(OpenBSDArchitecture)
NXAGENTNXLIBS = -L../../../nxcomp/src/.libs \
-L../../../nxcompshad/src/.libs \
-L../../lib/src/.libs \
-lkvm \
-lX11 \
-lXcomp \
-lXcompshad \
-lXrender \
-lXfixes \
$(XFONTLIB) \
-lXcomposite \
-lXinerama \
-lXdmcp \
-lNX_X11 \
-lXext \
$(NULL)
#else
NXAGENTNXLIBS = -L../../../nxcomp/src/.libs \
-L../../../nxcompshad/src/.libs \
-L../../lib/src/.libs \
-lX11 \
-lXcomp \
-lXcompshad \
-lXrender \
-lXfixes \
$(XFONTLIB) \
-lXcomposite \
-lXinerama \
-lXdmcp \
-lNX_X11 \
-lXext \
$(NULL)
#endif
#endif
#ifdef cygwinArchitecture
NX_XSHADOWLIBNAME = cygXcompshad.dll
#else
NX_XSHADOWLIBNAME = libXcompshad.so
#endif
ServerTarget(nxagent,$(NXAGENTDIRS),$(NXAGENTOBJS), \
$(LIBCWRAPPER) $(NXCOMPEXT) $(NXAGENTLIBS) $(LOADABLEEXTS),$(NXAGENTNXLIBS) $(NXAGENTSYSLIBS) $(NXCOMPEXTSYSLIBS))
LibX11Links()
/*
* Hard coded target to build a static nxagent server.
*/
nxagent_static: nxagent
if [ -f nxagent_static ]; then set -x; \
$(MV) nxagent_static nxagent_static.bak; \
else exit 0; fi
$(CCLINK) -o nxagent_static -static $(LDOPTIONS) $(NXAGENTOBJS) \
$(LIBCWRAPPER) $(NXCOMPEXT) $(NXAGENTLIBS) $(LOADABLEEXTS) $(LDLIBS) \
$(NXCOMPEXTSYSLIBS) $(NXAGENTSYSLIBS) $(EXTRA_INSTALL_LOAD_FLAGS)
/*
* Hard coded target to build a static nxagent server except for libX11 and libXext.
*/
nxagent_static_nolibs: nxagent
if [ -f nxagent_static_nolibs ]; then set -x; \
$(MV) nxagent__static_nolibs nxagent_static_nolibs.bak; \
else exit 0; fi
$(CCLINK) -o nxagent_static_nolibs -Wl,-Bstatic $(LDOPTIONS) $(NXAGENTOBJS) \
$(NXAGENTLIBS) $(LOADABLEEXTS) $(LIBCWRAPPER) $(LDLIBS) \
$(LDPRELIBS) $(SYSLIBS) -Wl,-Bdynamic -lNX_X11 -lXext $(EXTRA_INSTALL_LOAD_FLAGS)
#endif /* NXAgentServer */
MIEXTDIRS = $(SHADOWDIR) $(LAYERDIR) $(ROOTLESSDIR) $(MIDAMAGEDIR)
IPLANDIRS = $(IPLAN2P2DIR) $(IPLAN2P4DIR) $(IPLAN2P8DIR)
DDXDIRS = $(DECWSDDXDIR) $(SUNDDXDIR) \
$(HPDDXDIR) $(XFREE86DDXDIR) \
$(NXAGENTDDXDIR)
SUBDIRS = $(STDDIRS) \
$(IPLANDIRS) $(ILBMDIR) \
$(DDXDIRS) $(FBSUBDIR) $(KDRIVEDIRS) $(MIEXTDIRS)
#if defined(ServerToInstall)
install::
-(cd $(DESTDIR)$(BINDIR); $(RM) X; $(LN) ServerToInstall X)
#endif
#define IHaveSubdirs
DependSubdirs($(SUBDIRS))
MakeLintLibSubdirs($(SUBDIRS))
LintSubdirs($(SUBDIRS))
ForceSubdirs($(DEPDIRS) $(SUBDIRS))
DEFAULTFONTPATH = DefaultFontPath
EXTRAMANDEFS = -D__default_font_path__="`echo $(DEFAULTFONTPATH) | sed -e 's/,/, /g'`"