Use C++ linker
[oweals/cde.git] / cde / programs / dtlogin / Imakefile
1 XCOMM $TOG: Imakefile /main/21 1999/03/01 18:26:06 mgreess $
2 #define IHaveSubdirs
3 #define PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)'
4
5 SUBDIRS = config $(XDMSUBDIRS) $(BLSSUBDIRS) $(AFSSUBDIRS)
6
7 MakeSubdirs($(SUBDIRS))
8 DependSubdirs($(SUBDIRS))
9
10 #if InstallXdmConfig 
11    XDMCONFIGDIR = XdmConfigurationSubdirectory
12      XDMSUBDIRS = $(XDMCONFIGDIR) bootxutil
13 #endif
14
15 /* please list any new dtlogin headers for use by krb and rgy */
16 HEADERS = dm.h vg.h vglogo.h vgmsg.h vgproto.h
17
18 #if HasXdmAuth
19 DESDEFS = -DHASDES -DHASXDMAUTH -DSILLYEXPORTRULE
20 DESOBJS = xdmauth.o
21 DESSRCS = xdmauth.c
22 #else
23 #if HasDESLibrary
24 DESDEFS = -DHASDES
25 DESOBJS = xdmauth.o
26 DESSRCS = xdmauth.c
27 #else
28 DESDEFS = 
29 DESOBJS =
30 DESSRCS = 
31 #endif
32 #endif
33
34 #ifndef UsePamLibrary
35 # define UsePamLibrary  NO
36 #endif
37
38 #if UsePamLibrary
39 PAM_SRCS = pam_svc.c
40 PAM_OBJS = pam_svc.o
41 PAM_LIB = -lpam
42 #else
43 PAM_SRCS =
44 PAM_OBJS =
45 PAM_LIB =
46 #endif
47
48 #ifdef SunArchitecture 
49 SOLARIS_SRCS = solaris.c
50 SOLARIS_OBJS = solaris.o
51 #else
52 SOLARIS_SRCS =
53 SOLARIS_OBJS =
54 #endif
55
56 #if defined(SunArchitecture) && !UsePamLibrary
57 PAM_LIB = -lauth
58 #endif
59
60          XDMDIR = $(CDE_LOGFILES_TOP)
61
62 /******************  DTLOGIN ARCHIVE SECTION *****************
63    A better long-term solution is a dtgreet subdirectory since dtgreet
64    is built with shared libraries.
65    dtlogin is always built archived in HP because of 
66    its importance for user startup. DEPLIBS needs to be explicitly set
67    because default is null DEPLIBS for shared libraries.
68    Does this need to be ifdef'd hp? */
69 /* Defaults */
70 LOGINDEPXMULIB = $(DEPXMULIB)
71 LOGINXMULIB = $(XMULIB)
72 LOGINDEPXLIB = $(DEPXLIB)
73 LOGINXLIB = $(XLIB)
74
75 #ifdef HPArchitecture
76 #  if (! defined(UseInstalled)) && (! defined(UseMitLibrariesFromSystemOnly))
77 #    ifdef SHLIB
78 LOGINDEPXMULIB = $(XMUSRC)/libXmu.a
79 LOGINXMULIB = $(LOGINDEPXMULIB)
80 LOGINDEPXLIB = $(XLIBSRC)/libX11.a
81 LOGINXLIB = $(LOGINDEPXLIB)
82 /* This is really a kludge !! */
83 LOGINLDOPTIONS = -Wl,-a archive
84 #    endif
85 #  endif
86 #  if OSMajorVersion >= 10
87 SYS_LIBRARIES = -lsec
88 #  endif
89 #endif
90
91 #if defined(SunArchitecture)
92 /* note: libcmd.a is a Sun static private lib for login related work. 
93  *       It should come before $(PAM_LIB) in link line, at least when compiled
94  *       on Solaris 2.4 and run on Solaris 2.5.  In Solaris 2.4 some of 
95  *       libcmd.a functions are also in libauth.so.  But on Solaris 2.5 
96  *       these Sun private functions have been removed from libauth.so. */
97 SYS_LIBRARIES = -lm -ldl -lgen -lresolv -lC -lbsm -lcmd -lauth $(PAM_LIB)
98
99
100 #  if UsePamLibrary
101    EXTRA_DEFINES = -DPAM
102 #  else
103    EXTRA_DEFINES = -DSUNAUTH
104 #  endif
105 #endif
106
107 #if defined(USLArchitecture)
108 SYS_LIBRARIES = -lm -ldl -lgen -lresolv
109 #endif
110
111 #if defined(UXPArchitecture)
112 SYS_LIBRARIES = -lm -ldl -lgen -lresolv
113 #endif
114
115 #if defined(RsArchitecture)
116 SYS_LIBRARIES = -ls
117 #endif
118
119 #ifdef AlphaArchitecture
120 SYS_LIBRARIES = -lm -lXdmcp
121 #endif
122
123 #ifdef LinuxArchitecture
124 SYS_LIBRARIES = -lm -lcrypt
125 #endif
126
127 /**************************************************************************
128  *
129  *  Source and object modules
130  *
131  *    SRCS1 = Dtlogin sources
132  *    OBJS1 = Dtlogin objects
133  *
134  *    SRCS2 = Dtgreet sources
135  *    OBJS2 = Dtgreet objects
136  *
137  *    SRCS3 = Dtchooser sources
138  *    OBJS3 - Dtchooser objects
139  *
140  **************************************************************************/
141
142           PROG1 = dtlogin
143
144           SRCS1 = access.c account.c auth.c genauth.c daemon.c dm.c \
145                   dpylist.c error.c file.c mitauth.c protodpy.c policy.c \
146                   reset.c resource.c server.c session.c socket.c util.c \
147                   verify.c version.c apollo.c sysauth.c fontpath.c $(DESSRCS) \
148                   qualify.c usl_ptty.c choose.c netaddr.c xdmcp.c \
149                   $(PAM_SRCS) $(SOLARIS_SRCS)
150
151           OBJS1 = access.o account.o auth.o genauth.o daemon.o dm.o \
152                   dpylist.o error.o file.o mitauth.o protodpy.o policy.o \
153                   reset.o resource.o server.o session.o socket.o util.o \
154                   verify.o version.o apollo.o sysauth.o fontpath.o $(DESOBJS) \
155                   qualify.o usl_ptty.o choose.o netaddr.o xdmcp.o \
156                   $(PAM_OBJS) $(SOLARIS_OBJS) 
157
158           PROG2 = dtgreet
159 #ifdef AlphaArchitecture
160           SRCS2 = vgcallback.c vglogo.c vgmain.c vgutil.c \
161                   vgversion.c vgapollo.c vglang.c vgsiaform.c
162           OBJS2 = vgcallback.o vglogo.o vgmain.o vgutil.o \
163                   vgversion.o vgapollo.o vglang.o vgsiaform.o
164 #else
165           SRCS2 = vgcallback.c vglogo.c vgmain.c vgutil.c \
166                   vgversion.c vgapollo.c vglang.c
167           OBJS2 = vgcallback.o vglogo.o vgmain.o vgutil.o \
168                   vgversion.o vgapollo.o vglang.o
169 #endif
170
171           PROG3 = dtchooser
172           SRCS3 = chooser.c dtchooser.c vglogo.c vgutil.c \
173                   vgcallback.c vglang.c
174           OBJS3 = chooser.o dtchooser.o vglogo.o vgutil.o \
175                   vgcallback.o vglang.o
176
177        PROGRAMS = $(PROG1) $(PROG2) $(PROG3)
178
179 /**************************************************************************
180  *
181  *  Defines
182  *
183  **************************************************************************/
184
185 #if defined (SunArchitecture)
186   NATIVEXBINDIR = /usr/openwin/bin
187 #else
188   NATIVEXBINDIR = /usr/bin/X11
189 #endif
190
191         SIGDEFS = $(SIGNAL_DEFINES)
192
193         XBINDIR = $(XPROJECTROOT)/bin
194  OSMAJORVERSION = OSMajorVersion
195  OSMINORVERSION = OSMinorVersion
196      DTDEFINES = $(DESDEFS) ConnectionFlags \
197                   -DBINDIR=\"$(XBINDIR)\" -DXDMDIR=\"$(XDMDIR)\" $(SIGDEFS) \
198                   -DOSMAJORVERSION=$(OSMAJORVERSION) \
199                   -DOSMINORVERSION=$(OSMINORVERSION) \
200                   -DCDE_INSTALLATION_TOP=\"$(CDE_INSTALLATION_TOP)\" \
201                   -DCDE_CONFIGURATION_TOP=\"$(CDE_CONFIGURATION_TOP)\"
202
203 #if defined (HPArchitecture)
204         DEFINES = $(DTDEFINES) -D_XPG2 -DAUDIT -DBYPASSLOGIN ServerExtraDefines
205 #elif defined (RsArchitecture)
206         DEFINES = $(DTDEFINES) -D_ILS_MACROS -DBSD44SOCKETS \
207                   -D__NetBSD__ -DENABLE_DYNAMIC_LANGLIST
208 #elif defined (AlphaArchitecture)
209         DEFINES = $(DTDEFINES) -DXDMCP -DSIA
210 #else
211         DEFINES = $(DTDEFINES) -D_NO_PROTO
212 #endif
213
214 XCOMM
215 XCOMM Special definitions for compiling default resources; these parameters
216 XCOMM should be set in util/imake.includes/site.def or the appropriate .macros
217 XCOMM file in that directory.  The lack of initial spaces is to prevent imake
218 XCOMM from accidently turning the lines into rules by putting a leading tab.
219 XCOMM
220 XCOMM Do NOT change these lines!
221 XCOMM
222 DEF_SERVER = $(XBINDIR)/X
223 DEF_USER_PATH = DefaultUserPath:/usr/ccs/bin:$(NATIVEXBINDIR):$(XBINDIR)
224 DEF_SYSTEM_PATH = DefaultSystemPath:$(NATIVEXBINDIR):$(XBINDIR)
225 BOURNE_SHELL = DefaultSystemShell
226 CPP_PROGRAM = CppCmd
227 DEF_BM_PATH = /etc/dt/appconfig/icons/%L/%B%M.bm:/etc/dt/appconfig/icons/%L/%B%M.pm:/etc/dt/appconfig/icons/%L/%B:/etc/dt/appconfig/icons/C/%B%M.bm:/etc/dt/appconfig/icons/C/%B%M.pm:/etc/dt/appconfig/icons/C/%B:/usr/dt/appconfig/icons/%L/%B%M.bm:/usr/dt/appconfig/icons/%L/%B%M.pm:/usr/dt/appconfig/icons/%L/%B:/usr/dt/appconfig/icons/C/%B%M.bm:/usr/dt/appconfig/icons/C/%B%M.pm:/usr/dt/appconfig/icons/C/%B
228 DEF_PM_PATH=/etc/dt/appconfig/icons/%L/%B%M.pm:/etc/dt/appconfig/icons/%L/%B%M.bm:/etc/dt/appconfig/icons/%L/%B:/etc/dt/appconfig/icons/C/%B%M.pm:/etc/dt/appconfig/icons/C/%B%M.bm:/etc/dt/appconfig/icons/C/%B:/usr/dt/appconfig/icons/%L/%B%M.pm:/usr/dt/appconfig/icons/%L/%B%M.bm:/usr/dt/appconfig/icons/%L/%B:/usr/dt/appconfig/icons/C/%B%M.pm:/usr/dt/appconfig/icons/C/%B%M.bm:/usr/dt/appconfig/icons/C/%B
229
230 RES_DEFINES = '-DDEF_SERVER_LINE=":0 Local local $(DEF_SERVER) :0"' \
231                   '-DXRDB_PROGRAM="$(XBINDIR)/xrdb"' \
232                   '-DDEF_USER_PATH="$(DEF_USER_PATH)"' \
233                   '-DDEF_SYSTEM_PATH="$(DEF_SYSTEM_PATH)"' \
234                   '-DDEF_FAILSAFE_CLIENT="$(XBINDIR)/xterm"' \
235                   '-DDEF_AUTH_FILE="$(XDMDIR)/auth-server"' \
236                   '-DDEF_AUTH_DIR="$(XDMDIR)"' \
237                   '-DCPP_PROGRAM="$(CPP_PROGRAM)"' \
238                   '-DDEF_PM_SEARCH_PATH="$(DEF_PM_PATH)"' \
239                   '-DDEF_BM_SEARCH_PATH="$(DEF_BM_PATH)"'
240
241 XCOMM
242 XCOMM These -D flags had to be taken out of the RES_DEFINES macro in order
243 XCOMM to get around a buffer limitation in the Sun C compiler code generation
244 XCOMM phase.  The code generation phase creates a temporary assembler file
245 XCOMM containing the command line to the compiler and all the .ident pragmas.
246 XCOMM With resent changes to the Imakefile, the command line had gotten so
247 XCOMM long that it exceeded an internal buffer length resulting in errors in
248 XCOMM the generated assembler code.  The EXTRA_RES_DEFINES were extracted
249 XCOMM from the RES_DEFINES macro in order to shorten the command line on
250 XCOMM the Sun platform.  These particular -D flags were chosen as the
251 XCOMM least likely to change or be system dependent.
252 XCOMM
253 #ifdef SunArchitecture 
254 EXTRA_RES_DEFINES =
255 #else
256 EXTRA_RES_DEFINES = \
257                   '-DDEF_SESSION="$(CDE_INSTALLATION_TOP)/bin/Xsession"' \
258                   '-DDEF_SYSTEM_SHELL="$(BOURNE_SHELL)"' \
259                   '-DDEF_CHOOSER="$(CDE_INSTALLATION_TOP)/bin/dtchooser"' \
260                   '-DDEF_XDM_CONFIG="Xconfig"'
261 #endif
262
263
264
265 /**************************************************************************
266  *
267  *  Libraries
268  *
269  *    BASE_LIBS1 = dtlogin base libraries
270  *    BASE_LIBS2 = dtgreet base libraries
271  *
272  **************************************************************************/
273
274
275     DEPLIBS1 = $(DEPXAUTHLIB) $(DEPXDMCPLIB) $(LOGINDEPXMULIB) $(LOGINDEPXLIB)
276     DEPLIBS2  = $(DEPDTWIDGETLIB) $(DEPDTSVCLIB) $(DEPTTLIB) $(DEPXMLIB)  \
277                 $(DEPXTOOLLIB) $(DEPXPLIB) $(DEPXLIB)
278     DEPLIBS3 = $(DEPXDMCPLIB) $(DEPXMLIB) $(DEPXTOOLLIB) $(DEPXPLIB) $(DEPXLIB)
279
280     BASE_LIBS1  = $(XAUTHLIB) $(LOGINXMULIB) $(XDMCPLIB) $(LOGINXLIB)
281     BASE_LIBS2  = $(DTWIDGETLIB) $(DTSVCLIB) $(TTLIB) $(XMLIB) \
282                   $(XTOOLLIB) $(XPLIB) $(XLIB)
283     BASE_LIBS3  = $(DTWIDGETLIB) $(DTSVCLIB) $(TTLIB) $(XDMCPLIB) $(XMLIB) \
284                   $(XTOOLLIB) $(XPLIB) $(XLIB)
285
286     LOCAL_LIBRARIES1 = $(BASE_LIBS1) $(IAFSYSLIB)
287     LOCAL_LIBRARIES2 = $(BASE_LIBS2)
288     LOCAL_LIBRARIES3 = $(BASE_LIBS3)
289
290
291 /* USL needs to resolve all Xt symbols invoked by Xmu at shared
292  * library link time.
293  * Likewise for the BMS references from libDt for vuegreet.
294  */
295 #if defined(USLArchitecture)
296 # if HasSharedLibraries
297     BASE_LIBS1  = $(XAUTHLIB) $(LOGINXMULIB) $(XDMCPLIB) $(XTOOLLIB) \
298                   $(LOGINXLIB)
299     BASE_LIBS2  = $(DTWIDGETLIB) $(DTSVCLIB) $(TTLIB) \
300                   $(XMLIB) $(XTOOLLIB) $(XPLIB) $(XLIB)
301 # endif
302 #endif
303
304 #if defined(UXPArchitecture)
305 # if HasSharedLibraries
306     BASE_LIBS1  = $(XAUTHLIB) $(LOGINXMULIB) $(XDMCPLIB) $(XTOOLLIB) \
307                   $(LOGINXLIB)
308     BASE_LIBS2  = $(DTWIDGETLIB) $(DTSVCLIB) $(TTLIB) \
309                   $(XMLIB) $(XTOOLLIB) $(XPLIB) $(XLIB)
310 # endif
311 #endif
312
313
314
315 /**************************************************************************
316  *
317  *  Extra things for the HP-UX BLS version
318  *
319  **************************************************************************/
320
321 #ifndef BLS
322 # ifdef HPArchitecture
323 #  if (OSMajorVersion == 8) && (OSMinorVersion == 8)
324 #    define BLS
325 #  endif
326 # endif
327 #endif
328
329 #ifdef BLS
330         BLSSUBDIRS = bls
331          BLSLIBSRC = ./bls
332     EXTRA_DEFINES = -UAUDIT -D_NO_PROTO
333      EXTRA_CFLAGS = -Wp,-H256000
334   EXTRA_LIBRARIES = $(BLSLIBSRC)/libbls.a -lsec ExtraLibraries
335   STD_CPP_DEFINES = -DSYSV  -DBLS
336 #endif
337
338
339
340 /**************************************************************************
341  *
342  *  Extra things for the Kerberos/AFS version (dtlogin.krb)
343  *
344  **************************************************************************/
345
346 #ifdef USE_KRB
347
348      AFSSUBDIRS = afs
349
350       KRBLIBSRC = $(LIBSRC)/krb
351       DEPKRBLIB = $(KRBLIBSRC)/libkrb.a
352          KRBLIB = $(DEPKRBLIB)
353
354       DESLIBSRC = $(LIBSRC)/des
355       DEPDESLIB = $(DESLIBSRC)/libdes.a
356          DESLIB = $(DEPDESLIB)
357
358   KRBINCLUDESRC = $(KRBLIBSRC)/include
359       AFSLIBSRC = ./afs
360   AFSINCLUDESRC = $(AFSLIBSRC)
361  EXTRA_INCLUDES = -I$(KRBINCLUDESRC) -I$(AFSINCLUDESRC)
362   EXTRA_DEFINES = -D__KERBEROS -D__AFS
363
364 LOCAL_LIBRARIES1 = $(BASE_LIBS1)  \
365                    $(KRBLIB) \
366                    $(IAFSYSLIB) \
367                    $(AFSLIBSRC)/libafsutil.a \
368                    $(AFSLIBSRC)/$(VENDOR)/$(HARDWARE)/libdes.a
369
370 LOCAL_LIBRARIES2 = $(BASE_LIBS2) \
371                    $(KRBLIB) \
372                    $(AFSLIBSRC)/$(VENDOR)/$(HARDWARE)/libkauth.a \
373                    $(AFSLIBSRC)/$(VENDOR)/$(HARDWARE)/libprot.a \
374                    $(AFSLIBSRC)/$(VENDOR)/$(HARDWARE)/libubik.a \
375                    $(AFSLIBSRC)/$(VENDOR)/$(HARDWARE)/libauth.a \
376                    $(AFSLIBSRC)/$(VENDOR)/$(HARDWARE)/librxkad.a \
377                    $(AFSLIBSRC)/$(VENDOR)/$(HARDWARE)/libsys.a \
378                    $(AFSLIBSRC)/$(VENDOR)/$(HARDWARE)/libdes.a \
379                    $(AFSLIBSRC)/$(VENDOR)/$(HARDWARE)/librx.a \
380                    $(AFSLIBSRC)/$(VENDOR)/$(HARDWARE)/liblwp.a \
381                    $(AFSLIBSRC)/$(VENDOR)/$(HARDWARE)/libcom_err.a \
382                    $(AFSLIBSRC)/libafsutil.a \
383                    -lBSD
384 #endif
385
386
387
388 /**************************************************************************
389  *
390  *  Extra things for the Passwd Etc. version (dtlogin.rgy)
391  *
392  **************************************************************************/
393
394 #ifdef USE_RGY
395      EXTRA_INCLUDES = -I$(RGYINCLUDESRC)
396       EXTRA_DEFINES = -D__PASSWD_ETC +e
397     EXTRA_LIBRARIES = $(RGYLIB) $(NCKLIB) -lndbm -lBSD ExtraLibraries
398 #endif
399
400
401
402 /**************************************************************************
403  *
404  *  Extra things for Dtge 
405  *
406  *    HIDDEN_SYMBOLS1 = dtlogin hidden symbols
407  *    HIDDEN_SYMBOLS2 = dtgreet hidden symbols
408  *
409  **************************************************************************/
410
411 #ifdef HPArchitecture
412 #  ifdef __hp9000s300
413
414       HIDDEN_SYMBOLS1 = -h _main -h _BecomeDaemon -h _GetHourGlass \
415                         -h _Verify
416       HIDDEN_SYMBOLS2 = -h _main -h _LogError  -h _PingServer
417
418 #  else
419
420       HIDDEN_SYMBOLS1 = -h main -h BecomeDaemon -h GetHourGlass \
421                         -h Verify 
422       HIDDEN_SYMBOLS2 = -h main -h LogError  -h PingServer
423
424 #  endif
425 #endif
426
427
428
429 /**************************************************************************
430  *
431  *  Rules
432  *
433  **************************************************************************/
434
435 #if defined(USE_KRB) || defined(USE_RGY)
436 includes::
437         @for i in $(SRCS1) $(SRCS2) $(HEADERS); do \
438         $(RM) $$i; \
439         echo "linking $(DTLOGINSRC)/$$i to $$i";\
440         ln -f -s $(DTLOGINSRC)/$$i .; \
441         done
442 #endif
443
444
445 ComplexProgramTarget_1($(PROG1),$(LOCAL_LIBRARIES1), $(LOGINLDOPTIONS))
446 ComplexProgramTarget_2($(PROG2),$(LOCAL_LIBRARIES2), /**/)
447 ComplexProgramTarget_3($(PROG3),$(LOCAL_LIBRARIES3), /**/)
448
449 #ifdef __ppc
450 /* Problem with "-O" in dtgreet ... wrong size login widget. */
451 /* Override "-O" (xO2) with "-xO1". */
452 vgutil.o:
453         $(RM) $@
454         $(CC) -c $(CFLAGS) -xO1 $(_NOOP_) $*.c
455 #endif
456
457 SpecialObjectRule(resource.o, $(ICONFIGFILES), $(EXTRA_RES_DEFINES) $(RES_DEFINES) $(CCINLIBS))
458 #ifdef HPArchitecture
459 #ifndef DEBUGTREE
460 SpecialObjectRule(session.o,,+O1 $(CCINLIBS))
461 #endif
462 #endif
463
464 #if !defined(USE_KRB) && !defined(USE_RGY)
465
466 LOCAL_CPP_DEFINES = -DCDE_CONFIGURATION_TOP=$(CDE_CONFIGURATION_TOP) \
467                     -DCDE_INSTALLATION_TOP=$(CDE_INSTALLATION_TOP) \
468                     -DCDE_LOGFILES_TOP=$(CDE_LOGFILES_TOP)
469
470 #endif /* USE_KRB && USE_RGY */
471
472 #if InstallXdmConfig 
473 MakeDirectories(install,$(XDMDIR))
474 #endif
475
476 /*
477  * Don't install; let people read the instructions about putting in the
478  * abort-display() resource:
479  */
480 #ifdef comment
481 InstallProgramWithFlags(xdmshell,$(XBINDIR), /**/)
482 #endif
483
484 #if !defined(USE_KRB) && !defined(USE_RGY)
485 /***** For dtge make a client_OBJS.o using client_main.o ******/
486 /***** This implies the existence of client_main.c       ******/
487 # ifdef BuildHugeObject
488 #  if defined (HPArchitecture) && ! defined (BLS)
489 SpecialRelocatableTarget(dtlogin,$(HIDDEN_SYMBOLS1),$(OBJS1))
490 SpecialRelocatableTarget(dtgreet,$(HIDDEN_SYMBOLS2),$(OBJS2))
491 #  endif
492 # endif
493 #endif