diff --git a/mozilla/config/autoconf.mk.in b/mozilla/config/autoconf.mk.in index 41af566bfad..681840dc53c 100644 --- a/mozilla/config/autoconf.mk.in +++ b/mozilla/config/autoconf.mk.in @@ -492,6 +492,7 @@ GLIB_LIBS = @GLIB_LIBS@ GLIB_GMODULE_LIBS = @GLIB_GMODULE_LIBS@ LIBIDL_CFLAGS = @LIBIDL_CFLAGS@ LIBIDL_LIBS = @LIBIDL_LIBS@ +STATIC_LIBIDL = @STATIC_LIBIDL@ MOZ_NATIVE_MAKEDEPEND = @SYSTEM_MAKEDEPEND@ diff --git a/mozilla/config/config.mk b/mozilla/config/config.mk index 44a879bef7c..03b4a98690f 100644 --- a/mozilla/config/config.mk +++ b/mozilla/config/config.mk @@ -575,17 +575,12 @@ ifeq ($(OS_ARCH)_$(GNU_CC),WINNT_) #// #//------------------------------------------------------------------------ ifdef USE_STATIC_LIBS -ifeq (,$(filter-out 1200 1300 1310,$(_MSC_VER))) -RTL_FLAGS=-ML # Statically linked non-multithreaded LIBC RTL -ifneq (,$(MOZ_DEBUG)$(NS_TRACE_MALLOC)) -RTL_FLAGS=-MLd # Statically linked non-multithreaded LIBC debug RTL -endif # MOZ_DEBUG || NS_TRACE_MALLOC -else RTL_FLAGS=-MT # Statically linked multithreaded RTL ifneq (,$(MOZ_DEBUG)$(NS_TRACE_MALLOC)) +ifndef MOZ_NO_DEBUG_RTL RTL_FLAGS=-MTd # Statically linked multithreaded MSVC4.0 debug RTL +endif endif # MOZ_DEBUG || NS_TRACE_MALLOC -endif # _MSC_VER else # !USE_STATIC_LIBS diff --git a/mozilla/configure.in b/mozilla/configure.in index 9b2faad172a..471008a9623 100644 --- a/mozilla/configure.in +++ b/mozilla/configure.in @@ -1753,7 +1753,13 @@ case "$target" in AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/include/glib.h .]) fi GLIB_CFLAGS="-I${_GLIB_PREFIX_DIR}/include" - GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib" + if test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"; then + GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib" + elif test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"; then + GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib" + else + AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/lib/glib-1.2.lib or $_GLIB_PREFIX_DIR/lib/glib-1.2_s.lib]) + fi if test -n "$LIBIDL_PREFIX"; then _LIBIDL_PREFIX_DIR=`cd $LIBIDL_PREFIX && pwd` @@ -1772,17 +1778,40 @@ case "$target" in AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/include/libIDL/IDL.h .]) fi LIBIDL_CFLAGS="-I${_LIBIDL_PREFIX_DIR}/include ${GLIB_CFLAGS}" - LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib ${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib" + if test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"; then + LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib" + STATIC_LIBIDL=1 + elif test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"; then + LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib" + else + AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/lib/libidl-0.6.lib or $_LIBIDL_PREFIX_DIR/lib/libidl-0.6_s.lib]) + fi + LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}" ;; + *) # else cross-compiling if test -n "$GLIB_PREFIX"; then GLIB_CFLAGS="-I${GLIB_PREFIX}/include" - GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2.lib" + if test -f "${GLIB_PREFIX}/lib/glib-1.2_s.lib"; then + GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2_s.lib" + elif test -f "${GLIB_PREFIX}/lib/glib-1.2.lib"; then + GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2.lib" + else + AC_MSG_ERROR([Cannot find $GLIB_PREFIX/lib/glib-1.2.lib or $GLIB_PREFIX/lib/glib-1.2_s.lib]) + fi fi if test -n "$LIBIDL_PREFIX"; then LIBIDL_CFLAGS="-I${LIBIDL_PREFIX}/include ${GLIB_CFLAGS}" - LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6.lib ${GLIB_LIBS}" + if test -f "${LIBIDL_PREFIX}/lib/libidl-0.6_s.lib"; then + LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libidl-0.6_s.lib" + STATIC_LIBIDL=1 + elif test -f "${LIBIDL_PREFIX}/lib/libidl-0.6.lib"; then + LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libidl-0.6.lib" + else + AC_MSG_ERROR([Cannot find $LIBIDL_PREFIX/lib/libidl-0.6.lib or $LIBIDL_PREFIX/lib/libidl-0.6_s.lib]) + fi fi + LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}" ;; esac @@ -6542,6 +6571,7 @@ fi AC_SUBST(LIBIDL_CFLAGS) AC_SUBST(LIBIDL_LIBS) +AC_SUBST(STATIC_LIBIDL) AC_SUBST(GLIB_CFLAGS) AC_SUBST(GLIB_LIBS) AC_SUBST(GLIB_GMODULE_LIBS) diff --git a/mozilla/xpcom/typelib/xpidl/Makefile.in b/mozilla/xpcom/typelib/xpidl/Makefile.in index 333e3f44ca5..618a95d9b3d 100644 --- a/mozilla/xpcom/typelib/xpidl/Makefile.in +++ b/mozilla/xpcom/typelib/xpidl/Makefile.in @@ -70,6 +70,10 @@ HOST_PROGRAM = host_xpidl$(HOST_BIN_SUFFIX) HOST_CSRCS = $(CSRCS) endif +ifdef STATIC_LIBIDL +USE_STATIC_LIBS = 1 +endif + include $(topsrcdir)/config/rules.mk CFLAGS += $(LIBIDL_CFLAGS) @@ -79,7 +83,16 @@ CFLAGS += $(LIBIDL_CFLAGS) ifneq (,$(filter WINNT WINCE OS2,$(OS_ARCH))) DEFINES += -DEXPORT_XPT_API ifndef GNU_CC -LDFLAGS += -SUBSYSTEM:CONSOLE -NODEFAULTLIB:MSVCRTD +LDFLAGS += \ + -SUBSYSTEM:CONSOLE \ + -NODEFAULTLIB:MSVCRTD \ + -NODEFAULTLIB:LIBC \ + $(NULL) + +ifdef STATIC_LIBIDL +LDFLAGS += -NODEFAULTLIB:MSVCRT +endif + endif endif diff --git a/mozilla/xpcom/typelib/xpidl/xpidl_idl.c b/mozilla/xpcom/typelib/xpidl/xpidl_idl.c index 64adaf22ec6..4993b7e447e 100644 --- a/mozilla/xpcom/typelib/xpidl/xpidl_idl.c +++ b/mozilla/xpcom/typelib/xpidl/xpidl_idl.c @@ -662,6 +662,7 @@ free_gslist_data(gpointer data, gpointer user_data) #include #elif XP_WIN /* We get it from stdio.h. */ +#define unlink _unlink #endif int diff --git a/mozilla/xpcom/typelib/xpidl/xpidl_util.c b/mozilla/xpcom/typelib/xpidl/xpidl_util.c index 51ee9cbd838..b47150a6eeb 100644 --- a/mozilla/xpcom/typelib/xpidl/xpidl_util.c +++ b/mozilla/xpcom/typelib/xpidl/xpidl_util.c @@ -41,6 +41,10 @@ #include "xpidl.h" +#ifdef XP_WIN +#define strdup _strdup +#endif + /* XXXbe static */ char OOM[] = "ERROR: out of memory\n"; void *