summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwtc%netscape.com <devnull@localhost>2003-02-25 01:40:04 +0000
committerwtc%netscape.com <devnull@localhost>2003-02-25 01:40:04 +0000
commit7d463bc6d34e3188a2ce1aa1b4707f610e830d2e (patch)
tree4d579a74c96a1d01e195ca1feca8c4e4b0b13efa
parent727705de0bf8e0d25072c178d726c1d97745e9f6 (diff)
downloadnss-hg-7d463bc6d34e3188a2ce1aa1b4707f610e830d2e.tar.gz
Bug 190537: build OS/2 DLLs using the map files to control symbol export.
The patch is contributed by Javier Pedemonte <pedemont@us.ibm.com>. Modified files: coreconf/OS2.mk coreconf/rules.mk nss/lib/ckfw/nssck.api
-rw-r--r--security/coreconf/OS2.mk39
-rw-r--r--security/coreconf/rules.mk21
-rw-r--r--security/nss/lib/ckfw/nssck.api2
3 files changed, 32 insertions, 30 deletions
diff --git a/security/coreconf/OS2.mk b/security/coreconf/OS2.mk
index 4b80a7f81..00f028d8e 100644
--- a/security/coreconf/OS2.mk
+++ b/security/coreconf/OS2.mk
@@ -86,10 +86,16 @@ DSO_LDOPTS = -Zomf -Zdll -Zmt -Zcrtdll -Zlinker /NOO
SHLIB_LDSTARTFILE =
SHLIB_LDENDFILE =
ifdef MAPFILE
-# Add LD options to restrict exported symbols to those in the map file
+MKSHLIB += $(MAPFILE)
endif
-# Change PROCESS to put the mapfile in the correct format for this platform
-PROCESS_MAP_FILE = copy $(LIBRARY_NAME).def $@
+PROCESS_MAP_FILE = \
+ echo LIBRARY $(LIBRARY_NAME)$(LIBRARY_VERSION) INITINSTANCE TERMINSTANCE > $@; \
+ echo PROTMODE >> $@; \
+ echo CODE LOADONCALL MOVEABLE DISCARDABLE >> $@; \
+ echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $@; \
+ echo EXPORTS >> $@; \
+ grep -v ';+' $(LIBRARY_NAME).def | grep -v ';-' | \
+ sed -e 's; DATA ;;' -e 's,;;,,' -e 's,;.*,,' >> $@
endif #NO_SHARED_LIB
@@ -147,6 +153,17 @@ DSO_LDOPTS =
# DLL_SUFFIX = .dll
SHLIB_LDSTARTFILE =
SHLIB_LDENDFILE =
+ifdef MAPFILE
+MKSHLIB += $(MAPFILE)
+endif
+PROCESS_MAP_FILE = \
+ echo LIBRARY $(LIBRARY_NAME)$(LIBRARY_VERSION) INITINSTANCE TERMINSTANCE > $@; \
+ echo PROTMODE >> $@; \
+ echo CODE LOADONCALL MOVEABLE DISCARDABLE >> $@; \
+ echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $@; \
+ echo EXPORTS >> $@; \
+ grep -v ';+' $(LIBRARY_NAME).def | grep -v ';-' | \
+ sed -e 's; DATA ;;' -e 's,;;,,' -e 's,;.*,,' >> $@
endif #NO_SHARED_LIB
OS_CFLAGS = /Q /qlibansi /Gd /Gm /Su4 /Mp /Tl-
@@ -159,20 +176,22 @@ MOZ_COMPONENT_NSPR_LIBS=-L$(DIST)/lib $(NSPR_LIBS)
NSPR_INCLUDE_DIR =
+DLLFLAGS = /DLL /O:$@ /INC:_dllentry /MAP:$(@:.dll=.map)
+EXEFLAGS = -PMTYPE:VIO -OUT:$@ -MAP:$(@:.exe=.map) -nologo -NOE
+LDFLAGS = /FREE /NOE /LINENUMBERS /nologo
+
ifdef BUILD_OPT
-OPTIMIZER = -Oi -G5
+OPTIMIZER = /O+ /Gl+ /G5 /qarch=pentium
DEFINES += -UDEBUG -U_DEBUG -DNDEBUG
-DLLFLAGS = /DLL /O:$@ /INC:_dllentry /MAP:$(@:.dll=.map)
-EXEFLAGS = -PMTYPE:VIO -OUT:$@ -MAP:$(@:.exe=.map) -nologo -NOE
OBJDIR_TAG = _OPT
-LDFLAGS = /FREE /NODEBUG /NOE /LINENUMBERS /nologo
+LDFLAGS += /NODEBUG /OPTFUNC /EXEPACK:2 /PACKCODE /PACKDATA
else
OS_CFLAGS += /Ti+
DEFINES += -DDEBUG -D_DEBUG -DDEBUGPRINTS #HCT Need += to avoid overidding manifest.mn
-DLLFLAGS = /DEBUG /DLL /O:$@ /INC:_dllentry /MAP:$(@:.dll=.map)
-EXEFLAGS = -DEBUG -PMTYPE:VIO -OUT:$@ -MAP:$(@:.exe=.map) -nologo -NOE
+DLLFLAGS += /DE
+EXEFLAGS += /DE
OBJDIR_TAG = _DBG
-LDFLAGS = /FREE /DE /NOE /LINENUMBERS /nologo
+LDFLAGS += /DE
endif # BUILD_OPT
endif # XP_OS2_VACPP
diff --git a/security/coreconf/rules.mk b/security/coreconf/rules.mk
index 84fc90eb5..aca7eaa6b 100644
--- a/security/coreconf/rules.mk
+++ b/security/coreconf/rules.mk
@@ -312,7 +312,7 @@ endif
ifeq ($(OS_TARGET),OS2)
$(IMPORT_LIBRARY): $(SHARED_LIBRARY)
rm -f $@
- $(IMPLIB) $@ $(patsubst %.lib,%.dll.def,$@)
+ $(IMPLIB) $@ $(SHARED_LIBRARY)
$(RANLIB) $@
endif
@@ -339,25 +339,8 @@ else
ifeq (,$(filter-out WIN%,$(OS_TARGET)))
$(LINK_DLL) -MAP $(DLLBASE) $(subst /,\\,$(OBJS) $(SUB_SHLOBJS) $(EXTRA_LIBS) $(EXTRA_SHARED_LIBS) $(OS_LIBS) $(LD_LIBS) $(RES))
else
-ifeq ($(OS_TARGET),OS2)
- @cmd /C "echo LIBRARY $(notdir $(basename $(SHARED_LIBRARY))) INITINSTANCE TERMINSTANCE >$@.def"
- @cmd /C "echo PROTMODE >>$@.def"
- @cmd /C "echo CODE LOADONCALL MOVEABLE DISCARDABLE >>$@.def"
- @cmd /C "echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >>$@.def"
- @cmd /C "echo EXPORTS >>$@.def"
- $(FILTER) $(OBJS) >>$@.def
-ifdef SUB_SHLOBJS
- @echo Number of words in OBJ list = $(words $(SUB_SHLOBJS))
- @echo If above number is over 100, need to reedit coreconf/rules.mk
- -$(FILTER) $(wordlist 1,20,$(SUB_SHLOBJS)) >>$@.def
- -$(FILTER) $(wordlist 21,40,$(SUB_SHLOBJS)) >>$@.def
- -$(FILTER) $(wordlist 41,60,$(SUB_SHLOBJS)) >>$@.def
- -$(FILTER) $(wordlist 61,80,$(SUB_SHLOBJS)) >>$@.def
- -$(FILTER) $(wordlist 81,100,$(SUB_SHLOBJS)) >>$@.def
-endif
-endif #OS2
ifdef XP_OS2_VACPP
- $(MKSHLIB) $(DLLFLAGS) $(LDFLAGS) $(OBJS) $(SUB_SHLOBJS) $(LD_LIBS) $(EXTRA_LIBS) $(EXTRA_SHARED_LIBS) $@.def
+ $(MKSHLIB) $(DLLFLAGS) $(LDFLAGS) $(OBJS) $(SUB_SHLOBJS) $(LD_LIBS) $(EXTRA_LIBS) $(EXTRA_SHARED_LIBS)
else
$(MKSHLIB) -o $@ $(OBJS) $(SUB_SHLOBJS) $(LD_LIBS) $(EXTRA_LIBS) $(EXTRA_SHARED_LIBS)
endif
diff --git a/security/nss/lib/ckfw/nssck.api b/security/nss/lib/ckfw/nssck.api
index 15a2cc935..4cbe5e8cc 100644
--- a/security/nss/lib/ckfw/nssck.api
+++ b/security/nss/lib/ckfw/nssck.api
@@ -1874,7 +1874,7 @@ __ADJOIN(MODULE_NAME,C_GetFunctionList)
}
/* This one is always present */
-#ifdef WIN32
+#if defined(WIN32) || defined(XP_OS2_VACPP)
CK_RV _declspec(dllexport)
#else
CK_RV CK_ENTRY