blob: 11dd9ea1f6653176eba8cfd414029ddc7a19d2fa [file] [log] [blame]
#
# @(#)Library.gmk 1.1 97/09/07
#
# Generic makefile for building libraries.
#
# This should be included in your library GNUmakefile.
#
.PHONY: all optimized debug clean .exported.classes
all: optimized debug
library: optimized debug
optimized debug:
include $(TOPDIR)/build/$(PLATFORM)/makefiles/Classes.gmk
include $(TOPDIR)/build/$(PLATFORM)/makefiles/Defs.gmk
# It is important to define these *after* including Classes.gmk
# in order to override the values defined inthat makefile.
#
DEBUG = $(LIB_LOCATION)/lib$(LIBRARY)_g.$(LIBRARY_SUFFIX)
OPTIMIZED = $(LIB_LOCATION)/lib$(LIBRARY).$(LIBRARY_SUFFIX)
FILES_o = $(patsubst %.c,$(OBJDIR)/%.o,$(FILES_c))
FILES_o += $(patsubst %.s,$(OBJDIR)/%.o,$(FILES_s))
FILES_o += $(patsubst %.cpp,$(OBJDIR)/%.o,$(FILES_cpp))
ifeq ($(LIBRARY), jvm)
$(OPTIMIZED) $(DEBUG) :: \
$(INIT) $(OBJDIR)/.library.dirs.$(ARCH) .library.headers
@true
else
$(OPTIMIZED) $(DEBUG) :: \
$(INIT) $(OBJDIR)/.library.dirs.$(ARCH) classes .library.headers
@true
endif
$(OPTIMIZED) $(DEBUG):: $(FILES_o)
@set -- $?; \
echo Rebuilding $@ because of $$1 $$2 $$3 $$4 $$5 $$6 $${7:+...};
@echo $@
@echo "OBJDIR=$(OBJDIR)"
$(CC) -G -o $@ $(FILES_o) $(LDFLAGS) $(LDLIBS)
/usr/ccs/bin/mcs -d -a "$(FULL_VERSION)" $@
ifneq ($(PRODUCT), java)
vpath %.c $(SHARE_SRC)/native/$(PKGDIR)
vpath %.c $(PLATFORM_SRC)/native/$(PKGDIR)
CPPFLAGS += -I$(SHARE_SRC)/native/$(PKGDIR) \
-I$(PLATFORM_SRC)/native/$(PKGDIR)
endif
OTHER_INCLUDES += -I$(SHARE_SRC)/native/common \
-I$(PLATFORM_SRC)/native/common
CLASSES.export = $(shell echo '$(FILES_export)' '$(FILES_export2)' \
| sed -e 's:\.java::g' -e 's:/:\.:g' -e 's/\$$/\\\$$/g')
.exported.classes: .delete.classlist \
$(FILES_export:%.java=$(CLASSBINDIR)/%.class) .compile.classlist
#
# Delete these libstubs.c rules once conversion to JNI is completed
#
libstubs.c .library.headers :: .exported.classes
@true
libstubs.c :: $(FILES_export:%.java=$(CLASSBINDIR)/%.class)
$(JAVAH) $(JAVAHFLAGS) -classpath $(CLASSPATH) -o $@ \
-stubs $(CLASSES.export)
@-touch $@ # javah only writes file if changed
.library.headers :: $(FILES_export:%.java=$(CLASSBINDIR)/%.class)
$(JAVAH) $(JAVAHFLAGS) -classpath $(CLASSPATH) -d $(CLASSHDRDIR)/ \
$(CLASSES.export)
@-touch $@
$(OBJDIR)/.library.dirs.$(ARCH): FORCE
mkdir -p $(LIBDIR)/$(ARCH)/$(TSOBJDIR) $(OBJDIRS)
@-touch $(OBJDIR)/.library.dirs.$(ARCH)
library.clean:
rm -rf libstubs.c $(OBJROOTS) CClassHeaders
rm -rf $(DEBUG) $(OPTIMIZED) .library.*
clobber :: clean
#
# Include make dependancies
#
files := $(foreach file, $(wildcard */$(ARCH)/$(TSOBJDIR)/*.d), $(file))
ifneq ($(strip $(files)),)
include $(files)
endif
.PHONY : .exported.classes