1251875Speter#
2251875Speter# Define our macros with defaults if we dont got them already.
3251875Speter#
4251875Speterifndef APR_WORK
5251875Speterexport APR_WORK = $(CURDIR)
6251875Speterendif
7251875Speterifneq "$(wildcard $(APR_WORK)/include/apr_version.h)" "$(APR_WORK)/include/apr_version.h"
8251875Speter$(error APR_WORK does not point to a valid APR source tree) 
9251875Speterendif
10251875Speterifndef APU_WORK
11251875Speterexport APU_WORK = $(CURDIR)/../apr-util
12251875Speterendif
13251875Speterifneq "$(wildcard $(APU_WORK)/include/apu_version.h)" "$(APU_WORK)/include/apu_version.h"
14251875Speter$(error APU_WORK does not point to a valid APU source tree) 
15251875Speterendif
16251875Speter
17251875Speter#
18251875Speter# Declare the sub-directories to be built here
19251875Speter#
20251875Speter
21251875SpeterSUBDIRS = \
22251875Speter		build \
23251875Speter		$(APU_WORK) \
24251875Speter		$(EOLIST)
25251875Speter
26251875Speterifeq "$(TEST)" "1"
27251875SpeterSUBDIRS += \
28251875Speter		test \
29251875Speter		$(APU_WORK)/test \
30251875Speter		$(EOLIST)
31251875Speterendif
32251875Speter
33251875Speter#
34251875Speter# Get the 'head' of the build environment.  This includes default targets and
35251875Speter# paths to tools
36251875Speter#
37251875Speter
38251875Speterinclude $(APR_WORK)/build/NWGNUhead.inc
39251875Speter
40251875Speter#
41251875Speter# build this level's files
42251875Speter
43251875Speter#
44251875Speter# Make sure all needed macro's are defined
45251875Speter#
46251875Speter
47251875Speter#
48251875Speter# These directories will be at the beginning of the include list, followed by
49251875Speter# INCDIRS
50251875Speter#
51251875SpeterXINCDIRS	+= \
52251875Speter			$(APR)/include \
53251875Speter			$(APR)/include/arch/NetWare \
54251875Speter			$(APR)/include/arch/unix \
55251875Speter			$(APR)/memory/unix \
56251875Speter			$(APR)/random/unix \
57251875Speter			$(APU)/include \
58251875Speter			$(APU)/xml \
59251875Speter			$(LDAPSDK)/inc \
60251875Speter			$(EOLIST)
61251875Speter
62251875Speter#
63251875Speter# These flags will come after CFLAGS
64251875Speter#
65251875SpeterXCFLAGS		+= \
66251875Speter			$(EOLIST)
67251875Speter
68251875Speter#
69251875Speter# These defines will come after DEFINES
70251875Speter#
71251875SpeterXDEFINES	+= \
72251875Speter			$(EOLIST)
73251875Speter
74251875Speter#
75251875Speter# These flags will be added to the link.opt file
76251875Speter#
77251875SpeterXLFLAGS		+= \
78251875Speter			$(EOLIST)
79251875Speter
80251875Speter#
81251875Speter# These values will be appended to the correct variables based on the value of
82251875Speter# RELEASE
83251875Speter#
84251875Speterifeq "$(RELEASE)" "debug"
85251875SpeterXINCDIRS	+= \
86251875Speter			$(EOLIST)
87251875Speter
88251875SpeterXCFLAGS		+= \
89251875Speter			$(EOLIST)
90251875Speter
91251875SpeterXDEFINES	+= \
92251875Speter			$(EOLIST)
93251875Speter
94251875SpeterXLFLAGS		+= \
95251875Speter			$(EOLIST)
96251875Speterendif
97251875Speter
98251875Speterifeq "$(RELEASE)" "noopt"
99251875SpeterXINCDIRS	+= \
100251875Speter			$(EOLIST)
101251875Speter
102251875SpeterXCFLAGS		+= \
103251875Speter			$(EOLIST)
104251875Speter
105251875SpeterXDEFINES	+= \
106251875Speter			$(EOLIST)
107251875Speter
108251875SpeterXLFLAGS		+= \
109251875Speter			$(EOLIST)
110251875Speterendif
111251875Speter
112251875Speterifeq "$(RELEASE)" "release"
113251875SpeterXINCDIRS	+= \
114251875Speter			$(EOLIST)
115251875Speter
116251875SpeterXCFLAGS		+= \
117251875Speter			$(EOLIST)
118251875Speter
119251875SpeterXDEFINES	+= \
120251875Speter			$(EOLIST)
121251875Speter
122251875SpeterXLFLAGS		+= \
123251875Speter			$(EOLIST)
124251875Speterendif
125251875Speter
126251875Speter#
127251875Speter# These are used by the link target if an NLM is being generated
128251875Speter# This is used by the link 'name' directive to name the nlm.  If left blank
129251875Speter# TARGET_nlm (see below) will be used.
130251875Speter#
131251875SpeterNLM_NAME	= aprlib
132251875Speter
133251875Speter#
134251875Speter# This is used by the link '-desc ' directive.
135251875Speter# If left blank, NLM_NAME will be used.
136251875Speter#
137251875SpeterNLM_DESCRIPTION	= Apache Portability Runtime Library $(VERSION_STR) $(VERSION_SKT)
138251875Speter
139251875Speter#
140251875Speter# This is used by the '-threadname' directive.  If left blank,
141251875Speter# NLM_NAME Thread will be used.
142251875Speter#
143251875SpeterNLM_THREAD_NAME	=
144251875Speter#
145251875Speter# If this is specified, it will override VERSION value in
146251875Speter# $(APR_WORK)/build/NWGNUenvironment.inc
147251875Speter#
148251875SpeterNLM_VERSION	=
149251875Speter
150251875Speter#
151251875Speter# If this is specified, it will override the default of 64K
152251875Speter#
153251875SpeterNLM_STACK_SIZE	=
154251875Speter
155251875Speter#
156251875Speter# If this is specified it will be used by the link '-entry' directive
157251875Speter#
158251875SpeterNLM_ENTRY_SYM	=
159251875Speter
160251875Speter#
161251875Speter# If this is specified it will be used by the link '-exit' directive
162251875Speter#
163251875SpeterNLM_EXIT_SYM	=
164251875Speter
165251875Speter#
166251875Speter# If this is specified it will be used by the link '-check' directive
167251875Speter#
168251875SpeterNLM_CHECK_SYM	=
169251875Speter
170251875Speter#
171251875Speter# If this is specified it will be used by the link '-flags' directive
172251875Speter#
173251875SpeterNLM_FLAGS	=
174251875Speter
175251875Speter#
176251875Speter# If this is specified it will be linked in with the XDCData option in the def
177251875Speter# file instead of the default of $(APR)/misc/netware/apache.xdc.  XDCData can
178251875Speter# be disabled by setting APACHE_UNIPROC in the environment
179251875Speter#
180251875SpeterXDCDATA		=
181251875Speter
182251875Speter#
183251875Speter# Declare all target files (you must add your files here)
184251875Speter#
185251875Speter
186251875Speter#
187251875Speter# If there is an NLM target, put it here
188251875Speter#
189251875SpeterTARGET_nlm = \
190251875Speter	$(OBJDIR)/aprlib.nlm \
191251875Speter	$(EOLIST)
192251875Speter
193251875Speter#
194251875Speter# If there is an LIB target, put it here
195251875Speter#
196251875SpeterTARGET_lib = \
197251875Speter	$(OBJDIR)/aprlib.lib \
198251875Speter	$(EOLIST)
199251875Speter
200251875Speter#
201251875Speter# These are the OBJ files needed to create the NLM target above.
202251875Speter# Paths must all use the '/' character
203251875Speter#
204251875SpeterFILES_nlm_objs = \
205251875Speter	$(OBJDIR)/libprews.o \
206251875Speter	$(EOLIST)
207251875Speter
208251875Speter#
209251875Speter# These are the LIB files needed to create the NLM target above.
210251875Speter# These will be added as a library command in the link.opt file.
211251875Speter#
212251875SpeterFILES_nlm_libs = \
213251875Speter	$(PRELUDE) \
214251875Speter	$(APRLIB) \
215251875Speter	$(APULIB) \
216251875Speter	$(APULDAPLIB) \
217251875Speter	$(APUXMLLIB) \
218251875Speter	$(EOLIST)
219251875Speter
220251875Speter#
221251875Speter# These are the modules that the above NLM target depends on to load.
222251875Speter# These will be added as a module command in the link.opt file.
223251875Speter#
224251875SpeterFILES_nlm_modules = \
225251875Speter	Libc \
226251875Speter	$(EOLIST)
227251875Speter
228251875Speter# Include the Winsock libraries if Winsock is being used
229251875Speterifndef USE_STDSOCKETS
230251875SpeterFILES_nlm_modules += ws2_32 \
231251875Speter	$(EOLIST)
232251875Speterendif
233251875Speter
234251875Speter#If the LDAP support is defined then add the auto-load modules
235251875Speterifneq "$(LDAPSDK)" ""
236251875SpeterFILES_nlm_modules += \
237251875Speter	lldapsdk \
238251875Speter	lldapssl \
239251875Speter	$(EOLIST)
240251875Speterendif
241251875Speter
242251875Speter#
243251875Speter# If the nlm has a msg file, put it's path here
244251875Speter#
245251875SpeterFILE_nlm_msg =
246251875Speter
247251875Speter#
248251875Speter# If the nlm has a hlp file put it's path here
249251875Speter#
250251875SpeterFILE_nlm_hlp =
251251875Speter
252251875Speter#
253251875Speter# If this is specified, it will override $(NWOS)\copyright.txt.
254251875Speter#
255251875SpeterFILE_nlm_copyright =
256251875Speter
257251875Speter#
258251875Speter# Any additional imports go here
259251875Speter#
260251875SpeterFILES_nlm_Ximports = \
261251875Speter	@libc.imp \
262251875Speter	@netware.imp \
263251875Speter	$(EOLIST)
264251875Speter
265251875Speter# Include the Winsock imports if Winsock is being used
266251875Speterifndef USE_STDSOCKETS
267251875SpeterFILES_nlm_Ximports +=  \
268251875Speter	@ws2nlm.imp \
269251875Speter	WSAStartupRTags \
270251875Speter	WSACleanupRTag \
271251875Speter	$(EOLIST)
272251875Speterendif
273251875Speter
274251875Speter#If the LDAP support is defined then add the imports
275251875Speterifneq "$(LDAPSDK)" ""
276251875SpeterFILES_nlm_Ximports += \
277251875Speter	@lldapsdk.imp \
278251875Speter	@lldapssl.imp \
279251875Speter	$(EOLIST)
280251875Speterendif
281251875Speter
282251875Speter#
283251875Speter# Any symbols exported to here
284251875Speter#
285251875SpeterFILES_nlm_exports = \
286251875Speter	@aprlib.imp \
287251875Speter	$(EOLIST)
288251875Speter
289251875Speter#
290251875Speter# These are the OBJ files needed to create the LIB target above.
291251875Speter# Paths must all use the '/' character
292251875Speter#
293251875SpeterFILES_lib_objs = \
294251875Speter	$(OBJDIR)/apr_atomic.o \
295251875Speter	$(OBJDIR)/apr_cpystrn.o \
296251875Speter	$(OBJDIR)/apr_fnmatch.o \
297251875Speter	$(OBJDIR)/apr_getpass.o \
298251875Speter	$(OBJDIR)/apr_hash.o \
299251875Speter	$(OBJDIR)/apr_pools.o \
300251875Speter	$(OBJDIR)/apr_random.o \
301251875Speter	$(OBJDIR)/apr_snprintf.o \
302251875Speter	$(OBJDIR)/apr_strings.o \
303251875Speter	$(OBJDIR)/apr_strnatcmp.o \
304251875Speter	$(OBJDIR)/apr_strtok.o \
305251875Speter	$(OBJDIR)/apr_tables.o \
306251875Speter	$(OBJDIR)/buffer.o \
307251875Speter	$(OBJDIR)/charset.o \
308251875Speter	$(OBJDIR)/copy.o \
309251875Speter	$(OBJDIR)/common.o \
310251875Speter	$(OBJDIR)/dir.o \
311251875Speter	$(OBJDIR)/dso.o \
312251875Speter	$(OBJDIR)/errorcodes.o \
313251875Speter	$(OBJDIR)/env.o \
314251875Speter	$(OBJDIR)/fileacc.o \
315251875Speter	$(OBJDIR)/filedup.o \
316251875Speter	$(OBJDIR)/filepath.o \
317251875Speter	$(OBJDIR)/filepath_util.o \
318251875Speter	$(OBJDIR)/filestat.o \
319251875Speter	$(OBJDIR)/filesys.o \
320251875Speter	$(OBJDIR)/flock.o \
321251875Speter	$(OBJDIR)/fullrw.o \
322251875Speter	$(OBJDIR)/getopt.o \
323251875Speter	$(OBJDIR)/groupinfo.o \
324251875Speter	$(OBJDIR)/inet_pton.o \
325251875Speter	$(OBJDIR)/inet_ntop.o \
326251875Speter	$(OBJDIR)/mktemp.o \
327251875Speter	$(OBJDIR)/mmap.o \
328251875Speter	$(OBJDIR)/multicast.o \
329251875Speter	$(OBJDIR)/open.o \
330251875Speter	$(OBJDIR)/pipe.o \
331251875Speter	$(OBJDIR)/otherchild.o \
332251875Speter	$(OBJDIR)/proc.o \
333251875Speter	$(OBJDIR)/procsup.o \
334251875Speter	$(OBJDIR)/proc_mutex.o \
335251875Speter	$(OBJDIR)/rand.o \
336251875Speter	$(OBJDIR)/readwrite.o \
337251875Speter	$(OBJDIR)/seek.o \
338251875Speter	$(OBJDIR)/pollcb.o \
339251875Speter	$(OBJDIR)/pollset.o \
340251875Speter	$(OBJDIR)/select.o \
341251875Speter	$(OBJDIR)/sendrecv.o \
342251875Speter	$(OBJDIR)/sha2.o \
343251875Speter	$(OBJDIR)/sha2_glue.o \
344251875Speter	$(OBJDIR)/shm.o \
345251875Speter	$(OBJDIR)/signals.o \
346251875Speter	$(OBJDIR)/sockaddr.o \
347251875Speter	$(OBJDIR)/socket_util.o \
348251875Speter	$(OBJDIR)/sockets.o \
349251875Speter	$(OBJDIR)/sockopt.o \
350251875Speter	$(OBJDIR)/start.o \
351251875Speter	$(OBJDIR)/tempdir.o \
352251875Speter	$(OBJDIR)/thread.o \
353251875Speter	$(OBJDIR)/thread_cond.o \
354251875Speter	$(OBJDIR)/thread_mutex.o \
355251875Speter	$(OBJDIR)/thread_rwlock.o \
356251875Speter	$(OBJDIR)/threadpriv.o \
357251875Speter	$(OBJDIR)/time.o \
358251875Speter	$(OBJDIR)/timestr.o \
359251875Speter	$(OBJDIR)/userinfo.o \
360251875Speter	$(OBJDIR)/version.o \
361251875Speter	$(OBJDIR)/waitio.o \
362251875Speter	$(EOLIST)
363251875Speter
364251875Speter
365251875Speter#
366251875Speter# implement targets and dependancies (leave this section alone)
367251875Speter#
368251875Speter
369251875Speterlibs :: $(OBJDIR) $(TARGET_lib)
370251875Speter
371251875Speternlms :: libs $(TARGET_nlm)
372251875Speter
373251875Speter#
374251875Speter# Updated this target to create necessary directories and copy files to the
375251875Speter# correct place.  (See $(APR_WORK)/build/NWGNUhead.inc for examples)
376251875Speter#
377251875Speterinstall :: nlms $(INSTDIRS) FORCE
378251875Speter	$(call COPY,$(APR)/$(TARGET_nlm),$(INSTALLBASE)/)
379251875Speterifndef DEST
380251875Speter	-$(call COPY,$(APR)/LICENSE,$(INSTALLBASE)/)
381251875Speter	-$(call COPY,$(APR)/STATUS,$(INSTALLBASE)/STATUS.apr)
382251875Speter	-$(call COPY,$(APR)/CHANGES,$(INSTALLBASE)/CHANGES.apr)
383251875Speter	-$(call COPY,$(APU)/STATUS,$(INSTALLBASE)/STATUS.apu)
384251875Speter	-$(call COPY,$(APU)/CHANGES,$(INSTALLBASE)/CHANGES.apu)
385251875Speter	-$(call COPYR,$(APR)/docs,$(INSTALLBASE)/docs/)
386251875Speterendif
387251875Speter
388251875Speterifndef DEST
389251875Speterinstalldev :: $(INSTDEVDIRS) FORCE
390251875Speter	$(call COPY,$(APR)/include/*.h,$(INSTALLBASE)/include/)
391251875Speter	$(call COPY,$(APR)/*.imp,$(INSTALLBASE)/lib/)
392251875Speter	$(call COPY,$(APR)/misc/netware/*.xdc,$(INSTALLBASE)/lib/)
393251875Speter	$(call COPY,$(APR)/$(TARGET_nlm),$(INSTALLBASE)/bin/)
394251875Speter	$(call COPY,$(APRLIB),$(INSTALLBASE)/lib/)
395251875Speter	$(call COPY,$(APULIB),$(INSTALLBASE)/lib/)
396251875Speter	$(call COPY,$(APULDAPLIB),$(INSTALLBASE)/lib/)
397251875Speter	$(call COPY,$(APUXMLLIB),$(INSTALLBASE)/lib/)
398251875Speter
399251875Speter$(INSTDEVDIRS) ::
400251875Speter	$(call MKDIR,$@)
401251875Speterendif
402251875Speter
403251875Speter#
404251875Speter# Any specialized rules here
405251875Speter#
406251875Speter
407251875Spetervpath %.c atomic/netware:strings:tables:passwd:lib:time/unix
408251875Spetervpath %.c file_io/unix:locks/netware:misc/netware:misc/unix:threadproc/netware
409251875Spetervpath %.c poll/unix:shmem/unix:support/unix:random/unix
410251875Spetervpath %.c dso/netware:memory/unix:mmap/unix:user/netware
411251875Speter
412251875Speter# Use the win32 network_io if Winsock is being used
413251875Speterifndef USE_STDSOCKETS
414251875Spetervpath %.c network_io/win32
415251875Speterendif
416251875Spetervpath %.c network_io/unix
417251875Speter
418251875Speter$(OBJDIR)/%.o: file_io/netware/%.c $(OBJDIR)/$(NLM_NAME)_cc.opt
419251875Speter#	@echo Compiling $<
420251875Speter	@echo $(DL)CC   $<$(DL)
421251875Speter	$(CC) $< -cwd source -o=$@ @$(OBJDIR)/$(NLM_NAME)_cc.opt
422251875Speter
423251875Speter#
424251875Speter# Include the 'tail' makefile that has targets that depend on variables defined
425251875Speter# in this makefile
426251875Speter#
427251875Speter
428251875Speterinclude $(APRBUILD)/NWGNUtail.inc
429251875Speter
430251875Speter
431