Skip to content

Commit

Permalink
Bug 134113: make NSS build on Win32 using GCC (MinGW). The patch
Browse files Browse the repository at this point in the history
(attachment 121068) is contributed by Chris Seawood (cls@seawood.org).
  • Loading branch information
wtc%netscape.com committed Apr 20, 2003
1 parent 5ffc0e7 commit d2e3f77
Show file tree
Hide file tree
Showing 22 changed files with 262 additions and 65 deletions.
84 changes: 69 additions & 15 deletions security/coreconf/WIN32.mk
Expand Up @@ -38,13 +38,26 @@

DEFAULT_COMPILER = cl

CC = cl
CCC = cl
LINK = link
AR = lib
AR += -NOLOGO -OUT:"$@"
RANLIB = echo
BSDECHO = echo
ifdef NS_USE_GCC
CC = gcc
CCC = g++
LINK = ld
AR = ar
AR += cr $@
RANLIB = ranlib
BSDECHO = echo
RC = windres.exe -O coff
LINK_DLL = $(CC) $(OS_DLLFLAGS) $(DLLFLAGS)
else
CC = cl
CCC = cl
LINK = link
AR = lib
AR += -NOLOGO -OUT:"$@"
RANLIB = echo
BSDECHO = echo
RC = rc.exe
endif

