# # The contents of this file are subject to the Netscape Public License # Version 1.0 (the "NPL"); you may not use this file except in # compliance with the NPL. You may obtain a copy of the NPL at # http://www.mozilla.org/NPL/ # # Software distributed under the NPL is distributed on an "AS IS" basis, # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL # for the specific language governing rights and limitations under the # NPL. # # The Initial Developer of this code under the NPL is Netscape # Communications Corporation. Portions created by Netscape are # Copyright (C) 1998 Netscape Communications Corporation. All Rights # Reserved. # #! gmake MOD_DEPTH = ../.. include $(MOD_DEPTH)/config/config.mk DIRS = io linking malloc md memory misc threads ifeq ($(USE_PTHREADS), 1) DIRS += pthreads endif # # Define platform-dependent OS_LIBS # # Disable optimization of the nspr on SunOS4.1.3 ifeq ($(OS_ARCH),SunOS) ifeq ($(OS_RELEASE),4.1.3_U1) OPTIMIZER = export OPTIMIZER OS_LIBS = -lm else # 4.1.3_U1 ifdef USE_PTHREADS OS_LIBS = -lpthread -lposix4 -lsocket -lnsl -ldl else ifdef LOCAL_THREADS_ONLY OS_LIBS = -lsocket -lnsl -ldl else OS_LIBS = -lthread -lposix4 -lsocket -lnsl -ldl endif # LOCAL_THREADS_ONLY endif # USE_PTHREADS endif # 4.1.3_U1 endif # SunOS ifeq ($(OS_ARCH), IRIX) ifeq ($(USE_PTHREADS), 1) OS_LIBS = -lpthread endif endif ifeq ($(OS_ARCH),AIX) ifeq ($(CLASSIC_NSPR),1) ifeq ($(OS_RELEASE),4.1) OS_LIBS = -lsvld -lc else OS_LIBS = -ldl -lc endif else ifeq ($(OS_RELEASE),4.1) OS_LIBS = -lpthreads -lsvld -lC_r -lC -lc_r -lm /usr/lib/libc.a else OS_LIBS = -lpthreads -ldl -lC_r -lC -lc_r -lm /usr/lib/libc.a endif endif endif # On AIX, we override malloc in non-pthread versions. On AIX 4.2 or # above, this requires that we use the rtl-enabled version of libc.a. ifeq ($(OS_ARCH),AIX) ifneq ($(OS_RELEASE),4.1) ifneq ($(USE_PTHREADS),1) BUILD_AIX_RTL_LIBC = 1 AIX_RTL_LIBC = $(OBJDIR)/libc.a endif endif endif ifeq ($(OS_ARCH),OSF1) ifeq ($(USE_PTHREADS), 1) OS_LIBS = -lpthread -lrt endif ifneq ($(OS_RELEASE),V2.0) OS_LIBS += -lc_r endif ifeq ($(USE_IPV6), 1) OS_LIBS += -lip6 endif endif ifeq ($(OS_ARCH),Linux) ifeq ($(USE_PTHREADS), 1) OS_LIBS = -L/lib -lpthread -ldl -lc else OS_LIBS = -L/lib -ldl -lc endif endif ifeq ($(OS_ARCH),HP-UX) ifeq ($(USE_PTHREADS), 1) ifeq (,$(filter-out B.10.10 B.10.20,$(OS_RELEASE))) OS_LIBS = -ldce else OS_LIBS = -lpthread endif endif ifeq ($(PTHREADS_USER), 1) OS_LIBS = -lpthread endif ifeq ($(basename $(OS_RELEASE)),A.09) OS_LIBS += -ldld -L/lib/pa1.1 -lm else OS_LIBS += -ldld -lm -lc endif endif ifeq ($(OS_ARCH),UNIXWARE) OS_LIBS = -lsocket -lc endif ifeq ($(OS_ARCH),NEWS-OS) OS_LIBS = -lsocket -lnsl -lgen -lresolv endif ifeq ($(OS_ARCH),WINNT) ifeq ($(OS_TARGET),OS2) OS_LIBS = so32dll.lib tcp32dll.lib else ifneq ($(OS_TARGET),WIN16) OS_LIBS = wsock32.lib winmm.lib endif endif endif # # Define platform-dependent OBJS # OBJS = \ $(OBJDIR)/prvrsion.$(OBJ_SUFFIX) \ io/$(OBJDIR)/prfdcach.$(OBJ_SUFFIX) \ io/$(OBJDIR)/prmwait.$(OBJ_SUFFIX) \ io/$(OBJDIR)/prmapopt.$(OBJ_SUFFIX) \ io/$(OBJDIR)/priometh.$(OBJ_SUFFIX) \ io/$(OBJDIR)/prlayer.$(OBJ_SUFFIX) \ io/$(OBJDIR)/prlog.$(OBJ_SUFFIX) \ io/$(OBJDIR)/prmmap.$(OBJ_SUFFIX) \ io/$(OBJDIR)/prpolevt.$(OBJ_SUFFIX) \ io/$(OBJDIR)/prprf.$(OBJ_SUFFIX) \ io/$(OBJDIR)/prscanf.$(OBJ_SUFFIX) \ io/$(OBJDIR)/prstdio.$(OBJ_SUFFIX) \ threads/$(OBJDIR)/prcmon.$(OBJ_SUFFIX) \ threads/$(OBJDIR)/prtpd.$(OBJ_SUFFIX) \ linking/$(OBJDIR)/prlink.$(OBJ_SUFFIX) \ malloc/$(OBJDIR)/prmalloc.$(OBJ_SUFFIX) \ malloc/$(OBJDIR)/prmem.$(OBJ_SUFFIX) \ md/$(OBJDIR)/prosdep.$(OBJ_SUFFIX) \ memory/$(OBJDIR)/prseg.$(OBJ_SUFFIX) \ misc/$(OBJDIR)/pralarm.$(OBJ_SUFFIX) \ misc/$(OBJDIR)/pratom.$(OBJ_SUFFIX) \ misc/$(OBJDIR)/prcountr.$(OBJ_SUFFIX) \ misc/$(OBJDIR)/prdtoa.$(OBJ_SUFFIX) \ misc/$(OBJDIR)/prenv.$(OBJ_SUFFIX) \ misc/$(OBJDIR)/prerror.$(OBJ_SUFFIX) \ misc/$(OBJDIR)/prinit.$(OBJ_SUFFIX) \ misc/$(OBJDIR)/prinrval.$(OBJ_SUFFIX) \ misc/$(OBJDIR)/prlog2.$(OBJ_SUFFIX) \ misc/$(OBJDIR)/prlong.$(OBJ_SUFFIX) \ misc/$(OBJDIR)/prnetdb.$(OBJ_SUFFIX) \ misc/$(OBJDIR)/prolock.$(OBJ_SUFFIX) \ misc/$(OBJDIR)/prsystem.$(OBJ_SUFFIX) \ misc/$(OBJDIR)/prthinfo.$(OBJ_SUFFIX) \ misc/$(OBJDIR)/prtrace.$(OBJ_SUFFIX) \ misc/$(OBJDIR)/prtime.$(OBJ_SUFFIX) ifdef USE_PTHREADS OBJS += \ pthreads/$(OBJDIR)/ptsynch.$(OBJ_SUFFIX) \ pthreads/$(OBJDIR)/ptio.$(OBJ_SUFFIX) \ pthreads/$(OBJDIR)/ptthread.$(OBJ_SUFFIX) \ pthreads/$(OBJDIR)/ptmisc.$(OBJ_SUFFIX) else OBJS += \ io/$(OBJDIR)/prdir.$(OBJ_SUFFIX) \ io/$(OBJDIR)/prfile.$(OBJ_SUFFIX) \ io/$(OBJDIR)/prio.$(OBJ_SUFFIX) \ io/$(OBJDIR)/prsocket.$(OBJ_SUFFIX) \ threads/$(OBJDIR)/prcthr.$(OBJ_SUFFIX) \ threads/$(OBJDIR)/prdump.$(OBJ_SUFFIX) \ threads/$(OBJDIR)/prmon.$(OBJ_SUFFIX) \ threads/$(OBJDIR)/prsem.$(OBJ_SUFFIX) \ threads/combined/$(OBJDIR)/prucpu.$(OBJ_SUFFIX) \ threads/combined/$(OBJDIR)/prucv.$(OBJ_SUFFIX) \ threads/combined/$(OBJDIR)/prulock.$(OBJ_SUFFIX) \ threads/combined/$(OBJDIR)/prustack.$(OBJ_SUFFIX) \ threads/combined/$(OBJDIR)/pruthr.$(OBJ_SUFFIX) endif ifeq ($(USE_IPV6), 1) OBJS += io/$(OBJDIR)/pripv6.$(OBJ_SUFFIX) endif ifeq ($(OS_ARCH), WINNT) ifneq (,$(filter-out WIN16 OS2,$(OS_TARGET))) DLLBASE=/BASE:0x30000000 RES=$(OBJDIR)/nspr.res RESNAME=nspr.rc ifdef MOZ_DEBUG ifdef GLOWCODE EXTRA_LIBS += $(GLOWDIR)/glowcode.lib endif endif endif ifeq ($(OS_TARGET), WIN16) OBJS += md/windows/$(OBJDIR)/w16null.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/w16proc.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/w16thred.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/w16fmem.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/w16sock.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/w16mem.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/w16io.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/w16gc.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/w16error.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/w16callb.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/ntinrval.$(OBJ_SUFFIX) EXTRA_LIBS += $(MOD_DEPTH)/tools/winsock.lib W16_EXPORTS = EXPORT _malloc.2=_PR_MD_malloc RESIDENT, \ _realloc.3=_PR_MD_realloc RESIDENT, \ _calloc.4=_PR_MD_calloc RESIDENT, \ _free.5=_PR_MD_free RESIDENT, \ _getenv.9=_PR_MD_getenv RESIDENT, \ _printf.11=_PR_MD_printf RESIDENT, \ _strftime.13=_PR_MD_strftime RESIDENT, \ _sscanf.33=_PR_MD_sscanf RESIDENT, \ _putenv.10=_PR_MD_putenv RESIDENT, \ _fprintf.12=_PR_MD_fprintf RESIDENT else ifeq ($(OS_TARGET), WIN95) OBJS += md/windows/$(OBJDIR)/w95io.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/w95sock.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/w95thred.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/w95cv.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/ntgc.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/ntmisc.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/ntinrval.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/ntsem.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/win32_errors.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/w32poll.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/w95dllmain.$(OBJ_SUFFIX) else ifeq ($(OS_TARGET), OS2) OBJS += md/os2/$(OBJDIR)/os2io.$(OBJ_SUFFIX) \ md/os2/$(OBJDIR)/os2sock.$(OBJ_SUFFIX) \ md/os2/$(OBJDIR)/os2thred.$(OBJ_SUFFIX) \ md/os2/$(OBJDIR)/os2cv.$(OBJ_SUFFIX) \ md/os2/$(OBJDIR)/os2gc.$(OBJ_SUFFIX) \ md/os2/$(OBJDIR)/os2misc.$(OBJ_SUFFIX) \ md/os2/$(OBJDIR)/os2inrval.$(OBJ_SUFFIX) \ md/os2/$(OBJDIR)/os2sem.$(OBJ_SUFFIX) \ md/os2/$(OBJDIR)/os2_errors.$(OBJ_SUFFIX) \ md/os2/$(OBJDIR)/os2poll.$(OBJ_SUFFIX) else OBJS += md/windows/$(OBJDIR)/ntdllmn.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/ntio.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/ntgc.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/ntthread.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/ntmisc.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/ntinrval.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/ntsem.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/win32_errors.$(OBJ_SUFFIX) \ md/windows/$(OBJDIR)/w32poll.$(OBJ_SUFFIX) endif endif endif else THREAD_DIR=threads/combined/$(OBJDIR) ifeq ($(OS_ARCH), MAC) MD_DIR = md/mac/$(OBJDIR) else MD_DIR = md/unix/$(OBJDIR) include md/unix/objs.mk endif endif LIBRARY_NAME = nspr LIBRARY_VERSION = $(MOD_VERSION) RELEASE_LIBS = $(TARGETS) include $(MOD_DEPTH)/config/rules.mk ifeq ($(BUILD_AIX_RTL_LIBC),1) TARGETS += $(AIX_RTL_LIBC) # XXX is this a shared library? endif # # Version information generation (begin) # ECHO = echo INCLUDES = -I$(DIST)/include TINC = $(OBJDIR)/_pr_bld.h PROD = libnspr$(MOD_VERSION).$(DLL_SUFFIX) NOW = $(MOD_DEPTH)/config/$(OBJDIR)/now SH_DATE = $(shell date) SH_NOW = $(shell $(NOW)) ifeq ($(OS_ARCH), WINNT) SUF = i64 else SUF = LL endif $(TINC): @$(MAKE_OBJDIR) @$(ECHO) '#define _BUILD_STRING "$(SH_DATE)"' > $(TINC) @if test ! -z "$(SH_NOW)"; then \ $(ECHO) '#define _BUILD_TIME $(SH_NOW)$(SUF)' >> $(TINC); \ fi @$(ECHO) '#define _PRODUCTION "$(PROD)"' >> $(TINC) $(OBJDIR)/prvrsion.$(OBJ_SUFFIX): $(TINC) ifeq ($(OS_ARCH), WINNT) $(CC) -Fo$@ -c $(CFLAGS) -I$(OBJDIR) prvrsion.c else $(CC) -o $@ -c $(CFLAGS) -I$(OBJDIR) prvrsion.c endif # # Version information generation (end) # # # The Client build wants the shared libraries in $(DIST)/bin, # so we also install them there. # export:: $(TARGETS) $(INSTALL) -m 444 $(TARGETS) $(DIST)/lib ifdef SHARED_LIBRARY $(INSTALL) -m 444 $(SHARED_LIBRARY) $(DIST)/bin endif ifeq ($(MOZ_BITS),16) $(INSTALL) -m 444 $(TARGETS) $(MOZ_DIST)/lib $(INSTALL) -m 444 $(TARGETS) $(MOZ_DIST)/bin endif ifeq ($(BUILD_AIX_RTL_LIBC),1) $(AIX_RTL_LIBC): /usr/ccs/lib/libc.a rtl_enable -o $@ $< endif install:: export