# to the compiler, and spliced into package.conf in place of $topdir at
# runtime.
#
-# On Unix, we only use absolute paths in package.conf, except that when
-# building a binary distribution we use $libdir and $datadir in package.conf
-# which are then replaced by the correct values at install time.
+# On Unix, we only use absolute paths in package.conf.
#
ifeq "$(Windows)" "YES"
else
-ifeq "$(BIN_DIST)" ""
PKG_LIBDIR = $(libdir)
PKG_DATADIR = $(datadir)
-else
-PKG_LIBDIR = $$libdir
-PKG_DATADIR = $$datadir
-endif
endif # Unix
grep -v '^#pragma GCC' | \
sed -e 's/""//g' -e 's/:[ ]*,/: /g' >$@
-package.conf.installed : package.conf.in
+install::
$(CPP) $(RAWCPP_FLAGS) -P -DINSTALLING \
- -DIMPORT_DIR='"$(IMPORT_DIR_INSTALLED)"' \
- -DLIB_DIR='"$(LIB_DIR_INSTALLED)"' \
- -DINCLUDE_DIR='"$(INCLUDE_DIR_INSTALLED)"' \
- -DDATA_DIR='"$(DATA_DIR_INSTALLED)"' \
- -DHTML_DIR='"$(HTML_DIR_INSTALLED)"' \
- -DHADDOCK_IFACE='"$(HADDOCK_IFACE_INSTALLED)"' \
- -x c $(PACKAGE_CPP_OPTS) $< | \
- grep -v '^#pragma GCC' | \
- sed -e 's/""//g' -e 's/:[ ]*,/: /g' >$@
+ -DIMPORT_DIR='"$(IMPORT_DIR_INSTALLED)"' \
+ -DLIB_DIR='"$(LIB_DIR_INSTALLED)"' \
+ -DINCLUDE_DIR='"$(INCLUDE_DIR_INSTALLED)"' \
+ -DDATA_DIR='"$(DATA_DIR_INSTALLED)"' \
+ -DHTML_DIR='"$(HTML_DIR_INSTALLED)"' \
+ -DHADDOCK_IFACE='"$(HADDOCK_IFACE_INSTALLED)"' \
+ -I../includes \
+ -x c $(PACKAGE_CPP_OPTS) package.conf.in \
+ | grep -v '^#pragma GCC' \
+ | sed -e 's/""//g' -e 's/:[ ]*,/: /g' \
+ | $(bindir)/ghc-pkg update - --force
# we could be more accurate here and add a dependency on
# driver/package.conf, but that doesn't work too well because of
boot all :: $(STAMP_PKG_CONF)
endif
-$(STAMP_PKG_CONF) : package.conf.inplace package.conf.installed
+$(STAMP_PKG_CONF) : package.conf.inplace
$(GHC_PKG_INPLACE) update - --force-files <package.conf.inplace
- $(GHC_PKG_INPLACE) update - -f $(GHC_DRIVER_DIR)/package.conf --force-files <package.conf.installed
@touch $(STAMP_PKG_CONF)
-CLEAN_FILES += package.conf.installed package.conf.inplace
+CLEAN_FILES += package.conf.inplace
endif # $(way) == ""
GHCI_LIBRARY = $(patsubst lib%.a,%.o,$(LIBRARY))
endif
-ifneq "$(NO_INSTALL_LIBRARY)" "YES"
-INSTALL_LIBS += $(GHCI_LIBRARY)
-endif
-
CLEAN_FILES += $(GHCI_LIBRARY)
all :: $(GHCI_LIBRARY)
# About the options used for Darwin:
# -dynamiclib
# Apple's way of saying -shared
- # -flat_namespace -undefined suppress:
+ # -undefined dynamic_lookup:
# Without these options, we'd have to specify the correct dependencies
- # for each of the dylibs. Twolevel namespaces are in general a good thing
- # (they make things more robust), so we should fix this sooner or later.
+ # for each of the dylibs. Note that we could (and should) do without this
+ # for all libraries except the RTS; all we need to do is to pass the
+ # correct HSfoo_dyn.dylib files to the link command.
+ # This feature requires Mac OS X 10.3 or later; there is a similar feature,
+ # -flat_namespace -undefined suppress, which works on earlier versions,
+ # but it has other disadvantages.
+ # -single_module
+ # Build the dynamic library as a single "module", i.e. no dynamic binding
+ # nonsense when referring to symbols from within the library. The NCG
+ # assumes that this option is specified (on i386, at least).
+ # -Wl,-macosx_version_min -Wl,10.3
+ # Tell the linker its safe to assume that the library will run on 10.3 or
+ # later, so that it will not complain about the use of the option
+ # -undefined dynamic_lookup above.
# -install_name
# Causes the dynamic linker to ignore the DYLD_LIBRARY_PATH when loading
# this lib and instead look for it at its absolute path.
# When installing the .dylibs (see target.mk), we'll change that path to
- # point to the place they are installed.
- # Note: I'm not yet sure about this, but I think it will be convenient for
- # users not to have to set up DYLD_LIBRARY_PATH to point to the GHC
- # library dir. -- Wolfgang
+ # point to the place they are installed. Therefore, we won't have to set
+ # up DYLD_LIBRARY_PATH specifically for ghc.
$(DYLD_LIBRARY) : $(LIBOBJS) $(STUBOBJS)
- $(CC) -dynamiclib -o $@ $(STUBOBJS) $(LIBOBJS) -flat_namespace -undefined suppress -install_name `pwd`/$@
+ $(CC) -dynamiclib -o $@ $(STUBOBJS) $(LIBOBJS) \
+ -undefined dynamic_lookup -single_module \
+ -Wl,-macosx_version_min -Wl,10.3 \
+ -install_name `pwd`/$@
+
else
DYLD_LIBRARY = $(patsubst %.a,%_dyn.so,$(LIBRARY))
# Doc building with Haddock
ifneq "$(PACKAGE)" ""
-ifneq "$(NO_HADDOCK_DOCS)" "YES"
+ifeq "$(HADDOCK_DOCS)" "YES"
HS_PPS = $(addsuffix .raw-hs, $(basename $(filter-out $(EXCLUDED_HADDOCK_SRCS), $(HS_SRCS)))) $(EXTRA_HADDOCK_SRCS)
$(HC) $(HC_OPTS) -D__HADDOCK__ -E $< -o $@
HTML_INSTALL_DIR = $(datadir)/html/libraries/$(PACKAGE)
-# NOT the same as HTML_DIR_INSTALLED when BIN_DIST is on
install-docs :: $(HTML_DOC)
@$(INSTALL_DIR) $(HTML_INSTALL_DIR)
$(INSTALL_DATA) $(INSTALL_OPTS) $(PACKAGE).haddock $(HTML_INSTALL_DIR); \
endif # HS_PPS
-endif # NO_HADDOCK_DOCS
+endif # HADDOCK_DOCS
endif # $(PACKAGE) /= ""
# -----------------------------------------------------------------------------