/**************************************************************************/ /* */ /* Copyright (c) 2001, 2011 NoMachine (http://www.nomachine.com) */ /* Copyright (c) 2008-2014 Oleksandr Shneyder */ /* Copyright (c) 2011-2016 Mike Gabriel */ /* Copyright (c) 2014-2016 Mihai Moldovan */ /* Copyright (c) 2014-2016 Ulrich Sibiller */ /* 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 /* 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) #if (!(defined(NXAgentServer) && NXAgentServer)) DAMAGE = miext/damage/LibraryTargetName(damage) #endif 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 #if defined(NXWinServer) && NXWinServer NXWIN = NXWin #endif #if (defined(NXAgentServer) && NXAgentServer) || \ (defined(NXWinServer) && NXWinServer) MakeMutex($(NXAGENT) $(NXWIN)) #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/NXextension.o \ hw/nxagent/NXglxext.o \ hw/nxagent/NXresource.o \ hw/nxagent/NXdamage.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/NXextension.o \ hw/nxagent/NXglxext.o \ hw/nxagent/NXxvdisp.o \ hw/nxagent/NXresource.o \ hw/nxagent/NXdamage.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/NXextension.o \ hw/nxagent/NXglxext.o \ hw/nxagent/NXxvdisp.o \ hw/nxagent/NXresource.o \ hw/nxagent/NXdamage.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 = $(LDPRELIBS) $(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 */ #if defined(NXWinServer) && NXWinServer XCOMM XCOMM X Server for MS Windows XCOMM FBSUBDIR = fb MIDAMAGEDIR = miext/damage SHADOWDIR = miext/shadow #if BuildXWinLayer LAYERDIR = miext/layer XWINLAYERLIB = $(LAYER) #else LAYERDIR = XWINLAYERLIB = #endif #if BuildXWinMultiWindowExtWM ROOTLESSDIR = miext/rootless ROOTLESSLIB = $(ROOTLESSDIR)/LibraryTargetName(rootless) \ $(ROOTLESSDIR)/safeAlpha/LibraryTargetName(safeAlpha) \ $(ROOTLESSDIR)/accel/LibraryTargetName(rlAccel) #else ROOTLESSDIR = ROOTLESSLIB = #endif NXWINDDXDIR = hw/nxwin #if BuildXWinXF86Config XWINPARSERDIR = hw/xfree86/parser XWINPARSERLIB = $(XWINPARSERDIR)/LibraryTargetName(xf86config) #else XWINPARSERDIR = XWINPARSERLIB = #endif XWINOPENGLLIB = NXWINLIB = $(NXWINDDXDIR)/LibraryTargetName(NXWin) NXWINDIRS = $(STDDIRS) $(FBDIR) $(SHADOWDIR) $(LAYERDIR) $(NXWINDDXDIR) \ $(DEPDIRS) $(XWINPARSERDIR) $(ROOTLESSDIR) $(MIDAMAGEDIR) NXWINOBJS = $(NXWINDDXDIR)/stubs.o $(NXWINDDXDIR)/NXWin.res NXWINLIBS = PreFbLibs $(NXWINLIB) FbPostFbLibs $(NXWINLIB) $(XWINLAYERLIB) \ $(SHADOW) $(XWINPARSERLIB) $(ROOTLESSLIB) $(OS) #if BuildXWinMultiWindow || BuildXWinClipboard XWINX11 = $(XONLYLIB) # if defined(Win32Architecture) PTHREADLIB = -lpthreadGC # endif #endif #if defined(Win32Architecture) XWINW32 = -lgdi32 -lwsock32 $(PTHREADLIB) #else XWINW32 = -lgdi32 #endif NXWINSYSLIBS = $(LDPRELIBS) $(XWINX11) $(SYSLIBS) $(XWINW32) NXWINNXLIBS = -L../../../nxcomp -lXcomp /* * These flags cause NXWin.exe to be a Windows executable, which * prevents NXWin.exe from opening a Command Prompt window when it is * started. However, the flags also prevent NXWin.exe from outputting * its status and error message to a Command Prompt; thus, one most * implement a method to redirect status and error messages to a file * before enabling these flags. */ EXTRA_LDOPTIONS = -e _mainCRTStartup #if HasParallelMake MakeMutex($(NXWINDIRS) $(NXWINOBJS) $(NXWINLIB) $(NXWINLIBS) $(NXWINSYSLIBS) $(NXWINNXLIBS)) #endif #if ForceServerRemake $(NXWINOBJS) $(NXWINLIB) $(NXWINLIBS):: $(NXWINDIRS) @if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi #endif #ifdef mingwArchitecture NXWINSERVERNAME=NXming #else NXWINSERVERNAME=NXWin #endif ServerTarget($(NXWINSERVERNAME),$(NXWINDIRS),$(NXWINOBJS), \ $(LIBCWRAPPER) $(NXWINLIBS) $(LOADABLEEXTS),$(NXWINSYSLIBS) $(NXWINNXLIBS)) #ifndef ServerToInstall # define ServerToInstall $(NXWINSERVERNAME) #endif #endif /* NXWinServer */ #if 0 #if defined(NXWinServer) && NXWinServer XCOMM XCOMM X Server for MS Windows XCOMM FBDIR = fb SHADOWDIR = miext/shadow LAYERDIR = miext/layer NXWINDDXDIR = hw/nxwin XWINPARSERDIR = hw/xfree86/parser XWINPARSERLIB = $(XWINPARSERDIR)/LibraryTargetName(xf86config) NXWINLIB = $(NXWINDDXDIR)/LibraryTargetName(nxwin) NXWINDIRS = $(STDDIRS) $(FBDIR) $(SHADOWDIR) $(LAYERDIR) $(NXWINDDXDIR) \ $(DEPDIRS) $(XWINPARSERDIR) #NXWINOBJS = $(NXWINDDXDIR)/stubs.o $(NXWINDDXDIR)/NX.res \ $(NXWINDDXDIR)/NXwindow.o \ $(NXWINDDXDIR)/NXdispatch.o $(NXWINDDXDIR)/NXproperty.o \ $(NXWINDDXDIR)/NXevents.o NXWINOBJS = $(NXWINDDXDIR)/stubs.o $(NXWINDDXDIR)/NX.res NXWINLIBS = PreFbLibs $(NXWINLIB) FbPostFbLibs $(LAYER) $(SHADOW) \ $(XWINPARSERLIB) NXWINSYSLIBS = $(LDPRELIBS) $(XLIB) $(SYSLIBS) -lgdi32 -lddraw NXWINNXLIBS = -L../../../nxcomp -lXcomp /* * These flags cause NXWin.exe to be a Windows executable, which * prevents NXWin.exe from opening a Command Prompt window when it is * started. However, the flags also prevent NXWin.exe from outputting * its status and error message to a Command Prompt; thus, one most * implement a method to redirect status and error messages to a file * before enabling these flags. */ EXTRA_LDOPTIONS = -mwindows -e _mainCRTStartup #if HasParallelMake MakeMutex($(NXWINDIRS) $(NXWINOBJS) $(NXWINLIB) $(NXWINLIBS) $(NXWINSYSLIBS) $(NXWINNXLIBS)) #endif #if ForceServerRemake $(NXWINOBJS) $(NXWINLIB) $(NXWINLIBS):: $(NXWINDIRS) @if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi #endif ServerTarget(NXWin,$(NXWINDIRS),$(NXWINOBJS), \ $(NXWINLIBS) $(LOADABLEEXTS) $(LIBCWRAPPER),$(NXWINSYSLIBS) $(NXWINNXLIBS)) #ifndef ServerToInstall #define ServerToInstall NXWin #endif #endif /* NXWinServer */ #endif MIEXTDIRS = $(SHADOWDIR) $(LAYERDIR) $(ROOTLESSDIR) $(MIDAMAGEDIR) IPLANDIRS = $(IPLAN2P2DIR) $(IPLAN2P4DIR) $(IPLAN2P8DIR) DDXDIRS = $(DECWSDDXDIR) $(SUNDDXDIR) \ $(HPDDXDIR) $(XFREE86DDXDIR) \ $(NXAGENTDDXDIR) $(NXWINDDXDIR) 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'`"