| # |
| # @(#)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 |