Mozilla/mozilla/js/src/rules.mk
mccabe%netscape.com ee9dc32154 Add -p flags to several Makefile mkdir commands, to allow parallel gmakes. Still not sure how to make js/src/liveconnect/classes/*.java happy with parallel. gmakes...
Also add some #modelines to makefiles, and some more NPL licenses.

None of these files are part of the Mozilla build.


git-svn-id: svn://10.0.0.236/trunk@83399 18797224-902f-48f8-a5cc-f745e15eee43
2000-12-08 09:56:47 +00:00

174 lines
4.4 KiB
Makefile

# -*- Mode: makefile -*-
#
# 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 Communicator client code, released
# March 31, 1998.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998-1999 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the
# terms of the GNU Public License (the "GPL"), in which case the
# provisions of the GPL are applicable instead of those above.
# If you wish to allow use of your version of this file only
# under the terms of the GPL and not to allow others to use your
# version of this file under the NPL, indicate your decision by
# deleting the provisions above and replace them with the notice
# and other provisions required by the GPL. If you do not delete
# the provisions above, a recipient may use your version of this
# file under either the NPL or the GPL.
#
ifdef USE_MSVC
LIB_OBJS = $(addprefix $(OBJDIR)/, $(LIB_CFILES:.c=.obj))
PROG_OBJS = $(addprefix $(OBJDIR)/, $(PROG_CFILES:.c=.obj))
else
LIB_OBJS = $(addprefix $(OBJDIR)/, $(LIB_CFILES:.c=.o))
LIB_OBJS += $(addprefix $(OBJDIR)/, $(LIB_ASFILES:.s=.o))
PROG_OBJS = $(addprefix $(OBJDIR)/, $(PROG_CFILES:.c=.o))
endif
CFILES = $(LIB_CFILES) $(PROG_CFILES)
OBJS = $(LIB_OBJS) $(PROG_OBJS)
ifdef USE_MSVC
# TARGETS = $(LIBRARY) # $(PROGRAM) not supported for MSVC yet
TARGETS += $(SHARED_LIBRARY) $(PROGRAM) # it is now
else
TARGETS += $(LIBRARY) $(SHARED_LIBRARY) $(PROGRAM)
endif
all:
+$(LOOP_OVER_PREDIRS)
ifneq "$(strip $(TARGETS))" ""
$(MAKE) -f Makefile.ref $(TARGETS)
endif
+$(LOOP_OVER_DIRS)
$(OBJDIR)/%: %.c
@$(MAKE_OBJDIR)
$(CC) -o $@ $(CFLAGS) $*.c $(LDFLAGS)
$(OBJDIR)/%.o: %.c
@$(MAKE_OBJDIR)
$(CC) -o $@ -c $(CFLAGS) $*.c
$(OBJDIR)/%.o: %.s
@$(MAKE_OBJDIR)
$(AS) -o $@ $(ASFLAGS) $*.s
# windows only
$(OBJDIR)/%.obj: %.c
@$(MAKE_OBJDIR)
$(CC) -Fo$(OBJDIR)/ -c $(CFLAGS) $(JSDLL_CFLAGS) $*.c
$(OBJDIR)/js.obj: js.c
@$(MAKE_OBJDIR)
$(CC) -Fo$(OBJDIR)/ -c $(CFLAGS) $<
ifeq ($(OS_ARCH),OS2)
$(LIBRARY): $(LIB_OBJS)
$(AR) $@ $? $(AR_OS2_SUFFIX)
$(RANLIB) $@
else
ifdef USE_MSVC
$(SHARED_LIBRARY): $(LIB_OBJS)
link.exe $(LIB_LINK_FLAGS) /base:0x61000000 $(OTHER_LIBS) \
/out:"$@" /pdb:none\
/implib:"$(OBJDIR)/$(@F:.dll=.lib)" $^
else
$(LIBRARY): $(LIB_OBJS)
$(AR) rv $@ $?
$(RANLIB) $@
$(SHARED_LIBRARY): $(LIB_OBJS)
$(MKSHLIB) -o $@ $(LIB_OBJS) $(LDFLAGS) $(OTHER_LIBS)
endif
endif
# Java stuff
$(CLASSDIR)/$(OBJDIR)/$(JARPATH)/%.class: %.java
mkdir -p $(@D)
$(JAVAC) $(JAVAC_FLAGS) $<
define MAKE_OBJDIR
if test ! -d $(@D); then rm -rf $(@D); mkdir -p $(@D); fi
endef
ifdef DIRS
LOOP_OVER_DIRS = \
@for d in $(DIRS); do \
if test -d $$d; then \
set -e; \
echo "cd $$d; $(MAKE) -f Makefile.ref $@"; \
cd $$d; $(MAKE) -f Makefile.ref $@; cd ..; \
set +e; \
else \
echo "Skipping non-directory $$d..."; \
fi; \
done
endif
ifdef PREDIRS
LOOP_OVER_PREDIRS = \
@for d in $(PREDIRS); do \
if test -d $$d; then \
set -e; \
echo "cd $$d; $(MAKE) -f Makefile.ref $@"; \
cd $$d; $(MAKE) -f Makefile.ref $@; cd ..; \
set +e; \
else \
echo "Skipping non-directory $$d..."; \
fi; \
done
endif
export:
+$(LOOP_OVER_PREDIRS)
mkdir -p $(DIST)/include $(DIST)/lib $(DIST)/bin
ifneq "$(strip $(HFILES))" ""
$(CP) $(HFILES) $(DIST)/include
endif
ifneq "$(strip $(LIBRARY))" ""
$(CP) $(LIBRARY) $(DIST)/lib
endif
ifneq "$(strip $(JARS))" ""
$(CP) $(JARS) $(DIST)/lib
endif
ifneq "$(strip $(SHARED_LIBRARY))" ""
$(CP) $(SHARED_LIBRARY) $(DIST)/lib
endif
ifneq "$(strip $(PROGRAM))" ""
$(CP) $(PROGRAM) $(DIST)/bin
endif
+$(LOOP_OVER_DIRS)
clean:
rm -rf $(OBJS)
@cd fdlibm; $(MAKE) -f Makefile.ref clean
clobber:
rm -rf $(OBJS) $(TARGETS) $(DEPENDENCIES)
@cd fdlibm; $(MAKE) -f Makefile.ref clobber
depend:
gcc -MM $(CFLAGS) $(LIB_CFILES)
tar:
tar cvf $(TARNAME) $(TARFILES)
gzip $(TARNAME)