NWGNUmakefile revision 289166
1118611Snjl#
2118611Snjl# Define our macros with defaults if we dont got them already.
3245582Sjkim#
4118611Snjlifndef APR_WORK
5118611Snjlexport APR_WORK = $(CURDIR)
6118611Snjlendif
7217365Sjkimifneq "$(wildcard $(APR_WORK)/include/apr_version.h)" "$(APR_WORK)/include/apr_version.h"
8245582Sjkim$(error APR_WORK does not point to a valid APR source tree) 
9118611Snjlendif
10118611Snjlifndef APU_WORK
11217365Sjkimexport APU_WORK = $(CURDIR)/../apr-util
12217365Sjkimendif
13217365Sjkimifneq "$(wildcard $(APU_WORK)/include/apu_version.h)" "$(APU_WORK)/include/apu_version.h"
14217365Sjkim$(error APU_WORK does not point to a valid APU source tree) 
15217365Sjkimendif
16217365Sjkim
17217365Sjkim#
18217365Sjkim# Declare the sub-directories to be built here
19217365Sjkim#
20217365Sjkim
21217365SjkimSUBDIRS = \
22217365Sjkim		build \
23217365Sjkim		$(APU_WORK) \
24217365Sjkim		$(EOLIST)
25118611Snjl
26217365Sjkimifeq "$(TEST)" "1"
27217365SjkimSUBDIRS += \
28217365Sjkim		test \
29118611Snjl		$(APU_WORK)/test \
30217365Sjkim		$(EOLIST)
31217365Sjkimendif
32217365Sjkim
33217365Sjkim#
34217365Sjkim# Get the 'head' of the build environment.  This includes default targets and
35217365Sjkim# paths to tools
36217365Sjkim#
37217365Sjkim
38217365Sjkiminclude $(APR_WORK)/build/NWGNUhead.inc
39217365Sjkim
40217365Sjkim#
41217365Sjkim# build this level's files
42217365Sjkim
43118611Snjl#
44151937Sjkim# Make sure all needed macro's are defined
45193529Sjkim#
46118611Snjl
47118611Snjl#
48118611Snjl# These directories will be at the beginning of the include list, followed by
49118611Snjl# INCDIRS
50151937Sjkim#
51118611SnjlXINCDIRS	+= \
52233250Sjkim			$(APR)/include \
53197104Sjkim			$(APR)/include/private \
54197104Sjkim			$(APR)/include/arch/NetWare \
55197104Sjkim			$(APR)/include/arch/unix \
56151937Sjkim			$(APR)/memory/unix \
57197104Sjkim			$(APR)/random/unix \
58151937Sjkim			$(APU)/include \
59151937Sjkim			$(APU)/xml \
60151937Sjkim			$(LDAPSDK)/inc \
61151937Sjkim			$(EOLIST)
62151937Sjkim
63151937Sjkim#
64151937Sjkim# These flags will come after CFLAGS
65118611Snjl#
66118611SnjlXCFLAGS		+= \
67118611Snjl			$(EOLIST)
68118611Snjl
69118611Snjl#
70118611Snjl# These defines will come after DEFINES
71118611Snjl#
72118611SnjlXDEFINES	+= \
73118611Snjl			$(EOLIST)
74118611Snjl
75118611Snjl#
76118611Snjl# These flags will be added to the link.opt file
77118611Snjl#
78118611SnjlXLFLAGS		+= \
79234623Sjkim			$(EOLIST)
80118611Snjl
81118611Snjl#
82234623Sjkim# These values will be appended to the correct variables based on the value of
83234623Sjkim# RELEASE
84234623Sjkim#
85234623Sjkimifeq "$(RELEASE)" "debug"
86234623SjkimXINCDIRS	+= \
87118611Snjl			$(EOLIST)
88118611Snjl
89118611SnjlXCFLAGS		+= \
90118611Snjl			$(EOLIST)
91118611Snjl
92234623SjkimXDEFINES	+= \
93234623Sjkim			$(EOLIST)
94234623Sjkim
95234623SjkimXLFLAGS		+= \
96234623Sjkim			$(EOLIST)
97234623Sjkimendif
98234623Sjkim
99234623Sjkimifeq "$(RELEASE)" "noopt"
100234623SjkimXINCDIRS	+= \
101234623Sjkim			$(EOLIST)
102234623Sjkim
103234623SjkimXCFLAGS		+= \
104234623Sjkim			$(EOLIST)
105234623Sjkim
106234623SjkimXDEFINES	+= \
107234623Sjkim			$(EOLIST)
108234623Sjkim
109234623SjkimXLFLAGS		+= \
110234623Sjkim			$(EOLIST)
111234623Sjkimendif
112234623Sjkim
113234623Sjkimifeq "$(RELEASE)" "release"
114234623SjkimXINCDIRS	+= \
115234623Sjkim			$(EOLIST)
116197104Sjkim
117197104SjkimXCFLAGS		+= \
118197104Sjkim			$(EOLIST)
119197104Sjkim
120197104SjkimXDEFINES	+= \
121197104Sjkim			$(EOLIST)
122197104Sjkim
123197104SjkimXLFLAGS		+= \
124197104Sjkim			$(EOLIST)
125197104Sjkimendif
126197104Sjkim
127197104Sjkim#
128197104Sjkim# These are used by the link target if an NLM is being generated
129197104Sjkim# This is used by the link 'name' directive to name the nlm.  If left blank
130197104Sjkim# TARGET_nlm (see below) will be used.
131197104Sjkim#
132197104SjkimNLM_NAME	= aprlib
133197104Sjkim
134197104Sjkim#
135197104Sjkim# This is used by the link '-desc ' directive.
136197104Sjkim# If left blank, NLM_NAME will be used.
137197104Sjkim#
138197104SjkimNLM_DESCRIPTION	= Apache Portability Runtime Library $(VERSION_STR) $(VERSION_SKT)
139197104Sjkim
140197104Sjkim#
141197104Sjkim# This is used by the '-threadname' directive.  If left blank,
142197104Sjkim# NLM_NAME Thread will be used.
143197104Sjkim#
144197104SjkimNLM_THREAD_NAME	=
145197104Sjkim#
146197104Sjkim# If this is specified, it will override VERSION value in
147197104Sjkim# $(APR_WORK)/build/NWGNUenvironment.inc
148197104Sjkim#
149197104SjkimNLM_VERSION	=
150197104Sjkim
151197104Sjkim#
152197104Sjkim# If this is specified, it will override the default of 64K
153197104Sjkim#
154197104SjkimNLM_STACK_SIZE	=
155197104Sjkim
156197104Sjkim#
157197104Sjkim# If this is specified it will be used by the link '-entry' directive
158197104Sjkim#
159197104SjkimNLM_ENTRY_SYM	=
160197104Sjkim
161197104Sjkim#
162197104Sjkim# If this is specified it will be used by the link '-exit' directive
163197104Sjkim#
164197104SjkimNLM_EXIT_SYM	=
165197104Sjkim
166197104Sjkim#
167197104Sjkim# If this is specified it will be used by the link '-check' directive
168197104Sjkim#
169197104SjkimNLM_CHECK_SYM	=
170197104Sjkim
171197104Sjkim#
172197104Sjkim# If this is specified it will be used by the link '-flags' directive
173197104Sjkim#
174197104SjkimNLM_FLAGS	=
175197104Sjkim
176197104Sjkim#
177197104Sjkim# If this is specified it will be linked in with the XDCData option in the def
178197104Sjkim# file instead of the default of $(APR)/misc/netware/apache.xdc.  XDCData can
179197104Sjkim# be disabled by setting APACHE_UNIPROC in the environment
180197104Sjkim#
181197104SjkimXDCDATA		=
182197104Sjkim
183235945Sjkim#
184235945Sjkim# Declare all target files (you must add your files here)
185235945Sjkim#
186235945Sjkim
187235945Sjkim#
188235945Sjkim# If there is an NLM target, put it here
189235945Sjkim#
190235945SjkimTARGET_nlm = \
191235945Sjkim	$(OBJDIR)/aprlib.nlm \
192235945Sjkim	$(EOLIST)
193235945Sjkim
194235945Sjkim#
195235945Sjkim# If there is an LIB target, put it here
196235945Sjkim#
197235945SjkimTARGET_lib = \
198235945Sjkim	$(OBJDIR)/aprlib.lib \
199235945Sjkim	$(EOLIST)
200235945Sjkim
201235945Sjkim#
202235945Sjkim# These are the OBJ files needed to create the NLM target above.
203235945Sjkim# Paths must all use the '/' character
204235945Sjkim#
205235945SjkimFILES_nlm_objs = \
206235945Sjkim	$(OBJDIR)/libprews.o \
207235945Sjkim	$(EOLIST)
208235945Sjkim
209235945Sjkim#
210235945Sjkim# These are the LIB files needed to create the NLM target above.
211235945Sjkim# These will be added as a library command in the link.opt file.
212235945Sjkim#
213235945SjkimFILES_nlm_libs = \
214235945Sjkim	$(PRELUDE) \
215235945Sjkim	$(APRLIB) \
216235945Sjkim	$(APULIB) \
217235945Sjkim	$(APULDAPLIB) \
218235945Sjkim	$(APUXMLLIB) \
219235945Sjkim	$(EOLIST)
220235945Sjkim
221235945Sjkim#
222235945Sjkim# These are the modules that the above NLM target depends on to load.
223235945Sjkim# These will be added as a module command in the link.opt file.
224235945Sjkim#
225235945SjkimFILES_nlm_modules = \
226235945Sjkim	Libc \
227235945Sjkim	$(EOLIST)
228235945Sjkim
229235945Sjkim# Include the Winsock libraries if Winsock is being used
230235945Sjkimifndef USE_STDSOCKETS
231235945SjkimFILES_nlm_modules += ws2_32 \
232235945Sjkim	$(EOLIST)
233235945Sjkimendif
234235945Sjkim
235235945Sjkim#If the LDAP support is defined then add the auto-load modules
236235945Sjkimifneq "$(LDAPSDK)" ""
237235945SjkimFILES_nlm_modules += \
238235945Sjkim	lldapsdk \
239235945Sjkim	lldapssl \
240235945Sjkim	$(EOLIST)
241235945Sjkimendif
242235945Sjkim
243235945Sjkim#
244235945Sjkim# If the nlm has a msg file, put it's path here
245235945Sjkim#
246235945SjkimFILE_nlm_msg =
247235945Sjkim
248235945Sjkim#
249235945Sjkim# If the nlm has a hlp file put it's path here
250235945Sjkim#
251235945SjkimFILE_nlm_hlp =
252235945Sjkim
253235945Sjkim#
254235945Sjkim# If this is specified, it will override $(NWOS)\copyright.txt.
255235945Sjkim#
256235945SjkimFILE_nlm_copyright =
257235945Sjkim
258235945Sjkim#
259235945Sjkim# Any additional imports go here
260235945Sjkim#
261235945SjkimFILES_nlm_Ximports = \
262235945Sjkim	@libc.imp \
263235945Sjkim	@netware.imp \
264235945Sjkim	$(EOLIST)
265235945Sjkim
266235945Sjkim# Include the Winsock imports if Winsock is being used
267235945Sjkimifndef USE_STDSOCKETS
268235945SjkimFILES_nlm_Ximports +=  \
269235945Sjkim	@ws2nlm.imp \
270235945Sjkim	WSAStartupRTags \
271235945Sjkim	WSACleanupRTag \
272235945Sjkim	$(EOLIST)
273235945Sjkimendif
274235945Sjkim
275235945Sjkim#If the LDAP support is defined then add the imports
276235945Sjkimifneq "$(LDAPSDK)" ""
277235945SjkimFILES_nlm_Ximports += \
278235945Sjkim	@lldapsdk.imp \
279235945Sjkim	@lldapssl.imp \
280235945Sjkim	$(EOLIST)
281235945Sjkimendif
282235945Sjkim
283235945Sjkim#
284197104Sjkim# Any symbols exported to here
285197104Sjkim#
286197104SjkimFILES_nlm_exports = \
287197104Sjkim	@aprlib.imp \
288197104Sjkim	$(EOLIST)
289197104Sjkim
290197104Sjkim#
291197104Sjkim# These are the OBJ files needed to create the LIB target above.
292197104Sjkim# Paths must all use the '/' character
293197104Sjkim#
294197104SjkimFILES_lib_objs = \
295197104Sjkim	$(OBJDIR)/apr_atomic.o \
296233250Sjkim	$(OBJDIR)/apr_cpystrn.o \
297197104Sjkim	$(OBJDIR)/apr_escape.o \
298197104Sjkim	$(OBJDIR)/apr_fnmatch.o \
299197104Sjkim	$(OBJDIR)/apr_getpass.o \
300197104Sjkim	$(OBJDIR)/apr_hash.o \
301197104Sjkim	$(OBJDIR)/apr_pools.o \
302197104Sjkim	$(OBJDIR)/apr_random.o \
303197104Sjkim	$(OBJDIR)/apr_skiplist.o \
304197104Sjkim	$(OBJDIR)/apr_snprintf.o \
305197104Sjkim	$(OBJDIR)/apr_strings.o \
306197104Sjkim	$(OBJDIR)/apr_strnatcmp.o \
307235945Sjkim	$(OBJDIR)/apr_strtok.o \
308197104Sjkim	$(OBJDIR)/apr_tables.o \
309235945Sjkim	$(OBJDIR)/buffer.o \
310197104Sjkim	$(OBJDIR)/charset.o \
311197104Sjkim	$(OBJDIR)/copy.o \
312197104Sjkim	$(OBJDIR)/common.o \
313197104Sjkim	$(OBJDIR)/dir.o \
314197104Sjkim	$(OBJDIR)/dso.o \
315243347Sjkim	$(OBJDIR)/errorcodes.o \
316197104Sjkim	$(OBJDIR)/env.o \
317243347Sjkim	$(OBJDIR)/fileacc.o \
318243347Sjkim	$(OBJDIR)/filedup.o \
319243347Sjkim	$(OBJDIR)/filepath.o \
320197104Sjkim	$(OBJDIR)/filepath_util.o \
321197104Sjkim	$(OBJDIR)/filestat.o \
322243347Sjkim	$(OBJDIR)/filesys.o \
323243347Sjkim	$(OBJDIR)/flock.o \
324243347Sjkim	$(OBJDIR)/fullrw.o \
325243347Sjkim	$(OBJDIR)/getopt.o \
326197104Sjkim	$(OBJDIR)/groupinfo.o \
327197104Sjkim	$(OBJDIR)/inet_pton.o \
328197104Sjkim	$(OBJDIR)/inet_ntop.o \
329197104Sjkim	$(OBJDIR)/mktemp.o \
330197104Sjkim	$(OBJDIR)/mmap.o \
331118611Snjl	$(OBJDIR)/multicast.o \
332118611Snjl	$(OBJDIR)/open.o \
333118611Snjl	$(OBJDIR)/pipe.o \
334118611Snjl	$(OBJDIR)/otherchild.o \
335118611Snjl	$(OBJDIR)/proc.o \
336118611Snjl	$(OBJDIR)/procsup.o \
337118611Snjl	$(OBJDIR)/proc_mutex.o \
338118611Snjl	$(OBJDIR)/rand.o \
339118611Snjl	$(OBJDIR)/readwrite.o \
340118611Snjl	$(OBJDIR)/seek.o \
341118611Snjl	$(OBJDIR)/pollcb.o \
342118611Snjl	$(OBJDIR)/pollset.o \
343118611Snjl	$(OBJDIR)/select.o \
344118611Snjl	$(OBJDIR)/sendrecv.o \
345197104Sjkim	$(OBJDIR)/sha2.o \
346197104Sjkim	$(OBJDIR)/sha2_glue.o \
347118611Snjl	$(OBJDIR)/shm.o \
348118611Snjl	$(OBJDIR)/signals.o \
349118611Snjl	$(OBJDIR)/sockaddr.o \
350118611Snjl	$(OBJDIR)/socket_util.o \
351118611Snjl	$(OBJDIR)/sockets.o \
352118611Snjl	$(OBJDIR)/sockopt.o \
353118611Snjl	$(OBJDIR)/start.o \
354118611Snjl	$(OBJDIR)/tempdir.o \
355118611Snjl	$(OBJDIR)/thread.o \
356118611Snjl	$(OBJDIR)/thread_cond.o \
357118611Snjl	$(OBJDIR)/thread_mutex.o \
358118611Snjl	$(OBJDIR)/thread_rwlock.o \
359118611Snjl	$(OBJDIR)/threadpriv.o \
360118611Snjl	$(OBJDIR)/time.o \
361118611Snjl	$(OBJDIR)/timestr.o \
362118611Snjl	$(OBJDIR)/userinfo.o \
363118611Snjl	$(OBJDIR)/version.o \
364118611Snjl	$(OBJDIR)/waitio.o \
365234623Sjkim	$(EOLIST)
366118611Snjl
367118611Snjl
368118611Snjl#
369118611Snjl# implement targets and dependancies (leave this section alone)
370197104Sjkim#
371197104Sjkim
372197104Sjkimlibs :: $(OBJDIR) $(TARGET_lib)
373197104Sjkim
374197104Sjkimnlms :: libs $(TARGET_nlm)
375197104Sjkim
376197104Sjkim#
377118611Snjl# Updated this target to create necessary directories and copy files to the
378197104Sjkim# correct place.  (See $(APR_WORK)/build/NWGNUhead.inc for examples)
379197104Sjkim#
380197104Sjkiminstall :: nlms $(INSTDIRS) FORCE
381197104Sjkim	$(call COPY,$(APR)/$(TARGET_nlm),$(INSTALLBASE)/)
382197104Sjkimifndef DEST
383118611Snjl	-$(call COPY,$(APR)/LICENSE,$(INSTALLBASE)/)
384118611Snjl	-$(call COPY,$(APR)/STATUS,$(INSTALLBASE)/STATUS.apr)
385118611Snjl	-$(call COPY,$(APR)/CHANGES,$(INSTALLBASE)/CHANGES.apr)
386197104Sjkim	-$(call COPY,$(APU)/STATUS,$(INSTALLBASE)/STATUS.apu)
387197104Sjkim	-$(call COPY,$(APU)/CHANGES,$(INSTALLBASE)/CHANGES.apu)
388197104Sjkim	-$(call COPYR,$(APR)/docs,$(INSTALLBASE)/docs/)
389197104Sjkimendif
390197104Sjkim
391197104Sjkimifndef DEST
392197104Sjkiminstalldev :: $(INSTDEVDIRS) FORCE
393197104Sjkim	$(call COPY,$(APR)/include/*.h,$(INSTALLBASE)/include/)
394197104Sjkim	$(call COPY,$(APR)/*.imp,$(INSTALLBASE)/lib/)
395197104Sjkim	$(call COPY,$(APR)/misc/netware/*.xdc,$(INSTALLBASE)/lib/)
396197104Sjkim	$(call COPY,$(APR)/$(TARGET_nlm),$(INSTALLBASE)/bin/)
397197104Sjkim	$(call COPY,$(APRLIB),$(INSTALLBASE)/lib/)
398197104Sjkim	$(call COPY,$(APULIB),$(INSTALLBASE)/lib/)
399118611Snjl	$(call COPY,$(APULDAPLIB),$(INSTALLBASE)/lib/)
400197104Sjkim	$(call COPY,$(APUXMLLIB),$(INSTALLBASE)/lib/)
401197104Sjkim
402197104Sjkim$(INSTDEVDIRS) ::
403197104Sjkim	$(call MKDIR,$@)
404197104Sjkimendif
405197104Sjkim
406197104Sjkim#
407197104Sjkim# Any specialized rules here
408197104Sjkim#
409197104Sjkim
410197104Sjkimvpath %.c atomic/netware:strings:tables:passwd:lib:time/unix
411197104Sjkimvpath %.c file_io/unix:locks/netware:misc/netware:misc/unix:threadproc/netware
412197104Sjkimvpath %.c poll/unix:shmem/unix:support/unix:random/unix
413197104Sjkimvpath %.c dso/netware:memory/unix:mmap/unix:user/netware:encoding
414197104Sjkim
415197104Sjkim# Use the win32 network_io if Winsock is being used
416197104Sjkimifndef USE_STDSOCKETS
417197104Sjkimvpath %.c network_io/win32
418197104Sjkimendif
419197104Sjkimvpath %.c network_io/unix
420197104Sjkim
421118611Snjl$(OBJDIR)/%.o: file_io/netware/%.c $(OBJDIR)/$(NLM_NAME)_cc.opt
422118611Snjl#	@echo Compiling $<
423118611Snjl	@echo $(DL)CC   $<$(DL)
424118611Snjl	$(CC) $< -cwd source -o=$@ @$(OBJDIR)/$(NLM_NAME)_cc.opt
425118611Snjl
426118611Snjl#
427118611Snjl# Include the 'tail' makefile that has targets that depend on variables defined
428118611Snjl# in this makefile
429118611Snjl#
430118611Snjl
431118611Snjlinclude $(APRBUILD)/NWGNUtail.inc
432118611Snjl
433118611Snjl
434118611Snjl