1999-11-06 06:40:37 +03:00
# 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/
1998-03-28 05:44:41 +03:00
#
1999-11-06 06:40:37 +03:00
# 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.
1998-03-28 05:44:41 +03:00
#
1999-11-06 06:40:37 +03:00
# The Original Code is mozilla.org code.
#
# The Initial Developer of the Original Code is Netscape
1998-03-28 05:44:41 +03:00
# Communications Corporation. Portions created by Netscape are
1999-11-06 06:40:37 +03:00
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s):
1998-03-28 05:44:41 +03:00
! i f ! d e f i n e d ( V E R B O S E )
.SILENT :
! e n d i f
#//------------------------------------------------------------------------
#//
#// This makefile contains all of the common rules shared by all other
#// makefiles.
#//
#//------------------------------------------------------------------------
! i f ! d e f i n e d ( C O N F I G _ R U L E S _ M A K )
CONFIG_RULES_MAK = 1
#//------------------------------------------------------------------------
#// Assumed variables by the manifest.
#//------------------------------------------------------------------------
! i f ! d e f i n e d ( P A C K A G E )
PACKAGE = .
! e n d i f # PACKAGE
! i f ! d e f i n e d ( J D K _ G E N _ D I R )
JDK_GEN_DIR = _gen
! e n d i f
! i f ! d e f i n e d ( J D K _ S T U B _ D I R )
JDK_STUB_DIR = _stubs
! e n d i f
! i f ! d e f i n e d ( J M C _ G E N _ D I R )
1998-08-01 03:41:45 +04:00
! i f d e f i n e d ( J A V A _ O R _ N S J V M )
1998-03-28 05:44:41 +03:00
JMC_GEN_DIR = _jmc
! e l s e
JMC_GEN_DIR = $( LOCAL_JMC_SUBDIR)
! e n d i f
! e n d i f
! i f ! d e f i n e d ( J R I _ G E N _ D I R )
JRI_GEN_DIR = _jri
! e n d i f
1998-08-01 03:41:45 +04:00
! i f ! d e f i n e d ( J N I _ G E N _ D I R )
JNI_GEN_DIR = _jni
! e n d i f
1998-03-28 05:44:41 +03:00
#//------------------------------------------------------------------------
#// Make sure that JDIRS is set after the manifest file is included
#// and before the rules for JDIRS get generated. We cannot put this line
#// in the makefile.win after including rules.mak as the rules would already
#// be generated based on JDIRS set in manifest.mn. We cannot put in ifdefs in
#// manifest.mn too I was told.
#//------------------------------------------------------------------------
! i f d e f J D I R S
JDIRS = $( JDIRS) $( JSCD)
! i f "$(STAND_ALONE_JAVA)" = = "1"
JDIRS = $( JDIRS) $( SAJDIRS)
! e n d i f
! e n d i f
! i f "$(MOZ_BITS)" = = "16"
#//------------------------------------------------------------------------
#// All public win16 headers go to a single directory
#// due to compiler limitations.
#//------------------------------------------------------------------------
MODULE = win16
! e n d i f # 16
OBJS = $( OBJS) $( C_OBJS) $( CPP_OBJS)
i n c l u d e < $( DEPTH ) / c o n f i g / c o n f i g . m a k >
2001-06-21 00:21:49 +04:00
! i f "$(WINOS)" = = "WIN95"
_NO_FLOCK = -l
! e l s e
_NO_FLOCK =
! e n d i f
#//------------------------------------------------------------------------
#//
#// Definitions for building components. A ``component'' is a module
#// that has an NSGetModule entry point that can be called to enumerate
#// the XPCOM components contained in the module. A component can either
#// be built as a stand-alone DLL, or as a static library which can be
#// linked with other components to form a ``meta-component'' or included
#// in a final executable.
#//
#// MODULE_NAME
#// If set, indicates that we're building a ``component''. This value
#// should be set to the name of the generic module (as declared by
#// the NS_IMPL_NSGENERICMODULE macro; e.g., ``nsLayoutModule'').
#//
#// LIBRARY_NAME
#// For a component, the name of the library that will be generated;
#// e.g., ``gklayout''.
#//
#// META_COMPONENT
#// If set, the component is included in the packaging list for the
#// specified meta-component; if unset, the component is linked into
#// the final executable. This is only meaningful during a static
#// build.
#//
#// SUB_LIBRARIES
#// If the component is comprised of static libraries, then this
#// lists those libraries.
#//
#// LLIBS
#// Any extra library dependencies that are required when the component
#// is built as a DLL.
#//
#// When doing a ``dynamic build'', the component will be linked as a stand-
#// alone DLL which will be installed in the $(DIST)/bin/components directory.
#// No import library will be created.
#//
#// When doing a ``static build'', the component will be linked into a
#// static library which is installed in the $(DIST)/lib directory, and
#// either linked with the appropriate META_COMPONENT DLL, or the final
#// executable if no META_COMPONENT is set.
#//
#//------------------------------------------------------------------------
! i f d e f i n e d ( M O D U L E _ N A M E )
# We're building a component
! i f d e f i n e d ( E X P O R T _ L I B R A R Y )
! e r r o r "Can't define both MODULE_NAME and EXPORT_LIBRARY."
! e n d i f
! i f d e f i n e d ( M O Z _ S T A T I C _ C O M P O N E N T _ L I B S )
MAKE_OBJ_TYPE = $( NULL)
! i f d e f i n e d ( M E T A _ C O M P O N E N T )
META_LINK_COMPS = $( DIST) \$ ( META_COMPONENT) -link-comps
META_LINK_COMP_NAMES = $( DIST) \$ ( META_COMPONENT) -link-comp-names
! e n d i f
LIBRARY = .\$ ( OBJDIR) \$ ( LIBRARY_NAME) .lib
! e l s e
# Build the component as a standalone DLL
MAKE_OBJ_TYPE = DLL
DLL = .\$ ( OBJDIR) \$ ( LIBRARY_NAME) .dll
LLIBS = $( SUB_LIBRARIES) $( LLIBS)
! e n d i f
! e n d i f
#//------------------------------------------------------------------------
#//
#// Definitions for building top-level export libraries.
#//
#// EXPORT_LIBRARY
#// If set (typically to ``1''), indicates that we're building a
#// ``top-level export library''.
#//
#// LIBRARY_NAME
#// Set to the name of the library.
#//
#// META_COMPONENT
#// If set, the name of the meta-component to which this export
#// library belongs. If unset, the export library is linked with
#// the final executable.
#//
#//------------------------------------------------------------------------
! i f d e f i n e d ( E X P O R T _ L I B R A R Y )
# We're building a top-level, non-component library
! i f d e f i n e d ( M O Z _ S T A T I C _ C O M P O N E N T _ L I B S )
# Build it as a static lib, not a DLL
MAKE_OBJ_TYPE = $( NULL)
! i f d e f i n e d ( M E T A _ C O M P O N E N T )
META_LINK_LIBS = $( DIST) \$ ( META_COMPONENT) -link-libs
! e n d i f
LIBRARY = .\$ ( OBJDIR) \$ ( LIBRARY_NAME) .lib
! e l s e
# Build the library as a standalone DLL
MAKE_OBJ_TYPE = DLL
DLL = .\$ ( OBJDIR) \$ ( LIBRARY_NAME) .dll
LLIBS = $( SUB_LIBRARIES) $( LLIBS)
! e n d i f
! e n d i f
#//------------------------------------------------------------------------
#//
#// Definitions for miscellaneous libraries that are not components or
#// top-level export libraries.
#//
#// LIBRARY_NAME
#// The name of the library to be created.
#//
#//------------------------------------------------------------------------
! i f d e f i n e d ( L I B R A R Y _ N A M E ) & & ! d e f i n e d ( M O D U L E _ N A M E ) & & ! d e f i n e d ( E X P O R T _ L I B R A R Y )
! i f ! d e f i n e d ( L I B R A R Y )
LIBRARY = $( OBJDIR) \$ ( LIBRARY_NAME) .lib
! e n d i f
! e n d i f
1998-03-28 05:44:41 +03:00
#//------------------------------------------------------------------------
#//
#// Specify a default target if non was set...
#//
#//------------------------------------------------------------------------
! i f n d e f T A R G E T S
TARGETS = $( PROGRAM) $( LIBRARY) $( DLL)
! e n d i f
! i f n d e f M A K E _ A R G S
#MAKE_ARGS=all
! e n d i f
1998-04-08 00:41:06 +04:00
! i f "$(WINOS)" = = "WIN95"
1998-04-22 01:22:54 +04:00
W95MAKE = $( DEPTH) \c onfig\w 95make.exe
1998-04-08 00:41:06 +04:00
W32OBJS = $( OBJS:.obj= .obj, )
W32LOBJS = $( OBJS: .= +-.)
! e n d i f
1999-11-28 06:05:01 +03:00
all ::
1998-03-28 05:44:41 +03:00
$( NMAKE) -f makefile.win export
$( NMAKE) -f makefile.win install
#//------------------------------------------------------------------------
#//
#// Setup tool flags for the appropriate type of objects being built
#// (either DLL or EXE)
#//
#//------------------------------------------------------------------------
! i f "$(MAKE_OBJ_TYPE)" = = "DLL"
CFLAGS = $( DLL_CFLAGS) $( CFLAGS)
LFLAGS = $( DLL_LFLAGS) $( LFLAGS)
OS_LIBS = $( DLL_LIBS) $( OS_LIBS)
! e l s e
CFLAGS = $( EXE_CFLAGS) $( CFLAGS)
LFLAGS = $( EXE_LFLAGS) $( LFLAGS)
OS_LIBS = $( EXE_LIBS) $( OS_LIBS)
! e n d i f
1999-03-06 02:24:48 +03:00
#//------------------------------------------------------------------------
#//
#// Use various library names as default name for PDB Files
#//
#// LIBRARY_NAME - Static Library
#// DLLNAME - Dynamic Load Library
#//
#//
#//------------------------------------------------------------------------
# Replace optimizer and pdb related flags to use our own conventions
! i f d e f L I B R A R Y _ N A M E
PDBFILE = $( LIBRARY_NAME)
! e n d i f
# Replace optimizer and pdb related flags to use our own conventions
! i f d e f D L L N A M E
PDBFILE = $( DLLNAME)
! e n d i f
1998-03-28 05:44:41 +03:00
#//------------------------------------------------------------------------
#//
#// Prepend the "object directory" to any public make variables.
#// PDBFILE - File containing debug info
#// RESFILE - Compiled resource file
#// MAPFILE - MAP file for an executable
#//
#//------------------------------------------------------------------------
! i f d e f P D B F I L E
1999-03-09 01:40:17 +03:00
PDBFILE = .\$ ( OBJDIR) \$ ( PDBFILE) .pdb
1998-03-28 05:44:41 +03:00
! e l s e
1999-10-29 02:36:22 +04:00
PDBFILE = .\$ *.pdb # used for executables
1998-03-28 05:44:41 +03:00
! e n d i f
! i f d e f R E S F I L E
RESFILE = .\$ ( OBJDIR) \$ ( RESFILE)
! e n d i f
! i f d e f M A P F I L E
MAPFILE = .\$ ( OBJDIR) \$ ( MAPFILE)
! e n d i f
! i f d e f D I R S
#//------------------------------------------------------------------------
#//
#// Rule to recursively make all subdirectories specified by the DIRS target
#//
#//------------------------------------------------------------------------
$(DIRS) ::
1998-04-08 00:41:06 +04:00
! i f "$(WINOS)" = = "WIN95"
1998-10-15 16:38:26 +04:00
! i f d e f i n e d ( V E R B O S E )
1998-04-08 00:41:06 +04:00
@echo +++ make: cannot recursively make on win95 using command.com, use w95make.
1998-10-15 16:38:26 +04:00
! e n d i f
1998-04-08 00:41:06 +04:00
! e l s e
1998-03-28 05:44:41 +03:00
@echo +++ make: %MAKE_ARGS% in $( MAKEDIR) \$ @
@cd $@
@$( NMAKE) -f makefile.win %%MAKE_ARGS%%
@cd $( MAKEDIR)
1998-04-08 00:41:06 +04:00
! e n d i f
1998-03-28 05:44:41 +03:00
! e n d i f # DIRS
#//------------------------------------------------------------------------
#//
#// Created directories
#//
#//------------------------------------------------------------------------
$(JAVA_DESTPATH) :
! i f "$(AWT_11)" = = "1"
-mkdir $( XPDIST:/= \) \c lasses11
! e l s e
-mkdir $( XPDIST:/= \) \c lasses
! e n d i f
$(JAVA_DESTPATH)\$(PACKAGE) : $( JAVA_DESTPATH )
! i f "$(AWT_11)" = = "1"
-mkdir $( XPDIST:/= \) \c lasses11\$ ( PACKAGE:/= \)
! e l s e
-mkdir $( XPDIST:/= \) \c lasses\$ ( PACKAGE:/= \)
! e n d i f
$(JMCSRCDIR) :
-mkdir $( JMCSRCDIR)
1999-06-12 08:30:44 +04:00
$(PUBLIC) :
1999-06-03 22:34:27 +04:00
-mkdir $( XPDIST:/= \) \i nclude
1998-03-28 05:44:41 +03:00
! i f d e f I D L _ G E N
#//------------------------------------------------------------------------
#//
#// IDL Stuff
#//
#//------------------------------------------------------------------------
idl ::
@echo +++ make: Starting osagent
@start $( DEPTH) \m odules\i iop\t ools\w in32\o sagent
@echo +++ make: idl2java $( IDL_GEN)
@type <<cmd.c fg
$( IDL 2JAVA_FLAGS ) $( IDL_GEN )
< <
@$( IDL2JAVA_PROG) -argfile cmd.cfg
@del cmd.cfg
! e n d i f # IDL_GEN
TMPDIR = $( MOZ_SRC) \t mp
$(TMPDIR) :
-mkdir $( TMPDIR)
! i f d e f i n e d ( I N S T A L L _ F I L E _ L I S T ) & & d e f i n e d ( I N S T A L L _ D I R )
#//------------------------------------------------------------------------
#//
#// Rule to install the files specified by the INSTALL_FILE_LIST variable
#// into the directory specified by the INSTALL_DIR variable
#//
#//------------------------------------------------------------------------
! i f "$(MOZ_BITS)" = = "16"
#//------------------------------------------------------------------------
#// All public win16 headers go to a single directory
#// due to compiler limitations.
#//------------------------------------------------------------------------
INSTALL_DIR = $( PUBLIC) \w in16
! e n d i f # 16
INSTALL_FILES : $( INSTALL_FILE_LIST )
!$( MAKE_INSTALL) $* * $( INSTALL_DIR)
! e n d i f # INSTALL_FILES
2001-06-21 00:21:49 +04:00
#//------------------------------------------------------------------------
#//
#// Global rules...
#//
#//------------------------------------------------------------------------
#//------------------------------------------------------------------------
#//
#// Rules for building components
#//
#//------------------------------------------------------------------------
! i f d e f i n e d ( M O D U L E _ N A M E )
# We're building a component
! i f d e f i n e d ( E X P O R T _ L I B R A R Y )
! e r r o r "Can't define both MODULE_NAME and EXPORT_LIBRARY."
1998-03-28 05:44:41 +03:00
! e n d i f
2001-06-21 00:21:49 +04:00
! i f d e f i n e d ( M O Z _ S T A T I C _ C O M P O N E N T _ L I B S )
# We're building this component as a static lib
! i f d e f i n e d ( M E T A _ C O M P O N E N T )
# It's to be linked into a meta-component. Add the component name to
# the meta component's list
export ::
2001-08-17 16:06:03 +04:00
$( PERL) -I$( DEPTH) \c onfig $( DEPTH) \c onfig\b uild-list.pl $( _NO_FLOCK) $( META_LINK_COMPS:\= /) $( LIBRARY_NAME)
$( PERL) -I$( DEPTH) \c onfig $( DEPTH) \c onfig\b uild-list.pl $( _NO_FLOCK) $( META_LINK_COMP_NAMES:\= /) $( MODULE_NAME)
2001-06-21 00:21:49 +04:00
! e l s e # defined(META_COMPONENT)
# Otherwise, it's to be linked into the main executable. Add the component
# name to the list of components, and the library name to the list of
# static libs.
export ::
2001-08-17 16:06:03 +04:00
$( PERL) -I$( DEPTH) \c onfig $( DEPTH) \c onfig\b uild-list.pl $( _NO_FLOCK) $( FINAL_LINK_COMPS:\= /) $( LIBRARY_NAME)
$( PERL) -I$( DEPTH) \c onfig $( DEPTH) \c onfig\b uild-list.pl $( _NO_FLOCK) $( FINAL_LINK_COMP_NAMES:\= /) $( MODULE_NAME)
2001-06-21 00:21:49 +04:00
! e n d i f # defined(META_COMPONENT)
install :: $( LIBRARY )
$( MAKE_INSTALL) $( LIBRARY) $( DIST) \l ib
clobber ::
$( RM) $( DIST) \l ib\$ ( LIBRARY_NAME) .lib
! e l s e
# Build the component as a standalone DLL. Do _not_ install the import
# library, because it's a component; nobody should be linking against
# it!
install :: $( DLL )
$( MAKE_INSTALL) $( DLL) $( DIST) \b in\c omponents
clobber ::
$( RM) $( DIST) \b in\c omponents\$ ( DLL)
! e n d i f
! e n d i f
1998-03-28 05:44:41 +03:00
#//------------------------------------------------------------------------
#//
2001-06-21 00:21:49 +04:00
#// Rules for building top-level export libraries
#//
#//------------------------------------------------------------------------
! i f d e f i n e d ( E X P O R T _ L I B R A R Y )
# We're building a top-level, non-component library
! i f d e f i n e d ( M O Z _ S T A T I C _ C O M P O N E N T _ L I B S )
! i f d e f i n e d ( M E T A _ C O M P O N E N T )
# It's to be linked into a meta-component. Add the library to the
# meta component's list
export ::
2001-08-17 16:06:03 +04:00
$( PERL) -I$( DEPTH) \c onfig $( DEPTH) \c onfig\b uild-list.pl $( _NO_FLOCK) $( META_LINK_LIBS:\= /) $( LIBRARY_NAME)
2001-06-21 00:21:49 +04:00
! e l s e # defined(META_COMPONENT)
# Otherwise, it's to be linked into the main executable. Add the
# library to the list of static libs.
export ::
2001-08-17 16:06:03 +04:00
$( PERL) -I$( DEPTH) \c onfig $( DEPTH) \c onfig\b uild-list.pl $( _NO_FLOCK) $( FINAL_LINK_LIBS:\= /) $( LIBRARY_NAME)
2001-06-21 00:21:49 +04:00
! e n d i f # defined(META_COMPONENT)
install :: $( LIBRARY )
$( MAKE_INSTALL) $( LIBRARY) $( DIST) \l ib
clobber ::
$( RM) $( DIST) \l ib\$ ( LIBRARY_NAME) .lib
! e l s e
# Build the library as a standalone DLL. We _will_ install the import
# library in this case, because people may link against it.
install :: $( DLL ) $( OBJDIR ) \$( LIBRARY_NAME ) .lib
$( MAKE_INSTALL) $( DLL) $( DIST) \b in
$( MAKE_INSTALL) $( OBJDIR) \$ ( LIBRARY_NAME) .lib $( DIST) \l ib
clobber ::
$( RM) $( DIST) \b in\$ ( DLL)
$( RM) $( DIST) \l ib\$ ( LIBRARY_NAME) .lib
! e n d i f
! e n d i f
#//------------------------------------------------------------------------
#//
#// Rules for miscellaneous libraries
1998-03-28 05:44:41 +03:00
#//
#//------------------------------------------------------------------------
2001-06-21 00:21:49 +04:00
! i f d e f i n e d ( L I B R A R Y )
install :: $( LIBRARY )
$( MAKE_INSTALL) $( LIBRARY) $( DIST) /lib
clobber ::
rm -f $( DIST) /lib/$( LIBRARY_NAME) .lib
! e n d i f
#//------------------------------------------------------------------------
#//
#// Rules for recursion
#//
#//----------------------------------------------------------------------
1998-03-28 05:44:41 +03:00
#//
#// Set the MAKE_ARGS variable to indicate the target being built... This is used
#// when processing subdirectories via the $(DIRS) rule
#//
1998-04-08 00:41:06 +04:00
#
# Nasty hack to get around the win95 shell's inability to set
# environment variables whilst in a set of target commands
#
! i f "$(WINOS)" = = "WIN95"
clean ::
! i f d e f D I R S
@$( W95MAKE) clean $( MAKEDIR) $( DIRS)
! e n d i f
-$( RM) $( OBJS) $( NOSUCHFILE) NUL 2> NUL
clobber ::
! i f d e f D I R S
@$( W95MAKE) clobber $( MAKEDIR) $( DIRS)
! e n d i f
clobber_all ::
! i f d e f D I R S
@$( W95MAKE) clobber_all $( MAKEDIR) $( DIRS)
! e n d i f
export ::
! i f d e f D I R S
@$( W95MAKE) export $( MAKEDIR) $( DIRS)
! e n d i f # DIRS
install ::
! i f d e f D I R S
@$( W95MAKE) install $( MAKEDIR) $( DIRS)
! e n d i f # DIRS
depend ::
! i f d e f D I R S
@$( W95MAKE) depend $( MAKEDIR) $( DIRS)
! e n d i f # DIRS
mangle ::
! i f d e f D I R S
@$( W95MAKE) mangle $( MAKEDIR) $( DIRS)
! e n d i f # DIRS
$( MAKE_MANGLE)
unmangle ::
! i f d e f D I R S
@$( W95MAKE) unmangle $( MAKEDIR) $( DIRS)
! e n d i f # DIRS
-$( MAKE_UNMANGLE)
! e l s e
1998-03-28 05:44:41 +03:00
clean ::
@set MAKE_ARGS = $@
clobber ::
@set MAKE_ARGS = $@
clobber_all ::
@set MAKE_ARGS = $@
export ::
@set MAKE_ARGS = $@
libs ::
@set MAKE_ARGS = $@
install ::
@set MAKE_ARGS = $@
mangle ::
@set MAKE_ARGS = $@
unmangle ::
@set MAKE_ARGS = $@
depend ::
@set MAKE_ARGS = $@
1998-04-08 00:41:06 +04:00
! e n d i f
1998-03-28 05:44:41 +03:00
#//------------------------------------------------------------------------
#// DEPEND
1999-06-05 06:02:10 +04:00
#//
#// If you ever need to change the set of includes (e.g., you go whack
#// the build rules over in obj.inc), make sure to update the input
#// to $(MAKEDEP). It only looks through the directories that you tell
#// it to.
#//
1998-03-28 05:44:41 +03:00
#//------------------------------------------------------------------------
2001-03-26 12:39:11 +04:00
MAKEDEP = $( DEPTH) \c onfig\m akedep.exe
1998-03-28 05:44:41 +03:00
MAKEDEPFILE = .\$ ( OBJDIR:/= \) \m ake.dep
MAKEDEPDETECT = $( OBJS)
MAKEDEPDETECT = $( MAKEDEPDETECT: = )
MAKEDEPDETECT = $( MAKEDEPDETECT: = )
! i f ! d e f i n e d ( N O D E P E N D ) & & "$(MAKEDEPDETECT)" ! = ""
depend :: $( OBJDIR )
1999-02-19 02:18:40 +03:00
@echo Analyzing dependencies...
1998-03-28 05:44:41 +03:00
$( MAKEDEP) -s -o $( MAKEDEPFILE) @<<
$( LINCS )
1999-06-05 06:02:10 +04:00
$( LINCS_ 1)
$( INCS )
1999-07-14 23:18:53 +04:00
- I $( MAKEDIR )
1998-03-28 05:44:41 +03:00
$( OBJS )
< <
! e n d i f
! I F E X I S T ( $( MAKEDEPFILE ) )
! I N C L U D E < $( MAKEDEPFILE ) >
! E N D I F
export :: $( DIRS )
1999-11-28 06:05:01 +03:00
libs ::
1999-11-30 11:09:12 +03:00
@echo The libs build phase is obsolete.
1998-03-28 05:44:41 +03:00
2001-06-21 00:21:49 +04:00
install :: $( DIRS )
1998-03-28 05:44:41 +03:00
depend :: $( DIRS )
mangle :: $( DIRS )
$( MAKE_MANGLE)
unmangle :: $( DIRS )
-$( MAKE_UNMANGLE)
1999-03-09 12:44:27 +03:00
alltags ::
2000-08-11 03:52:29 +04:00
@echo +++ Making emacs tags
1999-06-08 11:43:32 +04:00
c:\\ mksnt\\ find . -name dist -prune -o ( -name '*.[hc]' -o -name '*.cpp' -o -name '*.idl' ) -print | c:\\ mksnt\\ xargs etags -a
1999-03-09 12:44:27 +03:00
2001-09-13 00:27:13 +04:00
echo-dirs :
@echo.$( DIRS)
echo-module :
@echo.$( MODULE)
echo-requires :
@echo.$( REQUIRES)
echo-incs :
@echo.$( INCS)
1999-03-09 12:44:27 +03:00
1998-03-28 05:44:41 +03:00
#//------------------------------------------------------------------------
#//
#// Rule to create the object directory (if necessary)
#//
#//------------------------------------------------------------------------
$(OBJDIR) :
@echo +++ make: Creating directory: $( OBJDIR)
-mkdir $( OBJDIR)
2001-06-21 00:21:49 +04:00
1998-03-28 05:44:41 +03:00
#//------------------------------------------------------------------------
#//
#// Include the makefile for building the various targets...
#//
#//------------------------------------------------------------------------
i n c l u d e < $( DEPTH ) / c o n f i g / o b j . i n c >
i n c l u d e < $( DEPTH ) / c o n f i g / e x e . i n c >
i n c l u d e < $( DEPTH ) / c o n f i g / d l l . i n c >
i n c l u d e < $( DEPTH ) / c o n f i g / l i b . i n c >
i n c l u d e < $( DEPTH ) / c o n f i g / j a v a . i n c >
#//------------------------------------------------------------------------
#//
1999-08-03 02:18:47 +04:00
#// EXPORTS
1998-03-28 05:44:41 +03:00
#//
1999-08-03 02:18:47 +04:00
#// Names of headers to be copied to common include directory
1998-03-28 05:44:41 +03:00
#//
#//------------------------------------------------------------------------
1999-02-05 01:56:58 +03:00
! i f "$(EXPORTS)" ! = "$(NULL)"
1999-08-03 02:18:47 +04:00
2000-04-11 02:57:29 +04:00
export :: $( EXPORTS )
1999-08-03 02:18:47 +04:00
@echo +++ make: exporting headers
1999-08-06 17:45:09 +04:00
$( MAKE_INSTALL:/= \) $( MKCPYFLAGS) $( EXPORTS) $( PUBLIC)
2001-09-23 07:44:12 +04:00
$( PERL) -I$( DEPTH) \c onfig $( DEPTH) \c onfig\b uild-list.pl $( PUBLIC) /.headerlist $( EXPORTS)
1998-03-28 05:44:41 +03:00
1999-08-06 17:45:09 +04:00
#// don't delete exported stuff on a local clobber, use clobber_all
#clobber::
#!if exist($(PUBLIC))
# @cd $(PUBLIC)
# -$(RM) $(EXPORTS)
# @cd $(MAKEDIR)
#!endif # $(PUBLIC) exists
clobber_all ::
1999-08-03 02:18:47 +04:00
! i f e x i s t ( $( PUBLIC ) )
@cd $( PUBLIC)
-$( RM) $( EXPORTS)
@cd $( MAKEDIR)
! e n d i f # $(PUBLIC) exists
1998-03-28 05:44:41 +03:00
! e n d i f # EXPORTS
#//------------------------------------------------------------------------
#// These rules must follow all lines that define the macros they use
#//------------------------------------------------------------------------
1998-08-01 03:41:45 +04:00
! i f d e f i n e d ( J A V A _ O R _ N S J V M )
1999-08-03 02:18:47 +04:00
GARBAGE = $( GARBAGE) $( JMC_GEN_DIR) $( JMC_HEADERS) $( JMC_STUBS) \
1998-09-17 22:12:36 +04:00
$( JDK_STUB_DIR) $( JRI_GEN_DIR) $( JDK_GEN_DIR) $( JNI_GEN_DIR)
1998-03-28 05:44:41 +03:00
! e n d i f
clean :: $( DIRS )
-$( RM) $( OBJS) $( NOSUCHFILE) NUL 2> NUL
clobber :: $( DIRS )
1999-08-06 17:45:09 +04:00
! i f d e f i n e d ( G A R B A G E ) | | e x i s t ( $( OBJDIR ) )
1998-03-28 05:44:41 +03:00
-$( RM_R) $( GARBAGE) $( OBJDIR) 2> NUL
1999-08-06 17:45:09 +04:00
! e n d i f
1998-03-28 05:44:41 +03:00
clobber_all :: $( DIRS )
1999-08-06 17:45:09 +04:00
! i f d e f i n e d ( G A R B A G E ) | | "$(TARGETS)" ! = " " | | e x i s t ( $( OBJDIR ) )
-$( RM_R) $( TARGETS) $( GARBAGE) $( OBJDIR) 2> NUL
! e n d i f
1998-03-28 05:44:41 +03:00
! i f "$(MOZ_BITS)" = = "32"
CFLAGS = $( CFLAGS) -DNO_JNI_STUBS
! e n d i f
1999-08-03 02:18:47 +04:00
#//------------------------------------------------------------------------
#// XPIDL rules
#//------------------------------------------------------------------------
1999-05-10 22:49:20 +04:00
! i f "$(XPIDLSRCS)" ! = "$(NULL)"
! i f "$(MODULE)" ! = "$(NULL)"
# Generate header files and type libraries from the XPIDLSRCS variable.
.SUFFIXES : .idl .xpt
# XXX Note the direct use of '.\_xpidlgen' instead of
# $(XPIDL_GEN_DIR). 'nmake' is too stupid to deal with recursive macro
# substitution.
XPIDL_INCLUDES = $( XPIDL_INCLUDES) -I$( XPDIST) \i dl
XPIDL_HEADERS = $( XPIDLSRCS:.idl= .h)
XPIDL_HEADERS = $( XPIDL_HEADERS:.\= .\_ xpidlgen\)
1999-05-12 09:15:12 +04:00
! i f n d e f N O _ G E N _ X P T
1999-05-10 22:49:20 +04:00
XPIDL_TYPELIBS = $( XPIDLSRCS:.idl= .xpt)
XPIDL_TYPELIBS = $( XPIDL_TYPELIBS:.\= .\_ xpidlgen\)
.idl{$(XPIDL_GEN_DIR)}.xpt :
1999-06-15 15:14:49 +04:00
$( XPIDL_PROG) -m typelib -w $( XPIDL_INCLUDES) -o $* $<
1999-05-10 22:49:20 +04:00
1999-06-03 22:34:27 +04:00
! i f n d e f X P I D L _ M O D U L E
XPIDL_MODULE = $( MODULE)
1999-05-26 05:38:36 +04:00
! e n d i f
1999-06-03 22:34:27 +04:00
TYPELIB = $( XPIDL_GEN_DIR) \$ ( XPIDL_MODULE) .xpt
1999-05-10 22:49:20 +04:00
1999-08-24 18:42:37 +04:00
$(TYPELIB) : $( XPIDL_TYPELIBS ) $( XPTLINK_PROG )
1999-05-10 22:49:20 +04:00
@echo +++ make: Creating typelib: $( TYPELIB)
$( XPTLINK_PROG) $( TYPELIB) $( XPIDL_TYPELIBS)
1999-05-12 09:15:12 +04:00
! e n d i f
$(XPIDL_GEN_DIR) :
@echo +++ make: Creating directory: $( XPIDL_GEN_DIR)
-mkdir $( XPIDL_GEN_DIR)
1999-08-24 18:42:37 +04:00
$(XPIDL_HEADERS) : $( XPIDL_PROG )
1999-05-12 09:15:12 +04:00
.idl{$(XPIDL_GEN_DIR)}.h :
1999-06-15 15:14:49 +04:00
$( XPIDL_PROG) -m header -w $( XPIDL_INCLUDES) -o $* $<
1999-05-12 09:15:12 +04:00
1999-05-10 22:49:20 +04:00
$(DIST)\include :
@echo +++ make: Creating directory: $( DIST) \i nclude
-mkdir $( DIST) \i nclude
$(XPDIST)\idl :
@echo +++ make: Creating directory: $( XPDIST) \i dl
-mkdir $( XPDIST) \i dl
export :: $( XPDIST ) \idl
@echo +++ make: exporting IDL files
1999-08-03 02:18:47 +04:00
$( MAKE_INSTALL) $( XPIDLSRCS:/= \) $( XPDIST) \i dl
1999-05-10 22:49:20 +04:00
1999-06-12 08:30:44 +04:00
export :: $( XPIDL_GEN_DIR ) $( XPIDL_HEADERS ) $( PUBLIC )
1999-05-10 22:49:20 +04:00
@echo +++ make: exporting generated XPIDL header files
1999-08-03 02:18:47 +04:00
$( MAKE_INSTALL) $( XPIDL_HEADERS:/= \) $( PUBLIC)
2001-09-23 07:44:12 +04:00
$( PERL) -I$( DEPTH) \c onfig $( DEPTH) \c onfig\b uild-list.pl $( PUBLIC) /.headerlist $( XPIDL_HEADERS)
1999-05-10 22:49:20 +04:00
1999-05-12 09:15:12 +04:00
! i f n d e f N O _ G E N _ X P T
1999-05-10 22:49:20 +04:00
install :: $( XPIDL_GEN_DIR ) $( TYPELIB )
@echo +++ make: installing typelib '$(TYPELIB)' to components directory
$( MAKE_INSTALL) $( TYPELIB) $( DIST) \b in\c omponents
1999-05-12 09:15:12 +04:00
! e n d i f
1999-05-10 22:49:20 +04:00
1999-05-14 00:39:02 +04:00
clobber ::
1999-08-06 17:45:09 +04:00
-$( RM_R) $( XPIDL_GEN_DIR) 2> NUL
clobber_all ::
-$( RM_R) $( XPIDL_GEN_DIR) 2> NUL
1999-08-03 02:18:47 +04:00
! i f e x i s t ( $( PUBLIC ) )
@cd $( PUBLIC)
-$( RM) $( XPIDLSRCS:.idl= .h)
@cd $( MAKEDIR)
! e n d i f
!if exist($(XPDIST : /=\)\idl )
@cd $( XPDIST:/= \) \i dl
-$( RM) $( XPIDLSRCS)
@cd $( MAKEDIR)
! e n d i f
1999-08-06 17:45:09 +04:00
! i f e x i s t ( $( DIST ) \ b i n \ c o m p o n e n t s )
1999-08-03 02:18:47 +04:00
-$( RM) $( DIST) \b in\c omponents\$ ( XPIDL_MODULE) .xpt
1999-08-06 17:45:09 +04:00
! e n d i f
1999-05-26 05:38:36 +04:00
1999-05-10 22:49:20 +04:00
! e n d i f
! e n d i f
2001-06-21 00:21:49 +04:00
#//----------------------------------------------------------------------
#//
#// Component packaging rules
#//
#//----------------------------------------------------------------------
$(FINAL_LINK_COMPS) :
@echo +++ make: creating file: $( FINAL_LINK_COMPS)
@echo. > $( FINAL_LINK_COMPS)
$(FINAL_LINK_COMP_NAMES) :
@echo +++ make: creating file: $( FINAL_LINK_COMP_NAMES)
@echo. > $( FINAL_LINK_COMP_NAMES)
$(FINAL_LINK_LIBS) :
@echo +++ make: creating file: $( FINAL_LINK_LIBS)
@echo. > $( FINAL_LINK_LIBS)
2000-08-25 08:42:47 +04:00
################################################################################
## CHROME PACKAGING
JAR_MANIFEST = jar.mn
chrome ::
install :: chrome
2001-03-24 14:07:15 +03:00
! i f d e f M O Z _ C H R O M E _ F I L E _ F O R M A T
_CHROME_FILE_FORMAT = $( MOZ_CHROME_FILE_FORMAT)
! i f "$(_CHROME_FILE_FORMAT)" = = "flat"
_JAR_REGCHROME_DISABLE_JAR = 1
! e l s e
_JAR_REGCHROME_DISABLE_JAR = 0
! e n d i f
! e l s e
2000-09-25 03:56:38 +04:00
! i f d e f M O Z _ D I S A B L E _ J A R _ P A C K A G I N G
2001-03-24 14:07:15 +03:00
_CHROME_FILE_FORMAT = flat
_JAR_REGCHROME_DISABLE_JAR = 1
2000-09-25 03:56:38 +04:00
! e l s e
2001-03-24 14:07:15 +03:00
_CHROME_FILE_FORMAT = jar
_JAR_REGCHROME_DISABLE_JAR = 0
! e n d i f
2000-09-25 03:56:38 +04:00
! e n d i f
2001-05-14 12:40:19 +04:00
REGCHROME = @perl -I$( DEPTH) \c onfig $( DEPTH) \c onfig\a dd-chrome.pl $( _NO_FLOCK) $( DIST) \b in\c hrome\i nstalled-chrome.txt $( _JAR_REGCHROME_DISABLE_JAR)
2000-09-26 06:21:41 +04:00
! i f n d e f M O Z _ O L D _ J A R _ P A C K A G I N G
2000-08-25 08:42:47 +04:00
! i f e x i s t ( $( JAR_MANIFEST ) )
2000-10-20 09:21:40 +04:00
chrome :: $( CHROME_DEPS )
2001-05-14 12:40:19 +04:00
$( PERL) -I$( DEPTH) \c onfig $( DEPTH) \c onfig\m ake-jars.pl -f $( _CHROME_FILE_FORMAT) $( _NO_FLOCK) -d $( DIST) \b in\c hrome < $( JAR_MANIFEST)
2001-10-17 09:27:42 +04:00
$( PERL) -I$( DEPTH) \c onfig $( DEPTH) \c onfig\m ake-chromelist.pl $( DIST) \b in\c hrome $( JAR_MANIFEST) $( _NO_FLOCK)
2000-08-25 08:42:47 +04:00
! e n d i f
2000-09-14 08:45:15 +04:00
regchrome :
2000-09-15 12:08:11 +04:00
! e l s e # !MOZ_OLD_JAR_PACKAGING
2000-08-25 08:42:47 +04:00
2000-08-11 04:47:03 +04:00
################################################################################
1999-07-24 07:33:37 +04:00
# Generate chrome building rules.
#
# You need to set these in your makefile.win to utilize this support:
# CHROME_DIR - specifies the chrome subdirectory where your chrome files
# go; e.g., CHROME_DIR=navigator or CHROME_DIR=global
#
# Note: All file listed in the next three macros MUST be prefaced with .\ (or ./)!
#
# CHROME_CONTENT - list of chrome content files; these can be prefaced with
# arbitrary paths; e.g., CHROME_CONTENT=./content/default/foobar.xul
# CHROME_SKIN - list of skin files
# CHROME_L10N - list of localization files, e.g., CHROME_L10N=./locale/en-US/foobar.dtd
#
# These macros are optional, if not specified, each defaults to ".".
2000-05-05 02:43:41 +04:00
# CHROME_CONTENT_DIR - Specifies a subdirectory within CHROME_DIR where
# all CHROME_CONTENT files will be installed.
1999-07-24 07:33:37 +04:00
# CHROME_SKIN_DIR - Like above, but for skin files
# CHROME_L10N_DIR - Like above, but for localization files
2000-05-05 02:43:41 +04:00
# CHROME_TYPE - The type of chrome being generated (content, skin, locale).
# Top-level makefiles (the same one copying the rdf manifests
# and generating the jar file) should define this macro.
# This will notify the chrome registry of a new installation.
2000-08-11 04:47:03 +04:00
1999-07-24 07:33:37 +04:00
! i f "$(CHROME_DIR)" ! = "$(NULL)"
# Figure out root of chrome dist dir.
CHROME_DIST = $( DIST) \b in\c hrome\$ ( CHROME_DIR:/= \)
# Content
! i f "$(CHROME_CONTENT)" ! = "$(NULL)"
CHROME_CONTENT = $( CHROME_CONTENT:/= \)
# Content goes to CHROME_DIR unless specified otherwise.
! i f "$(CHROME_CONTENT_DIR)" = = "$(NULL)"
CHROME_CONTENT_DIR = .
! e n d i f
# Export content files by copying to dist.
2000-08-11 03:52:29 +04:00
chrome :: $( CHROME_CONTENT :.\=INSTALL \.\)
1999-07-24 07:33:37 +04:00
# Pseudo-target specifying how to install content files.
1999-07-28 01:55:17 +04:00
$(CHROME_CONTENT : .\=INSTALL \.\):
2000-05-05 02:43:41 +04:00
$( MAKE_INSTALL) $( @:INSTALL\. = .) $( CHROME_DIST) \$ ( CHROME_CONTENT_DIR)
1999-07-24 07:33:37 +04:00
# Clobber content files.
clobber_all :: $( CHROME_CONTENT :.\=CLOBBER \.\)
# Pseudo-target specifying how to clobber content files.
$(CHROME_CONTENT : .\=CLOBBER \.\):
-@$( RM) $( CHROME_DIST) \$ ( CHROME_CONTENT_DIR) \$ ( @:CLOBBER\. = .)
! e n d i f # content
# Skin
! i f "$(CHROME_SKIN)" ! = "$(NULL)"
CHROME_SKIN = $( CHROME_SKIN:/= \)
# Skin goes to CHROME_DIR unless specified otherwise.
! i f "$(CHROME_SKIN_DIR)" = = "$(NULL)"
CHROME_SKIN_DIR = .
! e n d i f
2000-05-05 02:43:41 +04:00
# Export skin files by copying to dist.
2000-08-11 03:52:29 +04:00
chrome :: $( CHROME_SKIN :.\=INSTALL \.\)
1999-07-24 07:33:37 +04:00
# Pseudo-target specifying how to install chrome files.
1999-07-28 01:55:17 +04:00
$(CHROME_SKIN : .\=INSTALL \.\):
2000-05-05 02:43:41 +04:00
$( MAKE_INSTALL) $( @:INSTALL\. = .) $( CHROME_DIST) \$ ( CHROME_SKIN_DIR)
1999-07-24 07:33:37 +04:00
# Clobber content files.
clobber_all :: $( CHROME_SKIN :.\=CLOBBER \.\)
# Pseudo-target specifying how to clobber content files.
$(CHROME_SKIN : .\=CLOBBER \.\):
-@$( RM) $( CHROME_DIST) \$ ( CHROME_SKIN_DIR) \$ ( @:CLOBBER\. = .)
! e n d i f # skin
# Localization.
! i f "$(CHROME_L10N)" ! = "$(NULL)"
CHROME_L10N = $( CHROME_L10N:/= \)
# L10n goes to CHROME_DIR unless specified otherwise.
! i f "$(CHROME_L10N_DIR)" = = "$(NULL)"
CHROME_L10N_DIR = .
! e n d i f
# Export l10n files by copying to dist.
2000-08-11 03:52:29 +04:00
chrome :: $( CHROME_L 10N :.\=INSTALL \.\)
1999-07-24 07:33:37 +04:00
# Pseudo-target specifying how to install l10n files.
1999-07-28 01:55:17 +04:00
$(CHROME_L10N : .\=INSTALL \.\):
2000-05-05 02:43:41 +04:00
$( MAKE_INSTALL) $( @:INSTALL\. = .) $( CHROME_DIST) \$ ( CHROME_L10N_DIR)
1999-07-24 07:33:37 +04:00
# Clobber l10n files.
clobber_all :: $( CHROME_L 10N :.\=CLOBBER \.\)
# Pseudo-target specifying how to clobber l10n files.
$(CHROME_L10N : .\=CLOBBER \.\):
-@$( RM) $( CHROME_DIST) \$ ( CHROME_L10N_DIR) \$ ( @:CLOBBER\. = .)
! e n d i f # localization
2000-05-14 01:30:45 +04:00
# miscellaneous chrome
! i f "$(CHROME_MISC)" ! = "$(NULL)"
2000-05-05 02:43:41 +04:00
2000-05-14 01:30:45 +04:00
CHROME_MISC = $( CHROME_MISC:/= \)
# misc goes to CHROME_DIR unless specified otherwise.
! i f "$(CHROME_MISC_DIR)" = = "$(NULL)"
CHROME_MISC_DIR = .
! e n d i f
# Export misc files by copying to dist.
2000-08-11 03:52:29 +04:00
chrome :: $( CHROME_MISC :.\=INSTALL \.\)
2000-05-14 01:30:45 +04:00
2000-08-25 23:53:02 +04:00
# Pseudo-target specifying how to install misc files.
2000-05-14 01:30:45 +04:00
$(CHROME_MISC : .\=INSTALL \.\):
$( MAKE_INSTALL) $( @:INSTALL\. = .) $( CHROME_DIST) \$ ( CHROME_MISC_DIR)
2000-08-25 23:53:02 +04:00
# Clobber misc files.
2000-05-14 01:30:45 +04:00
clobber_all :: $( CHROME_MISC :.\=CLOBBER \.\)
2000-08-25 23:53:02 +04:00
# Pseudo-target specifying how to clobber misc files.
2000-05-14 01:30:45 +04:00
$(CHROME_MISC : .\=CLOBBER \.\):
-@$( RM) $( CHROME_DIST) \$ ( CHROME_MISC_DIR) \$ ( @:CLOBBER\. = .)
! e n d i f # miscellaneous chrome
2000-09-13 05:11:54 +04:00
! i f d e f M O Z _ D I S A B L E _ J A R _ P A C K A G I N G
2000-05-14 01:30:45 +04:00
! i f "$(CHROME_TYPE)" ! = "$(NULL)"
2000-08-11 03:52:29 +04:00
chrome ::
2000-05-23 02:26:19 +04:00
-for %t in ( $( CHROME_TYPE) ) do echo %t,install,url,resource:/chrome/$( CHROME_DIR:\= /) / >>$( DIST) \b in\c hrome\i nstalled-chrome.txt
2000-05-05 02:43:41 +04:00
! e n d i f
2000-09-07 13:34:29 +04:00
! e n d i f
2000-05-05 02:43:41 +04:00
2000-08-11 03:52:29 +04:00
chrome ::
@echo.
2000-08-12 14:11:50 +04:00
@echo ****************** IF YOU ADD OR REMOVE CHROME FILES, PLEASE UPDATE $( MAKEDIR) \$ ( JAR_MANIFEST) ( or tell warren@netscape.com) **********************
2000-08-11 03:52:29 +04:00
@echo.
2000-08-25 08:42:47 +04:00
! e n d i f # chrome
2000-06-09 10:33:25 +04:00
2000-09-07 16:06:38 +04:00
regchrome :
! i f ! d e f i n e d ( M O Z _ D I S A B L E _ J A R _ P A C K A G I N G )
2000-09-09 06:08:03 +04:00
$( PERL) $( DEPTH) \c onfig\z ipchrome.pl win32 update $( DIST) \b in\c hrome
2000-09-07 16:06:38 +04:00
$( PERL) $( DEPTH) \c onfig\i nstallchrome.pl win32 jar $( DIST) \b in\c hrome
! e l s e
# XXX do it this way once everyone has perl installed. For now some
# people apparently have trouble with that so do the rules.mak stuff instead
# $(PERL) $(DEPTH)\config\installchrome.pl win32 resource $(DIST)\bin\chrome
! e n d i f
2000-09-15 12:08:11 +04:00
! e n d i f # !MOZ_OLD_JAR_PACKAGING
2000-09-14 08:45:15 +04:00
2000-06-09 10:33:25 +04:00
################################################################################
2000-08-11 04:47:03 +04:00
# Easier than typing it by hand, works from any directory:
debug ::
start msdev $( DIST) \b in\m ozilla.exe
# Easier than typing it by hand, works from any directory:
run ::
$( DIST) \b in\m ozilla.exe
################################################################################
! e n d i f # CONFIG_RULES_MAK
################################################################################