diff options
author | wtc%netscape.com <devnull@localhost> | 2003-02-25 01:40:04 +0000 |
---|---|---|
committer | wtc%netscape.com <devnull@localhost> | 2003-02-25 01:40:04 +0000 |
commit | 7d463bc6d34e3188a2ce1aa1b4707f610e830d2e (patch) | |
tree | 4d579a74c96a1d01e195ca1feca8c4e4b0b13efa | |
parent | 727705de0bf8e0d25072c178d726c1d97745e9f6 (diff) | |
download | nss-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.mk | 39 | ||||
-rw-r--r-- | security/coreconf/rules.mk | 21 | ||||
-rw-r--r-- | security/nss/lib/ckfw/nssck.api | 2 |
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 |