summaryrefslogtreecommitdiff
path: root/rules/build-prog.mk
Commit message (Collapse)AuthorAgeFilesLines
* Give dynamic libraries, as well as programs, RPATHsIan Lynagh2012-11-081-13/+12
| | | | Based on a patch from markwright in #3072.
* When DYNAMIC_BY_DEFAULT, make inplace wrappers for everythingIan Lynagh2012-10-221-0/+2
| | | | | | Even though e.g. inplace/bin/hpc doesn't normally need a shell wrapper, it does when we are using dynlibs, as we need to set the LD_LIBRARY_PATH so that it can find its libraries.
* Fix copy/paste-oIan Lynagh2012-10-141-1/+1
|
* Get dynamic-by-default mostly working on OS XIan Lynagh2012-10-141-0/+15
|
* Move the RPATH computation into the build rulesIan Lynagh2012-10-141-1/+1
| | | | It doesn't really belong in package-data.mk
* Actually build things the dynamic wayIan Lynagh2012-10-041-16/+25
| | | | | Things went back to being statically linked again once I added an explicit -static flag to the vanilla way.
* Build the dynamic way by default on Linux/amd64Ian Lynagh2012-10-031-6/+34
| | | | | | | | | | | | | This required various build system changes to get the build to go through. In the inplace shell wrappers, we set LD_LIBRARY_PATH to allow programs to find their libraries. In the future, we might change the inplace tree to be the same shape as an installed tree instead. However, this would mean changing the way we do installation, as currently we use cabal's installation methods to install the libraries, but that only works if the libraries are under libraries/foo/dist-install/build/..., rather than in inplace/lib/...
* Refactor the shell-wrapper-creation logicIan Lynagh2012-10-011-1/+1
|
* Put libexec binaries in lib/bin/ rather than just lib/Ian Lynagh2012-10-011-1/+1
| | | | | | | Some binaries are installed in lib/, so if we wanted them to have a shell wrapper then under the old scheme both the binary and the wrapper would be installed under lib/. Now the binary is put under lib/bin/, leaving lib/ for the wrapper.
* Tweak the build system handling of shell wrappersIan Lynagh2012-09-271-3/+5
| | | | | | | Rather than having a separate foo_INSTALL_SHELL_WRAPPER variable, we just use foo_INSTALL && foo_SHELL_WRAPPER
* Remove a stray " in the build systemIan Lynagh2012-09-271-1/+1
|
* A build-system tweak for more readable build output.Iavor S. Diatchki2012-04-271-2/+2
| | | | | | | | | | | This change reduces the (default) verbosity of the build system. This makes it easier to spot warnings in the output and, also, it makes it easier to estimate how far along are we in the build process by just glancing at the output. To get the traditional fully verbose output, set V=1, like this: make V=1
* Remove some unnecessary touch'sIan Lynagh2011-12-031-2/+1
| | | | | They made a dependency cycle in the rules used to build the touch program on Windows.
* Use touchy rather than touch when building on WindowsIan Lynagh2011-12-021-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With Windows 7 in a vitrual box VM on OS X, some very odd things happen with dates and time stamps when SSHing into cygwin. e.g. here the "Change" time is in the past: $ date; touch foo; stat foo Fri Dec 2 16:58:07 GMTST 2011 File: `foo' Size: 0 Blocks: 0 IO Block: 65536 regular empty file Device: 540aba0bh/1409989131d Inode: 562949953592977 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/ ian) Gid: ( 513/ None) Access: 2011-12-02 16:58:07.414457900 +0000 Modify: 2011-12-02 16:58:07.414457900 +0000 Change: 2011-12-02 16:58:03.495141800 +0000 Birth: 2011-12-02 16:57:57.731469900 +0000 And if we copy such a file, then the copy is older (as determined by the "Modify" time) than the original: $ date; touch foo; stat foo; cp foo bar; stat bar Fri Dec 2 16:59:10 GMTST 2011 File: `foo' Size: 0 Blocks: 0 IO Block: 65536 regular empty file Device: 540aba0bh/1409989131d Inode: 1407374883725128 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/ ian) Gid: ( 513/ None) Access: 2011-12-02 16:59:10.118457900 +0000 Modify: 2011-12-02 16:59:10.118457900 +0000 Change: 2011-12-02 16:59:06.189477700 +0000 Birth: 2011-12-02 16:57:57.731469900 +0000 File: `bar' Size: 0 Blocks: 0 IO Block: 65536 regular empty file Device: 540aba0bh/1409989131d Inode: 281474976882512 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/ ian) Gid: ( 513/ None) Access: 2011-12-02 16:59:06.394555800 +0000 Modify: 2011-12-02 16:59:06.394555800 +0000 Change: 2011-12-02 16:59:06.395532400 +0000 Birth: 2011-12-02 16:58:40.921899600 +0000 This means that make thinks that things are out of date when it shouldn't, so reinvokes itself repeatedly until the MAKE_RESTARTS infinite-recursion test triggers. The touchy program, like most other programs, creates files with both Modify and Change in the past, which is still a little odd, but is consistent, so doesn't break make.
* Time handling overhaulSimon Marlow2011-11-251-0/+4
| | | | | | | | | | | | | | | | | | | | | Terminology cleanup: the type "Ticks" has been renamed "Time", which is an StgWord64 in units of TIME_RESOLUTION (currently nanoseconds). The terminology "tick" is now used consistently to mean the interval between timer signals. The ticker now always ticks in realtime (actually CLOCK_MONOTONIC if we have it). Before it used CPU time in the non-threaded RTS and realtime in the threaded RTS, but I've discovered that the CPU timer has terrible resolution (at least on Linux) and isn't much use for profiling. So now we always use realtime. This should also fix The default tick interval is now 10ms, except when profiling where we drop it to 1ms. This gives more accurate profiles without affecting runtime too much (<1%). Lots of cleanups - the resolution of Time is now in one place only (Rts.h) rather than having calculations that depend on the resolution scattered all over the RTS. I hope I found them all.
* Make stage-specific CC variablesIan Lynagh2011-04-231-1/+1
| | | | | This allows different gcc's to be used when building different stages, which we need to do when cross-compiling.
* Refactor how dependencies are included; fixes #5109Ian Lynagh2011-04-141-15/+1
| | | | This avoids duplicating some logic around the build system.
* Call the final build system phase "final" rather than ""Ian Lynagh2011-02-071-2/+2
|
* Add build system profiling to build systemIan Lynagh2011-01-231-0/+2
|
* Simplify the build system, and remove 2 phasesIan Lynagh2011-01-221-62/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | From http://hackage.haskell.org/trac/ghc/wiki/Building/Architecture/Idiom/PhaseOrdering Phase 0: Includes: package-data.mk files for things built by the bootstrapping compiler. Builds: the dependency files for hsc2hs and genprimopcode. We need to do this now, as hsc2hs needs to be buildable in phase 1's includes (so that we can make the hpc library's .hs source files, which in turn is necessary for making its dependency files), and genprimopcode needs to be buildable in phase 1's includes (so that we can make the primop-*.hs-incl files, which are sources for the stage1 compiler library, and thus necessary for making its dependency files). Phase 1: Includes: dependency files for things built by the bootstrapping compiler. Builds: package-data.mk files for everything else. Note that this requires configuring the packages, which means telling cabal which ghc to use, and thus the stage1 compiler gets built during this phase. Phase "": Includes: dependency files for everything else. Builds: Everything else.
* Move some make variables aroundIan Lynagh2011-01-191-2/+2
|
* Fix deps on the ghc packageIan Lynagh2011-01-171-5/+8
| | | | | The standard libraries/$depname scheme doesn't apply, so we need to handle it specially.
* Handle dependencies of programs on libraries correctlyIan Lynagh2011-01-161-0/+8
|
* Build system improvementsIan Lynagh2011-01-151-41/+80
| | | | | | | | | We no longer use dummy-ghc; instead we don't configure most packages until the stage1 compiler is available. We also now use Cabal for building the ghc-bin package. There are a couple more sanity checks too.
* Don't link the GHC RTS into our C-only programsIan Lynagh2010-12-101-1/+8
|
* Link even programs containing no Haskell modules with GHCIan Lynagh2010-12-061-3/+0
| | | | | | I don't remember why we made it use gcc instead, but going back to using ghc doesn't seem to break anything, and should fix the build on OS X 10.6.
* Fix a makefile include ordering sanity checkIan Lynagh2010-11-211-2/+6
|
* Handle EXTRA_LIBRARIES when building programsIan Lynagh2010-09-301-2/+2
| | | | And set hp2ps's EXTRA_LIBRARIES. Based on a patch from Sergei Trofimovich.
* add a simple trace facility to the build systemSimon Marlow2010-09-211-0/+1
| | | | | | | | | saying make TRACE=1 prints most of the macro calls and their arguments. It's easy to trace new macros; see rules/trace.mk.
* Link programs that have no Haskell objects with gcc rather than ghcIan Lynagh2010-07-161-1/+9
|
* Use gcc to build C programs for stages >= 1Ian Lynagh2010-07-161-0/+6
|
* Use Cabal to configure the dist-install ghc-pkg; fixes trac #4156Ian Lynagh2010-07-041-1/+5
|
* Don't include inter-package dependencies when compiling with stage 0; #4031Ian Lynagh2010-05-091-1/+1
| | | | | | This fixes a problem when building with GHC 6.12 on Windows, where dependencies on stage 0 (bootstrapping compiler) packages have absolute paths c:/ghc/..., and make gets confused by the colon.
* In build system, call package-config after including package dataIan Lynagh2010-05-041-2/+2
| | | | Otherwise the $1_$2_HC_OPTS variable gets clobbered.
* Make sure all the clean rules are always includedIan Lynagh2010-04-241-2/+13
| | | | In particular, this fixes a problem where stage3 bits weren't being cleaned
* Eliminate mkdependCIan Lynagh2009-12-091-1/+3
| | | | We now just call gcc to get the dependencies directly
* Escape some $s in makefiles for consistencyIan Lynagh2009-10-251-3/+3
|
* Use "order only constraints" for directoriesIan Lynagh2009-10-021-6/+3
| | | | There are now 104 calls to mkdirhier, down from 1201, when validating.
* Fix collateral damage after distdir-opts.mk was refactored awaySimon Marlow2009-09-141-1/+1
|
* Fix some makefile logic, and remove the now unused *_USE_BOOT_LIBS varsIan Lynagh2009-09-111-1/+1
|
* refactor *_OPTS settings in the build system; no functional changesSimon Marlow2009-09-091-2/+0
|
* Make our install variables etc compliant with GNU standards; fixes #1924Ian Lynagh2009-08-141-4/+4
|
* eliminate "warning: overriding commnds..." from make when we're cleaningSimon Marlow2009-06-161-1/+1
|
* Quote commands that we run, so they work if there are space in their pathsIan Lynagh2009-05-301-6/+6
| | | | | I've also added some missing $s to some makefiles. These aren't technically necessary, but it's nice to be consistent.
* Bootstrapping fixesIan Lynagh2009-05-171-1/+1
|
* Bootstrapping fixesIan Lynagh2009-05-161-0/+6
|
* Move the fixed paths out of config.mk, so cleaning works without configuringIan Lynagh2009-05-161-0/+2
|
* make repeated 'make distclean' not failSimon Marlow2009-05-141-0/+3
|
* Fix building dph in the new build systemIan Lynagh2009-05-131-4/+4
|
* extend the rules/c-objs macro to take the way as a parameterDuncan Coutts2009-04-281-3/+3
| | | | | | | Previously we only built library package "cbits" the vanilla way, afterall C code does not need to be built differently for profiling builds. However for dynamic libs the C code needs to be built with -fPIC, so we do need to be able to build package .c (and .s?) files multiple ways.