1. 29 Jul, 2012 1 commit
  2. 13 Mar, 2012 1 commit
  3. 30 Jan, 2012 1 commit
  4. 08 Jan, 2012 1 commit
    • Ian Lynagh's avatar
      Refactoring · 9e452874
      Ian Lynagh authored
      This is working towards being able to put ghcautoconf.h and
      ghcplatform.h in includes/dist
      9e452874
  5. 02 Dec, 2011 2 commits
    • Ian Lynagh's avatar
      Fix header installation · 11a614ff
      Ian Lynagh authored
      11a614ff
    • Ian Lynagh's avatar
      Move includes/DerivedConstants.h and includes/GHCConstants.h into dist dirs · e8723129
      Ian Lynagh authored
      When they existed, they were getting included in the includes_H_FILES
      variable (as it uses wildcard to find all header files). But the
      .depends files for the programs that generate the headers depend on
      $(includes_H_FILES), so the .depends files looked out-of-date once the
      headers had been created. This caused unnecessary make reinvocations.
      
      So now we put them in dist* directories, where they ought to be anyway.
      e8723129
  6. 19 Nov, 2011 1 commit
    • Ian Lynagh's avatar
      Improve the way we call "rm" in the build system; fixes trac #4916 · 80e9070c
      Ian Lynagh authored
      We avoid calling "rm -rf" with no file arguments; this fixes cleaning
      on Solaris, where that fails.
      
      We also check for suspicious arguments: anything containing "..",
      starting "/", or containing a "*" (you need to call $(wildcard ...)
      yourself now if you really want globbing). This should make things
      a little safer.
      80e9070c
  7. 07 Oct, 2011 1 commit
    • dmp's avatar
      Add autoconf support to detect an LLVM-based C compiler · 6247b59e
      dmp authored
      This patch adds support to the autoconf scripts to detect
      when we are using a C compiler that uses an LLVM back end.
      An LLVM back end does not support all of the extensions use
      by GCC, so we need to perform some conditional compilation
      in the runtime, particularly for handling thread local
      storage and global register variables.
      
      The changes here will set the CC_LLVM_BACKEND in the
      autoconf scripts if we detect an llvm-based compiler. We use
      this variable to define the llvm_CC_FLAVOR variable that we
      can use in the runtime code to conditionally compile for
      LLVM.
      6247b59e
  8. 16 Mar, 2011 1 commit
  9. 23 Jan, 2011 1 commit
    • Ian Lynagh's avatar
      Tweak some deps to avoid multiple $(wildcard ...)s · 032dd778
      Ian Lynagh authored
      Note that some things depending on the rts/includes header files now
      depend on more files: They used to include depend on includes/*.h, but
      now they also depend on header files in subdirectories. As far as I can
      see this was a bug.
      032dd778
  10. 11 Jan, 2011 1 commit
  11. 09 Jan, 2011 1 commit
    • Ian Lynagh's avatar
      Rejig the includes/ installation rules · e8a42ae2
      Ian Lynagh authored
      They're a little nicer now, and a regression in the cygwin build is
      fixed (the $i in the destination wasn't surviving being passed through
      cygpath).
      e8a42ae2
  12. 06 Jan, 2011 1 commit
    • Ian Lynagh's avatar
      On Cygwin, use a Cygwin-style path for /bin/install's destination · 57e2a81c
      Ian Lynagh authored
      cygwin's /bin/install doesn't set file modes correctly if the
      destination path is a C: style path:
      
      $ /bin/install -c -m 644 foo /cygdrive/c/cygwin/home/ian/foo2
      $ /bin/install -c -m 644 foo c:/cygwin/home/ian/foo3
      $ ls -l foo*
      -rw-r--r-- 1 ian None 0 2011-01-06 18:28 foo
      -rw-r--r-- 1 ian None 0 2011-01-06 18:29 foo2
      -rwxrwxrwx 1 ian None 0 2011-01-06 18:29 foo3
      
      This causes problems for bindisttest/checkBinaries.sh which then
      thinks that e.g. the userguide HTML files are binaries.
      
      We therefore use a /cygdrive path if we are on cygwin
      57e2a81c
  13. 06 Dec, 2010 1 commit
  14. 17 Jul, 2010 1 commit
  15. 16 Jul, 2010 1 commit
    • Ian Lynagh's avatar
      Fix HC porting test in makefiles · 7a3c2d0e
      Ian Lynagh authored
      Now that we are trying to support cross compilation, we can't use
          "$(TARGETPLATFORM)" != "$(HOSTPLATFORM)"
      as a test for HC-porting.
      7a3c2d0e
  16. 09 Dec, 2009 1 commit
  17. 05 Nov, 2009 1 commit
  18. 10 Sep, 2009 1 commit
  19. 02 Aug, 2009 1 commit
    • Simon Marlow's avatar
      RTS tidyup sweep, first phase · a2a67cd5
      Simon Marlow authored
      The first phase of this tidyup is focussed on the header files, and in
      particular making sure we are exposinng publicly exactly what we need
      to, and no more.
      
       - Rts.h now includes everything that the RTS exposes publicly,
         rather than a random subset of it.
      
       - Most of the public header files have moved into subdirectories, and
         many of them have been renamed.  But clients should not need to
         include any of the other headers directly, just #include the main
         public headers: Rts.h, HsFFI.h, RtsAPI.h.
      
       - All the headers needed for via-C compilation have moved into the
         stg subdirectory, which is self-contained.  Most of the headers for
         the rest of the RTS APIs have moved into the rts subdirectory.
      
       - I left MachDeps.h where it is, because it is so widely used in
         Haskell code.
       
       - I left a deprecated stub for RtsFlags.h in place.  The flag
         structures are now exposed by Rts.h.
      
       - Various internal APIs are no longer exposed by public header files.
      
       - Various bits of dead code and declarations have been removed
      
       - More gcc warnings are turned on, and the RTS code is more
         warning-clean.
      
       - More source files #include "PosixSource.h", and hence only use
         standard POSIX (1003.1c-1995) interfaces.
      
      There is a lot more tidying up still to do, this is just the first
      pass.  I also intend to standardise the names for external RTS APIs
      (e.g use the rts_ prefix consistently), and declare the internal APIs
      as hidden for shared libraries.
      a2a67cd5
  20. 13 Jun, 2009 1 commit
  21. 30 May, 2009 1 commit
  22. 19 May, 2009 1 commit
  23. 28 Apr, 2009 1 commit
  24. 26 Apr, 2009 1 commit
  25. 06 Feb, 2009 1 commit
  26. 10 Aug, 2008 1 commit
  27. 28 Aug, 2007 1 commit
  28. 15 Aug, 2007 1 commit
  29. 13 Aug, 2007 1 commit
    • gwright@antiope.com's avatar
      Fix build with external gmp library. · 24311993
      gwright@antiope.com authored
      ghc fails to build if you use an external gmp library. This is because
      ghc requires the header file gmp.h, which used to be provided by the
      internal gmp source code.  The file gmp.h is no longer part of the
      gmp source code, but is generated as part of the build procedure.
      If an external gmp is specified, the internal gmp is not build and the
      gmp.h file never gets generated.
      
      Of course, it was a bad idea anyway to use a header file from a potentially
      different version of the library.
      
      The patch sets HAVE_LIB_GMP if the gmp library is found during configuration
      and conditionalizes including the library header file on it.
      24311993
  30. 05 Jul, 2007 1 commit
  31. 05 Jun, 2007 1 commit
  32. 26 Mar, 2007 2 commits
  33. 17 Oct, 2006 1 commit
  34. 12 Oct, 2006 1 commit
    • Ian Lynagh's avatar
      Partially fix GHCi when unregisterised · 8c254946
      Ian Lynagh authored
      We were constructing info tables designed for TABLES_NEXT_TO_CODE,
      but were building without TABLES_NEXT_TO_CODE.
      
      This patch also fixes a bug when we are unregisterised on amd64 and
      have code with an address above 2^32.
      8c254946
  35. 25 Aug, 2006 1 commit
  36. 07 Apr, 2006 1 commit
    • Simon Marlow's avatar
      Reorganisation of the source tree · 0065d5ab
      Simon Marlow authored
      Most of the other users of the fptools build system have migrated to
      Cabal, and with the move to darcs we can now flatten the source tree
      without losing history, so here goes.
      
      The main change is that the ghc/ subdir is gone, and most of what it
      contained is now at the top level.  The build system now makes no
      pretense at being multi-project, it is just the GHC build system.
      
      No doubt this will break many things, and there will be a period of
      instability while we fix the dependencies.  A straightforward build
      should work, but I haven't yet fixed binary/source distributions.
      Changes to the Building Guide will follow, too.
      0065d5ab
  37. 24 Mar, 2006 1 commit
    • duncan.coutts@worc.ox.ac.uk's avatar
      mkDerivedConstants.c depends on ghcplatform.h · 354cefe7
      duncan.coutts@worc.ox.ac.uk authored
      I think this missing dep is what broke my parallel build
      I used make -j2 with ghc-6.4.2.20060323 and got:
      
      ------------------------------------------------------------------------
      ==fptools== make boot -wr --jobserver-fds=3,11 -j;
      in /var/tmp/portage/ghc-6.4.2_pre20060323/work/ghc-6.4.2.20060323/ghc/includes
      ------------------------------------------------------------------------
      Creating ghcplatform.h...
      Done.
      gcc -O -O2 -march=k8 -pipe -Wa,--noexecstack    -c mkDerivedConstants.c -o mkDerivedConstants.o
      In file included from ghcconfig.h:5,
                       from Stg.h:42,
                       from Rts.h:19,
                       from mkDerivedConstants.c:20:
      ghcplatform.h:1:1: unterminated #ifndef
      Done.
      						    
      With this patch applied I can no longer repoduce this build bug.
      So I think this patch should be applied to the cvs ghc-6-4-branch too.
      354cefe7
  38. 21 Oct, 2005 1 commit
    • simonmar's avatar
      [project @ 2005-10-21 14:02:17 by simonmar] · 03a9ff01
      simonmar authored
      Big re-hash of the threaded/SMP runtime
      
      This is a significant reworking of the threaded and SMP parts of
      the runtime.  There are two overall goals here:
      
        - To push down the scheduler lock, reducing contention and allowing
          more parts of the system to run without locks.  In particular,
          the scheduler does not require a lock any more in the common case.
      
        - To improve affinity, so that running Haskell threads stick to the
          same OS threads as much as possible.
      
      At this point we have the basic structure working, but there are some
      pieces missing.  I believe it's reasonably stable - the important
      parts of the testsuite pass in all the (normal,threaded,SMP) ways.
      
      In more detail:
      
        - Each capability now has a run queue, instead of one global run
          queue.  The Capability and Task APIs have been completely
          rewritten; see Capability.h and Task.h for the details.
      
        - Each capability has its own pool of worker Tasks.  Hence, Haskell
          threads on a Capability's run queue will run on the same worker
          Task(s).  As long as the OS is doing something reasonable, this
          should mean they usually stick to the same CPU.  Another way to
          look at this is that we're assuming each Capability is associated
          with a fixed CPU.
      
        - What used to be StgMainThread is now part of the Task structure.
          Every OS thread in the runtime has an associated Task, and it
          can ask for its current Task at any time with myTask().
      
        - removed RTS_SUPPORTS_THREADS symbol, use THREADED_RTS instead
          (it is now defined for SMP too).
      
        - The RtsAPI has had to change; we must explicitly pass a Capability
          around now.  The previous interface assumed some global state.
          SchedAPI has also changed a lot.
      
        - The OSThreads API now supports thread-local storage, used to
          implement myTask(), although it could be done more efficiently
          using gcc's __thread extension when available.
      
        - I've moved some POSIX-specific stuff into the posix subdirectory,
          moving in the direction of separating out platform-specific
          implementations.
      
        - lots of lock-debugging and assertions in the runtime.  In particular,
          when DEBUG is on, we catch multiple ACQUIRE_LOCK()s, and there is
          also an ASSERT_LOCK_HELD() call.
      
      What's missing so far:
      
        - I have almost certainly broken the Win32 build, will fix soon.
      
        - any kind of thread migration or load balancing.  This is high up
          the agenda, though.
      
        - various performance tweaks to do
      
        - throwTo and forkProcess still do not work in SMP mode
      03a9ff01