Makefile.in (9134B)
1 # 2 # This Source Code Form is subject to the terms of the Mozilla Public 3 # License, v. 2.0. If a copy of the MPL was not distributed with this 4 # file, You can obtain one at http://mozilla.org/MPL/2.0/. 5 6 7 #! gmake 8 9 MOD_DEPTH = ../.. 10 topsrcdir = @top_srcdir@ 11 srcdir = @srcdir@ 12 VPATH = @srcdir@ 13 14 include $(MOD_DEPTH)/config/autoconf.mk 15 16 include $(topsrcdir)/config/config.mk 17 18 DIRS = dll 19 20 CSRCS = \ 21 abstract.c \ 22 accept.c \ 23 acceptread.c \ 24 acceptreademu.c \ 25 addrstr.c \ 26 affinity.c \ 27 alarm.c \ 28 anonfm.c \ 29 append.c \ 30 atomic.c \ 31 attach.c \ 32 bigfile.c \ 33 bigfile2.c \ 34 bigfile3.c \ 35 cleanup.c \ 36 cltsrv.c \ 37 concur.c \ 38 cvar.c \ 39 cvar2.c \ 40 dceemu.c \ 41 dlltest.c \ 42 dtoa.c \ 43 env.c \ 44 errcodes.c \ 45 errset.c \ 46 exit.c \ 47 fdcach.c \ 48 fileio.c \ 49 foreign.c \ 50 forktest.c \ 51 formattm.c \ 52 fsync.c \ 53 getai.c \ 54 gethost.c \ 55 getproto.c \ 56 i2l.c \ 57 initclk.c \ 58 inrval.c \ 59 instrumt.c \ 60 intrio.c \ 61 intrupt.c \ 62 io_timeout.c \ 63 ioconthr.c \ 64 ipv6.c \ 65 join.c \ 66 joinkk.c \ 67 joinku.c \ 68 joinuk.c \ 69 joinuu.c \ 70 layer.c \ 71 lazyinit.c \ 72 libfilename.c \ 73 lltest.c \ 74 lock.c \ 75 lockfile.c \ 76 logfile.c \ 77 logger.c \ 78 makedir.c \ 79 mbcs.c \ 80 multiacc.c \ 81 multiwait.c \ 82 many_cv.c \ 83 monref.c \ 84 nameshm1.c \ 85 nbconn.c \ 86 nblayer.c \ 87 nonblock.c \ 88 ntioto.c \ 89 ntoh.c \ 90 obsints.c \ 91 op_2long.c \ 92 op_excl.c \ 93 op_filnf.c \ 94 op_filok.c \ 95 op_noacc.c \ 96 op_nofil.c \ 97 openfile.c \ 98 parent.c \ 99 parsetm.c \ 100 peek.c \ 101 perf.c \ 102 pipeping.c \ 103 pipeping2.c \ 104 pipepong.c \ 105 pipepong2.c \ 106 pipeself.c \ 107 poll_er.c \ 108 poll_nm.c \ 109 poll_to.c \ 110 pollable.c \ 111 prfdbl.c \ 112 prftest.c \ 113 prftest1.c \ 114 prftest2.c \ 115 prfz.c \ 116 primblok.c \ 117 priotest.c \ 118 provider.c \ 119 prpoll.c \ 120 prpollml.c \ 121 pushtop.c \ 122 ranfile.c \ 123 randseed.c \ 124 reinit.c \ 125 rmdir.c \ 126 rwlockrank.c \ 127 rwlocktest.c \ 128 sel_spd.c \ 129 selct_er.c \ 130 selct_nm.c \ 131 selct_to.c \ 132 select2.c \ 133 selintr.c \ 134 sem.c \ 135 sema.c \ 136 semaerr.c \ 137 semaerr1.c \ 138 semaping.c \ 139 semapong.c \ 140 sendzlf.c \ 141 server_test.c \ 142 servr_kk.c \ 143 servr_ku.c \ 144 servr_uk.c \ 145 servr_uu.c \ 146 short_thread.c \ 147 sigpipe.c \ 148 socket.c \ 149 sockopt.c \ 150 sockping.c \ 151 sockpong.c \ 152 sprintf.c \ 153 stack.c \ 154 stat.c \ 155 stdio.c \ 156 str2addr.c \ 157 strod.c \ 158 suspend.c \ 159 switch.c \ 160 system.c \ 161 testbit.c \ 162 testfile.c \ 163 thrpool_server.c \ 164 thrpool_client.c \ 165 threads.c \ 166 thruput.c \ 167 timemac.c \ 168 timetest.c \ 169 tmoacc.c \ 170 tmocon.c \ 171 tpd.c \ 172 vercheck.c \ 173 version.c \ 174 udpsrv.c \ 175 writev.c \ 176 xnotify.c \ 177 y2k.c \ 178 y2ktmo.c \ 179 zerolen.c \ 180 $(NULL) 181 182 ifeq ($(OS_ARCH),WINCE) 183 CFLAGS += -FImozce_shunt.h -Zi -UDEBUG -DNDEBUG 184 LDOPTS += -link $(DIST)/lib/mozce_shunt.lib ws2.lib -DEBUG -DEBUGTYPE:CV -INCREMENTAL:NO -PDB:$(@:.exe=.pdb) 185 endif 186 187 ifeq (,$(filter-out WINCE WINNT,$(OS_ARCH))) 188 PROG_SUFFIX = .exe 189 DLL_SUFFIX = .dll 190 else 191 PROG_SUFFIX = 192 DLL_SUFFIX = 193 endif 194 195 PROGS = $(addprefix $(OBJDIR)/, $(CSRCS:.c=$(PROG_SUFFIX))) 196 197 TARGETS = $(PROGS) 198 199 INCLUDES = -I$(dist_includedir) -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private 200 201 ifeq ($(OS_ARCH), WINNT) 202 ifdef NS_USE_GCC 203 EXTRA_LIBS += -lws2_32 204 else 205 EXTRA_LIBS += ws2_32.lib 206 LDOPTS = -NOLOGO -DEBUG -DEBUGTYPE:CV -INCREMENTAL:NO 207 CFLAGS += -Fd$(@:.$(OBJ_SUFFIX)=.pdb) 208 ifdef PROFILE 209 LDOPTS += -PROFILE -MAP 210 endif # profile 211 endif # NS_USE_GCC 212 endif 213 214 ifneq ($(OS_ARCH), WINNT) 215 # Use an absolute pathname as the runtime library path (for the -R 216 # or -rpath linker option or the LD_RUN_PATH environment variable). 217 ifeq (,$(patsubst /%,,$(DIST))) 218 # $(DIST) is already an absolute pathname. 219 ABSOLUTE_LIB_DIR = $(dist_libdir) 220 else 221 # $(DIST) is a relative pathname: prepend the current directory. 222 PWD = $(shell pwd) 223 ABSOLUTE_LIB_DIR = $(PWD)/$(dist_libdir) 224 endif 225 endif 226 227 ifeq ($(OS_ARCH), HP-UX) 228 LDOPTS += -z -Wl,+s,+b,$(ABSOLUTE_LIB_DIR) 229 ifeq ($(USE_64),1) 230 LDOPTS += +DD64 231 endif 232 ifeq ($(USE_PTHREADS),1) 233 EXTRA_LIBS = $(LIBPTHREAD) 234 endif 235 endif 236 237 # AIX 238 ifeq ($(OS_ARCH),AIX) 239 LDOPTS += -blibpath:$(ABSOLUTE_LIB_DIR):/usr/lib:/lib 240 ifneq ($(OS_ARCH)$(OS_RELEASE),AIX4.1) 241 LDOPTS += -brtl 242 EXTRA_LIBS = -ldl 243 endif 244 endif 245 246 # Solaris 247 ifeq ($(OS_ARCH), SunOS) 248 ifdef NS_USE_GCC 249 LDOPTS += -Xlinker -R -Xlinker $(ABSOLUTE_LIB_DIR) 250 else 251 ifeq ($(USE_CPLUS), 1) 252 CC = CC 253 endif 254 LDOPTS += -R $(ABSOLUTE_LIB_DIR) 255 endif 256 257 ifdef USE_PTHREADS 258 EXTRA_LIBS = -lpthread 259 endif 260 endif # SunOS 261 262 ifeq (,$(filter-out Linux GNU GNU_%,$(OS_ARCH))) 263 LDOPTS += -Xlinker -rpath $(ABSOLUTE_LIB_DIR) 264 ifeq ($(USE_PTHREADS),1) 265 EXTRA_LIBS = -lpthread 266 endif 267 endif 268 269 ifeq ($(OS_ARCH), SCOOS) 270 # SCO Unix needs to link against -lsocket again even though we 271 # already linked with these system libraries when we built libnspr.so. 272 EXTRA_LIBS = -lsocket 273 # This hardcodes in the executable programs the directory to find 274 # libnspr.so etc. at program startup. Equivalent to the -R or -rpath 275 # option for ld on other platforms. 276 export LD_RUN_PATH = $(ABSOLUTE_LIB_DIR) 277 endif 278 279 ifeq ($(OS_ARCH),OpenUNIX) 280 export LD_RUN_PATH = $(ABSOLUTE_LIB_DIR) 281 ifeq ($(USE_PTHREADS),1) 282 LDOPTS += -pthread 283 endif 284 endif 285 286 ifeq ($(OS_ARCH),FreeBSD) 287 ifeq ($(USE_PTHREADS),1) 288 LDOPTS += -pthread 289 endif 290 LDOPTS += -Xlinker -R $(ABSOLUTE_LIB_DIR) 291 endif 292 293 ifeq ($(OS_ARCH),OpenBSD) 294 ifeq ($(USE_PTHREADS),1) 295 LDOPTS += -pthread 296 endif 297 endif 298 299 ifeq ($(OS_ARCH),BSD_OS) 300 ifneq ($(OS_RELEASE),1.1) 301 EXTRA_LIBS = -ldl 302 endif 303 endif 304 305 ifeq ($(OS_ARCH),RISCOS) 306 EXTRA_LIBS = -ldl 307 endif 308 309 ifeq ($(USE_PTHREADS),1) 310 LIBPTHREAD = -lpthread 311 ifeq ($(OS_ARCH),AIX) 312 LIBPTHREAD = -lpthreads 313 endif 314 ifeq (,$(filter-out FreeBSD OpenBSD BSD_OS QNX Darwin OpenUNIX,$(OS_ARCH))) 315 LIBPTHREAD = 316 endif 317 endif 318 319 ifeq ($(OS_TARGET),Android) 320 LIBPTHREAD = 321 XCFLAGS = $(OS_CFLAGS) 322 endif 323 324 ##################################################### 325 # 326 # The rules 327 # 328 ##################################################### 329 330 include $(topsrcdir)/config/rules.mk 331 332 AIX_PRE_4_2 = 0 333 ifeq ($(OS_ARCH),AIX) 334 ifeq ($(OS_RELEASE),4.1) 335 ifneq ($(USE_PTHREADS), 1) 336 #AIX_PRE_4_2 = 1 337 endif 338 endif 339 endif 340 341 ifeq ($(AIX_PRE_4_2),1) 342 343 # AIX releases prior to 4.2 need a special two-step linking hack 344 # in order to both override the system select() and be able to 345 # get at the original system select(). 346 # 347 # We use a pattern rule in ns/nspr20/config/rules.mk to generate 348 # the .$(OBJ_SUFFIX) file from the .c source file, then do the 349 # two-step linking hack below. 350 351 $(OBJDIR)/%: $(OBJDIR)/%.$(OBJ_SUFFIX) 352 @$(MAKE_OBJDIR) 353 rm -f $@ $(AIX_TMP) 354 $(CC) $(AIX_LINK_OPTS) -o $(AIX_TMP) $< $(dist_libdir)/libnspr$(MOD_MAJOR_VERSION).a 355 $(CC) -o $@ $(AIX_TMP) $(AIX_WRAP) 356 rm -f $(AIX_TMP) 357 358 else 359 360 # All platforms that are not AIX pre-4.2. 361 362 $(OBJDIR)/%$(PROG_SUFFIX): $(OBJDIR)/%.$(OBJ_SUFFIX) 363 @$(MAKE_OBJDIR) 364 ifeq ($(NS_USE_GCC)_$(OS_ARCH),_WINNT) 365 link $(LDOPTS) $(EXTRA_LDOPTS) $< $(LIBPLC) $(LIBNSPR) $(EXTRA_LIBS) -out:$@ 366 ifdef MT 367 @if test -f $@.manifest; then \ 368 $(MT) -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;1; \ 369 rm -f $@.manifest; \ 370 fi 371 endif 372 else 373 $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBNSPR) $(EXTRA_LIBS) -o $@ 374 endif # WINNT 375 endif # AIX_PRE_4_2 376 377 export:: $(TARGETS) 378 clean:: 379 rm -f $(TARGETS) runtests 380 381 # The following tests call BSD socket functions, so they need to link 382 # with -lsocket on some platforms. 383 ifeq ($(OS_ARCH),SunOS) 384 ifeq ($(USE_IPV6),1) 385 $(OBJDIR)/gethost: $(OBJDIR)/gethost.o 386 $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBNSPR) -lsocket $(EXTRA_LIBS) -o $@ 387 endif 388 $(OBJDIR)/prpoll: $(OBJDIR)/prpoll.o 389 $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBNSPR) -lsocket $(EXTRA_LIBS) -o $@ 390 endif 391 392 ifeq ($(USE_PTHREADS), 1) 393 $(OBJDIR)/attach: $(OBJDIR)/attach.o 394 $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBNSPR) $(LIBPTHREAD) $(EXTRA_LIBS) -o $@ 395 $(OBJDIR)/foreign: $(OBJDIR)/foreign.o 396 $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBNSPR) $(LIBPTHREAD) $(EXTRA_LIBS) -o $@ 397 $(OBJDIR)/provider: $(OBJDIR)/provider.o 398 $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBNSPR) $(LIBPTHREAD) $(EXTRA_LIBS) -o $@ 399 $(OBJDIR)/socket: $(OBJDIR)/socket.o 400 $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBNSPR) $(LIBPTHREAD) $(EXTRA_LIBS) -o $@ 401 $(OBJDIR)/testfile: $(OBJDIR)/testfile.o 402 $(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBNSPR) $(LIBPTHREAD) $(EXTRA_LIBS) -o $@ 403 endif 404 405 # 406 # Run the test programs with no arguments 407 # 408 # Test output goes to the file pointed to by the environment variable 409 # NSPR_TEST_LOGFILE, if set, else to /dev/null 410 # 411 ECHO = echo 412 PROGRAMS = $(notdir $(PROGS)) 413 ifdef NSPR_TEST_LOGFILE 414 LOGFILE = $(NSPR_TEST_LOGFILE) 415 else 416 ifeq (,$(filter-out WINNT,$(OS_ARCH))) 417 LOGFILE = nul 418 else 419 LOGFILE = /dev/null 420 endif 421 endif 422 423 ifeq ($(OS_TARGET),Linux) 424 ECHO = /bin/echo 425 endif 426 427 ALWAYS: 428 429 runtests:: $(PROGS) ALWAYS 430 $(topsrcdir)/pr/tests/runtests.sh $(DIST)