ifdef BUILD_TREE
NSINSTALL_DIR = $(BUILD_TREE)/nss
Expand All @@ -62,13 +75,38 @@ MKDEPENDENCIES = $(OBJDIR_NAME)/depend.mk
INSTALL = $(NSINSTALL)
MAKE_OBJDIR = mkdir
MAKE_OBJDIR += $(OBJDIR)
RC = rc.exe
GARBAGE += $(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb
XP_DEFINE += -DXP_PC
ifdef NS_USE_GCC
LIB_SUFFIX = a
else
LIB_SUFFIX = lib
endif
DLL_SUFFIX = dll

ifdef BUILD_OPT
ifdef NS_USE_GCC
OS_CFLAGS += -mno-cygwin -mms-bitfields
_GEN_IMPORT_LIB=-Wl,--out-implib,$(IMPORT_LIBRARY)
DLLFLAGS += -mno-cygwin -o $@ -shared -Wl,--export-all-symbols $(if $(IMPORT_LIBRARY),$(_GEN_IMPORT_LIB))
ifdef BUILD_OPT
OPTIMIZER += -O2
DEFINES += -UDEBUG -U_DEBUG -DNDEBUG
#
# Add symbolic information for a profiler
#
ifdef MOZ_PROFILE
OPTIMIZER += -g
endif
else
OPTIMIZER += -g
NULLSTRING :=
SPACE := $(NULLSTRING) # end of the line
USERNAME := $(subst $(SPACE),_,$(USERNAME))
USERNAME := $(subst -,_,$(USERNAME))
DEFINES += -DDEBUG -D_DEBUG -UNDEBUG -DDEBUG_$(USERNAME)
endif
else # !NS_USE_GCC
ifdef BUILD_OPT
OS_CFLAGS += -MD
OPTIMIZER += -O2
DEFINES += -UDEBUG -U_DEBUG -DNDEBUG
Expand All @@ -80,7 +118,7 @@ ifdef BUILD_OPT
OPTIMIZER += -Z7
DLLFLAGS += -DEBUG -DEBUGTYPE:CV
endif
else
else
#
# Define USE_DEBUG_RTL if you want to use the debug runtime library
# (RTL) in the debug build
Expand All @@ -99,12 +137,15 @@ else
DEFINES += -DDEBUG -D_DEBUG -UNDEBUG -DDEBUG_$(USERNAME)
DLLFLAGS += -DEBUG -DEBUGTYPE:CV -OUT:"$@"
LDFLAGS += -DEBUG -DEBUGTYPE:CV -PDB:NONE
endif
endif
endif # NS_USE_GCC

DEFINES += -DWIN32
ifdef MAPFILE
ifndef NS_USE_GCC
DLLFLAGS += -DEF:$(MAPFILE)
endif
endif
# Change PROCESS to put the mapfile in the correct format for this platform
PROCESS_MAP_FILE = cp $(LIBRARY_NAME).def $@

Expand All @@ -116,8 +157,13 @@ PROCESS_MAP_FILE = cp $(LIBRARY_NAME).def $@
DEFINES += -D_WINDOWS

# override default, which is ASFLAGS = CFLAGS
AS = ml.exe
ASFLAGS = -Cp -Sn -Zi -coff $(INCLUDES)
ifdef NS_USE_GCC
AS = $(CC)
ASFLAGS = $(INCLUDES)
else
AS = ml.exe
ASFLAGS = -Cp -Sn -Zi -coff $(INCLUDES)
endif

#
# override the definitions of RELEASE_TREE found in tree.mk
Expand Down Expand Up @@ -154,14 +200,22 @@ endif
# Object suffixes
#
ifndef OBJ_SUFFIX
OBJ_SUFFIX = .obj
ifdef NS_USE_GCC
OBJ_SUFFIX = .o
else
OBJ_SUFFIX = .obj
endif
endif

#
# Assembler source suffixes
#
ifndef ASM_SUFFIX
ASM_SUFFIX = .asm
ifdef NS_USE_GCC
ASM_SUFFIX = .s
else
ASM_SUFFIX = .asm
endif
endif

#
Expand Down
4 changes: 4 additions & 0 deletions security/coreconf/WIN954.0.mk
Expand Up @@ -40,7 +40,9 @@
include $(CORE_DEPTH)/coreconf/WIN32.mk

ifeq ($(CPU_ARCH), x386)
ifndef NS_USE_GCC
OS_CFLAGS += -W3 -nologo
endif
DEFINES += -D_X86_
else
ifeq ($(CPU_ARCH), MIPS)
Expand All @@ -55,5 +57,7 @@ else
endif
endif

ifndef NS_USE_GCC
OS_DLLFLAGS += -nologo -DLL -SUBSYSTEM:WINDOWS -PDB:NONE
endif
DEFINES += -DWIN95
20 changes: 13 additions & 7 deletions security/coreconf/rules.mk
Expand Up @@ -52,7 +52,7 @@ endif
platform::
@echo $(OBJDIR_NAME)

ifeq (,$(filter-out WIN%,$(OS_TARGET)))
ifeq (,$(filter-out _WIN%,$(NS_USE_GCC)_$(OS_TARGET)))
USE_NT_C_SYNTAX=1
endif

Expand Down Expand Up @@ -285,7 +285,7 @@ endif

$(PROGRAM): $(OBJS) $(EXTRA_LIBS)
@$(MAKE_OBJDIR)
ifeq (,$(filter-out WIN%,$(OS_TARGET)))
ifeq (,$(filter-out _WIN%,$(NS_USE_GCC)_$(OS_TARGET)))
$(MKPROG) $(subst /,\\,$(OBJS)) -Fe$@ -link $(LDFLAGS) $(subst /,\\,$(EXTRA_LIBS) $(EXTRA_SHARED_LIBS) $(OS_LIBS))
else
ifdef XP_OS2_VACPP
Expand Down Expand Up @@ -337,7 +337,11 @@ ifeq ($(OS_TARGET)$(OS_RELEASE), AIX4.1)
-bM:SRE -bnoentry $(OS_LIBS) $(EXTRA_LIBS) $(EXTRA_SHARED_LIBS)
else
ifeq (,$(filter-out WIN%,$(OS_TARGET)))
ifdef NS_USE_GCC
$(LINK_DLL) $(OBJS) $(SUB_SHLOBJS) $(EXTRA_LIBS) $(EXTRA_SHARED_LIBS) $(OS_LIBS) $(LD_LIBS) $(RES)
else
$(LINK_DLL) -MAP $(DLLBASE) $(subst /,\\,$(OBJS) $(SUB_SHLOBJS) $(EXTRA_LIBS) $(EXTRA_SHARED_LIBS) $(OS_LIBS) $(LD_LIBS) $(RES))
endif
else
ifdef XP_OS2_VACPP
$(MKSHLIB) $(DLLFLAGS) $(LDFLAGS) $(OBJS) $(SUB_SHLOBJS) $(LD_LIBS) $(EXTRA_LIBS) $(EXTRA_SHARED_LIBS)
Expand All @@ -357,7 +361,11 @@ ifeq (,$(filter-out WIN%,$(OS_TARGET)))
$(RES): $(RESNAME)
@$(MAKE_OBJDIR)
# The resource compiler does not understand the -U option.
ifdef NS_USE_GCC
$(RC) $(filter-out -U%,$(DEFINES)) $(INCLUDES:-I%=--include-dir %) -o $@ $<
else
$(RC) $(filter-out -U%,$(DEFINES)) $(INCLUDES) -Fo$@ $<
endif
@echo $(RES) finished
endif

Expand All @@ -368,7 +376,7 @@ $(MAPFILE): $(LIBRARY_NAME).def

$(OBJDIR)/$(PROG_PREFIX)%$(PROG_SUFFIX): $(OBJDIR)/$(PROG_PREFIX)%$(OBJ_SUFFIX)
@$(MAKE_OBJDIR)
ifeq (,$(filter-out WIN%,$(OS_TARGET)))
ifeq (,$(filter-out _WIN%,$(NS_USE_GCC)_$(OS_TARGET)))
$(MKPROG) $(OBJDIR)/$(PROG_PREFIX)$*$(OBJ_SUFFIX) -Fe$@ -link \
$(LDFLAGS) $(EXTRA_LIBS) $(EXTRA_SHARED_LIBS) $(OS_LIBS)
else
Expand All @@ -388,16 +396,14 @@ NEED_ABSOLUTE_PATH := 1
PWD := $(shell pwd)
endif

ifeq (,$(filter-out WIN%,$(OS_TARGET)))
ifndef NS_USE_GCC
ifeq (,$(filter-out _WIN%,$(NS_USE_GCC)_$(OS_TARGET)))
NEED_ABSOLUTE_PATH := 1
ifeq (,$(findstring ;,$(PATH)))
PWD := $(subst \,/,$(shell cygpath -w `pwd`))
else
PWD := $(shell pwd)
endif
endif
endif

ifdef NEED_ABSOLUTE_PATH
abspath = $(if $(findstring :,$(1)),$(1),$(if $(filter /%,$(1)),$(1),$(PWD)/$(1)))
Expand Down Expand Up @@ -429,7 +435,7 @@ endif
endif

ifndef XP_OS2_VACPP
ifneq (,$(filter-out WIN%,$(OS_TARGET)))
ifneq (,$(filter-out _WIN%,$(NS_USE_GCC)_$(OS_TARGET)))
$(OBJDIR)/$(PROG_PREFIX)%$(OBJ_SUFFIX): %.s
@$(MAKE_OBJDIR)
$(AS) -o $@ $(ASFLAGS) -c $<
Expand Down
2 changes: 2 additions & 0 deletions security/nss/cmd/dbtest/Makefile
Expand Up @@ -60,7 +60,9 @@ endif

ifeq (,$(filter-out WINNT WIN95 WIN16,$(OS_TARGET))) # omits WINCE
ifndef BUILD_OPT
ifndef NS_USE_GCC
LDFLAGS += /subsystem:console /profile /debug /machine:I386 /incremental:no
endif
OS_CFLAGS += -D_CONSOLE
endif
endif
Expand Down
66 changes: 33 additions & 33 deletions security/nss/cmd/platlibs.mk
Expand Up @@ -39,7 +39,7 @@ ifeq ($(OS_ARCH), WINNT)

DEFINES += -DNSS_USE_STATIC_LIBS
# $(PROGRAM) has explicit dependencies on $(EXTRA_LIBS)
CRYPTOLIB=$(DIST)/lib/freebl.lib
CRYPTOLIB=$(DIST)/lib/$(LIB_PREFIX)freebl.$(LIB_SUFFIX)
ifdef MOZILLA_SECURITY_BUILD
CRYPTOLIB=$(DIST)/lib/crypto.lib
endif
Expand All @@ -49,28 +49,28 @@ ifdef MOZILLA_BSAFE_BUILD
endif

EXTRA_LIBS += \
$(DIST)/lib/smime.lib \
$(DIST)/lib/ssl.lib \
$(DIST)/lib/nss.lib \
$(DIST)/lib/ssl.lib \
$(DIST)/lib/sectool.lib \
$(DIST)/lib/pkcs12.lib \
$(DIST)/lib/pkcs7.lib \
$(DIST)/lib/certhi.lib \
$(DIST)/lib/cryptohi.lib \
$(DIST)/lib/pk11wrap.lib \
$(DIST)/lib/certdb.lib \
$(DIST)/lib/softokn.lib \
$(DIST)/lib/$(LIB_PREFIX)smime.$(LIB_SUFFIX) \
$(DIST)/lib/$(LIB_PREFIX)ssl.$(LIB_SUFFIX) \
$(DIST)/lib/$(LIB_PREFIX)nss.$(LIB_SUFFIX) \
$(DIST)/lib/$(LIB_PREFIX)ssl.$(LIB_SUFFIX) \
$(DIST)/lib/$(LIB_PREFIX)sectool.$(LIB_SUFFIX) \
$(DIST)/lib/$(LIB_PREFIX)pkcs12.$(LIB_SUFFIX) \
$(DIST)/lib/$(LIB_PREFIX)pkcs7.$(LIB_SUFFIX) \
$(DIST)/lib/$(LIB_PREFIX)certhi.$(LIB_SUFFIX) \
$(DIST)/lib/$(LIB_PREFIX)cryptohi.$(LIB_SUFFIX) \
$(DIST)/lib/$(LIB_PREFIX)pk11wrap.$(LIB_SUFFIX) \
$(DIST)/lib/$(LIB_PREFIX)certdb.$(LIB_SUFFIX) \
$(DIST)/lib/$(LIB_PREFIX)softokn.$(LIB_SUFFIX) \
$(CRYPTOLIB) \
$(DIST)/lib/swfci.lib \
$(DIST)/lib/secutil.lib \
$(DIST)/lib/nsspki.lib \
$(DIST)/lib/nssdev.lib \
$(DIST)/lib/nssb.lib \
$(DIST)/lib/dbm.lib \
$(DIST)/lib/$(NSPR31_LIB_PREFIX)plc4.lib \
$(DIST)/lib/$(NSPR31_LIB_PREFIX)plds4.lib \
$(DIST)/lib/$(NSPR31_LIB_PREFIX)nspr4.lib \
$(DIST)/lib/$(LIB_PREFIX)swfci.$(LIB_SUFFIX) \
$(DIST)/lib/$(LIB_PREFIX)secutil.$(LIB_SUFFIX) \
$(DIST)/lib/$(LIB_PREFIX)nsspki.$(LIB_SUFFIX) \
$(DIST)/lib/$(LIB_PREFIX)nssdev.$(LIB_SUFFIX) \
$(DIST)/lib/$(LIB_PREFIX)nssb.$(LIB_SUFFIX) \
$(DIST)/lib/$(LIB_PREFIX)dbm.$(LIB_SUFFIX) \
$(DIST)/lib/$(NSPR31_LIB_PREFIX)plc4.$(LIB_SUFFIX) \
$(DIST)/lib/$(NSPR31_LIB_PREFIX)plds4.$(LIB_SUFFIX) \
$(DIST)/lib/$(NSPR31_LIB_PREFIX)nspr4.$(LIB_SUFFIX) \
$(NULL)

# $(PROGRAM) has NO explicit dependencies on $(OS_LIBS)
Expand All @@ -79,8 +79,8 @@ EXTRA_LIBS += \
winmm.lib \
$(NULL)

JAR_LIBS = $(DIST)/lib/jar.lib \
$(DIST)/lib/zlib.lib \
JAR_LIBS = $(DIST)/lib/$(LIB_PREFIX)jar.$(LIB_SUFFIX) \
$(DIST)/lib/$(LIB_PREFIX)zlib.$(LIB_SUFFIX) \
$(NULL)
else

Expand Down Expand Up @@ -150,13 +150,13 @@ ifeq ($(OS_ARCH), WINNT)

# $(PROGRAM) has explicit dependencies on $(EXTRA_LIBS)
EXTRA_LIBS += \
$(DIST)/lib/sectool.lib \
$(DIST)/lib/smime3.lib \
$(DIST)/lib/ssl3.lib \
$(DIST)/lib/nss3.lib \
$(DIST)/lib/$(NSPR31_LIB_PREFIX)plc4.lib \
$(DIST)/lib/$(NSPR31_LIB_PREFIX)plds4.lib \
$(DIST)/lib/$(NSPR31_LIB_PREFIX)nspr4.lib \
$(DIST)/lib/$(LIB_PREFIX)sectool.$(LIB_SUFFIX) \
$(DIST)/lib/$(IMPORT_LIB_PREFIX)smime3$(IMPORT_LIB_SUFFIX) \
$(DIST)/lib/$(IMPORT_LIB_PREFIX)ssl3$(IMPORT_LIB_SUFFIX) \
$(DIST)/lib/$(IMPORT_LIB_PREFIX)nss3$(IMPORT_LIB_SUFFIX) \
$(DIST)/lib/$(NSPR31_LIB_PREFIX)plc4.$(LIB_SUFFIX) \
$(DIST)/lib/$(NSPR31_LIB_PREFIX)plds4.$(LIB_SUFFIX) \
$(DIST)/lib/$(NSPR31_LIB_PREFIX)nspr4.$(LIB_SUFFIX) \
$(NULL)

# $(PROGRAM) has NO explicit dependencies on $(OS_LIBS)
Expand All @@ -165,8 +165,8 @@ EXTRA_LIBS += \
winmm.lib \
$(NULL)

JAR_LIBS = $(DIST)/lib/jar.lib \
$(DIST)/lib/zlib.lib \
JAR_LIBS = $(DIST)/lib/$(LIB_PREFIX)jar.$(LIB_SUFFIX) \
$(DIST)/lib/$(LIB_PREFIX)zlib.$(LIB_SUFFIX) \
$(NULL)
else

Expand Down
2 changes: 2 additions & 0 deletions security/nss/cmd/rsaperf/Makefile
Expand Up @@ -55,7 +55,9 @@ include ../platlibs.mk

ifeq (,$(filter-out WINNT WIN95 WIN16,$(OS_TARGET))) #omits WINCE
ifndef BUILD_OPT
ifndef NS_USE_GCC
LDFLAGS += /subsystem:console /profile /debug /machine:I386 /incremental:no
endif
OS_CFLAGS += -D_CONSOLE
endif
endif
Expand Down
2 changes: 2 additions & 0 deletions security/nss/cmd/tstclnt/Makefile
Expand Up @@ -56,7 +56,9 @@ include ../platlibs.mk

ifeq (,$(filter-out WINNT WIN95 WIN16,$(OS_TARGET))) # omits WINCE
ifndef BUILD_OPT
ifndef NS_USE_GCC
LDFLAGS += /subsystem:console /profile /debug /machine:I386 /incremental:no
endif
OS_CFLAGS += -D_CONSOLE
endif
endif
Expand Down
2 changes: 2 additions & 0 deletions security/nss/cmd/vfyserv/Makefile
Expand Up @@ -56,7 +56,9 @@ include ../platlibs.mk

ifeq (,$(filter-out WINNT WIN95 WIN16,$(OS_TARGET))) # omits WINCE
ifndef BUILD_OPT
ifndef NS_USE_GCC
LDFLAGS += /subsystem:console /profile /debug /machine:I386 /incremental:no
endif
OS_CFLAGS += -D_CONSOLE
endif
endif
Expand Down

0 comments on commit d2e3f77

Please sign in to comment.