Split up libtool support into LWP and pthread
[openafs.git] / src / config / Makefile.config.in
1 #
2 # Installation vars
3 #
4 afsbackupdir=@afsbackupdir@
5 afsbosconfigdir=@afsbosconfigdir@
6 afsconfdir=@afsconfdir@
7 afsdbdir=@afsdbdir@
8 afslocaldir=@afslocaldir@
9 afslogsdir=@afslogsdir@
10 afssrvbindir=@afssrvbindir@
11 afskerneldir=@afskerneldir@
12 afssrvlibexecdir=@afssrvlibexecdir@
13 afssrvsbindir=@afssrvsbindir@
14 afsdatadir=@afsdatadir@
15 bindir=@bindir@
16 exec_prefix=@exec_prefix@
17 datarootdir=@datarootdir@
18 datadir=@datadir@
19 includedir=@includedir@
20 libdir=@libdir@
21 libexecdir=@libexecdir@
22 localstatedir=@localstatedir@
23 mandir=@mandir@
24 prefix=@prefix@
25 sbindir=@sbindir@
26 sysconfdir=@sysconfdir@
27 viceetcdir=@viceetcdir@/
28 top_builddir=@top_builddir@
29
30
31 #
32 # Programs and other defines
33 #
34 AR = @AR@
35 AS = @AS@
36 ASFLAGS = @ASFLAGS@
37 AFSD_LIBS = @AFSD_LIBS@
38 AFSD_LDFLAGS = @AFSD_LDFLAGS@
39 CC = @CC@
40 CPP = @CPP@
41 CPPFLAGS_roken = @CPPFLAGS_roken@
42 CCOBJ = @CCOBJ@
43 CCXPG2 = @CCXPG2@
44 CFLAGS = @CFLAGS@
45 CP = @CP@
46 DARWIN_INFOFILE=@DARWIN_INFOFILE@
47 DBG = @DBG@
48 DEST = @DEST@
49 DIR_roken = @DIR_roken@
50 FSINCLUDES = @FSINCLUDES@
51 GENCAT = @GENCAT@
52 INCLUDE_LIBINTL = @INCLUDE_libintl@
53 KERN_DBG = @KERN_DBG@
54 KERN_OPTMZ = @KERN_OPTMZ@
55 LD = @LD@
56 LDFLAGS_roken = @LDFLAGS_roken@
57 LDFLAGS_hcrypto = @LDFLAGS_hcrypto@
58 LDFLAGS_krb5 = @KRB5_LDFLAGS@
59 LEX = @LEX@
60 LIB_AFSDB = @LIB_AFSDB@
61 LIB_crypt = @LIB_crypt@
62 LIB_curses = @LIB_curses@
63 LIB_hcrypto = @LIB_hcrypto@
64 LIB_roken = @LIB_roken@
65 LIB_krb5 = @KRB5_LIBS@
66 LIBTOOL= @LIBTOOL@
67 LIBS = @LIBS@
68 LIB_LIBINTL = @LIB_libintl@
69 LINUX_KERNEL_PATH = @LINUX_KERNEL_PATH@
70 LINUX_KERNEL_BUILD = @LINUX_KERNEL_BUILD@
71 LINUX_LIBAFS_NAME = @LINUX_LIBAFS_NAME@
72 LINUX_KERNEL_PACKAGING = @LINUX_KERNEL_PACKAGING@
73 LINUX_VERSION = @LINUX_VERSION@
74 LINUX_VERS = @LINUX_VERSION@
75 LWP_OPTMZ = @LWP_OPTMZ@
76 LWP_DBG = @LWP_DBG@
77 MKAFS_OSTYPE = @MKAFS_OSTYPE@
78 AFS_PARAM_COMMON = @AFS_PARAM_COMMON@
79 MT_CC = @MT_CC@
80 MT_CFLAGS = @MT_CFLAGS@
81 MT_LIBS = @MT_LIBS@
82 MV = @MV@
83 NO_STRIP_BIN = @NO_STRIP_BIN@
84 OPTMZ = @OPTMZ@
85 PAM_CFLAGS = @PAM_CFLAGS@
86 PAM_LIBS = @PAM_LIBS@
87 PAM_OPTMZ = @PAM_OPTMZ@
88 PAM_DBG = @PAM_DBG@
89 PATH_CPP = @PATH_CPP@
90 RANLIB = @RANLIB@
91 REGEX_OBJ = @REGEX_OBJ@
92 REGEX_OBJ_PIC = @REGEX_OBJ_PIC@
93 RM = @RM@
94 RXDEBUG = @RXDEBUG@
95 ROKEN_HEADERS = @ROKEN_HEADERS@
96 ROKEN_LIBOBJS = @LIBOBJS@
97 SHLIB_CFLAGS = @SHLIB_CFLAGS@
98 SHLIB_LDFLAGS = @SHLIB_LDFLAGS@
99 SHLIB_LINKER = @SHLIB_LINKER@
100 SHLIB_SUFFIX = @SHLIB_SUFFIX@
101 SYS_NAME = @AFS_SYSNAME@
102 TOP_INCDIR = @TOP_INCDIR@
103 TOP_LIBDIR = @TOP_LIBDIR@
104 TOP_JLIBDIR= @TOP_JLIBDIR@
105 TOP_OBJDIR = @TOP_OBJDIR@
106 TOP_SRCDIR = @TOP_SRCDIR@
107 VPATH = ${srcdir}
108 XCFLAGS64 = @XCFLAGS64@
109 XCFLAGS = @XCFLAGS@
110 XLDFLAGS64 = @XLDFLAGS64@
111 XLDFLAGS = @XLDFLAGS@
112 XLIBELFA = @XLIBELFA@
113 XLIBKVM = @XLIBKVM@
114 XLIBS = @XLIBS@
115 YACC = @YACC@
116
117 #
118 # Install targets
119 #
120
121 INSTALL = @INSTALL@
122 INSTALL_DATA = @INSTALL_DATA@
123 INSTALL_PROGRAM = @INSTALL_PROGRAM@
124 INSTALL_SCRIPT = @INSTALL_SCRIPT@
125
126 #
127 # Special build targets
128 #
129 dest_XFS_SIZE_CHECK = @dest_XFS_SIZE_CHECK@
130 install_XFS_SIZE_CHECK = @install_XFS_SIZE_CHECK@
131 XFS_SIZE_CHECK = @XFS_SIZE_CHECK@
132 AIX32 = @AIX32@
133 AIX64 = @AIX64@
134
135 #
136 # Paths to build dirs
137 #
138 # Could be absolute, but leaving as relative for now
139 #UKERNELDIR = ${TOP_OBJDIR}/src/libuafs
140 #KERNELDIR = ${TOP_OBJDIR}/src/libafs
141 UKERNELDIR = ../libuafs
142 KERNELDIR = ../libafs
143
144 #
145 # Build helper apps
146 #
147 COMPILE_ET = ${TOP_OBJDIR}/src/comerr/compile_et
148 RXGEN = ${TOP_OBJDIR}/src/rxgen/rxgen
149 SHELL = @SHELL@
150 LWPTOOL = ${TOP_SRCDIR}/config/lwptool
151
152 #
153 # "Pretty" build line stuff
154 #
155
156 # Default to disabling the "pretty" build lines
157 # If the user specifies 'V=0', the variables below expand to their _V0
158 # variants, which enable the "pretty" build lines
159 V=1
160
161 RUNCMD=RUNCMD () { \
162         echo "  $$1  $$2"; \
163         shift; shift; \
164         "$$@" || failcode=$$?; \
165         if [ x"$$failcode" != x ] ; then \
166                 echo >&2; \
167                 echo "FAILED COMMAND: $$@" >&2; \
168                 echo >&2; \
169                 echo "In dir:" >&2; \
170                 pwd >&2; \
171                 echo >&2; \
172                 exit $$failcode; \
173         fi; \
174         exit 0; \
175 } ; RUNCMD
176
177 RUN_CC_NOQ_V0=${RUNCMD} CC "`pwd`/$@"
178 RUN_LD_NOQ_V0=${RUNCMD} LD "`pwd`/$@"
179
180 # Prefixing a command with $(Q) will suppress that line from being printed
181 # during a "pretty" make, so the RUNCMD function above can decide itself how
182 # much to print. The Q is just for "quiet", and Q kinda looks like @.
183 #
184 # The _NOQ variants of the RUN_ commands are for when a compiler invocation is
185 # in the middle of e.g. a switch/case or an if/else, etc. In those cases, we
186 # want to prefix the _entire_ command with $(Q), not just the compiler, linker,
187 # etc.
188 Q_V0=@
189 Q=$(Q_V$(V))
190
191 RUN_CC=$(Q)$(RUN_CC_NOQ_V$(V))
192 RUN_LD=$(Q)$(RUN_LD_NOQ_V$(V))
193
194 RUN_CC_NOQ=$(RUN_CC_NOQ_V$(V))
195 RUN_LD_NOQ=$(RUN_LD_NOQ_V$(V))
196
197 #
198 # Common/standard cflags/paths/etc
199 # Cflags defaults, will be overridden later if necessary
200 #
201 # -I. and -I${srcdir} are only needed for objdir builds - we should
202 # conditionalise them on that.
203
204 COMMON_INCL=$(MODULE_INCLUDE) -I${TOP_OBJDIR}/src/config -I${TOP_INCDIR} \
205             -I${srcdir} -I. 
206
207 COMMON_CFLAGS=$(CFLAGS) ${DBG} ${OPTMZ} $(XCFLAGS) \
208               ${COMMON_INCL} ${INCLUDE_LIBINTL} \
209               $(CPPFLAGS_roken) $(ARCHFLAGS)
210
211 COMMON_LDFLAGS=$(LDFLAGS) $(LDFLAGS_hcrypto) $(LDFLAGS_roken) $(DBG) $(OPTMZ)
212
213 # LWP Flags
214 LWP_CFLAGS=$(COMMON_CFLAGS) $(MODULE_CFLAGS)
215 LWP_LDFLAGS=$(COMMON_LDFLAGS) $(MODULE_LDFLAGS) $(XLDFLAGS) $(ARCHFLAGS)
216 LWP_CCRULE        =$(RUN_CC) $(CCOBJ) $(LWP_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
217 LWP_CCRULE_NOQ=$(RUN_CC_NOQ) $(CCOBJ) $(LWP_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
218
219 # Pthreaded
220 PTH_CFLAGS=$(COMMON_CFLAGS) $(MODULE_CFLAGS) $(MT_CFLAGS)
221 PTH_LDFLAGS=$(COMMON_LDFLAGS) $(MODULE_LDFLAGS) $(MT_LDFLAGS)
222 PTH_CCRULE        =$(RUN_CC) $(MT_CC) $(PTH_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
223 PTH_CCRULE_NOQ=$(RUN_CC_NOQ) $(MT_CC) $(PTH_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
224
225 # Shared
226 SHD_CFLAGS=$(COMMON_CFLAGS) $(MODULE_CFLAGS) $(MT_CFLAGS) $(SHLIB_CFLAGS)
227 SHD_LDFLAGS=$(COMMON_LDFLAGS) $(MODULE_LDFLAGS) $(SHLIB_LDFLAGS)
228 SHD_CCRULE        =$(RUN_CC) $(MT_CC) $(SHD_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
229 SHD_CCRULE_NOQ=$(RUN_CC_NOQ) $(MT_CC) $(SHD_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
230
231 # Libtool - for objects that are part of pthread-only libraries
232 LT_CCRULE=$(RUN_CC) $(LIBTOOL) --quiet --mode=compile --tag=CC \
233               $(MT_CC) $(PTH_CFLAGS) $(CFLAGS_$(@)) -o $@ -c
234
235 LT_current=0
236 LT_revision=0
237 LT_age=0
238
239 # Basic rule to link a shared library.
240 LT_LDLIB_shlib=$(LIBTOOL) --quiet --mode=link --tag=CC \
241                 $(MT_CC) -rpath $(libdir) \
242                 $(PTH_LDFLAGS) $(PTH_CFLAGS) $(LDFLAGS_$(@)) \
243                 -o $@ \
244                 -no-undefined \
245                 -export-symbols $@.sym \
246                 -version-info=$(LT_current):$(LT_revision):$(LT_age)
247
248
249 # Link a static convenience library (contains no PIC code)
250 LT_LDLIB_static=$(LIBTOOL) --quiet --mode=link --tag=CC \
251                  $(MT_CC) -static $(LDFLAGS) $(DBG) $(OPTMZ) \
252                  $(LDFLAGS_$(@)) -o $@
253
254 # Link a convenience library for use in other libs (contains PIC code)
255 LT_LDLIB_pic= $(LIBTOOL) --quiet --mode=link --tag=CC \
256                $(MT_CC) $(LDFLAGS) $(DBG) $(OPTMZ) \
257                $(LDFLAGS_$(@)) -o $@
258
259 # Libtool - for objects that are built for both pthread and lwp libraries
260 LTLWP_CCRULE=$(RUN_CC) $(LWPTOOL) --mode compile \
261                  --lwpcc "$(CCOBJ)" \
262                  --mtcc "$(LIBTOOL) --quiet --mode=compile --tag=CC $(MT_CC) $(MT_CFLAGS)" \
263                  -o $@ \
264                  -- \
265                  $(COMMON_CFLAGS) $(MODULE_CFLAGS) $(CFLAGS_$(@)) \
266                  -c
267
268 LT_LDLIB_lwp=$(RUN_LD) $(LWPTOOL) --mode link \
269                  --ranlib "$(RANLIB)" \
270                  --linker "$(AR) crv" \
271                  -o $@ \
272                  --
273
274 # Use this to link an executable with one or more libtool libraries
275 LT_LDRULE        = $(RUN_LD) $(LIBTOOL) --quiet --mode=link --tag=CC \
276                              $(MT_CC) $(PTH_LDFLAGS) $(PTH_CFLAGS) \
277                              $(LDFLAGS_$(@)) -o $@
278
279 LT_LDRULE_static = $(RUN_LD) $(LIBTOOL) --quiet --mode=link --tag=CC \
280                              $(MT_CC) -static $(PTH_LDFLAGS) $(PTH_CFLAGS) \
281                              $(LDFLAGS_$(@)) -o $@
282
283 LT_INSTALL_DATA=$(LIBTOOL) --quiet --mode=install $(INSTALL_DATA)
284 LT_INSTALL_PROGRAM=$(LIBTOOL) --quiet --mode=install $(INSTALL_PROGRAM)
285
286 LT_CLEAN=$(RM) -rf .lwp .libs *.la *.lo
287
288 # Default rules. These will be overriden if the module Makefile specifically
289 # includes a particular type (lwp, pthread, or shared)
290
291 AFS_LDRULE         =$(RUN_LD) $(CC) $(AFS_LDFLAGS) $(AFS_CFLAGS) $(LDFLAGS_$(@)) -o $@
292 AFS_LDRULE_NOQ =$(RUN_LD_NOQ) $(CC) $(AFS_LDFLAGS) $(AFS_CFLAGS) $(LDFLAGS_$(@)) -o $@
293