| # |
| # @(#)Program.gmk 1.1 97/09/07 |
| # |
| # Generic makefile for building executables. |
| |
| .PHONY: all optimized debug classes clean clobber |
| |
| all: optimized debug |
| |
| TSPROGRAM = $(PROGRAM:%=$(TSOBJDIR)/%) |
| DEBUG = $(BINDIR)/$(ARCH)/$(TSPROGRAM)_g $(BINDIR)/$(PROGRAM)_g |
| OPTIMIZED = $(BINDIR)/$(ARCH)/$(TSPROGRAM) $(BINDIR)/$(PROGRAM) |
| |
| include $(TOPDIR)/build/$(PLATFORM)/makefiles/Rules.gmk |
| |
| FILES_o = $(patsubst %.c,$(OBJDIR)/%.o,$(FILES_c)) |
| FILES_o += $(patsubst %.s,$(OBJDIR)/%.o,$(FILES_s)) |
| |
| CLASSES.export = $(shell echo $(FILES_export) | \ |
| sed "s:\.java::g" | sed "s:/:\.:g") |
| |
| .PHONY : $(PROGRAM)_g $(PROGRAM) |
| |
| $(PROGRAM)_g: debug |
| |
| $(PROGRAM): optimized |
| |
| # Make a generic link to the executable, for casual users |
| |
| $(BINDIR)/$(ARCH)/$(TSPROGRAM)_g $(BINDIR)/$(ARCH)/$(TSPROGRAM) \ |
| :: $(INIT) $(OBJDIR)/.program.dirs.$(ARCH) classes $(PROGRAM_HEADERS) |
| @true |
| |
| $(BINDIR)/$(ARCH)/$(TSPROGRAM)_g $(BINDIR)/$(ARCH)/$(TSPROGRAM) \ |
| :: $(FILES_o) |
| @set -- $?; \ |
| echo Rebuilding $@ because of $$1 $$2 $$3 $$4 $$5 $$6 $${7:+...}; |
| $(CC) $(LDFLAGS) $(FILES_o) $(LDLIBS) -o $(OBJDIR)/$(@F) |
| -(cp $(OBJDIR)/$(@F) $(BINDIR)/$(ARCH)/$(TSOBJDIR)/$(@F) \ |
| && echo "Copying" $(@F) "to" \ |
| $(BINDIR)/$(ARCH)/$(TSOBJDIR)) 2>/dev/null |
| |
| $(BINDIR)/$(PROGRAM)_g: $(BINDIR)/.java_wrapper .java_wrapper_local |
| rm -f $(BINDIR)/$(@F) ; ln -s .java_wrapper $(BINDIR)/$(@F) |
| rm -f $(@F) ; ln -s .java_wrapper_local $(@F) |
| |
| $(BINDIR)/$(PROGRAM): $(BINDIR)/.java_wrapper .java_wrapper_local |
| rm -f $(BINDIR)/$(@F) ; ln -s .java_wrapper $(BINDIR)/$(@F) |
| rm -f $(@F) ; ln -s .java_wrapper_local $(@F) |
| |
| $(BINDIR)/.java_wrapper: $(PLATFORM_SRC)/bin/java_wrapper.sh |
| rm -f $(BINDIR)/.java_wrapper |
| cp $(PLATFORM_SRC)/bin/java_wrapper.sh $(BINDIR)/.java_wrapper |
| chmod +x $(BINDIR)/.java_wrapper |
| |
| .java_wrapper_local: $(PLATFORM_SRC)/bin/java_wrapper_local.sh |
| rm -f .java_wrapper_local |
| cp $(PLATFORM_SRC)/bin/java_wrapper_local.sh .java_wrapper_local |
| chmod +x .java_wrapper_local |
| |
| $(OBJDIR)/.program.dirs.$(ARCH): |
| mkdir -p $(OBJDIRS) $(BINDIR)/$(ARCH)/$(TSOBJDIR) \ |
| $(CLASSBINDIR) |
| -touch $(OBJDIR)/.program.dirs.$(ARCH) |
| |
| $(PROGRAM_HEADERS): $(FILES_export:%.java=$(CLASSBINDIR)/%.class) |
| $(JAVAH) $(JAVAHFLAGS) -classpath $(CLASSPATH) -d $(CLASSHDRDIR)/ \ |
| $(CLASSES.export) |
| @-touch $@ |
| |
| classstubs.c: $(FILES_export:%.java=$(CLASSBINDIR)/%.class) |
| $(JAVAH) $(JAVAHFLAGS) -classpath $(CLASSPATH) -o $@ \ |
| -stubs $(CLASSES.export) |
| @-touch $@ # javah only writes file if changed |
| |
| clean :: FORCE |
| rm -rf $(OBJROOTS) |
| rm -f classstubs.c .program* |
| |
| clobber :: FORCE |
| rm -f $(OPTIMIZED) $(DEBUG) $(PROGRAM) $(PROGRAM)_g |
| rm -f .java_wrapper_local |
| |
| # |
| # Now include make dependencies |
| # |
| files := $(foreach file, $(wildcard */$(ARCH)/$(TSOBJDIR)/*.d), $(file)) |
| ifneq ($(strip $(files)),) |
| include $(files) |
| endif |
| |