X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=gmp%2FMakefile;h=78cb5702b58abe44c33276eb2ee8242bbf7f753b;hp=18d0b75049e2f5287a73840e7119d132e8284c63;hb=74e1368d4688ee16f6decdf2cd3ebe27506b26ba;hpb=fdf1cd0399158308769fcb2ab7e46e215a68d865 diff --git a/gmp/Makefile b/gmp/Makefile index 18d0b75..78cb570 100644 --- a/gmp/Makefile +++ b/gmp/Makefile @@ -12,10 +12,13 @@ include $(TOP)/mk/boilerplate.mk ifneq "$(HaveLibGmp)" "YES" ifneq "$(HaveFrameworkGMP)" "YES" -boot :: stamp.gmp - PLATFORM := $(shell echo $(HOSTPLATFORM) | sed 's/i[567]86/i486/g') +# 2007-09-26 +# set -o igncr +# is not a valid command on non-Cygwin-systems. +# Let it fail silently instead of aborting the build. +# # 2007-07-05 # We do # set -o igncr; export SHELLOPTS @@ -31,57 +34,83 @@ PLATFORM := $(shell echo $(HOSTPLATFORM) | sed 's/i[567]86/i486/g') # follow, as it isn't used consistently. Instead we put an ln.bat in # path that always fails. +# We use a tarball like gmp-4.2.1-nodoc.tar.gz, which is +# gmp-4.2.1.tar.gz repacked without the doc/ directory contents. +# That's because the doc/ directory contents are under the GFDL, +# which causes problems for Debian. + GMP_TARBALL := $(firstword $(wildcard gmp*.tar.gz)) -GMP_DIR := $(subst .tar.gz,,$(GMP_TARBALL)) -BMP_BUILD_DIR := build +GMP_DIR := $(subst -nodoc.tar.gz,,$(GMP_TARBALL)) + +ifeq "$(findstring dyn, $(GhcRTSWays))" "dyn" +BUILD_SHARED=yes +else +BUILD_SHARED=no +endif + +BINDIST_STAMPS = stamp.gmp.static +INSTALL_HEADERS += gmp.h +INSTALL_LIBS += libgmp.a + +ifeq "$(BUILD_SHARED)" "yes" +BINDIST_STAMPS += stamp.gmp.shared +INSTALL_LIBS += libgmp.dll.a +INSTALL_PROGS += libgmp-3.dll +endif -stamp.gmp: +install all :: $(INSTALL_HEADERS) $(INSTALL_LIBS) $(INSTALL_PROGS) + +stamp.gmp.static: $(RM) -rf $(GMP_DIR) gmpbuild $(TAR) -zxf $(GMP_TARBALL) mv $(GMP_DIR) gmpbuild chmod +x ln - set -o igncr; export SHELLOPTS; \ - export PATH=`pwd`:$$PATH; \ + (set -o igncr 2>/dev/null) && set -o igncr; export SHELLOPTS; \ + PATH=`pwd`:$$PATH; \ + export PATH; \ cd gmpbuild && \ CC=$(WhatGccIsCalled) $(SHELL) configure \ --enable-shared=no --host=$(PLATFORM) --build=$(PLATFORM) touch $@ -all :: gmpbuild/libgmp.a - -ifeq "$(DLLized)" "YES" -all :: $(DLL_PEN)/gmp.dll +stamp.gmp.shared: + $(RM) -rf $(GMP_DIR) gmpbuild-shared + $(TAR) -zxf $(GMP_TARBALL) + mv $(GMP_DIR) gmpbuild-shared + chmod +x ln + (set -o igncr 2>/dev/null) && set -o igncr; export SHELLOPTS; \ + PATH=`pwd`:$$PATH; \ + export PATH; \ + cd gmpbuild-shared && \ + CC=$(WhatGccIsCalled) $(SHELL) configure \ + --enable-shared=yes --disable-static --host=$(PLATFORM) --build=$(PLATFORM) + touch $@ -$(DLL_PEN)/gmp.dll: - $(MAKE) -C gmpbuild gmp.dll - $(CP) gmpbuild/gmp.dll $(DLL_PEN) -endif +gmp.h: stamp.gmp.static + $(CP) gmpbuild/gmp.h . -install :: gmpbuild/libgmp.a +libgmp.a: stamp.gmp.static + $(MAKE) -C gmpbuild MAKEFLAGS= + $(CP) gmpbuild/.libs/libgmp.a . + $(RANLIB) libgmp.a -INSTALL_LIBS += gmpbuild/libgmp.a +libgmp-3.dll: stamp.gmp.shared + $(MAKE) -C gmpbuild-shared MAKEFLAGS= + $(CP) gmpbuild-shared/.libs/libgmp-3.dll . -gmpbuild/libgmp.a :: - $(MAKE) -C gmpbuild MAKEFLAGS= - $(CP) gmpbuild/.libs/libgmp.a gmpbuild - $(RANLIB) gmpbuild/libgmp.a +libgmp.dll.a: libgmp-3.dll + $(CP) gmpbuild-shared/.libs/libgmp.dll.a . endif endif +# GMP takes a long time to build, but changes rarely. Hence we don't +# bother cleaning it before validating, because that adds a +# significant overhead to validation. +ifeq "$(Validating)" "NO" clean distclean maintainer-clean :: - $(RM) -f stamp.gmp + $(RM) -f stamp.gmp.static stamp.gmp.shared $(RM) -rf gmpbuild - $(RM) -rf gmpbuild - -#----------------------------------------------------------------------------- -# -# Files to install -# -# Just libHSrts is installed uniformly across ways -# -ifeq "$(DLLized)" "YES" -INSTALL_PROGS += gmpbuild/gmp.dll -INSTALL_LIBS += gmpbuild/libgmp_imp.a + $(RM) -rf gmpbuild-shared endif #----------------------------------------------------------------------------- @@ -90,21 +119,9 @@ endif include $(TOP)/mk/target.mk -binary-dist: - @: -ifneq "$(HaveLibGmp)" "YES" -ifneq "$(HaveFrameworkGMP)" "YES" - $(INSTALL_DIR) $(BIN_DIST_DIR)/gmp - $(INSTALL_DIR) $(BIN_DIST_DIR)/gmp/gmpbuild - touch $(BIN_DIST_DIR)/gmp/$(GMP_TARBALL) - $(INSTALL_DATA) Makefile $(BIN_DIST_DIR)/gmp/ -ifneq "$(INSTALL_PROGS)" "" - $(INSTALL_DATA) $(INSTALL_PROGS) $(BIN_DIST_DIR)/gmp/gmpbuild/ -endif -ifneq "$(INSTALL_LIBS)" "" - $(INSTALL_DATA) $(INSTALL_LIBS) $(BIN_DIST_DIR)/gmp/gmpbuild/ -endif - -endif -endif +BINDIST_EXTRAS += $(BINDIST_STAMPS) +BINDIST_EXTRAS += $(INSTALL_PROGS) +BINDIST_EXTRAS += $(INSTALL_LIBS) +BINDIST_EXTRAS += $(INSTALL_HEADERS) +include $(TOP)/mk/bindist.mk