# The contents of this file are subject to the Netscape 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/NPL/ # # 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 mozilla.org code. # # The Initial Developer of the Original Code is Netscape # Communications Corporation. Portions created by Netscape are # Copyright (C) 1998 Netscape Communications Corporation. All # Rights Reserved. # # Contributor(s): !if !defined(CONFIG_CONFIG_MAK) CONFIG_CONFIG_MAK=1 #//------------------------------------------------------------------------ #// #// Define public make variables: #// #// OBJDIR - Specifies the location of intermediate files (ie. objs...) #// Currently, the names are WINxx_O.OBJ or WINxx_D.OBJ for #// optimized and debug builds respectively. #// #// DIST - Specifies the location of the distribution directory where #// all targets are delivered. #// #// CFGFILE - Specifies the name of the temporary configuration file #// containing the arguments to the current command. #// #// INCS - Default include paths. #// #// CFLAGS - Default compiler options. #// #// LFLAGS - Default linker options. #// #//------------------------------------------------------------------------ #//----------------------------------------------------------------------- #// #// Detect WinNT vs. Win9x and set WINOS appropriately. #// #// Set WINOS in your environment to avoid the timewasting uname call #// #//----------------------------------------------------------------------- !if !defined(WINOS) !if [$(MOZ_TOOLS)\bin\uname > osuname.inc] !endif WINOS=\ !include "osuname.inc" WINOS=$(WINOS: =)^ !if [del osuname.inc] !endif !endif #//----------------------------------------------------------------------- #// #// DIST DEFINITION #// #//----------------------------------------------------------------------- XPDIST=$(DEPTH)\dist !ifdef MODULE PUBLIC=$(XPDIST)\include\$(MODULE) !else PUBLIC=$(XPDIST)\include !endif !ifdef NGLAYOUT_BUILD_PREFIX DIST_PREFIX=NGL !else !ifdef MOZ_NAV_BUILD_PREFIX DIST_PREFIX=NAV !else DIST_PREFIX=WIN !endif !endif !ifndef MOZ_DEBUG OBJDIR=$(DIST_PREFIX)$(MOZ_BITS)$(OBJTYPE)_O.OBJ JAVA_OPTIMIZER = -O !ifdef NO_CAFE JAVAC_OPTIMIZER = !else #JAVAC_OPTIMIZER= -O -noinline JAVAC_OPTIMIZER = !endif !else OBJDIR=$(DIST_PREFIX)$(MOZ_BITS)$(OBJTYPE)_D.OBJ JAVA_OPTIMIZER = -g JAVAC_OPTIMIZER = -g !endif #// #// DIST DEFINES SHOULD NEVER BE COMPONENT SPECIFIC. #// !ifndef MOZ_DEBUG DIST=$(XPDIST)\$(DIST_PREFIX)$(MOZ_BITS)_O.OBJ !else DIST=$(XPDIST)\$(DIST_PREFIX)$(MOZ_BITS)_D.OBJ !endif # This will always give the location of NGLayout's dist, even if "NGLAYOUT_BUILD_PREFIX" is not defined. !if defined(MOZ_NGLAYOUT) !ifndef MOZ_DEBUG NGLAYOUT_DIST=$(XPDIST)\NGL$(MOZ_BITS)_O.OBJ !else NGLAYOUT_DIST=$(XPDIST)\NGL$(MOZ_BITS)_D.OBJ !endif !endif #//----------------------------------------------------------------------- #// #// Basic configuration settings #// #//----------------------------------------------------------------------- !ifndef DISABLE_LDAP LDAP_CFLAGS=-I$(XPDIST)\include\ldap !endif CFGFILE=$(OBJDIR)\cmd.cfg INCS=$(INCS) -I$(PUBLIC) -I$(DIST)\include -I$(XPDIST)\include\nspr !ifdef REQUIRES REQINCS1=REQINCS=-I $(XPDIST)/include/$(REQUIRES: = -I$(XPDIST^)/include/) !if [echo.$(REQINCS1) > reqincs.inc] !endif !include reqincs.inc !if [del reqincs.inc] !endif !endif INCS=$(INCS) -I$(XPDIST)\include $(REQINCS) !if "$(MOZ_BITS)" == "16" CFLAGS=$(MOZ_JAVA_FLAG) -DEDITOR $(OS_CFLAGS) $(MOZ_CFLAGS) !else CFLAGS=$(MOZ_JAVA_FLAG) $(OS_CFLAGS) $(MOZ_CFLAGS) !endif IBMBIDI=1 CFLAGS=$(CFLAGS) -DIBMBIDI !if "$(DISABLE_ACCESSIBILITY)" == "1" !undef ACCESSIBILITY !else ACCESSIBILITY=1 CFLAGS=$(CFLAGS) -DACCESSIBILITY !endif LFLAGS=$(OS_LFLAGS) $(LLFLAGS) $(MOZ_LFLAGS) # This compiles in heap dumping utilities and other good stuff # for developers -- maybe we only want it in for a special SDK # nspr/java runtime(?): !if "$(MOZ_BITS)"=="32" || defined(MOZ_DEBUG) CFLAGS = $(CFLAGS) -DDEVELOPER_DEBUG !endif !ifdef MOZ_BSCFILE CFLAGS = $(CFLAGS) -FR !endif !ifdef NO_LOGGING CFLAGS=$(CFLAGS) -DNS_DISABLE_LOGGING !else CFLAGS=$(CFLAGS) -DMOZ_LOGGING !endif FINAL_LINK_COMPS=$(DIST)\final-link-comps FINAL_LINK_COMP_NAMES=$(DIST)\final-link-comp-names FINAL_LINK_LIBS=$(DIST)\final-link-libs !ifdef MOZ_STATIC_COMPONENT_LIBS # Force _all_ exported methods to be |_declspec(dllexport)| when we're # building them into the executable. CFLAGS=$(CFLAGS) -D_IMPL_NS_APPSHELL CFLAGS=$(CFLAGS) -D_IMPL_NS_COOKIE CFLAGS=$(CFLAGS) -D_IMPL_NS_DOM CFLAGS=$(CFLAGS) -D_IMPL_NS_GFX CFLAGS=$(CFLAGS) -D_IMPL_NS_HTML CFLAGS=$(CFLAGS) -D_IMPL_NS_HTMLPARS CFLAGS=$(CFLAGS) -D_IMPL_NS_INTL CFLAGS=$(CFLAGS) -D_IMPL_NS_LAYOUT CFLAGS=$(CFLAGS) -D_IMPL_NS_MSG_BASE CFLAGS=$(CFLAGS) -D_IMPL_NS_NET CFLAGS=$(CFLAGS) -D_IMPL_NS_PICS CFLAGS=$(CFLAGS) -D_IMPL_NS_PLUGIN CFLAGS=$(CFLAGS) -D_IMPL_NS_RDF CFLAGS=$(CFLAGS) -D_IMPL_NS_VIEW CFLAGS=$(CFLAGS) -D_IMPL_NS_WEB CFLAGS=$(CFLAGS) -D_IMPL_NS_WIDGET !endif #//----------------------------------------------------------------------- #// #// feature-specific configuration settings #// #//----------------------------------------------------------------------- # For modular netlib support. CFLAGS=$(CFLAGS) -DNS_MT_SUPPORTED -DNETLIB_THREAD -DNS_NET_FILE # Defines for cookie management feature... CFLAGS=$(CFLAGS) -DCookieManagement # Defines for single signon and client wallet features... !ifndef MOZ_NO_WALLET_HACK CFLAGS=$(CFLAGS) -DSingleSignon -DClientWallet !endif # TODO Cleanup later -Gagan !ifdef NU_CACHE CFLAGS=$(CFLAGS) -DNU_CACHE !endif # always need these: CFLAGS = $(CFLAGS) -DNETSCAPE # Specify that we are building a client. # This will instruct the cross platform libraries to # include all the client specific cruft. !if defined(SERVER_BUILD) CFLAGS = $(CFLAGS) -DSERVER_BUILD !elseif defined(LIVEWIRE) CFLAGS = $(CFLAGS) -DLIVEWIRE !else CFLAGS = $(CFLAGS) -DMOZILLA_CLIENT !endif # need this everywhere jsapi.h might be included CFLAGS=$(CFLAGS) -DJS_THREADSAFE !if "$(STAND_ALONE_JAVA)" == "1" CFLAGS=$(CFLAGS) -DSTAND_ALONE_JAVA !endif NECKO=1 CFLAGS=$(CFLAGS) -DNECKO !if defined(XPCOM_STANDALONE) CFLAGS=$(CFLAGS) -DXPCOM_STANDALONE !endif !if defined(XPCONNECT_STANDALONE) CFLAGS=$(CFLAGS) -DXPCONNECT_STANDALONE !endif # Enable output of performance metrics if MOZ_PERF is set !ifdef MOZ_PERF CFLAGS=$(CFLAGS) -DMOZ_PERF_METRICS !endif # Enable timeline service if MOZ_TIMELINE is set !ifdef MOZ_TIMELINE CFLAGS=$(CFLAGS) -DMOZ_TIMELINE !endif !ifndef MOZ_JAVA MOZ_OJI = 1 # on by default now !endif !ifdef MOZ_LIBTEST MOZ_LIBTEST = 1 CFLAGS=$(CFLAGS) -DLAYPROBE_API !endif !ifdef MOZ_JAVA MOZ_JAVA_FLAG=-DJAVA !ifdef MOZ_OJI !error You can't define both MOZ_JAVA and MOZ_OJI anymore. !endif JAVA_OR_OJI = 1 JAVA_OR_NSJVM = 1 !endif !ifdef NSJVM JAVA_OR_NSJVM = 1 AWT_11 = 1 # always build awt 1.1 with nsjvm now !endif !ifdef MOZ_OJI CFLAGS=$(CFLAGS) -DOJI JAVA_OR_OJI=1 !endif !ifdef SMART_MAIL CFLAGS=$(CFLAGS) -DSMART_MAIL !endif !ifdef MOZ_TRACE_XPCOM_REFCNT CFLAGS=$(CFLAGS) -DMOZ_TRACE_XPCOM_REFCNT !endif !ifdef MOZ_TRACE_MALLOC CFLAGS=$(CFLAGS) -DNS_TRACE_MALLOC !endif !ifdef MOZ_SMOOTH_PROGRESS CFLAGS=$(CFLAGS) -DSMOOTH_PROGRESS !endif !if defined(USE_STRING2) CFLAGS = $(CFLAGS) -DUSE_STRING2 !endif #!ifdef MOZ_XUL MOZ_XUL=1 CFLAGS=$(CFLAGS) -DINCLUDE_XUL -DMOZ_XUL #!endif !ifdef MOZ_MATHML CFLAGS=$(CFLAGS) -DMOZ_MATHML !endif !ifdef MOZ_SVG CFLAGS=$(CFLAGS) -DMOZ_SVG !endif !ifdef MOZ_DEBUG CFLAGS=$(CFLAGS) -DMOZ_REFLOW_PERF -DMOZ_REFLOW_PERF_DSP !endif CFLAGS=$(CFLAGS) -DUSE_IMG2 !ifdef MOZ_STATIC_COMPONENT_LIBS CFLAGS=$(CFLAGS) -DXPCOM_TRANSLATE_NSGM_ENTRY_POINT -DMOZ_STATIC_COMPONENT_LIBS !endif #//----------------------------------------------------------------------- #// #// build tools #// #//----------------------------------------------------------------------- NMAKE=nmake -nologo -$(MAKEFLAGS) # grab the perl from the user's path (probably need 5.005) PERL = perl.exe #if MOZILLA_OFFICIAL is set, then define splitsym !if defined (MOZILLA_OFFICIAL) SPLITSYM = $(MOZ_TOOLS)\bin\splitsym !endif # use find !ifndef FIND FIND = find.exe !endif MASM = $(MOZ_TOOLS)\bin\ml.exe !if "$(WINOS)" == "WIN95" MKDIR = $(DEPTH)\config\w95mkdir QUIET = !else MKDIR = mkdir QUIET=@ !endif #//------------------------------------------------------------------------ #// #// Include the OS dependent configuration information #// #//------------------------------------------------------------------------ include <$(DEPTH)/config/WIN$(MOZ_BITS)> !ifdef MOZ_DEBUG !ifdef USERNAME CFLAGS = $(CFLAGS) -DDEBUG_$(USERNAME) !endif !endif !if (defined(MOZ_COVERAGE) && !defined(MOZ_NO_COVERAGE)) || (defined(GLOWCODE) && defined(GLOWPROF) && "$(MOZ_BITS)"=="32") CFLAGS = $(CFLAGS) /Gh !endif #//------------------------------------------------------------------------ #// #// Define the global make commands. #// #// MAKE_INSTALL - Copy a target to the distribution directory. #// #// MAKE_OBJDIRS - Create an object directory (if necessary). #// #// MAKE_MANGLE - Convert all long filenames into 8.3 names #// #// MAKE_UNMANGLE - Restore all long filenames #// #//------------------------------------------------------------------------ !if !defined(MOZ_SRC) #enable builds on any drive if defined. MOZ_SRC=y: !endif MAKE_INSTALL=$(QUIET)$(DEPTH)\config\makecopy.exe MAKE_MANGLE=$(DEPTH)\config\mangle.exe MAKE_UNMANGLE=if exist unmangle.bat call unmangle.bat !if defined(MOZ_PURIFY) # add #line directive to header files for purify MKCPYFLAGS= -i !endif #//------------------------------------------------------------------------ #// #// Common Libraries #// #//------------------------------------------------------------------------ NSPR_VERSION=4 LIBNSPR=$(DIST)\lib\nspr$(NSPR_VERSION).lib $(DIST)\lib\plds$(NSPR_VERSION).lib $(DIST)\lib\plc$(NSPR_VERSION).lib LIBPLC=$(DIST)\lib\plc$(NSPR_VERSION).lib NSPRDIR = nsprpub CFLAGS = $(CFLAGS) -DNSPR20 LIBJPEG=$(DIST)\lib\jpeg$(MOZ_BITS)$(VERSION_NUMBER).lib #//------------------------------------------------------------------------ #// #// Windows-Specific Java Stuff #// #// (Is this used anymore? Even if it is should it be in config.mak?) #// #//------------------------------------------------------------------------ PATH_SEPARATOR = ; !ifndef JAVA_HOME JAVA_HOME=$(JDKHOME) !endif # where the bytecode will go !if "$(AWT_11)" == "1" JAVA_DESTPATH = $(MOZ_SRC)\mozilla\dist\classes11 !else JAVA_DESTPATH = $(MOZ_SRC)\mozilla\dist\classes !endif # where the source are DEFAULT_JAVA_SOURCEPATH = $(MOZ_SRC)\mozilla\sun-java\classsrc !ifndef JAVA_SOURCEPATH !if "$(AWT_11)" == "1" JAVA_SOURCEPATH = $(MOZ_SRC)\mozilla\sun-java\classsrc11;$(DEFAULT_JAVA_SOURCEPATH) !else JAVA_SOURCEPATH = $(DEFAULT_JAVA_SOURCEPATH) !endif !endif JAVA_PROG=$(MOZ_TOOLS)\bin\java.exe #JAVA_PROG=$(DIST)\bin\java JAVAC_ZIP=$(JAVA_HOME)\lib\classes.zip ZIP_PROG = $(MOZ_TOOLS)\bin\zip UNZIP_PROG = $(MOZ_TOOLS)\bin\unzip ZIP_COMPR = 9 ZIP_FLAGS = -$(ZIP_COMPR)r CFLAGS = $(CFLAGS) -DOS_HAS_DLL DLL_SUFFIX = dll LIB_SUFFIX = lib !if "$(STAND_ALONE_JAVA)" == "1" STAND_ALONE_JAVA_DLL_SUFFIX=s !else STAND_ALONE_JAVA_DLL_SUFFIX= !endif MOD_JRT=jrt$(MOZ_BITS)$(VERSION_NUMBER) MOD_MM =mm$(MOZ_BITS)$(VERSION_NUMBER) MOD_AWT=awt$(MOZ_BITS)$(VERSION_NUMBER) MOD_AWTS=awt$(MOZ_BITS)$(VERSION_NUMBER)$(STAND_ALONE_JAVA_DLL_SUFFIX) MOD_JIT=jit$(MOZ_BITS)$(VERSION_NUMBER) MOD_JSJ=jsj$(MOZ_BITS)$(VERSION_NUMBER) MOD_NET=net$(MOZ_BITS)$(VERSION_NUMBER) MOD_JBN=jbn$(MOZ_BITS)$(VERSION_NUMBER) MOD_NSC=nsc$(MOZ_BITS)$(VERSION_NUMBER) MOD_JPW=jpw$(MOZ_BITS)$(VERSION_NUMBER) MOD_JDB=jdb$(MOZ_BITS)$(VERSION_NUMBER) MOD_ZPW=zpw$(MOZ_BITS)$(VERSION_NUMBER) MOD_CON=con$(MOZ_BITS)$(VERSION_NUMBER) MOD_NPJ=npj$(MOZ_BITS)$(VERSION_NUMBER) JRTDLL=$(MOD_JRT).$(DLL_SUFFIX) MMDLL =$(MOD_MM).$(DLL_SUFFIX) AWTDLL=$(MOD_AWT).$(DLL_SUFFIX) AWTSDLL=$(MOD_AWT)$(STAND_ALONE_JAVA_DLL_SUFFIX).$(DLL_SUFFIX) JITDLL=$(MOD_JIT).$(DLL_SUFFIX) JSJDLL=$(MOD_JSJ).$(DLL_SUFFIX) NETDLL=$(MOD_NET).$(DLL_SUFFIX) JBNDLL=$(MOD_JBN).$(DLL_SUFFIX) NSCDLL=$(MOD_NSC).$(DLL_SUFFIX) JPWDLL=$(MOD_JPW).$(DLL_SUFFIX) JDBDLL=$(MOD_JDB).$(DLL_SUFFIX) ZPWDLL=$(MOD_ZPW).$(DLL_SUFFIX) CONDLL=$(MOD_CON).$(DLL_SUFFIX) NPJDLL=$(MOD_NPJ).$(DLL_SUFFIX) AWTLIB=$(DIST)\lib\$(MOD_AWT).$(LIB_SUFFIX) ###################################################################### include <$(DEPTH)/config/common.mk> JAVA_DEFINES = \ -DJAR_NAME=\"$(JAR_NAME)\" \ -DJRTDLL=\"$(JRTDLL)\" \ -DMMDLL=\"$(MMDLL)\" \ -DAWTDLL=\"$(AWTDLL)\" \ -DAWTSDLL=\"$(AWTSDLL)\" \ -DJSJDLL=\"$(JSJDLL)\" \ -DJITDLL=\"$(JITDLL)\" \ -DNETDLL=\"$(NETDLL)\" \ -DJBNDLL=\"$(JBNDLL)\" \ -DNSCDLL=\"$(NSCDLL)\" \ -DJDBDLL=\"$(JDBDLL)\" \ -DJPWDLL=\"$(JPWDLL)\" \ -DZPWDLL=\"$(ZPWDLL)\" \ -DCONDLL=\"$(CONDLL)\" !if "$(MOZ_BITS)" == "16" # Override JAVA_DEFINES to make command line short for win16. # Put any new defines into javadefs.h in ns/sun-java/include. # This is to shorten the command line in order not to break Win16. JAVA_DEFINES = -DJAR_NAME=\"$(JAR_NAME)\" -DMOZ_BITS=\"$(MOZ_BITS)\" -DVERSION_NUMBER=\"$(VERSION_NUMBER)\" -DDLL_SUFFIX=\".$(DLL_SUFFIX)\" !endif !if "$(AWT_11)" == "1" JAVA_DEFINES = $(JAVA_DEFINES) -DAWT_11 !else JAVA_DEFINES = $(JAVA_DEFINES) -DAWT_102 !endif #JAVA_CLASSPATH = $(JAVA_CLASSPATH:/=\) JMCSRCDIR = $(JMCSRCDIR:/=\) JAVA_BOOT_CLASSPATH = $(JAVA_BOOT_CLASSPATH:/=\) ######## # Get the cwd to prepend to all compiled source # files. Will allow debugger to automatically find sources # instead of asking for the path info. # Win16 will break if enabled, guess we continue to live in pain # therein. ######## !if "$(MOZ_BITS)" == "32" CURDIR=$(MAKEDIR)^\ !endif XPIDL_PROG=$(DIST)\bin\xpidl.exe XPTLINK_PROG=$(DIST)\bin\xpt_link.exe # XXX If you change this name, be _sure_ to update rules.mak; # specifically, the rules that compute XPIDL_HEADERS and # XPIDL_TYPELIBS. 'nmake' is too dumb to allow recursive macro # substitution. XPIDL_GEN_DIR=.\_xpidlgen #MOZ_DISABLE_JAR_PACKAGING=1 # temporary !endif # CONFIG_CONFIG_MAK