1999-11-06 03:40:37 +00: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 02:44:41 +00:00
#
1999-11-06 03:40:37 +00: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 02:44:41 +00:00
#
1999-11-06 03:40:37 +00:00
# The Original Code is mozilla.org code.
#
# The Initial Developer of the Original Code is Netscape
1998-03-28 02:44:41 +00:00
# Communications Corporation. Portions created by Netscape are
1999-11-06 03:40:37 +00:00
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s):
1998-03-28 02:44:41 +00: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-07-31 23:41:45 +00:00
! i f d e f i n e d ( J A V A _ O R _ N S J V M )
1998-03-28 02:44:41 +00: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-07-31 23:41:45 +00: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 02:44:41 +00: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 >
#//------------------------------------------------------------------------
#//
#// 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-07 20:41:06 +00:00
! i f "$(WINOS)" = = "WIN95"
1998-04-21 21:22:54 +00:00
W95MAKE = $( DEPTH) \c onfig\w 95make.exe
1998-04-07 20:41:06 +00:00
W32OBJS = $( OBJS:.obj= .obj, )
W32LOBJS = $( OBJS: .= +-.)
! e n d i f
1999-11-28 03:05:01 +00:00
all ::
1998-03-28 02:44:41 +00: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-05 23:24:48 +00: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 02:44:41 +00: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-08 22:40:17 +00:00
PDBFILE = .\$ ( OBJDIR) \$ ( PDBFILE) .pdb
1998-03-28 02:44:41 +00:00
! e l s e
1999-10-28 22:36:22 +00:00
PDBFILE = .\$ *.pdb # used for executables
1998-03-28 02:44:41 +00: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-07 20:41:06 +00:00
! i f "$(WINOS)" = = "WIN95"
1998-10-15 12:38:26 +00:00
! i f d e f i n e d ( V E R B O S E )
1998-04-07 20:41:06 +00:00
@echo +++ make: cannot recursively make on win95 using command.com, use w95make.
1998-10-15 12:38:26 +00:00
! e n d i f
1998-04-07 20:41:06 +00:00
! e l s e
1998-03-28 02:44:41 +00:00
@echo +++ make: %MAKE_ARGS% in $( MAKEDIR) \$ @
@cd $@
@$( NMAKE) -f makefile.win %%MAKE_ARGS%%
@cd $( MAKEDIR)
1998-04-07 20:41:06 +00:00
! e n d i f
1998-03-28 02:44:41 +00: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 04:30:44 +00:00
$(PUBLIC) :
1999-06-03 18:34:27 +00:00
-mkdir $( XPDIST:/= \) \i nclude
1998-03-28 02:44:41 +00: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 J D I R S
1998-07-31 23:41:45 +00:00
! i f d e f i n e d ( J A V A _ O R _ N S J V M )
1998-03-28 02:44:41 +00:00
#//------------------------------------------------------------------------
#//
#// Rule to recursively make all subdirectories specified by the JDIRS target
#//
#//------------------------------------------------------------------------
export :: $( JAVA_DESTPATH ) $( JDIRS )
$(JDIRS) :: $( JAVA_DESTPATH ) $( TMPDIR )
1998-04-07 20:41:06 +00:00
! i f "$(WINOS)" = = "WIN95"
JDIRS = $( JDIRS:/= \)
! e n d i f
1998-03-28 02:44:41 +00:00
! i f d e f i n e d ( N O _ C A F E )
$(JDIRS) ::
@echo +++ make: building package: $@
@echo $( JAVAC_PROG) $( JAVAC_FLAGS) > $( TMPDIR) \j avac.cfg
-@$( DEPTH) \c onfig\b uildpkg $( TMPDIR) \j avac.cfg $@
@$( RM) $( TMPDIR) \j avac.cfg
1998-04-21 21:22:54 +00:00
# @$(DEPTH)\config\buildpkg $@ $(DEPTH)\dist\classes
1998-03-28 02:44:41 +00:00
! e l s e
# compile using symantec cafe's super-speedy compiler!
$(JDIRS) ::
@echo +++ make: building package $@
1998-04-07 20:41:06 +00:00
! i f "$(WINOS)" = = "WIN95"
1998-04-21 21:22:54 +00:00
-@$( MKDIR) $( DEPTH) \d ist\c lasses\$ ( @:/= \)
1998-04-07 20:41:06 +00:00
! e l s e
1998-04-21 21:22:54 +00:00
-@$( MKDIR) $( DEPTH) \d ist\c lasses\$ @ 2> NUL
1998-04-07 20:41:06 +00:00
! e n d i f
1998-03-28 02:44:41 +00:00
$( MOZ_TOOLS) \b in\s j -classpath $( JAVA_DESTPATH) ; $( JAVA_SOURCEPATH) \
-d $( JAVA_DESTPATH) $( JAVAC_OPTIMIZER) $@ \* .java
! e n d i f # NO_CAFE
2000-04-05 18:56:00 +00:00
clobber clobber_all ::
1998-03-28 02:44:41 +00:00
-for %g in ( $( JDIRS) ) do $( RM_R) $( XPDIST:/= \) /classes/%g
1998-07-31 23:41:45 +00:00
! e n d i f # JAVA_OR_NSJVM
1998-03-28 02:44:41 +00:00
! e n d i f # JDIRS
! 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
! i f d e f L I B R A R Y _ N A M E
LIBRARY = $( OBJDIR) \$ ( LIBRARY_NAME) $( LIBRARY_SUFFIX) .lib
! e n d i f
#//------------------------------------------------------------------------
#//
#// Global rules...
#//
#//------------------------------------------------------------------------
#//
#// Set the MAKE_ARGS variable to indicate the target being built... This is used
#// when processing subdirectories via the $(DIRS) rule
#//
1998-04-07 20:41:06 +00: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 02:44:41 +00: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-07 20:41:06 +00:00
! e n d i f
1998-03-28 02:44:41 +00:00
#//------------------------------------------------------------------------
#// DEPEND
1999-06-05 02:02:10 +00: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 02:44:41 +00:00
#//------------------------------------------------------------------------
1999-02-18 22:26:31 +00:00
MAKEDEP = $( MOZ_SRC) \m ozilla\c onfig\m akedep.exe
1998-03-28 02:44:41 +00: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-18 23:18:40 +00:00
@echo Analyzing dependencies...
1998-03-28 02:44:41 +00:00
$( MAKEDEP) -s -o $( MAKEDEPFILE) @<<
$( LINCS )
1999-06-05 02:02:10 +00:00
$( LINCS_ 1)
$( INCS )
1999-07-14 19:18:53 +00:00
- I $( MAKEDIR )
1998-03-28 02:44:41 +00: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 03:05:01 +00:00
libs ::
1999-11-30 08:09:12 +00:00
@echo The libs build phase is obsolete.
1998-03-28 02:44:41 +00:00
1999-11-28 03:05:01 +00:00
install :: $( DIRS ) $( LIBRARY )
1998-03-28 02:44:41 +00:00
depend :: $( DIRS )
mangle :: $( DIRS )
$( MAKE_MANGLE)
unmangle :: $( DIRS )
-$( MAKE_UNMANGLE)
1999-03-09 09:44:27 +00:00
alltags ::
2000-08-10 23:52:29 +00:00
@echo +++ Making emacs tags
1999-06-08 07:43:32 +00: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 09:44:27 +00:00
1998-03-28 02:44:41 +00:00
#//------------------------------------------------------------------------
#//
#// Rule to create the object directory (if necessary)
#//
#//------------------------------------------------------------------------
$(OBJDIR) :
@echo +++ make: Creating directory: $( OBJDIR)
-mkdir $( OBJDIR)
#//------------------------------------------------------------------------
#//
#// 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 >
#//------------------------------------------------------------------------
#//
#// JMC
#//
#// JSRCS .java files to be compiled (.java extension included)
#//
#//------------------------------------------------------------------------
1998-07-31 23:41:45 +00:00
! i f d e f i n e d ( J A V A _ O R _ N S J V M )
1998-03-28 02:44:41 +00:00
! i f d e f i n e d ( J S R C S )
JSRCS_DEPS = $( JAVA_DESTPATH) $( JAVA_DESTPATH) \$ ( PACKAGE) $( TMPDIR)
# Can't get moz cafe to compile a single file
! i f d e f i n e d ( N O _ C A F E )
export :: $( JSRCS_DEPS )
@echo +++ make: building package: $( PACKAGE)
1999-02-18 22:51:05 +00:00
$( PERL) $( DEPTH) \c onfig\o utofdate.pl \
1998-03-28 02:44:41 +00:00
-d $( JAVA_DESTPATH) \$ ( PACKAGE) $( JSRCS) >> $( TMPDIR) \j avac.cfg
-$( JAVAC_PROG) -argfile $( TMPDIR) \j avac.cfg
@$( RM) $( TMPDIR) \j avac.cfg
! e l s e
# compile using symantec cafe's super-speedy compiler!
export :: $( JSRC_DEPS )
@echo +++ make: building package: $( PACKAGE)
@echo -d $( JAVA_DESTPATH) $( JAVAC_OPTIMIZER) \
-classpath $( JAVA_DESTPATH) ; $( JAVA_SOURCEPATH) > $( TMPDIR) \j avac.cfg
1999-02-18 22:51:05 +00:00
@$( PERL) $( DEPTH) \c onfig\s j.pl \
1998-03-28 02:44:41 +00:00
$( JAVA_DESTPATH) \$ ( PACKAGE) \ $( TMPDIR) \j avac.cfg <<
$( JSRCS)
< <
! e n d i f #NO_CAFE
clobber ::
-for %g in ( $( JSRCS:.java= .class) ) do $( RM) $( XPDIST:/= \) /classes/$( PACKAGE:/= \) /%g
! e n d i f # JSRCS
#//------------------------------------------------------------------------
#//
#// JMC
#//
#// JMC_EXPORT .class files to be copied from XPDIST/classes/PACKAGE to
#// XPDIST/jmc (without the .class extension)
#//
#//------------------------------------------------------------------------
! i f d e f i n e d ( J M C _ E X P O R T )
export :: $( JMCSRCDIR )
for %g in ( $( JMC_EXPORT) ) do $( MAKE_INSTALL:/= \) $( JAVA_DESTPATH) \$ ( PACKAGE:/= \) \% g.class $( JMCSRCDIR)
clobber ::
-for %f in ( $( JMC_EXPORT) ) do $( RM) $( JMCSRCDIR:/= \) \% f.class
! e n d i f # JMC_EXPORT
1998-07-31 23:41:45 +00:00
! e n d i f # JAVA_OR_NSJVM
1998-03-28 02:44:41 +00:00
#//------------------------------------------------------------------------
#//
#// JMC
#//
#// JMC_GEN Names of classes to be run through JMC
#// Generated .h and .c files go to JMC_GEN_DIR
#//
#//------------------------------------------------------------------------
1998-07-31 23:41:45 +00:00
! i f d e f i n e d ( J A V A _ O R _ N S J V M )
1998-03-28 02:44:41 +00:00
! i f d e f i n e d ( J M C _ G E N )
export :: $( JMC_HEADERS )
# Don't delete them if they don't compile (makes it hard to debug)
.PRECIOUS : $( JMC_HEADERS ) $( JMC_STUBS )
# They may want to generate/compile the stubs
! i f d e f i n e d ( C C J M C )
{$(JMC_GEN_DIR)\}.c{$(OBJDIR)\}.obj :
@$( CC) @<<$( CFGFILE)
-c $( CFLAGS)
-I. -I$( JMC_GEN_DIR)
-Fd$( PDBFILE)
-Fo.\$ ( OBJDIR) \
$( JMC_GEN_DIR) \$ ( *B) .c
< < K E E P
export :: $( JMC_STUBS ) $( OBJDIR ) $( JMC_OBJS )
! e n d i f # CCJMC
! e n d i f # JMC_GEN
1998-07-31 23:41:45 +00:00
! e n d i f # JAVA_OR_NSJVM
1998-03-28 02:44:41 +00:00
#//------------------------------------------------------------------------
#//
1999-08-02 22:18:47 +00:00
#// EXPORTS
1998-03-28 02:44:41 +00:00
#//
1999-08-02 22:18:47 +00:00
#// Names of headers to be copied to common include directory
1998-03-28 02:44:41 +00:00
#//
#//------------------------------------------------------------------------
1999-02-04 22:56:58 +00:00
! i f "$(EXPORTS)" ! = "$(NULL)"
1999-08-02 22:18:47 +00:00
2000-04-10 22:57:29 +00:00
export :: $( EXPORTS )
1999-08-02 22:18:47 +00:00
@echo +++ make: exporting headers
1999-08-06 13:45:09 +00:00
$( MAKE_INSTALL:/= \) $( MKCPYFLAGS) $( EXPORTS) $( PUBLIC)
1998-03-28 02:44:41 +00:00
1999-08-06 13:45:09 +00: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-02 22:18:47 +00: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 02:44:41 +00:00
! e n d i f # EXPORTS
#//------------------------------------------------------------------------
#// These rules must follow all lines that define the macros they use
#//------------------------------------------------------------------------
1998-07-31 23:41:45 +00:00
! i f d e f i n e d ( J A V A _ O R _ N S J V M )
1999-08-02 22:18:47 +00:00
GARBAGE = $( GARBAGE) $( JMC_GEN_DIR) $( JMC_HEADERS) $( JMC_STUBS) \
1998-09-17 18:12:36 +00:00
$( JDK_STUB_DIR) $( JRI_GEN_DIR) $( JDK_GEN_DIR) $( JNI_GEN_DIR)
1998-03-28 02:44:41 +00:00
! e n d i f
clean :: $( DIRS )
-$( RM) $( OBJS) $( NOSUCHFILE) NUL 2> NUL
clobber :: $( DIRS )
1999-08-06 13:45:09 +00: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 02:44:41 +00:00
-$( RM_R) $( GARBAGE) $( OBJDIR) 2> NUL
1999-08-06 13:45:09 +00:00
! e n d i f
1998-03-28 02:44:41 +00:00
clobber_all :: $( DIRS )
1999-08-06 13:45:09 +00: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 02:44:41 +00:00
! i f "$(MOZ_BITS)" = = "32"
CFLAGS = $( CFLAGS) -DNO_JNI_STUBS
! e n d i f
1999-08-02 22:18:47 +00:00
#//------------------------------------------------------------------------
#// XPIDL rules
#//------------------------------------------------------------------------
1999-05-10 18:49:20 +00: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 05:15:12 +00:00
! i f n d e f N O _ G E N _ X P T
1999-05-10 18:49:20 +00:00
XPIDL_TYPELIBS = $( XPIDLSRCS:.idl= .xpt)
XPIDL_TYPELIBS = $( XPIDL_TYPELIBS:.\= .\_ xpidlgen\)
.idl{$(XPIDL_GEN_DIR)}.xpt :
1999-06-15 11:14:49 +00:00
$( XPIDL_PROG) -m typelib -w $( XPIDL_INCLUDES) -o $* $<
1999-05-10 18:49:20 +00:00
1999-06-03 18:34:27 +00:00
! i f n d e f X P I D L _ M O D U L E
XPIDL_MODULE = $( MODULE)
1999-05-26 01:38:36 +00:00
! e n d i f
1999-06-03 18:34:27 +00:00
TYPELIB = $( XPIDL_GEN_DIR) \$ ( XPIDL_MODULE) .xpt
1999-05-10 18:49:20 +00:00
1999-08-24 14:42:37 +00:00
$(TYPELIB) : $( XPIDL_TYPELIBS ) $( XPTLINK_PROG )
1999-05-10 18:49:20 +00:00
@echo +++ make: Creating typelib: $( TYPELIB)
$( XPTLINK_PROG) $( TYPELIB) $( XPIDL_TYPELIBS)
1999-05-12 05:15:12 +00:00
! e n d i f
$(XPIDL_GEN_DIR) :
@echo +++ make: Creating directory: $( XPIDL_GEN_DIR)
-mkdir $( XPIDL_GEN_DIR)
1999-08-24 14:42:37 +00:00
$(XPIDL_HEADERS) : $( XPIDL_PROG )
1999-05-12 05:15:12 +00:00
.idl{$(XPIDL_GEN_DIR)}.h :
1999-06-15 11:14:49 +00:00
$( XPIDL_PROG) -m header -w $( XPIDL_INCLUDES) -o $* $<
1999-05-12 05:15:12 +00:00
1999-05-10 18:49:20 +00: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-02 22:18:47 +00:00
$( MAKE_INSTALL) $( XPIDLSRCS:/= \) $( XPDIST) \i dl
1999-05-10 18:49:20 +00:00
1999-06-12 04:30:44 +00:00
export :: $( XPIDL_GEN_DIR ) $( XPIDL_HEADERS ) $( PUBLIC )
1999-05-10 18:49:20 +00:00
@echo +++ make: exporting generated XPIDL header files
1999-08-02 22:18:47 +00:00
$( MAKE_INSTALL) $( XPIDL_HEADERS:/= \) $( PUBLIC)
1999-05-10 18:49:20 +00:00
1999-05-12 05:15:12 +00:00
! i f n d e f N O _ G E N _ X P T
1999-05-10 18:49:20 +00: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 05:15:12 +00:00
! e n d i f
1999-05-10 18:49:20 +00:00
1999-05-13 20:39:02 +00:00
clobber ::
1999-08-06 13:45:09 +00:00
-$( RM_R) $( XPIDL_GEN_DIR) 2> NUL
clobber_all ::
-$( RM_R) $( XPIDL_GEN_DIR) 2> NUL
1999-08-02 22:18:47 +00: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 13:45:09 +00:00
! i f e x i s t ( $( DIST ) \ b i n \ c o m p o n e n t s )
1999-08-02 22:18:47 +00:00
-$( RM) $( DIST) \b in\c omponents\$ ( XPIDL_MODULE) .xpt
1999-08-06 13:45:09 +00:00
! e n d i f
1999-05-26 01:38:36 +00:00
1999-05-10 18:49:20 +00:00
! e n d i f
! e n d i f
2000-08-11 00:47:03 +00:00
################################################################################
1999-07-24 03:33:37 +00: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-04 22:43:41 +00:00
# CHROME_CONTENT_DIR - Specifies a subdirectory within CHROME_DIR where
# all CHROME_CONTENT files will be installed.
1999-07-24 03:33:37 +00:00
# CHROME_SKIN_DIR - Like above, but for skin files
# CHROME_L10N_DIR - Like above, but for localization files
2000-05-04 22:43:41 +00: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 00:47:03 +00:00
chrome ::
1999-07-24 03:33:37 +00: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-10 23:52:29 +00:00
chrome :: $( CHROME_CONTENT :.\=INSTALL \.\)
1999-07-24 03:33:37 +00:00
# Pseudo-target specifying how to install content files.
1999-07-27 21:55:17 +00:00
$(CHROME_CONTENT : .\=INSTALL \.\):
2000-05-04 22:43:41 +00:00
$( MAKE_INSTALL) $( @:INSTALL\. = .) $( CHROME_DIST) \$ ( CHROME_CONTENT_DIR)
1999-07-24 03:33:37 +00: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-04 22:43:41 +00:00
# Export skin files by copying to dist.
2000-08-10 23:52:29 +00:00
chrome :: $( CHROME_SKIN :.\=INSTALL \.\)
1999-07-24 03:33:37 +00:00
# Pseudo-target specifying how to install chrome files.
1999-07-27 21:55:17 +00:00
$(CHROME_SKIN : .\=INSTALL \.\):
2000-05-04 22:43:41 +00:00
$( MAKE_INSTALL) $( @:INSTALL\. = .) $( CHROME_DIST) \$ ( CHROME_SKIN_DIR)
1999-07-24 03:33:37 +00: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-10 23:52:29 +00:00
chrome :: $( CHROME_L 10N :.\=INSTALL \.\)
1999-07-24 03:33:37 +00:00
# Pseudo-target specifying how to install l10n files.
1999-07-27 21:55:17 +00:00
$(CHROME_L10N : .\=INSTALL \.\):
2000-05-04 22:43:41 +00:00
$( MAKE_INSTALL) $( @:INSTALL\. = .) $( CHROME_DIST) \$ ( CHROME_L10N_DIR)
1999-07-24 03:33:37 +00: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-13 21:30:45 +00:00
# miscellaneous chrome
! i f "$(CHROME_MISC)" ! = "$(NULL)"
2000-05-04 22:43:41 +00:00
2000-05-13 21:30:45 +00: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-10 23:52:29 +00:00
chrome :: $( CHROME_MISC :.\=INSTALL \.\)
2000-05-13 21:30:45 +00:00
# Pseudo-target specifying how to install content files.
$(CHROME_MISC : .\=INSTALL \.\):
$( MAKE_INSTALL) $( @:INSTALL\. = .) $( CHROME_DIST) \$ ( CHROME_MISC_DIR)
# Clobber content files.
clobber_all :: $( CHROME_MISC :.\=CLOBBER \.\)
# Pseudo-target specifying how to clobber content files.
$(CHROME_MISC : .\=CLOBBER \.\):
-@$( RM) $( CHROME_DIST) \$ ( CHROME_MISC_DIR) \$ ( @:CLOBBER\. = .)
! e n d i f # miscellaneous chrome
! i f "$(CHROME_TYPE)" ! = "$(NULL)"
2000-08-10 23:52:29 +00:00
! i f d e f J A R _ P A C K A G I N G
chrome ::
-for %t in ( $( CHROME_TYPE) ) do echo %t,install,url,jar:resource:/chrome/$( CHROME_DIR:\= /) .jar!/ >>$( DIST) \b in\c hrome\i nstalled-chrome.txt
! e l s e # !JAR_PACKAGING
chrome ::
2000-05-22 22:26:19 +00: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-08-10 23:52:29 +00:00
! e n d i f # !JAR_PACKAGING
2000-05-04 22:43:41 +00:00
! e n d i f
1999-07-24 03:33:37 +00:00
! e n d i f # chrome
2000-06-09 06:33:25 +00:00
################################################################################
## JAR Manifests
2000-07-12 07:45:26 +00:00
JAR_MANIFEST = jar.mn
2000-08-10 23:52:29 +00:00
2000-06-09 06:33:25 +00:00
! i f e x i s t ( $( JAR_MANIFEST ) )
2000-08-10 23:52:29 +00:00
! i f d e f J A R _ P A C K A G I N G
chrome ::
2000-07-19 01:38:09 +00:00
$( PERL) $( DEPTH) \c onfig\m ake-jars.pl -d $( DIST) \b in\c hrome < $( JAR_MANIFEST)
2000-06-09 06:33:25 +00:00
2000-08-10 23:52:29 +00:00
! e l s e # !JAR_PACKAGING
chrome ::
@echo.
2000-08-12 10:11:50 +00:00
@echo ****************** IF YOU ADD OR REMOVE CHROME FILES, PLEASE UPDATE $( MAKEDIR) \$ ( JAR_MANIFEST) ( or tell warren@netscape.com) **********************
2000-08-10 23:52:29 +00:00
@echo.
! e n d i f # !JAR_PACKAGING
2000-06-09 06:33:25 +00:00
! e n d i f
2000-08-10 23:52:29 +00:00
install :: chrome
2000-06-09 06:33:25 +00:00
################################################################################
2000-08-11 00:47:03 +00: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
################################################################################