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