diff --git a/mps/Makefile.in b/mps/Makefile.in index 15b16a2c74e..743a1cfe6cd 100644 --- a/mps/Makefile.in +++ b/mps/Makefile.in @@ -23,11 +23,12 @@ MPS_BUILD_NAME=@MPS_BUILD_NAME@ MPS_TARGET_NAME=$(MPS_OS_NAME)$(MPS_ARCH_NAME)$(MPS_BUILD_NAME) EXTRA_TARGETS=@EXTRA_TARGETS@ prefix=$(DESTDIR)@prefix@ +srcdir=@srcdir@ CC=@CC@ CFLAGSCOMPILERSTRICT=-Wno-error -std=c89 -pedantic -TARGET_OPTS=-C code -f $(MPS_TARGET_NAME).gmk \ - CC='$(CC)' \ - CFLAGSCOMPILERSTRICT='$(CFLAGSCOMPILERSTRICT)' \ +COMMON_OPTS=-C code SRCDIR=../$(srcdir)/code \ + CC='$(CC)' CFLAGSCOMPILERSTRICT='$(CFLAGSCOMPILERSTRICT)' +TARGET_OPTS=$(COMMON_OPTS) -f $(MPS_TARGET_NAME).gmk \ EXTRA_TARGETS="$(EXTRA_TARGETS)" XCODEBUILD=xcrun xcodebuild -project code/mps.xcodeproj @@ -41,7 +42,7 @@ clean-make-build: $(MAKE) $(TARGET_OPTS) clean install-make-build: make-install-dirs build-via-make - $(INSTALL_DATA) code/mps*.h $(prefix)/include/ + $(INSTALL_DATA) $(srcdir)/code/mps*.h $(prefix)/include/ $(INSTALL_DATA) code/$(MPS_TARGET_NAME)/cool/mps.a $(prefix)/lib/libmps-debug.a $(INSTALL_DATA) code/$(MPS_TARGET_NAME)/hot/mps.a $(prefix)/lib/libmps.a for PROGRAM in $(EXTRA_TARGETS); do $(INSTALL_PROGRAM) code/$(MPS_TARGET_NAME)/hot/$$PROGRAM $(prefix)/bin/$$PROGRAM; done @@ -60,15 +61,15 @@ install-xcode-build: make-install-dirs build-via-xcode $(INSTALL_DATA) code/xc/Release/libmps.a $(prefix)/lib/libmps.a for PROGRAM in $(EXTRA_TARGETS); do $(INSTALL_PROGRAM) code/xc/Release/$$PROGRAM $(prefix)/bin/$$PROGRAM; done -Makefile: Makefile.in config.status +Makefile: $(srcdir)/Makefile.in config.status ./config.status Makefile clean: @CLEAN_TARGET@ -config.status: configure +config.status: $(srcdir)/configure -configure: configure.ac - autoreconf -vif +$(srcdir)/configure: $(srcdir)/configure.ac + autoreconf -vif $(srcdir) distclean: clean rm -rf autom4te.cache/ config.log config.status Makefile @@ -82,14 +83,12 @@ install: @INSTALL_TARGET@ test-make-build: $(MAKE) $(TARGET_OPTS) testci testratio testscheme - $(MAKE) -C code -f anan$(MPS_BUILD_NAME).gmk VARIETY=cool \ - CC='$(CC)' \ - CFLAGSCOMPILERSTRICT='$(CFLAGSCOMPILERSTRICT)' \ + $(MAKE) $(COMMON_OPTS) \ + -f anan$(MPS_BUILD_NAME).gmk VARIETY=cool \ clean-testansi - $(MAKE) -C code -f anan$(MPS_BUILD_NAME).gmk VARIETY=cool \ - CC='$(CC)' \ + $(MAKE) $(COMMON_OPTS) \ + -f anan$(MPS_BUILD_NAME).gmk VARIETY=cool \ CFLAGS="-DCONFIG_POLL_NONE" \ - CFLAGSCOMPILERSTRICT='$(CFLAGSCOMPILERSTRICT)' \ clean-testpollnone test-xcode-build: diff --git a/mps/code/comm.gmk b/mps/code/comm.gmk index cac85c4ee6a..37610d71e3f 100644 --- a/mps/code/comm.gmk +++ b/mps/code/comm.gmk @@ -69,6 +69,9 @@ ifndef CFLAGSOPT error "comm.gmk: CFLAGSOPT not defined" endif +ifdef SRCDIR +VPATH=$(SRCDIR) +endif # TELEMETRY TARGETS diff --git a/mps/configure.ac b/mps/configure.ac index 0cbf640fdcb..18c8a1494c0 100644 --- a/mps/configure.ac +++ b/mps/configure.ac @@ -193,6 +193,20 @@ AC_SUBST(LDFLAGS) AC_SUBST(CPPFLAGS) AC_CONFIG_FILES(Makefile example/scheme/Makefile) +AC_CONFIG_COMMANDS( + [gmk], + [case $srcdir in + .) # in-place build + ;; + *) echo "copying .gmk files" + (cd $srcdir && + cp --parents code/*.gmk \ + tool/testcases.txt tool/testrun.sh \ + example/scheme/*.scm \ + $ac_pwd) + ;; + esac]) + AC_OUTPUT echo 1>&2 "CONFIGURE/MAKE IS NOT THE BEST WAY TO BUILD THE MPS diff --git a/mps/example/scheme/Makefile.in b/mps/example/scheme/Makefile.in index 77ed1f4f0e6..3ee9e473abe 100644 --- a/mps/example/scheme/Makefile.in +++ b/mps/example/scheme/Makefile.in @@ -4,7 +4,9 @@ CFLAGS = @CFLAGS@ @CPPFLAGS@ @LDFLAGS@ -std=c99 -MPS = ../../code +MPS = @srcdir@/../../code + +VPATH = @srcdir@ TARGETS = scheme-malloc scheme scheme-advanced @@ -15,7 +17,6 @@ all: $(TARGETS) $(TARGETS): %: %.c Makefile $(CC) $(CFLAGS) -o $@ -I $(MPS) $< $(MPS)/mps.c - scheme-boehm: %: %.c Makefile $(CC) $(CFLAGS) -o $@ $< -lgc