# # ***** BEGIN LICENSE BLOCK ***** # Version: MPL 1.1/GPL 2.0/LGPL 2.1 # # The contents of this file are subject to the Mozilla Public License Version # 1.1 (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # http://www.mozilla.org/MPL/ # # Software distributed under the License is distributed on an "AS IS" basis, # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License # for the specific language governing rights and limitations under the # License. # # The Original Code is the Netscape Portable Runtime (NSPR). # # The Initial Developer of the Original Code is # Netscape Communications Corporation. # Portions created by the Initial Developer are Copyright (C) 1998-2000 # the Initial Developer. All Rights Reserved. # # Contributor(s): # # Alternatively, the contents of this file may be used under the terms of # either the GNU General Public License Version 2 or later (the "GPL"), or # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), # in which case the provisions of the GPL or the LGPL are applicable instead # of those above. If you wish to allow use of your version of this file only # under the terms of either the GPL or the LGPL, and not to allow others to # use your version of this file under the terms of the MPL, indicate your # decision by deleting the provisions above and replace them with the notice # and other provisions required by the GPL or the LGPL. If you do not delete # the provisions above, a recipient may use your version of this file under # the terms of any one of the MPL, the GPL or the LGPL. # # ***** END LICENSE BLOCK ***** #! gmake MOD_DEPTH = ../.. topsrcdir = @top_srcdir@ srcdir = @srcdir@ VPATH = @srcdir@ include $(MOD_DEPTH)/config/autoconf.mk include $(topsrcdir)/config/config.mk DIRS = io malloc md memory misc threads # For VAC++ 4 geticcdata rule in config/OS2.mk ifeq ($(MOZ_OS2_TOOLS),VACPP) CSRCS = prvrsion.c endif ifeq ($(USE_PTHREADS), 1) DIRS += pthreads endif ifeq ($(USE_BTHREADS), 1) DIRS += bthreads endif ifeq ($(USE_CPLUS), 1) # DIRS += cplus endif # # Define platform-dependent OS_LIBS # ifeq ($(OS_ARCH),SunOS) ifeq ($(OS_RELEASE),4.1.3_U1) OS_LIBS = -lm else # 4.1.3_U1 MAPFILE = $(OBJDIR)/nsprmap.sun GARBAGE += $(MAPFILE) ifdef NS_USE_GCC ifdef GCC_USE_GNU_LD MKSHLIB += -Wl,--version-script,$(MAPFILE) else MKSHLIB += -Wl,-M,$(MAPFILE) endif else MKSHLIB += -M $(MAPFILE) endif # # In Solaris 2.6 or earlier, -lrt is called -lposix4. # LIBRT_TEST=$(firstword $(sort 5.7 $(OS_RELEASE))) ifeq (5.7, $(LIBRT_TEST)) LIBRT=-lrt else LIBRT=-lposix4 endif ifdef USE_PTHREADS OS_LIBS = -lpthread -lthread ${LIBRT} -lsocket -lnsl -ldl -lc else ifdef LOCAL_THREADS_ONLY OS_LIBS = -lsocket -lnsl -ldl -lc else OS_LIBS = -lthread ${LIBRT} -lsocket -lnsl -ldl -lc endif # LOCAL_THREADS_ONLY endif # USE_PTHREADS ifeq ($(OS_TEST),sun4u) ifndef USE_64 DSO_LDOPTS += -Wl,-f,\$$ORIGIN/cpu/\$$ISALIST/lib$(ULTRASPARC_LIBRARY)$(LIBRARY_VERSION).so endif endif # sun4u endif # 4.1.3_U1 endif # SunOS ifeq ($(OS_ARCH), IRIX) ifeq ($(USE_PTHREADS), 1) OS_LIBS = -lpthread endif OS_LIBS += -lc endif ifeq ($(OS_ARCH),AIX) OS_LIBS = -lodm -lcfg 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 (,$(filter-out 3.2 4.1,$(OS_RELEASE))) ifneq ($(USE_PTHREADS),1) BUILD_AIX_RTL_LIBC = 1 AIX_RTL_LIBC = $(OBJDIR)/libc.a endif endif endif ifeq ($(OS_ARCH),OS2) MAPFILE = $(OBJDIR)/$(LIBRARY_NAME)$(LIBRARY_VERSION).def ADD_TO_DEF_FILE = cat $(srcdir)/os2extra.def >> $(MAPFILE) GARBAGE += $(MAPFILE) MKSHLIB += $(MAPFILE) endif ifeq ($(OS_ARCH),OSF1) ifeq ($(USE_PTHREADS), 1) OS_LIBS = -lpthread -lrt endif ifneq ($(OS_RELEASE),V2.0) OS_LIBS += -lc_r endif endif ifeq ($(OS_ARCH),Linux) ifeq ($(USE_PTHREADS), 1) OS_LIBS = -lpthread -ldl else OS_LIBS = -ldl 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 -lrt 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) ifdef NS_USE_GCC OS_LIBS = -ladvapi32 -lwsock32 -lwinmm else OS_LIBS = advapi32.lib wsock32.lib winmm.lib endif endif ifeq ($(OS_TARGET),MacOSX) OS_LIBS = -framework CoreServices -framework CoreFoundation endif ifdef GC_LEAK_DETECTOR EXTRA_LIBS = -L$(dist_libdir) -lboehm endif EXTRA_LIBS += $(OS_LIBS) # # Define platform-dependent OBJS # OBJS = \ $(OBJDIR)/prvrsion.$(OBJ_SUFFIX) \ io/$(OBJDIR)/prfdcach.$(OBJ_SUFFIX) \ io/$(OBJDIR)/prmwait.$(OBJ_SUFFIX) \ io/$(OBJDIR)/priometh.$(OBJ_SUFFIX) \ io/$(OBJDIR)/prmapopt.$(OBJ_SUFFIX) \ io/$(OBJDIR)/prlayer.$(OBJ_SUFFIX) \ io/$(OBJDIR)/prlog.$(OBJ_SUFFIX) \ io/$(OBJDIR)/prmmap.$(OBJ_SUFFIX) \ io/$(OBJDIR)/pripv6.$(OBJ_SUFFIX) \ io/$(OBJDIR)/prprf.$(OBJ_SUFFIX) \ threads/$(OBJDIR)/prtpd.$(OBJ_SUFFIX) \ malloc/$(OBJDIR)/prmem.$(OBJ_SUFFIX) \ md/$(OBJDIR)/prosdep.$(OBJ_SUFFIX) \ memory/$(OBJDIR)/prseg.$(OBJ_SUFFIX) \ misc/$(OBJDIR)/prnetdb.$(OBJ_SUFFIX) \ misc/$(OBJDIR)/pratom.$(OBJ_SUFFIX) \ misc/$(OBJDIR)/prerror.$(OBJ_SUFFIX) \ misc/$(OBJDIR)/prinit.$(OBJ_SUFFIX) \ misc/$(OBJDIR)/pripc.$(OBJ_SUFFIX) \ misc/$(OBJDIR)/prinrval.$(OBJ_SUFFIX) \ misc/$(OBJDIR)/prolock.$(OBJ_SUFFIX) \ misc/$(OBJDIR)/prtime.$(OBJ_SUFFIX) # ilib now rejects empty objects ifneq ($(MOZ_OS2_TOOLS),VACPP) #OBJS += malloc/$(OBJDIR)/prmalloc.$(OBJ_SUFFIX) endif 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) ifndef USE_BTHREADS OBJS += \ threads/$(OBJDIR)/prcthr.$(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 endif ifeq ($(USE_CPLUS), 1) OBJS += \ cplus/$(OBJDIR)/rcbase.$(OBJ_SUFFIX) \ cplus/$(OBJDIR)/rccv.$(OBJ_SUFFIX) \ cplus/$(OBJDIR)/rcfileio.$(OBJ_SUFFIX) \ cplus/$(OBJDIR)/rcinrval.$(OBJ_SUFFIX) \ cplus/$(OBJDIR)/rcio.$(OBJ_SUFFIX) \ cplus/$(OBJDIR)/rclock.$(OBJ_SUFFIX) \ cplus/$(OBJDIR)/rcnetdb.$(OBJ_SUFFIX) \ cplus/$(OBJDIR)/rcnetio.$(OBJ_SUFFIX) \ cplus/$(OBJDIR)/rcthread.$(OBJ_SUFFIX) \ cplus/$(OBJDIR)/rctime.$(OBJ_SUFFIX) endif ifdef GC_LEAK_DETECTOR OBJS += memory/$(OBJDIR)/prgcleak.$(OBJ_SUFFIX) endif ifeq ($(OS_ARCH), WINNT) ifndef USE_64 ifdef NS_USE_GCC DLLBASE=-Wl,--image-base -Wl,0x30000000 else DLLBASE=-BASE:0x30000000 endif # GCC endif # !USE_64 RES=$(OBJDIR)/nspr.res RESNAME=nspr.rc endif # WINNT include $(srcdir)/md/$(PR_MD_ARCH_DIR)/objs.mk ifdef USE_BTHREADS include $(srcdir)/bthreads/objs.mk endif LIBRARY_NAME = nspr LIBRARY_VERSION = $(MOD_MAJOR_VERSION) RELEASE_LIBS = $(TARGETS) include $(topsrcdir)/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_includedir) -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private TINC = $(OBJDIR)/_pr_bld.h ifeq ($(OS_TARGET),OS2) PROD = nspr$(MOD_MAJOR_VERSION).$(DLL_SUFFIX) else PROD = $(notdir $(SHARED_LIBRARY)) endif NOW = $(MOD_DEPTH)/config/$(OBJDIR)/now SH_DATE = $(shell date "+%Y-%m-%d %T") SH_NOW = $(shell $(NOW)) ifeq ($(NS_USE_GCC)_$(OS_ARCH),_WINNT) SUF = i64 else SUF = LL endif DEFINES += -D_NSPR_BUILD_ GARBAGE += $(TINC) $(TINC): @$(MAKE_OBJDIR) @$(ECHO) '#define _BUILD_STRING "$(SH_DATE)"' > $(TINC) @if test ! -z "$(SH_NOW)"; then \ $(ECHO) '#define _BUILD_TIME $(SH_NOW)$(SUF)' >> $(TINC); \ else \ true; \ fi @$(ECHO) '#define _PRODUCTION "$(PROD)"' >> $(TINC) $(OBJDIR)/prvrsion.$(OBJ_SUFFIX): prvrsion.c $(TINC) ifeq ($(NS_USE_GCC)_$(OS_ARCH),_WINNT) $(CC) -Fo$@ -c $(CFLAGS) -I$(OBJDIR) $< else ifeq ($(MOZ_OS2_TOOLS), VACPP) $(CC) -Fo$@ -c $(CFLAGS) -I$(OBJDIR) $< else $(CC) -o $@ -c $(CFLAGS) -I$(OBJDIR) $< endif endif # # Version information generation (end) # # # The Client build wants the shared libraries in $(dist_bindir) # so we also install them there. # export:: $(TARGETS) $(INSTALL) -m 444 $(TARGETS) $(dist_libdir) ifdef SHARED_LIBRARY ifeq ($(OS_ARCH),HP-UX) $(INSTALL) -m 755 $(SHARED_LIBRARY) $(dist_libdir) $(INSTALL) -m 755 $(SHARED_LIBRARY) $(dist_bindir) else $(INSTALL) -m 444 $(SHARED_LIBRARY) $(dist_bindir) endif 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