|
Re: Changes to make fptools insfrastructure usable for standalone librar: msg#00025lang.haskell.glasgow.bugs
> I think the right way to fix this is to introduce a toggle that selects > between the current behaviour and a mode which builds packages > specifically for use with an pre-existing GHC installation. Let's call > this "standalone package mode". I'm attaching my current version of package.mk. Rather than add a new variable for when we're in standalone mode, I used this test to determine whether we were in standalone mode or not: ifneq "$(GHC_DRIVER_DIR)" "" This works because GHC_DRIVER_DIR is one of the variables currently used in package.mk - not having it set is what originally caused me to fall over. Almost all the differences between the two modes are encapsulated in a bunch of definitions at the top which define variables used in package.mk: ifneq "$(GHC_DRIVER_DIR)" "" PKG_INSTALL_DIR = $(GHC_DRIVER_DIR) PKG_INCLUDE_DIR = $(GHC_INCLUDE_DIR) STAMP_PKG_CONF = $(GHC_DRIVER_DIR)/stamp-pkg-conf-$(PACKAGE) PKG_PROG = $(GHC_PKG_INPLACE) PKG_GHC = $(GHC_INPLACE) else PKG_INSTALL_DIR = $(shell $(GHC) "--print-libdir") PKG_INCLUDE_DIR = $(PKG_INSTALL_DIR)/include STAMP_PKG_CONF = $(TOP)/stamp-pkg-conf-$(PACKAGE) PKG_PROG = $(GHC_PKG) PKG_GHC = $(GHC) endif I used the PKG_ for all new variables and am tempted to rename STAMP_PKG_CONF to fit this convention (PKG_CONF_STAMP?) Three changes I couldn't isolate in this bit of code are: 1) mk/target.mk needs this change. Possible fix: move the definition of PKGCONF_DEP to package.mk. I haven't done so because I'm not sure what PKGCONF_DEP is for - I couldn't see anything that used it in the existing system. *** target.mk 27 Apr 2003 10:30:13 -0000 1.173 --- target.mk 21 May 2003 10:55:15 -0000 *************** *** 78,89 **** MKDEPENDHS_OBJ_SUFFICES=o ifneq "$(STAMP_PKG_CONF)" "" PKGCONF_DEP = $(STAMP_PKG_CONF) else PKGCONF_DEP = endif ! depend :: $(MKDEPENDHS_SRCS) $(MKDEPENDC_SRCS) $(STAMP_PKG_CONF) @$(RM) .depend @touch .depend ifneq "$(DOC_SRCS)" "" --- 78,93 ---- MKDEPENDHS_OBJ_SUFFICES=o ifneq "$(STAMP_PKG_CONF)" "" + ifneq "$(GHC_DRIVER_DIR)" "" PKGCONF_DEP = $(STAMP_PKG_CONF) else PKGCONF_DEP = endif + else + PKGCONF_DEP = + endif ! depend :: $(MKDEPENDHS_SRCS) $(MKDEPENDC_SRCS) $(PKGCONF_DEP) @$(RM) .depend @touch .depend ifneq "$(DOC_SRCS)" "" 2) The code that invoked ghc-pkg < package.conf.{inplace,installed}. In standalone mode, we install just package.conf.installed but in inplace mode we install package.conf.inplace too. I don't fully grok: a) why you install two copies b) why you install both at boot time instead of installing one at install time c) why they have the same stamp file So I'm struggling for what changes might be reasonable here. What I have works but feels inelegant. > You *could* put libraries in the GHC install dir, but it might be > cleaner to put them in their own directories: /usr/lib/<yourlibrary>. > This *should* happen automatically if you set up the mk stuff as > described above. At the moment, I'm continuing to put them in the ghc install directory by putting this at the head of every Makefile (yeuch) libdir = $(shell $(GHC) "--print-libdir") This has the strength of including the ghc version number in the directory name - though I guess I could use: /usr/lib/yourlibrary/`ghc --version` (well, almost - need to cleanup the string ghc --version returns). [Hmmm, maybe I should leave this up to the person running configure? To make this work, I just have to take care that I install in a subdirectory of libdir not in libdir itself since pissing all over /usr/lib probably won't win many friends.] My example library Makefile now contains this header. The FPTOOLS_TOP part is the most interesting (and, yes, it _does_ have to come after boilerplate to avoid being overridden). TOP = . include $(TOP)/mk/boilerplate.mk FPTOOLS_TOP := ../.. libdir = $(shell $(GHC) "--print-libdir") My Makefile also takes care to define: HIERARCHICAL_LIB = YES (can we make hierarchical the default instead?) -- Alastair Reid
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | [ ghc-Bugs-740326 ] hFlush doesn't seem to work under GHCi/Solaris, SourceForge.net |
|---|---|
| Next by Date: | RE: Changes to make fptools insfrastructure usable for standalone libraries, Simon Marlow |
| Previous by Thread: | RE: Changes to make fptools insfrastructure usable for standalone libraries, Simon Marlow |
| Next by Thread: | RE: Changes to make fptools insfrastructure usable for standalone libraries, Simon Marlow |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |