Library.tmpl revision 11d341ca
1/*
2 * Library imakefile info  - this contains any special redefinitions, etc.
3 * that Imakefiles in the various library subtrees will need.
4 *
5 * Before including this, you must set the following boolean variables:
6 * DoNormalLib, DoSharedLib, DoDebugLib, DoProfileLib
7 *
8 * To get automatic generation of standard rules, also set the variables:
9 * LibName, SoRev, HasSharedData, and optionally HugeLibrary and IncSubdir.
10 *
11 * To suppress installation of the library define LibInstall NO.
12 * To suppress creating (and installing) the library define LibCreate NO.
13 * To suppress installing headers define LibHeaders NO.
14 * Define LargePICTable YES if large (32-bit) PIC tables are needed.
15 */
16
17XCOMM $Xorg: Library.tmpl,v 1.3 2000/08/17 19:41:46 cpqbld Exp $
18
19
20
21
22XCOMM $XFree86: xc/config/cf/Library.tmpl,v 3.23tsi Exp $
23
24#ifndef DoNormalLib
25#define DoNormalLib NO
26#endif
27#ifndef DoSharedLib
28#define DoSharedLib NO
29#endif
30#ifndef DoDebugLib
31#define DoDebugLib NO
32#endif
33#ifndef DoProfileLib
34#define DoProfileLib NO
35#endif
36#ifndef DoExtraLib
37#define DoExtraLib NO
38#endif
39
40#ifndef HasSharedData
41#define HasSharedData NO
42#endif
43#ifndef HugeLibrary
44#define HugeLibrary NO
45#endif
46
47#ifndef ShlibBindGlobals
48#define ShlibBindGlobals NO
49#endif
50
51#if ShlibBindGlobals && defined(ShlibGlobalsFlags)
52SHLIBGLOBALSFLAGS = ShlibGlobalsFlags
53#endif
54
55#ifndef LibraryCplusplusOptions
56# if DoSharedLib && defined(SharedLibraryCplusplusOptions)
57#  define LibraryCplusplusOptions SharedLibraryCplusplusOptions
58# else
59#  define LibraryCplusplusOptions DefaultCplusplusOptions
60# endif
61#endif
62#ifndef LibraryDefines
63# define LibraryDefines StandardDefines
64#endif
65#ifndef LibraryDebugOpt
66# define LibraryDebugOpt /**/
67#endif
68/* Note: Changing LibraryCDebugFlags has no effect because CDEBUGFLAGS is over-
69   ridden by PassCDebugFlags in the parent Makefile or toplevel xmakefile. */
70#ifndef LibraryCDebugFlags
71# define LibraryCDebugFlags DefaultCDebugFlags
72#endif
73#ifndef LibraryCplusplusDebugFlags
74# define LibraryCplusplusDebugFlags DefaultCplusplusDebugFlags
75#endif
76#ifndef SeparateSharedCompile
77# define SeparateSharedCompile YES
78#endif
79
80#ifdef CrossCompileDir
81# ifndef StripPath
82#  define StripPath(x) `echo x|sed "s%.*/%%"`
83# endif
84#endif
85
86#ifndef CplusplusSource
87# ifndef LibraryCcCmd
88#  if DoSharedLib && defined(SharedLibraryCcCmd)
89#   define LibraryCcCmd SharedLibraryCcCmd
90#  else
91#   define LibraryCcCmd CcCmd
92#  endif
93# endif
94# ifndef LibraryCCOptions
95#  if DoSharedLib && defined(SharedLibraryCCOptions)
96#   define LibraryCCOptions SharedLibraryCCOptions
97#  else
98#   define LibraryCCOptions DefaultCCOptions
99#  endif
100# endif
101
102#ifdef CrossCompileDir
103# ifndef CrossLibraryCcCmd
104#  define CrossLibraryCcCmd Concat3(CrossCompileDir,/,StripPath(LibraryCcCmd))
105# endif
106#endif
107
108#ifdef CrossCompileDir
109         CC = CrossLibraryCcCmd
110#else
111         CC = LibraryCcCmd
112#endif
113  CCOPTIONS = LibraryCCOptions
114STD_DEFINES = LibraryDefines $(PROJECT_DEFINES)
115CDEBUGFLAGS = LibraryCDebugFlags
116CLIBDEBUGFLAGS = LibraryDebugOpt
117     CFLAGS = $(CDEBUGFLAGS) $(CLIBDEBUGFLAGS) $(CCOPTIONS) $(THREADS_CFLAGS) $(ALLDEFINES)
118# if defined(LargePICTable) && LargePICTable && defined(LargePositionIndependentCFlags)
119   PICFLAGS = LargePositionIndependentCFlags
120# endif
121#else
122# ifndef CrossCompileDir
123#  ifndef LibraryCplusplusCmd
124#   if DoSharedLib && defined(SharedLibraryCplusplusCmd)
125#    define LibraryCplusplusCmd SharedLibraryCplusplusCmd
126#   else
127#    define LibraryCplusplusCmd CplusplusCmd
128#   endif
129#  endif
130# else
131#  ifndef CrossLibraryCplusplusCmd
132#   if DoSharedLib && defined(SharedLibraryCplusplusCmd)
133#    define CrossLibraryCplusplusCmd Concat3(CrossCompileDir,/,StripPath(SharedLibraryCplusplusCmd))
134#   else
135#    define CrossLibraryCplusplusCmd Concat3(CrossCompileDir,/,StripPath(CplusplusCmd))
136#   endif
137#  endif
138# endif
139
140# ifndef LibraryCplusplusOptions
141#  if DoSharedLib && defined(SharedLibraryCplusplusOptions)
142#   define LibraryCplusplusOptions SharedLibraryCplusplusOptions
143#  else
144#   define LibraryCplusplusOptions DefaultCplusplusOptions
145#  endif
146# endif
147
148#ifdef CrossCompileDir
149          CXX = CrossLibraryCplusplusCmd
150#else
151          CXX = LibraryCplusplusCmd
152#endif
153   CXXOPTIONS = LibraryCplusplusOptions
154  STD_DEFINES = LibraryDefines $(PROJECT_DEFINES)
155CXXDEBUGFLAGS = LibraryCplusplusDebugFlags
156CXXLIBDEBUGFLAGS = LibraryDebugOpt
157     CXXFLAGS = $(CXXDEBUGFLAGS) $(CXXLIBDEBUGFLAGS) $(CXXOPTIONS) $(THREADS_CXXFLAGS) $(CXXDEFINES)
158# if defined(LargePICTable) && LargePICTable
159#  ifdef LargePositionIndependentCplusplusFlags
160  CXXPICFLAGS = LargePositionIndependentCplusplusFlags
161#  elif defined(LargePositionIndependentCFlags)
162  CXXPICFLAGS = LargePositionIndependentCFlags
163#  endif
164# endif
165#endif
166
167#ifdef LibraryMTDefines
168LIB_MT_DEFINES = LibraryMTDefines
169#endif
170
171#if defined(IHaveSubdirs) && HasSymLinks && !defined(NoLibSubdirs)
172#define _LibMkdir LibMkdirLinkSubdirs
173#else
174#define _LibMkdir LibMkdir
175#endif
176
177#if DoDebugLib
178# define _DebuggedLibMkdir() _LibMkdir(debugger)
179# define _DebuggedObjCompile(options) DebuggedLibObjCompile(options)
180# define _DebuggedObjCplusplusCompile(options) DebuggedLibObjCplusplusCompile(options)
181# define _DebuggedCleanDir() LibCleanDir(debugger)
182#else
183# define _DebuggedLibMkdir() $(_NULLCMD_)
184# define _DebuggedObjCompile(options) $(_NULLCMD_)
185# define _DebuggedObjCplusplusCompile(options) $(_NULLCMD_)
186# define _DebuggedCleanDir() $(_NULLCMD_)
187#endif
188
189#if DoProfileLib
190# define _ProfiledLibMkdir() _LibMkdir(profiled)
191# define _ProfiledObjCompile(options) ProfiledLibObjCompile(options)
192# define _ProfiledObjCplusplusCompile(options) ProfiledLibObjCplusplusCompile(options)
193# define _ProfiledCleanDir() LibCleanDir(profiled)
194#else
195# define _ProfiledLibMkdir() $(_NULLCMD_)
196# define _ProfiledObjCompile(options) $(_NULLCMD_)
197# define _ProfiledObjCplusplusCompile(options) $(_NULLCMD_)
198# define _ProfiledCleanDir() $(_NULLCMD_)
199#endif
200
201#if !DoNormalLib
202# define _NormalLibMkdir() $(_NULLCMD_)
203# define _NormalObjCompile(options) $(_NULLCMD_)
204# define _NormalObjCplusplusCompile(options) $(_NULLCMD_)
205# define _NormalCleanDir() $(_NULLCMD_)
206#else
207# if DoSharedLib && SeparateSharedCompile
208#  define _NormalLibMkdir() _LibMkdir(unshared)
209#  define _NormalObjCompile(options) UnsharedLibObjCompile(options)
210#  define _NormalObjCplusplusCompile(options) UnsharedLibObjCplusplusCompile(options)
211#  define _NormalCleanDir() LibCleanDir(unshared)
212# else
213#  define _NormalLibMkdir() $(_NULLCMD_)
214#  if !DoSharedLib &&  defined(IncludeSharedObjectInNormalLib)
215#   define _NormalObjCompile(options) NormalRelocLibObjCompile(options)
216#  else
217#   define _NormalObjCompile(options) NormalLibObjCompile(options)
218#  endif
219#  define _NormalObjCplusplusCompile(options) NormalLibObjCplusplusCompile(options)
220#  define _NormalCleanDir() $(_NULLCMD_)
221# endif
222#endif
223
224#if !DoSharedLib || (DoNormalLib && !SeparateSharedCompile)
225# define _SharedObjCompile(options) $(_NULLCMD_)
226# define _SharedObjCplusplusCompile(options) $(_NULLCMD_)
227#else
228# if SeparateSharedCompile
229#  define _SharedObjCompile(options) NormalSharedLibObjCompile(options)
230#  define _SharedObjCplusplusCompile(options) NormalSharedLibObjCplusplusCompile(options)
231#else
232# define _SharedObjCompile(options) NormalLibObjCompile(options)
233# define _SharedObjCplusplusCompile(options) NormalLibObjCplusplusCompile(options)
234#endif
235#endif
236
237#ifndef LibInstallBuild
238#define LibInstallBuild NO
239#endif
240
241#if DoExtraLib && defined(ExtraLibRules)
242# define _ExtraLibMkdir() ExtraLibMkdir()
243# define _ExtraObjCompile(options) ExtraObjCompile(options)
244# define _ExtraObjCplusplusCompile(options) ExtraObjCplusplusCompile(options)
245# define _ExtraCleanDir() ExtraCleanDir()
246#else
247# define _ExtraLibMkdir() $(_NULLCMD_)
248# define _ExtraObjCompile(options) $(_NULLCMD_)
249# define _ExtraObjCplusplusCompile(options) $(_NULLCMD_)
250# define _ExtraCleanDir() $(_NULLCMD_)
251#endif
252
253#ifndef CplusplusSource
254# define SRCsuf c
255# define Isuf i
256#else
257# define SRCsuf CCsuf
258# define Isuf ii
259# ifdef SunArchitecture
260.SUFFIXES: Concat(.,CCsuf)
261# endif
262#endif
263
264#define _CompileObj(target, options)					@@\
265target									@@\
266	_DebuggedObjCompile(options)					@@\
267	_ProfiledObjCompile(options)					@@\
268	_NormalObjCompile(options)					@@\
269	_ExtraObjCompile(options)					@@\
270	_SharedObjCompile(options)
271
272#ifndef SeparateSharedCompile
273# define _CompileObjSeparateOpts(target,staticopts,sharedopts) \
274	_CompileObj(target,sharedopts)
275#else
276# define _CompileObjSeparateOpts(target,staticopts,sharedopts)		@@\
277target									@@\
278	_DebuggedObjCompile(staticopts)					@@\
279	_ProfiledObjCompile(staticopts)					@@\
280	_NormalObjCompile(staticopts)					@@\
281	_ExtraObjCompile(staticopts)					@@\
282	_SharedObjCompile(sharedopts)
283#endif
284
285#ifdef CplusplusSource
286# define _CompileObjCplusplus(target, options)				@@\
287target									@@\
288	_DebuggedObjCplusplusCompile(options)				@@\
289	_ProfiledObjCplusplusCompile(options)				@@\
290	_NormalObjCplusplusCompile(options)				@@\
291	_ExtraObjCplusplusCompile(options)				@@\
292	_SharedObjCplusplusCompile(options)
293#else
294# define _CompileObjCplusplus(target, options)
295#endif
296
297#ifndef LibraryObjectRule
298# define LibraryObjectRule()						@@\
299all::									@@\
300	_DebuggedLibMkdir()						@@\
301	_ProfiledLibMkdir()						@@\
302	_NormalLibMkdir()						@@\
303	_ExtraLibMkdir()						@@\
304									@@\
305includes::								@@\
306	_DebuggedLibMkdir()						@@\
307	_ProfiledLibMkdir()						@@\
308	_NormalLibMkdir()						@@\
309	_ExtraLibMkdir()						@@\
310									@@\
311_CompileObj(.c.Osuf:,$(_NOOP_))						@@\
312_CompileObjCplusplus(.SRCsuf.Osuf:,$(_NOOP_))				@@\
313									@@\
314clean::									@@\
315	_DebuggedCleanDir()						@@\
316	_ProfiledCleanDir()						@@\
317	_NormalCleanDir()						@@\
318	_ExtraCleanDir()						@@\
319
320#endif /* LibraryObjectRule */
321
322#ifndef SpecialLibObjectRule
323# define SpecialLibObjectRule(objs,depends,options)			@@\
324_CompileObj(objs: depends,options)
325#endif /* SpecialLibObjectRule */
326
327#ifndef SpecialCLibObjectRule
328# define SpecialCLibObjectRule(basename,depends,options)		@@\
329_CompileObj(basename.Osuf: basename.SRCsuf depends,options)		@@\
330									@@\
331basename.Isuf: basename.SRCsuf depends					@@\
332	CPPOnlyCompile(basename.SRCsuf,options)				@@\
333									@@\
334CenterLoadTarget(debug_src,basename.SRCsuf,NullParameter,$(ALLDEFINES) options)
335#endif /* SpecialCLibObjectRule */
336
337#ifndef SpecialCLibObjectRuleSeparateOpts
338# define SpecialCLibObjectRuleSeparateOpts(basename,depends,staticopts,shopts) @@\
339_CompileObjSeparateOpts(basename.Osuf: basename.SRCsuf depends,staticopts,shopts)	@@\
340									@@\
341basename.Isuf: basename.SRCsuf depends					@@\
342	CPPOnlyCompile(basename.SRCsuf,sharedopts)			@@\
343									@@\
344CenterLoadTarget(debug_src,basename.SRCsuf,NullParameter,$(ALLDEFINES) options)
345#endif /* SpecialCLibObjectRuleSepareateOpts */
346
347#ifndef SpecialCplusplusLibObjectRule
348# define SpecialCplusplusLibObjectRule(basename,depends,options)	@@\
349_CompileObjCplusplus(basename.Osuf: basename.SRCsuf depends,options)	@@\
350									@@\
351CenterLoadTarget(debug_src,basename.SRCsuf,NullParameter,$(ALLDEFINES) options)
352#endif /* SpecialCplusplusLibObjectRule */
353
354/*
355 * ToolkitMakeStrings generates a string-table, i.e., a C source
356 * file and the matching header(s), e.g., Xt's StringDefs.c, StringDefs.h,
357 * and Shell.h files; or Motif's XmStrDefs.c and XmStrDefs.h files.
358 *
359 * The 'files' argument is the list of files that will be produced by
360 * this rule, e.g., for Xt they would be "Shell.h StringDefs.c StringDefs.h"
361 * and for Motif they would be "XmStrDefs.c XmStrDefs.h".
362 *
363 * The 'source' argument is the string-list file to be parsed, e.g., in
364 * Xt that would be "util/string.list".  For Motif 2.0 it would be
365 * "../../tools/makestr/xmstring.list", and for Motif-CDE1 it would be
366 * "util/xmstring.list".
367 *
368 * The 'options' argument is passed by the library's Imakefile, see the
369 * Xt Imakefile for an example.  Typically this would be nothing, -intelabi,
370 * or -sparcabi; there are other choices, but these are typical.
371 *
372 * The 'depends' argument names additional files the target files
373 * depend on.  It should name the #ctmpl and #htmpl files from the
374 * 'source' file.
375 *
376 * The 'dest' argument is the C source output file.  For Xt this should
377 * be "StringDefs.c", and for all versions of Motif it would be "XmStrDefs.c"
378 *
379 * Headers are generated and named according to data in the 'source'
380 * file.
381 */
382/*
383 * The NoCmpScript
384 * prevents clearmake from trying to remake makestrs if it exists.
385 * Including both $(MAKESTRS) and $(MAKESTRS).o as primary targets
386 * prevents clearmake from trying to recompile makestrs from here.
387 * We have includes, not files, depend on makestrs to try to get
388 * clearmake to wink in the files.  Bug in clearmake 2.0.2?
389 */
390
391#ifndef MakeStringsDependency
392# ifndef UseInstalled
393#  define MakeStringsDependency						@@\
394MAKESTRS = $(CONFIGSRC)/util/makestrs					@@\
395NoCmpScript(HostProgramTargetName($(MAKESTRS)) $(MAKESTRS).Osuf)	@@\
396									@@\
397HostProgramTargetName($(MAKESTRS)) $(MAKESTRS).Osuf:			@@\
398	cd $(CONFIGSRC)/util && $(MAKE) HostProgramTargetName(makestrs)	@@\
399									@@\
400includes:: HostProgramTargetName($(MAKESTRS))
401# else
402#  define MakeStringsDependency  /**/
403# endif
404#endif
405
406#ifndef ToolkitMakeStrings
407# if defined(LibTookitMakeStringsDependency) && LibTookitMakeStringsDependency
408#  define ToolkitMakeStrings(files,source,options,depends,dest)		@@\
409files: source depends							@@\
410	RemoveFiles(files)						@@\
411	RunProgram(MAKESTRS,options < source > dest)			@@\
412									@@\
413AllTarget(files)							@@\
414									@@\
415includes:: files							@@\
416									@@\
417depend:: files								@@\
418									@@\
419clean::									@@\
420	RemoveFiles(files)
421# else
422#  define ToolkitMakeStrings(files,source,options,depends,dest)		@@\
423MakeStringsDependency							@@\
424									@@\
425files: source depends							@@\
426	RemoveFiles(files)						@@\
427	RunProgram(MAKESTRS,options < source > dest)			@@\
428									@@\
429AllTarget(files)							@@\
430									@@\
431includes:: files							@@\
432									@@\
433depend:: files								@@\
434									@@\
435clean::									@@\
436	RemoveFiles(files)
437# endif
438#endif /* ToolkitMakeStrings */
439
440#ifdef LibName
441
442LIBNAME = LibName
443
444# if defined(LibTookitMakeStringsDependency) && LibTookitMakeStringsDependency
445/*
446 * Do ToolkitMakeStrings() before BuildIncludes so makestrs is still
447 * built first, even if the generated header will be installed.
448 */
449MakeStringsDependency
450# endif
451
452LibraryObjectRule()
453
454# undef _LinkBuildLibrary
455# if !defined(LibInstall) || LibInstall || LibInstallBuild
456#  define _LinkBuildLibrary(lib) LinkBuildLibrary(lib)
457# else
458#  define _LinkBuildLibrary(lib) $(_NULLCMD_)
459# endif
460
461# if defined(LibBuild) && !LibBuild
462#  define LibCreate NO
463# endif
464
465# if !defined(LibCreate) || LibCreate
466#  if DoSharedLib
467#   if HugeLibrary && defined(SharedLibraryTarget3)
468SharedLibraryTarget3($(LIBNAME),$(SoRev),$(OBJS1),$(OBJS2),$(OBJS3) $(EXTRASHAREDOBJS),.,.)
469#   else
470#    if defined(SharedLibtoolRev) && defined(SharedLibtoolLibraryTarget)
471SharedLibtoolLibraryTarget($(LIBNAME),SharedLibtoolRev,$(OBJS) $(EXTRASHAREDOBJS),.,.)
472#    else
473SharedLibraryTarget($(LIBNAME),$(SoRev),$(OBJS) $(EXTRASHAREDOBJS),.,.)
474#    endif
475#   endif
476#   if !defined(LibInstall) || LibInstall
477#    if defined(SharedLibtoolRev) && defined(InstallSharedLibtoolLibrary)
478InstallSharedLibtoolLibrary($(LIBNAME),SharedLibtoolRev,$(SHLIBDIR))
479#    else
480InstallSharedLibrary($(LIBNAME),$(SoRev),$(SHLIBDIR))
481#    endif
482#   endif
483#   if HasSharedData
484SharedLibraryDataTarget($(LIBNAME),$(SoRev),$(UNSHAREDOBJS))
485#    if !defined(LibInstall) || LibInstall
486InstallSharedLibraryData($(LIBNAME),$(SoRev),$(SHLIBDIR))
487#    endif
488#   endif
489#  endif
490#  if DoNormalLib
491#   if HugeLibrary
492#    if DoSharedLib && SeparateSharedCompile
493UnsharedLibraryTarget3($(LIBNAME),$(OBJS1),$(OBJS2),$(OBJS3) $(EXTRAUNSHAREDOBJS),unshared,..)
494#    else
495NormalLibraryTarget3($(LIBNAME),$(OBJS1),$(OBJS2),$(OBJS3) $(EXTRAUNSHAREDOBJS))
496#    endif
497#   else
498#    if DoSharedLib && SeparateSharedCompile
499UnsharedLibraryTarget($(LIBNAME),$(OBJS) $(EXTRAUNSHAREDOBJS),unshared,..)
500#    else
501NormalLibraryTarget($(LIBNAME),$(OBJS) $(EXTRAUNSHAREDOBJS))
502#    endif
503#   endif
504#   if !defined(LibInstall) || LibInstall
505InstallLibrary($(LIBNAME),$(USRLIBDIR))
506#   endif
507#  endif
508#  if DoProfileLib
509ProfiledLibraryTarget($(LIBNAME),$(OBJS) $(EXTRAUNSHAREDOBJS))
510#   if !defined(LibInstall) || LibInstall
511InstallLibrary($(LIBNAME)_p,$(USRLIBDIR))
512#   endif
513#  endif
514#  if DoDebugLib
515DebuggedLibraryTarget($(LIBNAME),$(OBJS) $(EXTRAUNSHAREDOBJS))
516#   if !defined(LibInstall) || LibInstall
517InstallLibrary($(LIBNAME)_d,$(USRLIBDIR))
518#   endif
519#  endif
520#  if DoExtraLib && defined(ExtraLibRules)
521ExtraLibraryTarget($(LIBNAME),$(SoRev),$(OBJS) $(EXTRAUNSHAREDOBJS))
522#   if !defined(LibInstall) || LibInstall
523ExtraInstallLibrary($(LIBNAME),$(SoRev))
524#   endif
525#  endif
526
527LintLibraryTarget($(LIBNAME),$(SRCS))
528#  if !defined(LibInstall) || LibInstall
529InstallLintLibrary($(LIBNAME),$(LINTLIBDIR))
530#  endif
531# else /* not LibCreate */
532#  if LibBuild
533#   if HugeLibrary
534AllTarget($(OBJS1))
535AllTarget($(OBJS2))
536AllTarget($(OBJS3))
537#   else
538AllTarget($(OBJS))
539#   endif
540#   if DoSharedLib
541AllTarget($(EXTRASHAREDOBJS))
542#   endif
543#   if DoNormalLib
544AllTarget($(EXTRAUNSHAREDOBJS))
545#   endif
546#  endif /* LibBuild */
547# endif /* LibCreate */
548# ifdef IncSubdir
549#  ifdef IncSubSubdir
550#   if !defined(LibHeaders) || LibHeaders
551BuildIncludes($(HEADERS),IncSubdir/IncSubSubdir,../..)
552#    if BuildLibraries
553InstallMultipleFlags($(HEADERS),$(INCDIR)/IncSubdir/IncSubSubdir,$(INSTINCFLAGS))
554#     endif
555#   endif
556#  else
557#   if !defined(LibHeaders) || LibHeaders
558BuildIncludes($(HEADERS),IncSubdir,..)
559#    if BuildLibraries
560InstallMultipleFlags($(HEADERS),$(INCDIR)/IncSubdir,$(INSTINCFLAGS))
561#    endif
562#   endif
563#  endif
564# else
565#  ifndef CplusplusSource
566#   if !defined(LibHeaders) || LibHeaders
567BuildIncludesTop($(HEADERS))
568#    if BuildLibraries
569InstallMultipleFlags($(HEADERS),$(INCDIR),$(INSTINCFLAGS))
570#    endif
571#   endif
572#  endif
573# endif
574
575NormalLintTarget($(SRCS))
576#endif /* defined(LibName) */
577
578#ifdef NoSoSymlink
579SOSYMLINK = false
580#else
581SOSYMLINK = true
582#endif
583