Merge branch 'master' of pltgit:plt

This commit is contained in:
Stephen Bloch 2011-04-28 12:15:41 -04:00
commit 2b3386776c
187 changed files with 1439 additions and 30181 deletions

View File

@ -32,7 +32,8 @@ launching an external browser (such as Firefox).
@section[#:tag "browser"]{Browser}
@defmodule[browser]
@defmodule*/no-declare[(browser)]
@declare-exporting[browser/browser browser]
The browser supports basic HTML commands, plus special Racket hyperlinks
of the form @litchar{<A MZSCHEME=sexpr>...</A>}. When the user clicks
@ -99,12 +100,7 @@ The @litchar{MZSCHEME} forms are disabled unless the web page is a
@; ----------------------------------------------------------------------
@defmixin[hyper-frame-mixin (frame%) ()]{
@defconstructor/auto-super[([url (or/c url? string? input-port?)])]{
Shows the frame and visits @racket[url].
}
@definterface[hyper-frame<%> ()]{
@defmethod[(get-hyper-panel%) (subclass?/c panel%)]{
Returns the class that is instantiated when the frame is created.
Must be a panel with hyper-panel-mixin mixed in. Defaults to just
@ -118,6 +114,16 @@ The @litchar{MZSCHEME} forms are disabled unless the web page is a
@; ----------------------------------------------------------------------
@defmixin[hyper-frame-mixin (frame%) (hyper-frame<%>)]{
@defconstructor/auto-super[([url (or/c url? string? input-port?)])]{
Shows the frame and visits @racket[url].
}
}
@; ----------------------------------------------------------------------
@defclass[hyper-no-show-frame%
(hyper-frame-mixin (frame:status-line-mixin frame:basic%))
()]
@ -137,7 +143,15 @@ The @litchar{MZSCHEME} forms are disabled unless the web page is a
@; ----------------------------------------------------------------------
@defmixin[hyper-text-mixin (text%) ()]{
@definterface[hyper-text<%> ()]{
@defmethod[(url-allows-evalling? [url (or/c port? url?)]) boolean?]{
Determines if @litchar{MZSCHEME} annotations are actually evaluated,
for a given url.
}
}
@; ----------------------------------------------------------------------
@defmixin[hyper-text-mixin (text%) (hyper-text<%>)]{
An instance of a @racket[hyper-text-mixin]-extended class should be
displayed only in an instance of a class created with
@ -257,6 +271,9 @@ The @litchar{MZSCHEME} forms are disabled unless the web page is a
}
@defclass[hyper-canvas% (hyper-canvas-mixin canvas:basic%) ()]{}
@; ----------------------------------------------------------------------
@defclass[hyper-text% (hyper-text-mixin text:keymap%) ()]{
@ -328,7 +345,12 @@ The @litchar{MZSCHEME} forms are disabled unless the web page is a
@; ----------------------------------------------------------------------
@defmixin[hyper-panel-mixin (area-container<%>) ()]{
@definterface[hyper-panel<%> ()]{
}
@; ----------------------------------------------------------------------
@defmixin[hyper-panel-mixin (area-container<%>) (hyper-panel<%>)]{
@defconstructor/auto-super[([info-line? any/c])]{
Creates controls and a hyper text canvas. The controls permit a
@ -442,6 +464,16 @@ The @litchar{MZSCHEME} forms are disabled unless the web page is a
}
}
@defstruct[(exn:cancelled exn) ()]{
This exception may be raised by the
@method[hyper-text-mixin reload] method.
}
@defstruct[(exn:file-saved-instead exn) ([pathname path-string?])]{
This exception may be raised by the
@method[hyper-text-mixin reload] method.
}
@; ----------------------------------------------------------------------
@section[#:tag "browser-unit"]{Browser Unit}

View File

@ -3,7 +3,7 @@
(check-docs (quote browser))
(check-docs (quote browser/htmltext))
(check-docs (quote browser/external))
(check-docs (quote browser/bullet-snip))
(check-docs (quote browser/bullet-snip) #:skip '(snip-class))
(check-docs (quote browser/browser))
(check-docs (quote browser/browser-unit))
(check-docs (quote browser/browser-sig))

View File

@ -201,9 +201,11 @@
(define (compile-directory dir info
#:verbose [verbose? #t]
#:skip-path [orig-skip-path #f]
#:skip-doc-sources? [skip-docs? #f])
#:skip-doc-sources? [skip-docs? #f]
#:managed-compile-zo [managed-compile-zo
(make-caching-managed-compile-zo)])
(define (worker prev sses)
(for-each (make-caching-managed-compile-zo) sses))
(for-each managed-compile-zo sses))
(compile-directory-visitor dir info worker
#:verbose verbose?
#:skip-path orig-skip-path
@ -212,21 +214,27 @@
(define (get-compile-directory-srcs dir info
#:verbose [verbose? #t]
#:skip-path [orig-skip-path #f]
#:skip-doc-sources? [skip-docs? #f])
#:skip-doc-sources? [skip-docs? #f]
#:managed-compile-zo [managed-compile-zo
(make-caching-managed-compile-zo)])
(compile-directory-visitor dir info append
#:verbose verbose?
#:skip-path orig-skip-path
#:skip-doc-sources? skip-docs?))
#:skip-doc-sources? skip-docs?
#:managed-compile-zo managed-compile-zo))
(define (compile-collection-zos collection
#:skip-path [skip-path #f]
#:skip-doc-sources? [skip-docs? #f]
#:managed-compile-zo [managed-compile-zo
(make-caching-managed-compile-zo)]
. cp)
(compile-directory (apply collection-path collection cp)
(c-get-info (cons collection cp))
#:verbose #f
#:skip-path skip-path
#:skip-doc-sources? skip-docs?))
#:skip-doc-sources? skip-docs?
#:managed-compile-zo managed-compile-zo))
(define compile-directory-zos compile-directory)
(define compile-directory-srcs get-compile-directory-srcs)

View File

@ -1,9 +0,0 @@
#lang racket/base
(require tests/utils/docs-complete)
(check-docs (quote datalog/stx))
(check-docs (quote datalog/runtime))
(check-docs (quote datalog/pretty))
(check-docs (quote datalog/parse))
(check-docs (quote datalog))
(check-docs (quote datalog/eval))
(check-docs (quote datalog/ast))

View File

@ -1,10 +1,7 @@
#lang racket/base
(require tests/utils/docs-complete)
(check-docs (quote frtime/struct))
(check-docs (quote frtime/reactive))
(check-docs (quote frtime))
(check-docs (quote frtime/gui))
(check-docs (quote frtime/frtime))
(check-docs (quote frtime/frtime-big))
(check-docs (quote frtime/frp-snip))
(check-docs (quote frtime/gui/fred))
(check-docs (quote frtime/gui))
(check-docs (quote frtime/animation))
(check-docs (quote frtime/frlibs/math))

View File

@ -1,8 +1,9 @@
#lang scribble/doc
@(require scribble/manual
scribble/eval
(for-label html)
(for-label xml))
(for-label html
xml
racket/contract))
@(define xexpr @tech[#:doc '(lib "xml/xml.scrbl")]{X-expression})
@ -64,7 +65,7 @@ Reads HTML from a port, producing an @xexpr compatible with the
"<p>Hello world</p><p><b>Testing</b>!</p>"
"</body></html>"))))
(code:comment @#,t{extract-pcdata: html-content -> (listof string)})
(code:comment @#,t{extract-pcdata: html-content/c -> (listof string)})
(code:comment @#,t{Pulls out the pcdata strings from some-content.})
(define (extract-pcdata some-content)
(cond [(x:pcdata? some-content)
@ -95,21 +96,24 @@ Reads HTML from a port, producing an @xexpr compatible with the
@racket[pcdata], @racket[entity], and @racket[attribute] are defined
in the @racketmodname[xml] documentation.
A @racket[html-content] is either
@defthing[html-content/c contract?]{
A @racket[html-content/c] is either
@itemize[
@item[@racket[html-element]]
@item[@racket[pcdata]]
@item[@racket[entity]]]
}
@defstruct[html-element ([attributes (listof attribute)])]{
Any of the structures below inherits from @racket[html-element].}
@defstruct[(html-full struct:html-element) ([content (listof html-content)])]{
@defstruct[(html-full struct:html-element) ([content (listof html-content/c)])]{
Any html tag that may include content also inherits from
@racket[html-full] without adding any additional fields.}
@defstruct[(mzscheme html-full) ()]{
A @racket[mzscheme] is special legacy value for the old documentation system.
}
@defstruct[(html html-full) ()]{
A @racket[html] is
@ -671,9 +675,9 @@ A @racket[Contents-of-object-applet] is either
]
@defstruct[(map html-full) ()]{
@defstruct[(-map html-full) ()]{
A Map is
@racket[(make-map (listof attribute) (listof Contents-of-map))]
@racket[(make--map (listof attribute) (listof Contents-of-map))]
}

View File

@ -1,7 +0,0 @@
#lang racket/base
(require tests/utils/docs-complete)
(check-docs (quote html/sgml-reader))
(check-docs (quote html))
(check-docs (quote html/html))
(check-docs (quote html/html-structs))
(check-docs (quote html/html-spec))

View File

@ -40,7 +40,7 @@
check-error
check-member-of
check-range
define-wish
;; define-wish
#%datum
#%top-interaction
empty true false

View File

@ -1566,7 +1566,7 @@ path/s is either such a string or a list of them.
"collects/tests/racket/benchmarks/common/mk-gambit.rktl" drdr:command-line #f
"collects/tests/racket/benchmarks/common/r5rs-wrap.rktl" drdr:command-line (racket "-f" *)
"collects/tests/racket/benchmarks/common/typed" responsible (stamourv)
"collects/tests/racket/benchmarks/common/typed/cpstack.rktl" drdr:command-line #f
"collects/tests/racket/benchmarks/common/typed/cpstak.rktl" drdr:command-line #f
"collects/tests/racket/benchmarks/common/typed/ctak.rktl" drdr:command-line #f
"collects/tests/racket/benchmarks/common/typed/dderiv.rktl" drdr:command-line #f
"collects/tests/racket/benchmarks/common/typed/deriv.rktl" drdr:command-line #f
@ -1822,7 +1822,7 @@ path/s is either such a string or a list of them.
"collects/tests/racket/path.rktl" drdr:command-line #f
"collects/tests/racket/pathlib.rktl" drdr:command-line (racket "-f" *)
"collects/tests/racket/pconvert.rktl" drdr:command-line #f
"collects/tests/racket/place-channel.rktl" responsible (tewk) drdr:command-line (racket "-f" *)
"collects/tests/racket/place-channel.rkt" responsible (tewk) drdr:command-line (racket "-tm" *)
"collects/tests/racket/place.rktl" responsible (tewk) drdr:command-line (racket "-f" *)
"collects/tests/racket/port.rktl" drdr:command-line #f
"collects/tests/racket/portlib.rktl" drdr:command-line #f

View File

@ -3,7 +3,7 @@
(check-docs (quote plai/web))
(check-docs (quote plai/test-harness))
(check-docs (quote plai/random-mutator))
(check-docs (quote plai/mutator))
(check-docs (quote plai/mutator) #:skip #rx"^#%")
(check-docs (quote plai))
(check-docs (quote plai/datatype))
(check-docs (quote plai/collector))

View File

@ -517,7 +517,10 @@ Various common pieces of code that both the client and server need to access
(close-input-port in)
(when outport (close-output-port outport))]
[else
(when outport (display l outport))
(when outport
(display l outport)
(newline outport)
(flush-output outport))
(planet-log l)
(loop)]))))))
(begin0

View File

@ -6,7 +6,8 @@
'#%place-struct
racket/fixnum
racket/flonum
racket/vector)
racket/vector
(for-syntax racket/base))
(provide place
place-sleep
@ -19,6 +20,9 @@
place?
place-channel-send/receive
processor-count
place/anon
place/thunk
define-place
(rename-out [pl-place-enabled? place-enabled?]))
(define-struct TH-place (th ch cust)
@ -59,6 +63,7 @@
(define (th-place-sleep n) (sleep n))
(define (th-place-wait pl) (thread-wait (TH-place-th pl)) 0)
(define (th-place-kill pl) (custodian-shutdown-all (TH-place-cust pl)))
(define (th-place-break pl) (break-thread (TH-place-th pl)))
(define (th-place-channel)
(define-values (as ar) (make-th-async-channel))
(define-values (bs br) (make-th-async-channel))
@ -117,8 +122,39 @@
(define-pl place-sleep pl-place-sleep th-place-sleep)
(define-pl place-wait pl-place-wait th-place-wait)
(define-pl place-kill pl-place-kill th-place-kill)
(define-pl place-break pl-place-break th-place-break)
(define-pl place-channel pl-place-channel th-place-channel)
(define-pl place-channel-send pl-place-channel-send th-place-channel-send)
(define-pl place-channel-receive pl-place-channel-receive th-place-channel-receive)
(define-pl place-channel? pl-place-channel? th-place-channel?)
(define-pl place? pl-place? TH-place?)
(define-syntax-rule (define-syntax-case (N a ...) b ...)
(define-syntax (N stx)
(syntax-case stx ()
[(_ a ...) b ...])))
(define-for-syntax (gen-create-place stx)
(syntax-case stx ()
[(_ ch body ...)
(with-syntax ([interal-def-name
(syntax-local-lift-expression #'(lambda (ch) body ...))]
[funcname #'OBSCURE_FUNC_NAME_%#%])
(syntax-local-lift-provide #'(rename interal-def-name funcname))
#'(let ([module-path (resolved-module-path-name
(variable-reference->resolved-module-path
(#%variable-reference)))])
(place module-path (quote funcname))))]))
(define-syntax (place/thunk stx)
(with-syntax ([create-place (gen-create-place stx)])
#'(lambda () create-place)))
(define-syntax (place/anon stx)
(gen-create-place stx))
(define-syntax (define-place stx)
(syntax-case stx ()
[(_ (name ch) body ...)
#'(define name (place/thunk ch body ...))]))

View File

@ -4,8 +4,8 @@
@title[#:tag "quick-start"]{Quick Start Guide for RackUnit}
Suppose we have code contained in @tt{file.rkt}, which
implements buggy versions of @racket[+] and @racket[-]
called @racket[my-+] and @racket[my--]:
implements buggy versions of @racket[+] and @racket[*]
called @racket[my-+] and @racket[my-*]:
@racketmod[
racket/base

View File

@ -12,17 +12,17 @@
(get-token (or/c (-> input-port?
(values any/c
symbol?
(or/c false? symbol?)
exact-nonnegative-integer?
exact-nonnegative-integer?))
(or/c symbol? #f)
(or/c exact-nonnegative-integer? #f)
(or/c exact-nonnegative-integer? #f)))
(-> input-port?
exact-nonnegative-integer?
any/c
(values any/c
symbol?
(or/c false? symbol?)
exact-nonnegative-integer?
exact-nonnegative-integer?
(or/c symbol? #f)
(or/c exact-nonnegative-integer? #f)
(or/c exact-nonnegative-integer? #f)
exact-nonnegative-integer?
any/c))))
(pairs (listof (list/c symbol? symbol?)))) void?))]{
@ -50,9 +50,9 @@
A symbol indicating how the token should be treated by the paren
matcher or @scheme[#f]. This symbol should be in the pairs argument.}
@item{
The starting position of the token.}
The starting position of the token (or @scheme[#f] if eof).}
@item{
The ending position of the token.}]
The ending position of the token (or @scheme[#f] if eof).}]
When @scheme[get-token] accepts an offset and mode value in addition to an
input port, it must also return two extra results, which are a backup

View File

@ -111,7 +111,7 @@ extraction, and type-like queries:
The created names must not be the same as a primitive or another defined name.}
@; ----------------------------------------------------------------------
@;{ ------- COMMENTED OUT FOR NOW ---------
@section{@scheme[define-wish]}
@defform[(define-wish id)]{
@ -127,7 +127,7 @@ Wished-for functions are reported in the test report for the current program.}
Similar to the above form, defines a wished-for function named @racket[id]. If the
wished-for function is called with one value, the result of @scheme[expr] is
returned as the default value. }
}
@; ----------------------------------------------------------------------
@section[#:tag "beginner-call"]{Function Calls}

View File

@ -9,6 +9,7 @@
compiler/option
compiler/option-unit
compiler/comp-unit
compiler/cm
dynext/compile-sig
dynext/link-sig
dynext/file-sig
@ -70,15 +71,21 @@ file is reported through the current output port.}
@defproc[(compile-collection-zos [collection string?] ...+
[#:skip-path skip-path (or/c path-string? #f) #f]
[#:skip-doc-sources? skip-docs? any/c #f])
[#:skip-doc-sources? skip-docs? any/c #f]
[#:managed-compile-zo managed-compile-zo
(path-string? . -> . void?)
(make-caching-managed-compile-zo)])
void?]{
Compiles the specified collection's files to @filepath{.zo} files.
Compiles the specified collection's files to @filepath{.zo} files
by using @racket[managed-compile-zo] on each source file.
The @filepath{.zo} files are placed into the collection's
@filepath{compiled} directory. By default, all files with the
@filepath{compiled} directory.
By default, all files with the
extension @filepath{.rkt}, @filepath{.ss}, or @filepath{.scm} in a collection are
compiled, as are all such files within subdirectories, execept that
any file or directory whose path starts with @scheme[racket-path] is
any file or directory whose path starts with @scheme[skip-path] is
skipped. (``Starts with'' means that the simplified path @scheme[_p]'s
byte-string form after @scheme[(simplify-path _p #f)]starts with the
byte-string form of @scheme[(simplify-path skip-path #f)].)
@ -118,17 +125,17 @@ collection. The following fields are used:
unless the provided @scheme[skip-docs?] argument is a true
value.}
]
The compilation process for an individual file is driven by
@scheme[managed-compile-zo] from @schememodname[compiler/cm].}
]}
@defproc[(compile-directory-zos [path path-string?]
[info ()]
[#:verbose verbose? any/c #f]
[#:skip-path skip-path (or/c path-string? #f) #f]
[#:skip-doc-sources? skip-docs? any/c #f])
[#:skip-doc-sources? skip-docs? any/c #f]
[#:managed-compile-zo managed-compile-zo
(path-string? . -> . void?)
(make-caching-managed-compile-zo)])
void?]{
Like @scheme[compile-collection-zos], but compiles the given directory

View File

@ -39,9 +39,9 @@ Returns @racket[#t] if @racket[v] is a weak box, @racket[#f] otherwise.}
An @deftech{ephemeron} @cite{Hayes97} is a generalization of a
@tech{weak box} (see @secref["weakbox"]). Instead of just containing
one value, an emphemeron holds two values: one that is considered the
one value, an ephemeron holds two values: one that is considered the
value of the ephemeron and another that is the ephemeron's key. Like
the value in a weak box, the value in and ephemeron may be replaced by
the value in a weak box, the value in an ephemeron may be replaced by
@racket[#f], but when the @emph{key} is no longer reachable (except
possibly via weak references) instead of when the value is no longer
reachable.

View File

@ -18,9 +18,11 @@
@; ----------------------------------------------------------------------
@margin-note{Parallel support for @racket[place] is currently disabled by
default. Enable places by supplying @DFlag{enable-places} to
@exec{configure} when building Racket.}
@margin-note{Currently, parallel support for @racket[place] is enabled
only for Racket 3m (which is the main variant of Racket), and only
by default for Windows, Linux x86/x86_64, and Mac OS X x86/x86_64. To
enable support for other platforms, use @DFlag{enable-places} with
@exec{configure} when building Racket.}
@note-lib[racket/place]
@ -117,6 +119,32 @@ racket
blocking until the place completes if it has not already completed.
}
@defproc[(place-break [p place?]) void?]{
Sends place @racket[p] a break signal; see @secref["breakhandler"].
}
@defproc[(place-kill [p place?]) void?]{
Terminates the place indicated by @racket[p],
}
@defform[(place/thunk place-channel? body ...)]{
In-line definition of a place worker body, which is lifted up to module scope.
@racket[place/thunk] closes over only module scope variables.
Returns a thunk for creating the described place.
}
@defform[(place/anon place-channel? body ...)]{
In-line definition of a place worker body, which is lifted up to module scope.
@racket[place/anon] closes over only module scope variables.
Returns the place descriptor for the newly constructed place.
}
@defform[(define-place (place-name-id place-channel-id) body ...)]{
In-line definition of a place worker body, which is lifted up to module scope.
@racket[define-place] closes over only module scope variables.
Defines a procedure for creating the described place.
}
@defproc[(place-channel) (values place-channel? place-channel?)]{

View File

@ -82,14 +82,14 @@
(define/public (send/msg msg)
(with-handlers ([exn:fail?
(lambda (x)
(eprintf "CONTROLLER SEND MESSAGE ERROR TO WORKER ~a ~a\n" id (exn-message x))
(eprintf "While sending message to parallel-do worker: ~a ~a\n" id (exn-message x))
(exit 1))])
(DEBUG_COMM (eprintf "CSENDING ~v ~v\n" id msg))
(write msg in) (flush-output in)))
(define/public (recv/msg)
(with-handlers ([exn:fail?
(lambda (x)
(eprintf "CONTROLLER RECEIVE MESSAGE ERROR FROM WORKER ~a ~a\n" id (exn-message x))
(eprintf "While receiving message from parallel-do worker ~a ~a\n" id (exn-message x))
(exit 1))])
(define r (read out))
(DEBUG_COMM (eprintf "CRECEIVNG ~v ~v\n" id r))
@ -177,6 +177,7 @@
(define (jobs?) (queue/has jobqueue))
(define (empty?) (not (queue/has jobqueue)))
(define workers #f)
(define no-breaks #f)
(dynamic-wind
(lambda ()
(parameterize-break #f
@ -206,7 +207,7 @@
[error-count error-count])
(error-threshold error-count)
(with-handlers* ([exn:fail? (lambda (e)
(printf "MASTER WRITE ERROR - writing to worker: ~v ~a\n" (wrkr/id wrkr) (exn-message e))
(printf "Error writing to worker: ~v ~a\n" (wrkr/id wrkr) (exn-message e))
(wrkr/kill wrkr)
(retry-loop (spawn (wrkr/id wrkr)) (add1 error-count)))])
(wrkr/send wrkr cmd-list))
@ -224,7 +225,7 @@
[(list node wrkr)
(handle-evt (wrkr/out wrkr) (λ (e)
(with-handlers* ([exn:fail? (lambda (e)
(printf "MASTER READ ERROR - reading from worker: ~v ~a\n" (wrkr/id wrkr) (exn-message e))
(printf "Error reading from worker: ~v ~a\n" (wrkr/id wrkr) (exn-message e))
(kill/remove-dead-worker node-worker wrkr))])
(let ([msg (if use-places e (wrkr/recv wrkr))])
(if (pair? msg)
@ -238,7 +239,9 @@
(eprintf "parallel-do-event-loop match node-worker failed.\n")
(eprintf "trying to match:\n~a\n" node-worker)]))
(DEBUG_COMM (printf "WAITING ON WORKERS TO RESPOND\n"))
(apply sync (map gen-node-handler inflight))])))
(begin0
(apply sync (map gen-node-handler inflight))
(set! no-breaks #t))])))
(lambda ()
;(printf "Asking all workers to die\n")
(for ([p workers]) (with-handlers ([exn:fail? void]) (wrkr/send p (list 'DIE))))
@ -368,28 +371,3 @@
(define module-path (path->string (resolved-module-path-name (variable-reference->resolved-module-path (#%variable-reference)))))
(parallel-do-event-loop module-path 'name initalmsg wq worker-count)
(queue/results wq))]))
(define-syntax-rule (define-syntax-case (N a ...) b ...)
(define-syntax (N stx)
(syntax-case stx ()
[(_ a ...) b ...])))
(define-for-syntax (gen-create-place stx)
(syntax-case stx ()
[(_ ch body ...)
(with-syntax ([interal-def-name
(syntax-local-lift-expression #'(lambda (ch) body ...))]
[funcname #'OBSCURE_FUNC_NAME_%#%])
(syntax-local-lift-provide #'(rename interal-def-name funcname))
#'(let ([module-path (resolved-module-path-name
(variable-reference->resolved-module-path
(#%variable-reference)))])
(place module-path (quote funcname))))]))
(define-syntax (place/thunk stx)
(with-syntax ([create-place (gen-create-place stx)])
#'(lambda () create-place)))
(define-syntax (place/anon stx)
(gen-create-place stx))

View File

@ -124,7 +124,6 @@
(when (not (zero? (string-length err))) (eprintf "STDERR:\n~a=====\n" err)))))
(define (done)
(setup-printf #f "done")
(unless (null? errors)
(setup-printf #f "")
(show-errors (current-error-port))
@ -639,6 +638,11 @@
(thunk)))])
(thunk))))))
;; We keep timestamp information for all files that we try to compile.
;; That's O(N) for an installation of size N, but the constant is small,
;; and it makes a do-nothing setup complete much faster.
(define caching-managed-compile-zo (make-caching-managed-compile-zo))
(define (compile-cc cc gcs)
(parameterize ([current-namespace (make-base-empty-namespace)])
(begin-record-error cc "making"
@ -651,6 +655,7 @@
[info (cc-info cc)])
(clean-cc dir info)
(compile-directory-zos dir info
#:managed-compile-zo caching-managed-compile-zo
#:skip-path (and (avoid-main-installation) (find-collects-dir))
#:skip-doc-sources? (not (make-docs)))))))
(match gcs

View File

@ -1,3 +1,3 @@
#lang scheme/base
(require "string-constant.ss")
(provide (all-from-out "string-constant.ss"))
#lang racket/base
(require "string-constant.rkt")
(provide (all-from-out "string-constant.rkt"))

View File

@ -2,19 +2,19 @@
(require (for-syntax racket/base)
(for-syntax mzlib/etc)
(for-syntax mzlib/list)
(for-syntax (prefix-in english: "english-string-constants.rkt"))
(for-syntax (prefix-in spanish: "spanish-string-constants.rkt"))
(for-syntax (prefix-in german: "german-string-constants.rkt"))
(for-syntax (prefix-in french: "french-string-constants.rkt"))
(for-syntax (prefix-in dutch: "dutch-string-constants.rkt"))
(for-syntax (prefix-in danish: "danish-string-constants.rkt"))
(for-syntax (prefix-in portuguese: "portuguese-string-constants.rkt"))
(for-syntax (prefix-in japanese: "japanese-string-constants.rkt"))
(for-syntax (prefix-in traditional-chinese: "traditional-chinese-string-constants.rkt"))
(for-syntax (prefix-in simplified-chinese: "simplified-chinese-string-constants.rkt"))
(for-syntax (prefix-in russian: "russian-string-constants.rkt"))
(for-syntax (prefix-in ukrainian: "ukrainian-string-constants.rkt"))
(for-syntax (prefix-in korean: "korean-string-constants.rkt")))
(for-syntax (prefix-in english: "private/english-string-constants.rkt"))
(for-syntax (prefix-in spanish: "private/spanish-string-constants.rkt"))
(for-syntax (prefix-in german: "private/german-string-constants.rkt"))
(for-syntax (prefix-in french: "private/french-string-constants.rkt"))
(for-syntax (prefix-in dutch: "private/dutch-string-constants.rkt"))
(for-syntax (prefix-in danish: "private/danish-string-constants.rkt"))
(for-syntax (prefix-in portuguese: "private/portuguese-string-constants.rkt"))
(for-syntax (prefix-in japanese: "private/japanese-string-constants.rkt"))
(for-syntax (prefix-in traditional-chinese: "private/traditional-chinese-string-constants.rkt"))
(for-syntax (prefix-in simplified-chinese: "private/simplified-chinese-string-constants.rkt"))
(for-syntax (prefix-in russian: "private/russian-string-constants.rkt"))
(for-syntax (prefix-in ukrainian: "private/ukrainian-string-constants.rkt"))
(for-syntax (prefix-in korean: "private/korean-string-constants.rkt")))
(require mzlib/file
mzlib/etc
@ -243,12 +243,3 @@
(map sc-language-name available-string-constant-sets)])
(syntax (list 'languages ...)))])))
#|
(require string-constant)
(string-constant is-this-your-native-language)
(string-constants is-this-your-native-language)
(all-languages)
(this-language)
(expand #'(string-constant is-this-your-native-language))
(expand #'(string-constants is-this-your-native-language))
|#

View File

@ -11,7 +11,8 @@ DrRacket's GUI.
@; ----------------------------------------------------------------------
@section{Using String Constants}
@defmodule[string-constants]
@defmodule*/no-declare[(string-constants)]
@declare-exporting[string-constants/string-constant string-constants]
@defform[(string-constant name)]{
@ -40,20 +41,14 @@ running DrRacket.}
@; ----------------------------------------------------------------------
@section{Adding String Constants}
@defmodule[string-constants/string-constant-lang]
To add string constants to DrRacket, see the files:
@itemize[
@item{@filepath{english-string-constants.ss}}
@item{@filepath{french-string-constants.ss}}
@item{@filepath{spanish-string-constants.ss}}
@item{@filepath{german-string-constants.ss}}
@item{@filepath{danish-string-constants.ss}}
@item{@filepath{italian-string-constants.ss}}]
To add string constants to DrRacket, see the file
@filepath{private/english-string-constants.rkt}
and the other string constants files in the @filepath{private}
directory.
Each file has the same format. They are each modules in the
@racketmodname[string-constants/string-constant-lang] language. The
@racket[string-constants/private/string-constant-lang] language. The
body of each module is a finite mapping table that gives the mapping
from the symbolic name of a string constant to its translation in the
appropriate language.
@ -61,7 +56,7 @@ appropriate language.
The @filepath{english-string-constants} is considered the master file;
string constants will be set there and translated into each of the
other language files. In addition, the
@filepath{english-string-constants.ss} file should contain hints about
@filepath{english-string-constants.rkt} file should contain hints about
the context of the strings whose symbol name might not be clear.
@; ----------------------------------------------------------------------

View File

@ -1,17 +1,4 @@
#lang racket/base
(require tests/utils/docs-complete)
(check-docs (quote string-constants/ukrainian-string-constants))
(check-docs (quote string-constants/traditional-chinese-string-constants))
(check-docs (quote string-constants/string-constant))
(check-docs (quote string-constants/spanish-string-constants))
(check-docs (quote string-constants/simplified-chinese-string-constants))
(check-docs (quote string-constants/russian-string-constants))
(check-docs (quote string-constants/portuguese-string-constants))
(check-docs (quote string-constants))
(check-docs (quote string-constants/korean-string-constants))
(check-docs (quote string-constants/japanese-string-constants))
(check-docs (quote string-constants/german-string-constants))
(check-docs (quote string-constants/french-string-constants))
(check-docs (quote string-constants/english-string-constants))
(check-docs (quote string-constants/dutch-string-constants))
(check-docs (quote string-constants/danish-string-constants))

View File

@ -0,0 +1,3 @@
#lang racket/base
(require tests/utils/docs-complete)
(check-docs (quote datalog))

View File

@ -0,0 +1,3 @@
#lang racket/base
(require tests/utils/docs-complete)
(check-docs (quote html))

View File

@ -80,9 +80,95 @@
(! (a? (d 1 2))) => false
))
; Lazy Racket examples from Premiers cours de programmation avec Scheme (Roy)
(define (pcps-tests)
;; Definitions --------------------------------------------------------------
(define (f x y) x)
(define (fac n)
(if (= n 0) 1 (* n (fac (- n 1)))))
(define (new-if test p q)
(cond (test p)
(else q)))
(define fibs (cons 0 (cons 1 (map + fibs (cdr fibs)))))
#;(define ($list-ref L k)
(let loop ((k (force k)) (L (force L)))
(if (= k 0)
(car L)
(loop (- k 1) (cdr (force L))))))
(define L2 (cons 2 (map add1 L2)))
(define (rayer n L) ; L prive des multiples de n
(filter (lambda (x) (not (= 0 (modulo x n)))) L))
(define (crible L)
(cons (car L) (crible (rayer (car L) (cdr L)))))
(define PREMS (crible L2)) ; primes
(define ZERO (cons 0 ZERO)) ; le flot infini <0,0,0,0,...>
(define (poly->serie L) ; L = coeffs en puissances croissantes
(define (copy L)
(if (null? L)
ZERO ; padding à droite par des 0
(cons (car L) (copy (cdr L)))))
(copy L))
(define (int-serie S) ; integration terme a terme
(define (aux S i)
(cons (/ (car S) i) (aux (cdr S) (+ i 1))))
(aux S 1))
(define EXPO (cons 1 (int-serie EXPO)))
(define SIN (cons 0 (int-serie COS)))
(define COS (cons 1 (map - (int-serie SIN))))
(define (ints-from n)
(cons n (ints-from (+ n 1))))
(define NAT (ints-from 0))
(define UN (cons 1 UN))
(define nats (cons 0 (map + nats UN)))
(define QUATRE (filter (lambda (x) (zero? (modulo x 4))) NAT))
(define (melanger F1 F2) ; F1 et F2 infinis strictement croissants
(cond ((< (car F1) (car F2)) (cons (car F1) (melanger (cdr F1) F2)))
((> (car F1) (car F2)) (cons (car F2) (melanger F1 (cdr F2))))
(else (cons (car F1) (melanger (cdr F1) (cdr F2))))))
(define (zoom x F)
(cons (* (car F) x) (zoom x (cdr F))))
(define PAIR (zoom 2 NAT))
(define (hamming)
(define h (cons 1 (melanger (zoom 2 h) (melanger (zoom 3 h) (zoom 5 h)))))
h)
(define h (hamming))
(define FACT (cons 1 (map * FACT (cdr NAT))))
(define (entrelacer s1 s2)
(cons (car s1) (entrelacer s2 (cdr s1))))
(define F (entrelacer NAT F))
;; Tests --------------------------------------------------------------------
(test
(!! (fac 5)) => 120
(!! (new-if (= 1 2) (/ 1 0) 3)) => 3
(!! (take 20 PREMS)) =>
'(2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71)
(!! (list-ref PREMS 999)) => 7919
(!! (apply + (take 100 PREMS))) => 24133
(!! (take 10 (poly->serie '(1 2 3)))) => '(1 2 3 0 0 0 0 0 0 0)
(!! (take 10 EXPO)) =>
'(1 1 1/2 1/6 1/24 1/120 1/720 1/5040 1/40320 1/362880)
(!! (take 8 SIN)) => '(0 1 0 -1/6 0 1/120 0 -1/5040)
(!! (take 8 COS)) => '(1 0 -1/2 0 1/24 0 -1/720 0)
(!! (take 10 (ints-from 5))) => '(5 6 7 8 9 10 11 12 13 14)
(!! (take 10 NAT)) => '(0 1 2 3 4 5 6 7 8 9)
(!! (take 10 UN)) => '(1 1 1 1 1 1 1 1 1 1)
(!! (take 10 nats)) => '(0 1 2 3 4 5 6 7 8 9)
(!! (take 10 QUATRE)) => '(0 4 8 12 16 20 24 28 32 36)
(!! (take 10 (melanger NAT QUATRE))) => '(0 1 2 3 4 5 6 7 8 9)
(!! (take 10 PAIR)) => '(0 2 4 6 8 10 12 14 16 18)
(!! (take 30 h)) =>
'(1 2 3 4 5 6 8 9 10 12 15 16 18 20 24 25 27 30 32 36 40 45 48 50 54 60 64 72 75 80)
(!! (list-ref h 10000)) => 288555831593533440
(!! (take 10 FACT)) => '(1 1 2 6 24 120 720 5040 40320 362880)
(!! (take 10 (entrelacer NAT PAIR))) => '(0 0 1 2 2 4 3 6 4 8)
(!! (take 10 F)) => '(0 0 1 0 2 1 3 0 4 2)
)
)
(provide lang-tests)
(define (lang-tests)
(! (begin (basic-tests)
(list-tests)
(take-tests)
(misc-tests))))
(misc-tests)
(pcps-tests))))

View File

@ -9,7 +9,7 @@ where <impl-or-benchmark> names an implementation as one of
...
or a benchmark as one of
conform
cpstack
cpstak
ctak
...
or any of the above prefixed by "no-" to skip the corresponding

View File

@ -282,12 +282,10 @@ exec racket -qu "$0" ${1+"$@"}
(map bytes->number (cdr m))))
(define (extract-bigloo-times bm str)
(let ([m (regexp-match #rx#"real: ([0-9]+) sys: ([0-9]+) user: ([0-9]+)" str)]
;; `time' result is 10s of milliseconds? OS ticks, maybe?
[msec/tick 10])
(list (* msec/tick (+ (bytes->number (caddr m))
(bytes->number (cadddr m))))
(* msec/tick (bytes->number (cadr m)))
(let ([m (regexp-match #rx#"real: ([0-9]+) sys: ([0-9]+) user: ([0-9]+)" str)])
(list (+ (bytes->number (caddr m))
(bytes->number (cadddr m)))
(bytes->number (cadr m))
0)))
(define (extract-larceny-times bm str)
@ -297,10 +295,12 @@ exec racket -qu "$0" ${1+"$@"}
(bytes->number (caddr m)))))
(define (extract-chicken-times bm str)
(let ([m (regexp-match #rx#"([0-9.]+) seconds.*[^0-9.]([0-9.]+) seconds" str)])
(let ([m (regexp-match #rx#"([0-9.]+)s CPU time(, ([0-9.]+)s GC time)?" str)])
(list (* 1000 (string->number (format "#e~a" (cadr m))))
#f
(* 1000 (string->number (format "#e~a" (caddr m)))))))
(if (caddr m) ; if the GC doesn't kick in, chicken doesn't print anything for GC time
(* 1000 (string->number (format "#e~a" (cadddr m))))
#f))))
(define (extract-time-times bm str)
(let ([m (regexp-match #rx#"real[ \t]+([0-9m.]+)s.*user[ \t]+([0-9m.]+)s.sys[ \t]+([0-9m.]+)s." str)]
@ -449,7 +449,7 @@ exec racket -qu "$0" ${1+"$@"}
run-exe
extract-bigloo-times
clean-up-bin
(append '(cpstack takr2)
(append '(cpstak nucleic2 takr2)
racket-specific-progs))
(make-impl 'gambit
void
@ -505,11 +505,11 @@ exec racket -qu "$0" ${1+"$@"}
racket-specific-progs))
))
(define obsolte-impls '(racket3m racketcgc racket-j racketcgc-j racketcgc-tl mzc mz-old))
(define obsolete-impls '(racket3m racketcgc racket-j racketcgc-j racketcgc-tl mzc mz-old))
(define benchmarks
'(conform
cpstack
cpstak
ctak
deriv
dderiv
@ -585,7 +585,7 @@ exec racket -qu "$0" ${1+"$@"}
num-iterations)
(process-command-line benchmarks
extra-benchmarks
(map impl-name impls) obsolte-impls
(map impl-name impls) obsolete-impls
3))
(define-runtime-path bm-directory ".")

View File

@ -1,2 +0,0 @@
(module cpstack "wrap.ss")

View File

@ -0,0 +1,2 @@
(module cpstak "wrap.ss")

View File

@ -642,6 +642,15 @@
(lambda () v) 0 "other"
(lambda () (test "other" unbox v))))
(bin-exact #t 'procedure-arity-includes? cons 2)
(bin-exact #f 'procedure-arity-includes? cons 1)
(bin-exact #f 'procedure-arity-includes? cons 3)
(bin-exact #t 'procedure-arity-includes? car 1)
(bin-exact #t 'procedure-arity-includes? car 1)
(bin-exact #t 'procedure-arity-includes? (lambda (x) x) 1)
(bin-exact #f 'procedure-arity-includes? (lambda (x) x) 2)
(bin-exact #t 'procedure-arity-includes? (lambda x x) 2)
))
(define (comp=? c1 c2)

View File

@ -0,0 +1,194 @@
#lang racket/base
(require racket/flonum
racket/fixnum
racket/place
racket/list
rackunit
(for-syntax racket/base))
(provide main)
(define (splat txt fn)
(call-with-output-file fn #:exists 'replace
(lambda (out)
(fprintf out "~a" txt))))
(define big (make-string 1025 #\K))
(define (big-sender ch msg) (car (place-channel-send/receive ch (cons msg big))))
(define-syntax (normal-receiver stx)
(syntax-case stx ()
[(_ ch x body ...)
#'(let ([x (place-channel-receive ch)])
(place-channel-send ch (begin body ...)))]))
(define-syntax (big-receiver stx)
(syntax-case stx ()
[(_ ch x body ...)
#'(let ([x (car (place-channel-receive ch))])
(place-channel-send ch (cons (begin body ...) big)))]))
(define (test expect fun . args)
(printf "~s ==> " (cons fun args))
(flush-output)
(let ([res (if (procedure? fun)
(apply fun args)
(car args))])
(printf "~s\n" res)
(let ([ok? (equal? expect res)])
(unless ok?
(printf " BUT EXPECTED ~s\n" expect))
ok?)))
(define (echo ch) (place-channel-send ch (place-channel-receive ch)))
(define (recv/print ch) (displayln (place-channel-receive ch)))
(define-struct building (rooms location) #:prefab)
(define-struct (house building) (occupied ) #:prefab)
(define h1 (make-house 5 'factory 'yes))
(define-syntax (test-place-channel-receive/send stx)
(syntax-case stx ()
[(_ ch x body ...) #'(normal-receiver ch x body ...)]))
(define-syntax (test-place-channel-receive/send-* stx)
(syntax-case stx ()
[(_ ch x body ...) #'(begin (normal-receiver ch x body) ...)]))
(define-syntax-rule (channel-test-basic-types-worker receiver ch)
(begin
(define-syntax-rule (test-place-channel-receive/send-* x body (... ...))
(begin (receiver ch x body) (... ...)))
(test-place-channel-receive/send-* x
(not x)
(not x)
(void)
null
1/3
(/ 1 5)
(* x 2)
4+9i
(+ 1 x)
(string-append x "-ok")
(cons (car x) 'b)
(list (car x) 'b (cadr x))
(vector (vector-ref x 0) 'b (vector-ref x 1))
#s((abuilding 1 building 2) 6 'utah 'no)
`(,x))))
(define (channel-test-basic-types-master sender ch)
(define-syntax-rule (test-place-channel-send-receive sender ch (send expect) ...)
(begin (test expect sender ch send) ...))
(test-place-channel-send-receive sender ch
(#t #f)
(#f #t)
(null (void))
((void) null)
((/ 1 2) 1/3)
(1/4 (/ 1 5))
((exact->inexact (/ 1 3)) 0.6666666666666666)
(3+8i 4+9i)
(1 2)
("Hello" "Hello-ok")
((cons 'a 'a) (cons 'a 'b))
((list 'a 'a) (list 'a 'b 'a))
(#(a a) #(a b a))
(h1 #s((abuilding 1 building 2) 6 'utah 'no))
('(printf "Hello") '((printf "Hello")))))
(define-place (place-worker ch)
(channel-test-basic-types-worker normal-receiver ch)
(channel-test-basic-types-worker big-receiver ch)
(define pc1 (place-channel-receive ch))
(test-place-channel-receive/send pc1 x (string-append x "-ok"))
(define pc3 (first (place-channel-receive ch)))
(test-place-channel-receive/send pc3 x (string-append x "-ok3"))
(test-place-channel-receive/send-* ch x
(begin (flvector-set! x 2 5.0) "Ready1")
(begin (flvector-set! x 2 6.0) "Ready2")
(begin (fxvector-set! x 2 5) "Ready2.1")
(begin (fxvector-set! x 2 6) "Ready2.2")
(begin (bytes-set! x 2 67) "Ready3")
(begin (bytes-set! x 2 67) "Ready4"))
(define pc5 (place-channel-receive ch))
(place-channel-send pc5 "Ready5")
(channel-test-basic-types-worker normal-receiver pc5)
(channel-test-basic-types-worker big-receiver pc5)
(for ([i (in-range 3)]) (echo pc5))
(for ([i (in-range 3)]) (recv/print ch)))
(define (main)
(let ([pl (place-worker)])
(define flv1 (shared-flvector 0.0 1.0 2.0 3.0))
(define flv2 (make-shared-flvector 4 3.0))
(define fxv1 (shared-fxvector 0 1 2 3))
(define fxv2 (make-shared-fxvector 4 3))
(define b1 (shared-bytes 66 66 66 66))
(define b2 (make-shared-bytes 4 65))
(channel-test-basic-types-master place-channel-send/receive pl)
(channel-test-basic-types-master big-sender pl)
(define-values (pc1 pc2) (place-channel))
(place-channel-send pl pc2)
(test "Testing-ok" place-channel-send/receive pc1 "Testing")
(define-values (pc3 pc4) (place-channel))
(place-channel-send pl (list pc4))
(test "Testing-ok3" place-channel-send/receive pc3 "Testing")
(test "Ready1" place-channel-send/receive pl flv1)
(test 5.0 flvector-ref flv1 2)
(test "Ready2" place-channel-send/receive pl flv2)
(test 6.0 flvector-ref flv2 2)
(test "Ready2.1" place-channel-send/receive pl fxv1)
(test 5 fxvector-ref fxv1 2)
(test "Ready2.2" place-channel-send/receive pl fxv2)
(test 6 fxvector-ref fxv2 2)
(test "Ready3" place-channel-send/receive pl b1)
(test 67 bytes-ref b1 2)
(test "Ready4" place-channel-send/receive pl b2)
(test 67 bytes-ref b2 2)
(define-values (pc5 pc6) (place-channel))
(place-channel-send pl pc5)
(test "Ready5" sync pc6)
(channel-test-basic-types-master place-channel-send/receive pc6)
(channel-test-basic-types-master big-sender pc6)
#|
|#
(let ([try-graph
(lambda (s)
(let ([v (read (open-input-string s))])
(place-channel-send pc6 v)
(test v place-channel-receive pc6)))])
(try-graph "#0=(#0# . #0#)")
(try-graph "#0=#(#0# 7 #0#)")
(try-graph "#0=#s(thing 7 #0#)"))
(check-exn exn:fail? (λ () (place-channel-send pl (open-output-string))))
(check-not-exn (λ () (place-channel-send pl "Test String")))
(check-not-exn (λ () (place-channel-send pl (bytes->path #"/tmp/unix" 'unix))))
(check-not-exn (λ () (place-channel-send pl (bytes->path #"C:\\Windows" 'windows))))
(place-wait pl)
)
)
;(report-errs)

View File

@ -1,153 +0,0 @@
(load-relative "loadtest.rktl")
(Section 'place-channel)
(require racket/flonum
racket/fixnum
rackunit)
(define (splat txt fn)
(call-with-output-file fn #:exists 'replace
(lambda (out)
(fprintf out "~a" txt))))
(splat
#<<END
(module pct1 racket/base
(provide place-main)
(require racket/flonum
racket/fixnum
racket/place
racket/list
(for-syntax racket/base))
(define-syntax (test-place-channel-receive/send stx)
(syntax-case stx ()
[(_ ch body)
(with-syntax
[(x (syntax-local-introduce #'x))]
#'(place-channel-send ch
(let ([x (place-channel-receive ch)])
body)))]))
(define-syntax-rule (test-place-channel-receive/send-* ch body ...)
(begin (test-place-channel-receive/send ch body) ...))
(define (place-main ch)
(test-place-channel-receive/send-* ch
(not x)
(not x)
(void)
null
1/3
(/ 1 5)
(* x 2)
4+9i
(+ 1 x)
(string-append x "-ok")
(cons (car x) 'b)
(list (car x) 'b (cadr x))
(vector (vector-ref x 0) 'b (vector-ref x 1))
#s((abuilding 1 building 2) 6 'utah 'no)
`(,x))
(define pc1 (place-channel-receive ch))
(test-place-channel-receive/send pc1 (string-append x "-ok"))
(define pc3 (first (place-channel-receive ch)))
(test-place-channel-receive/send pc3 (string-append x "-ok3"))
(test-place-channel-receive/send-* ch
(begin (flvector-set! x 2 5.0) "Ready1")
(begin (flvector-set! x 2 6.0) "Ready2")
(begin (fxvector-set! x 2 5) "Ready2.1")
(begin (fxvector-set! x 2 6) "Ready2.2")
(begin (bytes-set! x 2 67) "Ready3")
(begin (bytes-set! x 2 67) "Ready4"))
(define pc5 (place-channel-receive ch))
(place-channel-send pc5 "Ready5")
)
)
END
"pct1.ss")
(define-syntax-rule (pc-send-receive-test ch (send expect) ...)
(begin (test expect place-channel-send/receive ch send) ...))
(define-struct building (rooms location) #:prefab)
(define-struct (house building) (occupied ) #:prefab)
(define h1 (make-house 5 'factory 'yes))
(define flv1 (shared-flvector 0.0 1.0 2.0 3.0))
(define flv2 (make-shared-flvector 4 3.0))
(define fxv1 (shared-fxvector 0 1 2 3))
(define fxv2 (make-shared-fxvector 4 3))
(define b1 (shared-bytes 66 66 66 66))
(define b2 (make-shared-bytes 4 65))
(let ([pl (place "pct1.ss" 'place-main)])
(pc-send-receive-test pl
(#t #f)
(#f #t)
(null (void))
((void) null)
((/ 1 2) 1/3)
(1/4 (/ 1 5))
((exact->inexact (/ 1 3)) 0.6666666666666666)
(3+8i 4+9i)
(1 2)
("Hello" "Hello-ok")
((cons 'a 'a) (cons 'a 'b))
((list 'a 'a) (list 'a 'b 'a))
(#(a a) #(a b a))
(h1 #s((abuilding 1 building 2) 6 'utah 'no))
('(printf "Hello") '((printf "Hello"))))
(define-values (pc1 pc2) (place-channel))
(place-channel-send pl pc2)
(test "Testing-ok" place-channel-send/receive pc1 "Testing")
(define-values (pc3 pc4) (place-channel))
(place-channel-send pl (list pc4))
(test "Testing-ok3" place-channel-send/receive pc3 "Testing")
(test "Ready1" place-channel-send/receive pl flv1)
(test 5.0 flvector-ref flv1 2)
(test "Ready2" place-channel-send/receive pl flv2)
(test 6.0 flvector-ref flv2 2)
(test "Ready2.1" place-channel-send/receive pl fxv1)
(test 5 fxvector-ref fxv1 2)
(test "Ready2.2" place-channel-send/receive pl fxv2)
(test 6 fxvector-ref fxv2 2)
(test "Ready3" place-channel-send/receive pl b1)
(test 67 bytes-ref b1 2)
(test "Ready4" place-channel-send/receive pl b2)
(test 67 bytes-ref b2 2)
(define-values (pc5 pc6) (place-channel))
(place-channel-send pl pc5)
(test "Ready5" sync pc6)
(let ([try-graph
(lambda (s)
(let ([v (read (open-input-string s))])
(place-channel-send pc5 v)
(test v place-channel-receive pc6)))])
(try-graph "#0=(#0# . #0#)")
(try-graph "#0=#(#0# 7 #0#)")
(try-graph "#0=#s(thing 7 #0#)"))
(check-exn exn:fail? (λ () (place-channel-send pl (open-output-string))))
(check-not-exn (λ () (place-channel-send pl "Test String")))
(check-not-exn (λ () (place-channel-send pl (bytes->path #"/tmp/unix" 'unix))))
(check-not-exn (λ () (place-channel-send pl (bytes->path #"C:\\Windows" 'windows))))
(place-wait pl)
)
(report-errs)

View File

@ -8,8 +8,29 @@
;; checks to make sure that all of the exports of
;; the 'what' library are documented
(provide/contract [check-docs (-> symbol? any)])
(define (check-docs what)
(provide/contract [check-docs (->* (symbol?)
(#:skip (or/c regexp?
symbol?
#f
(-> symbol? any)
(listof (or/c regexp? symbol?))))
any)])
(define (check-docs what #:skip [skip #f])
(define (skip-proc f)
(cond
[(regexp? skip)
(regexp-match skip (symbol->string f))]
[(procedure? skip)
(skip f)]
[(not skip) #f]
[(list? skip)
(for/or ([x (in-list skip)])
(cond
[(regexp? x)
(regexp-match skip (symbol->string f))]
[(symbol? x)
(eq? x f)]))]))
(define pieces (regexp-split #rx"/" (symbol->string what)))
(cond
[(null? pieces) (error 'get-docs "bad arg ~s" what)]
@ -38,7 +59,9 @@
"~a_scm.zo"))
(if file
(call-with-input-file file read)
(k '() '()))))))
(begin
(eprintf "did not find compiled file for ~s\n" what)
(k '() '())))))))
(define (get n info)
(define a (assoc n info))
@ -51,15 +74,13 @@
(define undocumented-exports
(for/list ([ex (in-list exports)]
#:when ;; skip #%module-begin, #%top, etc.
(not (regexp-match #rx"^#%" (symbol->string ex)))
#:when ;; skip deserialization library stuff
(not (regexp-match #rx"^deserialize-info:" (symbol->string ex)))
#:when
(not (xref-binding->definition-tag
xref
(list what ex)
#f)))
#f))
#:when
(not (skip-proc ex)))
ex))
(unless (null? undocumented-exports)

View File

@ -150,18 +150,6 @@ corresponding to @racket[trest], where @racket[bound]
@ex[(box "hello world")]
@deftogether[(
@defform[(Syntaxof t)]
@defidform[Syntax]
@defidform[Identifier])]{A @rtech{syntax object} containing a
@racket[t]. @racket[Syntax] is the type of any object constructable
via @racket[datum->syntax]. @racket[Identifier] is @racket[(Syntaxof
Symbol)].
@ex[#'here]
}
@defform[(Vectorof t)]{Homogenous @rtech{vectors} of @racket[t]}
@defform[(Vector t ...)]{is the type of the list with one element, in order,
for each type provided to the @racket[Vector] type constructor.}
@ -191,9 +179,39 @@ corresponding to @racket[trest], where @racket[bound]
@defform[(Promise t)]{A @rtech{promise} of @racket[t].
@ex[(delay 3)]}
@defidform[Sexp]{A recursive union containing types traversed by
@racket[datum->syntax]. Note that this is @emph{not} the type produced
by @racket[read].}
@subsection{Syntax Objects}
The following types represent @rtech{syntax object}s and their content.
@defform[(Syntaxof t)]{A syntax object with content of type @racket[t].
Applying @racket[syntax-e] to a value of type @racket[(Syntaxof t)] produces a
value of type @racket[t].}
@defidform[Identifier]{A syntax object containing a @rtech{symbol}. Equivalent
to @racket[(Syntaxof Symbol)].}
@defidform[Syntax]{A syntax object containing only @rtech{symbol}s,
@rtech{keyword}s, @rtech{string}s, @rtech{character}s, @rtech{boolean}s,
@rtech{number}s, @rtech{box}es containing @racket[Syntax], @rtech{vector}s of
@racket[Syntax], or (possibly improper) @rtech{list}s of @racket[Syntax].
Equivalent to @racket[(Syntaxof Syntax-E)].}
@defidform[Syntax-E]{The content of syntax objects of type @racket[Syntax].
Applying @racket[syntax-e] to a value of type @racket[Syntax] produces a value
of type @racket[Syntax-E].}
@defform[(Sexpof t)]{The recursive union of @racket[t] with @rtech{symbol}s,
@rtech{keyword}s, @rtech{string}s, @rtech{character}s, @rtech{boolean}s,
@rtech{number}s, @rtech{box}es, @rtech{vector}s, and (possibly improper)
@rtech{list}s.}
@defidform[Sexp]{Applying @racket[syntax->datum] to a value of type
@racket[Syntax] produces a value of type @racket[Sexp]. Equivalent to
@racket[(Sexpof Nothing)].}
@defidform[Datum]{Applying @racket[datum->syntax] to a value of type
@racket[Datum] produces a value of type @racket[Syntax]. Equivalent to
@racket[(Sexpof Syntax)].}
@subsection{Other Type Constructors}

View File

@ -12,7 +12,7 @@
(check-docs (quote unstable/path))
(check-docs (quote unstable/mutated-vars))
(check-docs (quote unstable/match))
(check-docs (quote unstable/markparam))
(check-docs (quote unstable/markparam) #:skip #rx"^deserialize-info:")
(check-docs (quote unstable/list))
(check-docs (quote unstable/hash))
(check-docs (quote unstable/generics))

View File

@ -2,6 +2,8 @@
Version 5.2 [Mon Apr 25 11:07:14 EDT 2011]
* tiny bug fix in registration process for universe
implies incompatibility of protocols between 5.1 programs and
predecessors
------------------------------------------------------------------------
Version 5.1 [Tue Feb 8 13:05:17 EST 2011]

422
src/configure vendored
View File

@ -660,7 +660,6 @@ EXEEXT
OBJEXT
CPP
RANLIB
PERL
GREP
EGREP
PREFLAGS
@ -702,8 +701,6 @@ FRAMEWORK_PREFIX
INSTALL_ORIG_TREE
EXE_SUFFIX
SO_SUFFIX
MZRT_CGC_FLAGS
LIBATOM
OWN_LIBFFI
LIBSFX
WXLIBS
@ -754,8 +751,7 @@ LDFLAGS
LIBS
CPPFLAGS
CPP'
ac_subdirs_all='racket/gc/libatomic_ops
foreign/libffi '
ac_subdirs_all='foreign/libffi '
# Initialize some variables set by options.
ac_init_help=
@ -1296,13 +1292,8 @@ Fine tuning of the installation directories:
--includedir=DIR C header files [PREFIX/include]
--datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
--datadir=DIR read-only architecture-independent data [DATAROOTDIR]
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
--mandir=DIR man documentation [DATAROOTDIR/man]
--docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE]
--htmldir=DIR html documentation [DOCDIR]
--dvidir=DIR dvi documentation [DOCDIR]
--pdfdir=DIR pdf documentation [DOCDIR]
--psdir=DIR ps documentation [DOCDIR]
_ACEOF
cat <<\_ACEOF
@ -1316,43 +1307,37 @@ if test -n "$ac_init_help"; then
Optional Features:
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--enable-gracket compile GRacket as well as Racket (enabled by default)
--enable-plot compile plot libraries (enabled by default)
--enable-gracket build GRacket as well as Racket (enabled by default)
--enable-jit support JIT compiler (enabled by default)
--enable-foreign support foreign calls (enabled by default)
--enable-places support places (3m only; usually enabled by default)
--enable-futures support futures (usually enabled by default)
--enable-plot support plot libraries (enabled by default)
--enable-float support single-precision floats (enabled by default)
--enable-floatinstead use single-precision by default
--enable-origtree install with original directory structure
--enable-docs build docs on install (enabled by default)
--enable-usersetup setup user-specific files on install
--enable-shared create shared libraries
--enable-dynlib same as --enable-shared
--enable-lt=<prog> use <prog> instead of bundled libtool
--enable-origtree install with original directory structure
--enable-jit compile JIT support (enabled by default)
--enable-foreign compile foreign support (enabled by default)
--enable-libffi use installed libffi (enabled by default)
--enable-places compile places support (usually enabled by default)
--enable-futures compile futures support (usually enabled by default)
--enable-cgcdefault use CGC (Boehm or Senora) as default build
--enable-sgc use Senora GC instead of the Boehm GC
--enable-sgcdebug use Senora GC for debugging
--enable-account 3m: use memory-accounting GC (enabled by default)
--enable-compact 3m: use compact GC (no accounting)
--enable-backtrace 3m: support GC backtrace dumps
--enable-float support single-precision floats (enabled by default)
--enable-floatinstead compile to use single-precision by default
--enable-pthread link with pthreads
--enable-stackup assume "up" if stack direction cannot be determined
--enable-bigendian assume "big" if endianness cannot be determined
--enable-oskit compile OSKit-based Racket kernel
--enable-smalloskit compile small OSKit-based Racket kernel
--enable-perl use perl to regenerate certain sources
--enable-gprof compile for profiling with gprof (gcc only)
--enable-gcov compile to gather gcov statistics (gcc3 only)
--enable-noopt drop -O C flags
--enable-sdk=<path> use Mac OS X 10.4 SDK directory
--enable-xonx compile Unix style (e.g., use Gtk) for Mac OS X
--enable-xonx use Unix style (e.g., use Gtk) for Mac OS X
--enable-libfw install Mac OS X frameworks to /Library/Frameworks
--enable-userfw install Mac OS X frameworks to ~/Library/Frameworks
--enable-macprefix allow --prefix with a Mac OS X install
--enable-mac64 do not force 32-bit build
--enable-gcplacestest compile GC places testing support
--enable-cgcdefault use CGC (Boehm or Senora) as default build
--enable-sgc use Senora GC instead of the Boehm GC
--enable-sgcdebug use Senora GC for debugging
--enable-backtrace 3m: support GC backtrace dumps
--enable-pthread link with pthreads
--enable-stackup assume "up" if stack direction cannot be determined
--enable-bigendian assume "big" if endianness cannot be determined
--enable-gprof compile for profiling with gprof (gcc only)
--enable-gcov compile to gather gcov statistics (gcc3 only)
--enable-noopt drop -O C flags
Some influential environment variables:
CC C compiler command
@ -1797,6 +1782,30 @@ else
enable_gracket=yes
fi
# Check whether --enable-jit was given.
if test "${enable_jit+set}" = set; then
enableval=$enable_jit;
else
enable_jit=yes
fi
# Check whether --enable-foreign was given.
if test "${enable_foreign+set}" = set; then
enableval=$enable_foreign;
else
enable_foreign=yes
fi
# Check whether --enable-places was given.
if test "${enable_places+set}" = set; then
enableval=$enable_places;
fi
# Check whether --enable-futures was given.
if test "${enable_futures+set}" = set; then
enableval=$enable_futures;
fi
# Check whether --enable-plot was given.
if test "${enable_plot+set}" = set; then
enableval=$enable_plot;
@ -1804,6 +1813,25 @@ else
enable_plot=yes
fi
# Check whether --enable-float was given.
if test "${enable_float+set}" = set; then
enableval=$enable_float;
else
enable_float=yes
fi
# Check whether --enable-floatinstead was given.
if test "${enable_floatinstead+set}" = set; then
enableval=$enable_floatinstead;
fi
# Check whether --enable-origtree was given.
if test "${enable_origtree+set}" = set; then
enableval=$enable_origtree;
fi
# Check whether --enable-docs was given.
if test "${enable_docs+set}" = set; then
enableval=$enable_docs;
@ -1834,27 +1862,6 @@ else
fi
# Check whether --enable-origtree was given.
if test "${enable_origtree+set}" = set; then
enableval=$enable_origtree;
fi
# Check whether --enable-jit was given.
if test "${enable_jit+set}" = set; then
enableval=$enable_jit;
else
enable_jit=yes
fi
# Check whether --enable-foreign was given.
if test "${enable_foreign+set}" = set; then
enableval=$enable_foreign;
else
enable_foreign=yes
fi
# Check whether --enable-libffi was given.
if test "${enable_libffi+set}" = set; then
enableval=$enable_libffi;
@ -1863,119 +1870,11 @@ else
fi
# Check whether --enable-places was given.
if test "${enable_places+set}" = set; then
enableval=$enable_places;
fi
# Check whether --enable-futures was given.
if test "${enable_futures+set}" = set; then
enableval=$enable_futures;
fi
# Check whether --enable-cgcdefault was given.
if test "${enable_cgcdefault+set}" = set; then
enableval=$enable_cgcdefault;
fi
# Check whether --enable-sgc was given.
if test "${enable_sgc+set}" = set; then
enableval=$enable_sgc;
fi
# Check whether --enable-sgcdebug was given.
if test "${enable_sgcdebug+set}" = set; then
enableval=$enable_sgcdebug;
fi
# Check whether --enable-account was given.
if test "${enable_account+set}" = set; then
enableval=$enable_account;
else
enable_account=yes
fi
# Check whether --enable-compact was given.
if test "${enable_compact+set}" = set; then
enableval=$enable_compact;
fi
# Check whether --enable-backtrace was given.
if test "${enable_backtrace+set}" = set; then
enableval=$enable_backtrace;
fi
# Check whether --enable-float was given.
if test "${enable_float+set}" = set; then
enableval=$enable_float;
else
enable_float=yes
fi
# Check whether --enable-floatinstead was given.
if test "${enable_floatinstead+set}" = set; then
enableval=$enable_floatinstead;
fi
# Check whether --enable-pthread was given.
if test "${enable_pthread+set}" = set; then
enableval=$enable_pthread;
fi
# Check whether --enable-stackup was given.
if test "${enable_stackup+set}" = set; then
enableval=$enable_stackup;
fi
# Check whether --enable-bigendian was given.
if test "${enable_bigendian+set}" = set; then
enableval=$enable_bigendian;
fi
# Check whether --enable-oskit was given.
if test "${enable_oskit+set}" = set; then
enableval=$enable_oskit;
fi
# Check whether --enable-smalloskit was given.
if test "${enable_smalloskit+set}" = set; then
enableval=$enable_smalloskit;
fi
# Check whether --enable-perl was given.
if test "${enable_perl+set}" = set; then
enableval=$enable_perl;
fi
# Check whether --enable-gprof was given.
if test "${enable_gprof+set}" = set; then
enableval=$enable_gprof;
fi
# Check whether --enable-gcov was given.
if test "${enable_gcov+set}" = set; then
enableval=$enable_gcov;
fi
# Check whether --enable-noopt was given.
if test "${enable_noopt+set}" = set; then
enableval=$enable_noopt;
fi
# Check whether --enable-enable_sdk was given.
if test "${enable_enable_sdk+set}" = set; then
enableval=$enable_enable_sdk;
fi
# Check whether --enable-xonx was given.
if test "${enable_xonx+set}" = set; then
enableval=$enable_xonx;
@ -2002,9 +1901,60 @@ if test "${enable_mac64+set}" = set; then
fi
# Check whether --enable-gc2_places_testing was given.
if test "${enable_gc2_places_testing+set}" = set; then
enableval=$enable_gc2_places_testing;
# Check whether --enable-cgcdefault was given.
if test "${enable_cgcdefault+set}" = set; then
enableval=$enable_cgcdefault;
fi
# Check whether --enable-sgc was given.
if test "${enable_sgc+set}" = set; then
enableval=$enable_sgc;
fi
# Check whether --enable-sgcdebug was given.
if test "${enable_sgcdebug+set}" = set; then
enableval=$enable_sgcdebug;
fi
# Check whether --enable-backtrace was given.
if test "${enable_backtrace+set}" = set; then
enableval=$enable_backtrace;
fi
# Check whether --enable-pthread was given.
if test "${enable_pthread+set}" = set; then
enableval=$enable_pthread;
fi
# Check whether --enable-stackup was given.
if test "${enable_stackup+set}" = set; then
enableval=$enable_stackup;
fi
# Check whether --enable-bigendian was given.
if test "${enable_bigendian+set}" = set; then
enableval=$enable_bigendian;
fi
# AC_ARG_ENABLE(oskit, [ --enable-oskit compile OSKit-based Racket kernel])
# AC_ARG_ENABLE(smalloskit, [ --enable-smalloskit compile small OSKit-based Racket kernel])
# Check whether --enable-gprof was given.
if test "${enable_gprof+set}" = set; then
enableval=$enable_gprof;
fi
# Check whether --enable-gcov was given.
if test "${enable_gcov+set}" = set; then
enableval=$enable_gcov;
fi
# Check whether --enable-noopt was given.
if test "${enable_noopt+set}" = set; then
enableval=$enable_noopt;
fi
@ -2080,22 +2030,6 @@ else
fi
fi
if test "${enable_gc2_places_testing}" = "yes" ; then
enable_shared=yes
enable_places=yes
fi
# Hack for the implementor:
if test "${enable_perl}" = "" ; then
if test "$USER" = "mflatt" ; then
enable_perl=yes
fi
if test "$USER" = "matthewf" ; then
enable_perl=yes
fi
fi
if test "${enable_iconv}" = "" ; then
enable_iconv=yes
fi
@ -2220,11 +2154,8 @@ show_explicitly_disabled "${enable_places}" Places
show_explicitly_enabled "${enable_futures}" Futures
show_explicitly_disabled "${enable_futures}" Futures
show_explicitly_enabled "${enable_gc2_places_testing}" "GC2 Places Testing"
show_explicitly_enabled "${enable_sgc}" SGC
show_explicitly_enabled "${enable_sgcdebug}" "SGC debug mode"
show_explicitly_enabled "${enable_compact}" "Compact 3m GC"
show_explicitly_enabled "${enable_backtrace}" "3m GC backtraces"
show_explicitly_disabled "${enable_float}" "Single-precision floats"
@ -2234,8 +2165,6 @@ show_explicitly_enabled "${enable_pthread}" "pthreads"
show_explicitly_enabled "${enable_oskit}" "OSKit"
show_explicitly_enabled "${enable_smalloskit}" "OSKit small mode"
show_explicitly_enabled "${enable_perl}" "Perl"
show_explicitly_enabled "${enable_gprof}" "gprof"
show_explicitly_enabled "${enable_gcov}" "gcov"
@ -2270,8 +2199,6 @@ INCLUDEDEP="#"
WX_MMD_FLAG=
PREFLAGS="$CPPFLAGS"
MZRT_CGC_FLAGS=""
LIBATOM="LIBATOM_NONE"
OWN_LIBFFI="ON"
@ -3633,51 +3560,6 @@ if test "$CC" = "gcc" ; then
DYN_CFLAGS="-fPIC"
fi
if test "${enable_perl}" = "yes" ; then
# Extract the first word of "perl", so it can be a program name with args.
set dummy perl; ac_word=$2
{ echo "$as_me:$LINENO: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
if test "${ac_cv_path_PERL+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
case $PERL in
[\\/]* | ?:[\\/]*)
ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
;;
esac
fi
PERL=$ac_cv_path_PERL
if test -n "$PERL"; then
{ echo "$as_me:$LINENO: result: $PERL" >&5
echo "${ECHO_T}$PERL" >&6; }
else
{ echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6; }
fi
else
PERL=""
fi
if test "$REZ" = '' ; then
REZ=/Developer/Tools/Rez
fi
@ -3883,7 +3765,6 @@ case $OS in
*FreeBSD)
LIBS="$LIBS -rdynamic"
DYN_CFLAGS="-fPIC"
GC_THREADS_FLAG="-DGC_FREEBSD_THREADS"
enable_pthread=yes
;;
OpenBSD)
@ -3904,7 +3785,6 @@ case $OS in
Linux)
LIBS="$LIBS -ldl -lm -rdynamic"
DYN_CFLAGS="-fPIC"
GC_THREADS_FLAG="-DGC_LINUX_THREADS"
STRIP_DEBUG="strip -S"
case `$UNAME -m` in
#Required for CentOS 4.6
@ -3993,8 +3873,6 @@ case $OS in
SO_SUFFIX=.dylib
GC_THREADS_FLAG="-DGC_DARWIN_THREADS"
gcc_vers_three=`${CC} -v 2>&1 | grep "version [3-9][.]"`
if test "$gcc_vers_three" = "" ; then
# gcc 2.95.2
@ -5214,20 +5092,6 @@ if test "${enable_backtrace}" = "yes" ; then
GC2OPTIONS="$GC2OPTIONS -DMZ_GC_BACKTRACE"
fi
if test "${enable_compact}" = "yes" ; then
GC2OPTIONS="$GC2OPTIONS -DUSE_COMPACT_3M_GC"
enable_account=no
enable_memtrace=no
fi
if test "${enable_account}" = "yes" ; then
GC2OPTIONS="$GC2OPTIONS -DNEWGC_BTC_ACCOUNT"
fi
if test "${enable_memtrace}" = "yes" ; then
GC2OPTIONS="$GC2OPTIONS -DNEWGC_MEMORY_TRACE"
fi
LFS_CFLAGS=`getconf LFS_CFLAGS 2> /dev/null`
if test "${LFS_CFLAGS}" != "" ; then
echo "Large-file support: ${LFS_CFLAGS}"
@ -8243,16 +8107,6 @@ _ACEOF
fi
############### GC2_PLACES_TESTING ###################
if test "${enable_gc2_places_testing}" = "yes" ; then
cat >>confdefs.h <<\_ACEOF
#define GC2_PLACES_TESTING 1
_ACEOF
fi
############### places ###################
if test "${enable_parallel_by_default}" = "yes" ; then
@ -8290,8 +8144,6 @@ fi
############### OS threads ###################
if test "${enable_mzrt}" = "yes" ; then
MZRT_CGC_FLAGS="$GC_THREADS_FLAG -DTHREAD_LOCAL_ALLOC"
LIBATOM="LIBATOM_USE"
enable_pthread=yes
fi
@ -8633,9 +8485,6 @@ LIBS="$LIBS $EXTRALIBS"
@ -8658,9 +8507,12 @@ if test "${enable_shared}" = "yes" ; then
ac_configure_args="$ac_configure_args --enable-shared"
fi
if test "${LIBATOM}" = "LIBATOM_USE" ; then
ac_aux_dir=
for ac_dir in racket/gc/libatomic_ops "$srcdir"/racket/gc/libatomic_ops ; do
FOREIGNTARGET=
FOREIGN_IF_USED="FOREIGN_NOT_USED"
if test -d "${srcdir}/foreign" && test "${enable_foreign}" = "yes" ; then
if test "${have_libffi}" != "yes" ; then
ac_aux_dir=
for ac_dir in foreign/libffi "$srcdir"/foreign/libffi ; do
if test -f "$ac_dir/install-sh"; then
ac_aux_dir=$ac_dir
ac_install_sh="$ac_aux_dir/install-sh -c"
@ -8676,8 +8528,8 @@ for ac_dir in racket/gc/libatomic_ops "$srcdir"/racket/gc/libatomic_ops ; do
fi
done
if test -z "$ac_aux_dir"; then
{ { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in racket/gc/libatomic_ops \"$srcdir\"/racket/gc/libatomic_ops " >&5
echo "$as_me: error: cannot find install-sh or install.sh in racket/gc/libatomic_ops \"$srcdir\"/racket/gc/libatomic_ops " >&2;}
{ { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in foreign/libffi \"$srcdir\"/foreign/libffi " >&5
echo "$as_me: error: cannot find install-sh or install.sh in foreign/libffi \"$srcdir\"/foreign/libffi " >&2;}
{ (exit 1); exit 1; }; }
fi
@ -8690,14 +8542,6 @@ ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
subdirs="$subdirs racket/gc/libatomic_ops"
fi
FOREIGNTARGET=
FOREIGN_IF_USED="FOREIGN_NOT_USED"
if test -d "${srcdir}/foreign" && test "${enable_foreign}" = "yes" ; then
if test "${have_libffi}" != "yes" ; then
subdirs="$subdirs foreign/libffi"
fi
@ -9387,7 +9231,6 @@ EXEEXT!$EXEEXT$ac_delim
OBJEXT!$OBJEXT$ac_delim
CPP!$CPP$ac_delim
RANLIB!$RANLIB$ac_delim
PERL!$PERL$ac_delim
GREP!$GREP$ac_delim
EGREP!$EGREP$ac_delim
PREFLAGS!$PREFLAGS$ac_delim
@ -9429,8 +9272,6 @@ FRAMEWORK_PREFIX!$FRAMEWORK_PREFIX$ac_delim
INSTALL_ORIG_TREE!$INSTALL_ORIG_TREE$ac_delim
EXE_SUFFIX!$EXE_SUFFIX$ac_delim
SO_SUFFIX!$SO_SUFFIX$ac_delim
MZRT_CGC_FLAGS!$MZRT_CGC_FLAGS$ac_delim
LIBATOM!$LIBATOM$ac_delim
OWN_LIBFFI!$OWN_LIBFFI$ac_delim
LIBSFX!$LIBSFX$ac_delim
WXLIBS!$WXLIBS$ac_delim
@ -9438,6 +9279,9 @@ WXVARIANT!$WXVARIANT$ac_delim
ICP!$ICP$ac_delim
MRLIBINSTALL!$MRLIBINSTALL$ac_delim
LIBFINISH!$LIBFINISH$ac_delim
MAKE_GRACKET!$MAKE_GRACKET$ac_delim
MAKE_PLOT!$MAKE_PLOT$ac_delim
MAKE_COPYTREE!$MAKE_COPYTREE$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@ -9479,9 +9323,6 @@ _ACEOF
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
cat >conf$$subs.sed <<_ACEOF
MAKE_GRACKET!$MAKE_GRACKET$ac_delim
MAKE_PLOT!$MAKE_PLOT$ac_delim
MAKE_COPYTREE!$MAKE_COPYTREE$ac_delim
MAKE_FINISH!$MAKE_FINISH$ac_delim
WXPRECOMP!$WXPRECOMP$ac_delim
USE_WXPRECOMP!$USE_WXPRECOMP$ac_delim
@ -9514,7 +9355,7 @@ LIBOBJS!$LIBOBJS$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 33; then
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 30; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
@ -9972,6 +9813,9 @@ if test "$no_recursion" != yes; then
ac_prev=prefix ;;
-prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
;;
# Strip away all feature choices
-enable* | --enable* | -disable* | --disable*)
;;
*)
case $ac_arg in
*\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;

View File

@ -95,7 +95,6 @@ racketlib:
$(MAKE) mzlibrary
dynlib:
cd src; $(MAKE) mzheaders
cd dynsrc; $(MAKE) dynlib
dynexample:
@ -109,6 +108,9 @@ oe:
g-c:
cd @GCDIR@; $(MAKE) ../libmzgc.@LIBSFX@
exports:
cd src; $(MAKE) mzheaders
sproc-extra-lib:
cd @GCDIR@; $(MAKE) sproc.@LTO@
$(MAKE) sproc.@LTO@
@ -198,10 +200,13 @@ starter: mzstart.exe
exn:
$(MAKE) $(srcdir)/src/schexn.h
$(MAKE) $(collectsdir)/scheme/private/kernstruct.rkt
STARTUPDEST = startup.inc
CSTARTUPDEST = cstartup.inc
startup:
$(MAKE) $(srcdir)/src/$(STARTUPDEST)
cstartup:
$(MAKE) $(srcdir)/src/$(CSTARTUPDEST)
total_startup:
@ -225,9 +230,10 @@ $(srcdir)/src/schexn.h: $(srcdir)/src/makeexn
$(collectsdir)/scheme/private/kernstruct.rkt: $(srcdir)/src/makeexn
./racket@CGC@ -um $(srcdir)/src/makeexn kernstruct $(collectsdir)/scheme/private/kernstruct.rkt
$(srcdir)/src/$(STARTUPDEST): $(srcdir)/src/startup.rktl $(srcdir)/src/sstoinct.rkt
racket -cu $(srcdir)/src/sstoinct.rkt < $(srcdir)/src/startup.rktl > $(srcdir)/src/$(CSTARTUPDEST)
$(srcdir)/src/$(CSTARTUPDEST): $(srcdir)/src/startup.rktl $(srcdir)/src/schvers.h $(srcdir)/src/schminc.h
./racket@CGC@ -cqu $(srcdir)/src/sstoinc.rkt $(CSTARTUPEXTRA) $(srcdir)/src/$(CSTARTUPDEST) < $(srcdir)/src/startup.rktl
racket -cu $(srcdir)/src/sstoinc.rkt $(CSTARTUPEXTRA) $(srcdir)/src/$(CSTARTUPDEST) < $(srcdir)/src/startup.rktl
$(srcdir)/src/mzmark.c: $(srcdir)/src/mzmarksrc.c $(srcdir)/src/mkmark.rkt
racket -cu $(srcdir)/src/mkmark.rkt < $(srcdir)/src/mzmarksrc.c > $(srcdir)/src/mzmark.c

View File

@ -23,57 +23,48 @@ AC_INIT([Racket])
AC_CONFIG_SRCDIR(racket/src/bignum.c)
AC_CONFIG_HEADERS([racket/mzconfig.h])
AC_ARG_ENABLE(gracket, [ --enable-gracket compile GRacket as well as Racket (enabled by default)], , enable_gracket=yes )
AC_ARG_ENABLE(plot, [ --enable-plot compile plot libraries (enabled by default)], , enable_plot=yes )
AC_ARG_ENABLE(gracket, [ --enable-gracket build GRacket as well as Racket (enabled by default)], , enable_gracket=yes )
AC_ARG_ENABLE(jit, [ --enable-jit support JIT compiler (enabled by default)], , enable_jit=yes)
AC_ARG_ENABLE(foreign, [ --enable-foreign support foreign calls (enabled by default)], , enable_foreign=yes)
AC_ARG_ENABLE(places, [ --enable-places support places (3m only; usually enabled by default)])
AC_ARG_ENABLE(futures, [ --enable-futures support futures (usually enabled by default)])
AC_ARG_ENABLE(plot, [ --enable-plot support plot libraries (enabled by default)], , enable_plot=yes )
AC_ARG_ENABLE(float, [ --enable-float support single-precision floats (enabled by default)], , enable_float=yes)
AC_ARG_ENABLE(floatinstead, [ --enable-floatinstead use single-precision by default])
AC_ARG_ENABLE(origtree,[ --enable-origtree install with original directory structure])
AC_ARG_ENABLE(docs, [ --enable-docs build docs on install (enabled by default)], , enable_docs=yes)
AC_ARG_ENABLE(usersetup, [ --enable-usersetup setup user-specific files on install])
AC_ARG_ENABLE(shared, [ --enable-shared create shared libraries])
AC_ARG_ENABLE(dynlib, [ --enable-dynlib same as --enable-shared])
AC_ARG_ENABLE(lt, [ --enable-lt=<prog> use <prog> instead of bundled libtool], LIBTOOLPROG="$enableval", enable_lt=no)
AC_ARG_ENABLE(origtree,[ --enable-origtree install with original directory structure])
AC_ARG_ENABLE(jit, [ --enable-jit compile JIT support (enabled by default)], , enable_jit=yes)
AC_ARG_ENABLE(foreign, [ --enable-foreign compile foreign support (enabled by default)], , enable_foreign=yes)
AC_ARG_ENABLE(libffi, [ --enable-libffi use installed libffi (enabled by default)], , enable_libffi=yes)
AC_ARG_ENABLE(places, [ --enable-places compile places support (usually enabled by default)])
AC_ARG_ENABLE(futures, [ --enable-futures compile futures support (usually enabled by default)])
AC_ARG_ENABLE(cgcdefault, [ --enable-cgcdefault use CGC (Boehm or Senora) as default build])
AC_ARG_ENABLE(sgc, [ --enable-sgc use Senora GC instead of the Boehm GC])
AC_ARG_ENABLE(sgcdebug,[ --enable-sgcdebug use Senora GC for debugging])
AC_ARG_ENABLE(account, [ --enable-account 3m: use memory-accounting GC (enabled by default)], , enable_account=yes)
AC_ARG_ENABLE(compact, [ --enable-compact 3m: use compact GC (no accounting)])
AC_ARG_ENABLE(backtrace, [ --enable-backtrace 3m: support GC backtrace dumps])
AC_ARG_ENABLE(float, [ --enable-float support single-precision floats (enabled by default)], , enable_float=yes)
AC_ARG_ENABLE(floatinstead, [ --enable-floatinstead compile to use single-precision by default])
AC_ARG_ENABLE(pthread, [ --enable-pthread link with pthreads])
AC_ARG_ENABLE(stackup, [ --enable-stackup assume "up" if stack direction cannot be determined])
AC_ARG_ENABLE(bigendian, [ --enable-bigendian assume "big" if endianness cannot be determined])
AC_ARG_ENABLE(oskit, [ --enable-oskit compile OSKit-based Racket kernel])
AC_ARG_ENABLE(smalloskit, [ --enable-smalloskit compile small OSKit-based Racket kernel])
AC_ARG_ENABLE(perl, [ --enable-perl use perl to regenerate certain sources])
AC_ARG_ENABLE(gprof, [ --enable-gprof compile for profiling with gprof (gcc only)])
AC_ARG_ENABLE(gcov, [ --enable-gcov compile to gather gcov statistics (gcc3 only)])
AC_ARG_ENABLE(noopt, [ --enable-noopt drop -O C flags])
AC_ARG_ENABLE(enable_sdk, [ --enable-sdk=<path> use Mac OS X 10.4 SDK directory])
AC_ARG_ENABLE(xonx, [ --enable-xonx compile Unix style (e.g., use Gtk) for Mac OS X])
AC_ARG_ENABLE(xonx, [ --enable-xonx use Unix style (e.g., use Gtk) for Mac OS X])
AC_ARG_ENABLE(libfw, [ --enable-libfw install Mac OS X frameworks to /Library/Frameworks])
AC_ARG_ENABLE(libfw, [ --enable-userfw install Mac OS X frameworks to ~/Library/Frameworks])
AC_ARG_ENABLE(macprefix, [ --enable-macprefix allow --prefix with a Mac OS X install])
AC_ARG_ENABLE(mac64, [ --enable-mac64 do not force 32-bit build])
AC_ARG_ENABLE(gc2_places_testing, [ --enable-gcplacestest compile GC places testing support])
AC_ARG_ENABLE(cgcdefault, [ --enable-cgcdefault use CGC (Boehm or Senora) as default build])
AC_ARG_ENABLE(sgc, [ --enable-sgc use Senora GC instead of the Boehm GC])
AC_ARG_ENABLE(sgcdebug,[ --enable-sgcdebug use Senora GC for debugging])
AC_ARG_ENABLE(backtrace, [ --enable-backtrace 3m: support GC backtrace dumps])
AC_ARG_ENABLE(pthread, [ --enable-pthread link with pthreads])
AC_ARG_ENABLE(stackup, [ --enable-stackup assume "up" if stack direction cannot be determined])
AC_ARG_ENABLE(bigendian, [ --enable-bigendian assume "big" if endianness cannot be determined])
# AC_ARG_ENABLE(oskit, [ --enable-oskit compile OSKit-based Racket kernel])
# AC_ARG_ENABLE(smalloskit, [ --enable-smalloskit compile small OSKit-based Racket kernel])
AC_ARG_ENABLE(gprof, [ --enable-gprof compile for profiling with gprof (gcc only)])
AC_ARG_ENABLE(gcov, [ --enable-gcov compile to gather gcov statistics (gcc3 only)])
AC_ARG_ENABLE(noopt, [ --enable-noopt drop -O C flags])
###### Get OS Type #######
@ -147,22 +138,6 @@ else
fi
fi
if test "${enable_gc2_places_testing}" = "yes" ; then
enable_shared=yes
enable_places=yes
fi
# Hack for the implementor:
if test "${enable_perl}" = "" ; then
if test "$USER" = "mflatt" ; then
enable_perl=yes
fi
if test "$USER" = "matthewf" ; then
enable_perl=yes
fi
fi
if test "${enable_iconv}" = "" ; then
enable_iconv=yes
fi
@ -287,11 +262,8 @@ show_explicitly_disabled "${enable_places}" Places
show_explicitly_enabled "${enable_futures}" Futures
show_explicitly_disabled "${enable_futures}" Futures
show_explicitly_enabled "${enable_gc2_places_testing}" "GC2 Places Testing"
show_explicitly_enabled "${enable_sgc}" SGC
show_explicitly_enabled "${enable_sgcdebug}" "SGC debug mode"
show_explicitly_enabled "${enable_compact}" "Compact 3m GC"
show_explicitly_enabled "${enable_backtrace}" "3m GC backtraces"
show_explicitly_disabled "${enable_float}" "Single-precision floats"
@ -301,8 +273,6 @@ show_explicitly_enabled "${enable_pthread}" "pthreads"
show_explicitly_enabled "${enable_oskit}" "OSKit"
show_explicitly_enabled "${enable_smalloskit}" "OSKit small mode"
show_explicitly_enabled "${enable_perl}" "Perl"
show_explicitly_enabled "${enable_gprof}" "gprof"
show_explicitly_enabled "${enable_gcov}" "gcov"
@ -337,8 +307,6 @@ INCLUDEDEP="#"
WX_MMD_FLAG=
PREFLAGS="$CPPFLAGS"
MZRT_CGC_FLAGS=""
LIBATOM="LIBATOM_NONE"
OWN_LIBFFI="ON"
@ -446,12 +414,6 @@ if test "$CC" = "gcc" ; then
DYN_CFLAGS="-fPIC"
fi
if test "${enable_perl}" = "yes" ; then
AC_PATH_PROG(PERL,perl)
else
PERL=""
fi
if test "$REZ" = '' ; then
REZ=/Developer/Tools/Rez
fi
@ -516,7 +478,6 @@ case $OS in
*FreeBSD)
LIBS="$LIBS -rdynamic"
DYN_CFLAGS="-fPIC"
GC_THREADS_FLAG="-DGC_FREEBSD_THREADS"
enable_pthread=yes
;;
OpenBSD)
@ -537,7 +498,6 @@ case $OS in
Linux)
LIBS="$LIBS -ldl -lm -rdynamic"
DYN_CFLAGS="-fPIC"
GC_THREADS_FLAG="-DGC_LINUX_THREADS"
STRIP_DEBUG="strip -S"
case `$UNAME -m` in
#Required for CentOS 4.6
@ -626,8 +586,6 @@ case $OS in
SO_SUFFIX=.dylib
GC_THREADS_FLAG="-DGC_DARWIN_THREADS"
[ gcc_vers_three=`${CC} -v 2>&1 | grep "version [3-9][.]"` ]
if test "$gcc_vers_three" = "" ; then
# gcc 2.95.2
@ -909,20 +867,6 @@ if test "${enable_backtrace}" = "yes" ; then
GC2OPTIONS="$GC2OPTIONS -DMZ_GC_BACKTRACE"
fi
if test "${enable_compact}" = "yes" ; then
GC2OPTIONS="$GC2OPTIONS -DUSE_COMPACT_3M_GC"
enable_account=no
enable_memtrace=no
fi
if test "${enable_account}" = "yes" ; then
GC2OPTIONS="$GC2OPTIONS -DNEWGC_BTC_ACCOUNT"
fi
if test "${enable_memtrace}" = "yes" ; then
GC2OPTIONS="$GC2OPTIONS -DNEWGC_MEMORY_TRACE"
fi
LFS_CFLAGS=`getconf LFS_CFLAGS 2> /dev/null`
if test "${LFS_CFLAGS}" != "" ; then
echo "Large-file support: ${LFS_CFLAGS}"
@ -998,12 +942,6 @@ if test "${endianness}" = "big" ; then
AC_DEFINE(SCHEME_BIG_ENDIAN,1,[Big endian])
fi
############### GC2_PLACES_TESTING ###################
if test "${enable_gc2_places_testing}" = "yes" ; then
AC_DEFINE(GC2_PLACES_TESTING,1,[GC2 Places Testing])
fi
############### places ###################
if test "${enable_parallel_by_default}" = "yes" ; then
@ -1033,8 +971,6 @@ fi
############### OS threads ###################
if test "${enable_mzrt}" = "yes" ; then
MZRT_CGC_FLAGS="$GC_THREADS_FLAG -DTHREAD_LOCAL_ALLOC"
LIBATOM="LIBATOM_USE"
enable_pthread=yes
fi
@ -1197,7 +1133,6 @@ AC_SUBST(PROFFLAGS)
AC_SUBST(LDFLAGS)
AC_SUBST(CPP)
AC_SUBST(SED)
AC_SUBST(PERL)
AC_SUBST(AS)
AC_SUBST(RANLIB)
AC_SUBST(AR)
@ -1236,8 +1171,6 @@ AC_SUBST(FRAMEWORK_PREFIX)
AC_SUBST(INSTALL_ORIG_TREE)
AC_SUBST(EXE_SUFFIX)
AC_SUBST(SO_SUFFIX)
AC_SUBST(MZRT_CGC_FLAGS)
AC_SUBST(LIBATOM)
AC_SUBST(OWN_LIBFFI)
AC_SUBST(LIBSFX)
@ -1305,15 +1238,11 @@ if test "${enable_shared}" = "yes" ; then
ac_configure_args="$ac_configure_args --enable-shared"
fi
if test "${LIBATOM}" = "LIBATOM_USE" ; then
AC_CONFIG_AUX_DIR( racket/gc/libatomic_ops )
AC_CONFIG_SUBDIRS( racket/gc/libatomic_ops )
fi
FOREIGNTARGET=
FOREIGN_IF_USED="FOREIGN_NOT_USED"
if test -d "${srcdir}/foreign" && test "${enable_foreign}" = "yes" ; then
if test "${have_libffi}" != "yes" ; then
AC_CONFIG_AUX_DIR( foreign/libffi )
AC_CONFIG_SUBDIRS( foreign/libffi )
fi
FOREIGNTARGET="foreign-stuff"

View File

@ -37,9 +37,6 @@ VPATH= $(srcdir)
AO_SRC_DIR=$(srcdir)/libatomic_ops
AO_INSTALL_DIR=$(srcdir)/libatomic_ops
LIBATOM_USE=libatomic_ops/libatomic_ops.a
LIBATOM_NONE=
# for version.mak:
mainsrcdir = @srcdir@/../..
@INCLUDEDEP@ @srcdir@/../version.mak
@ -47,7 +44,7 @@ mainsrcdir = @srcdir@/../..
# compiler options; mainly used to allow importing options
OPTIONS=@OPTIONS@ @CGCOPTIONS@
BASEFLAGS= -I$(srcdir)/include -I$(AO_INSTALL_DIR)/src @CFLAGS@ @COMPFLAGS@ @PREFLAGS@ @MZRT_CGC_FLAGS@
BASEFLAGS= -I$(srcdir)/include -I$(AO_INSTALL_DIR)/src @CFLAGS@ @COMPFLAGS@ @PREFLAGS@
CFLAGS= $(BASEFLAGS) @PROFFLAGS@ $(OPTIONS) -DNO_EXECUTE_PERMISSION -DSILENT -DNO_GETENV -DLARGE_CONFIG -DATOMIC_UNCOLLECTABLE -DINITIAL_MARK_STACK_SIZE=8192
# To build the parallel collector on Linux, add to the above:
@ -498,7 +495,7 @@ tests:
mkdir tests
# PLTSCHEME: make ../libmzgc.a, and use $(AR), $(RANLIB), and @LIBSFX@:
base_lib ../libmzgc.@LIBSFX@: $(@LIBATOM@) $(OBJS) dyn_load.@LTO@ $(UTILS)
base_lib ../libmzgc.@LIBSFX@: $(OBJS) dyn_load.@LTO@ $(UTILS)
$(NICEAR) $(AR) $(ARFLAGS) ../libmzgc.@LIBSFX@ $(OBJS) dyn_load.@LTO@
$(RANLIB) ../libmzgc.@LIBSFX@

View File

@ -1,4 +0,0 @@
Originally written by Hans Boehm, with some platform-dependent code
imported from the Boehm-Demers-Weiser GC, where it was contributed
by many others.

View File

@ -1,340 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View File

@ -1,206 +0,0 @@
2008-02-11 Hans Boehm <Hans.Boehm@hp.com>
(Really Ian Wienand & Debian maintainers)
* src/atomic_ops/sysdeps/gcc/x86.h
(AO_compare_double_and_swap_double_full): Correctly account for
ebx usage with PIC.
2008-01-09 Hans Boehm <Hans.Boehm@hp.com>
* src/atomic_ops/sysdeps/standard_ao_double_t.h: Let
double_ptr_storage default to long long; define everywhere.
2008-01-08 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Joerg Wagner)
* src/atomic_ops/sysdeps/msftc/x86.h: Conditionally add
compare_double_and_swap_double.
2008-01-06 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Joerg Wagner)
* src/atomic_ops/generalize.h: Add test_and_set generalizations,
Add AO_double_compare_and_swap generalizations.
* src/atomic_ops/sysdeps/armcc/arm_v6.h: New file.
* src/atomic_ops/sysdeps/gcc/arm.h: Handle V6 and V7.
* src/atomic_ops/sysdeps/gcc/x86.h,
src/atomic_ops/sysdeps/{gcc,msftc}/x86_64.h: Conditionally add
compare_double_and_swap_double, commented out for msftc.
* src/atomic_ops/sysdeps/standard_ao_double_t.h: Add
double_ptr_storage field.
2008-01-03 Hans Boehm <Hans.Boehm@hp.com>
(Merge from separate atomic_ops tree)
* src/atomic_ops/sysdeps/gcc/x86.h: Define correct macro for
double-width cas, and fix its implementation.
* doc/README.txt: Clarify use of _full. Add more warnings about
data dependencies.
2008-01-02 Hans Boehm <Hans.Boehm@hp.com>
* src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire): Add
%X1 modifier to support indexed addressing.
2007-07-23 Hans Boehm <Hans.Boehm@hp.com> (really Jim Marshall)
* src/atomic_ops/sysdeps/msftc/x86.h (_InterlockedExchangeAdd): Define
for VC++6.
2007-07-05 Andreas Tobler <a.tobler@schweiz.org>
* src/atomic_ops.h: Check for __powerpc64__ and __ppc64__ to include
powerpc.h.
2007-06-26 Hans Boehm <Hans.Boehm@hp.com> (really Luca Barbato)
* src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire): Add
64-bit version.
2007-06-13 Hans Boehm <Hans.Boehm@hp.com>
* src/atomic_ops.h: include stddef.h
2007-06-06 Hans Boehm <Hans.Boehm@hp.com>
* src/atomic_ops/sysdeps/msftc/x86_64.h: New file.
* src/atomic_ops.h: Add test for msftc/x86_64.h.
* src/atomic_ops/sysdeps/msftc/x86.h: Complain for _WIN64.
* src/atomic_ops/sysdeps/Makefile.am: Add x86_64.h.
* src/atomic_ops/sysdeps/Makefile.in: Regenerate.
* src/atomic_ops/sysdeps/aligned_atomic_load_store.h,
src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h,
src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h:
Replace unsigned long cast with size_t.
2007-05-17 Hans Boehm <Hans.Boehm@hp.com>
* src/atomic_ops/sysdeps/gcc/hppa.h (AO_test_and_set_full):
Add cast for return.
2007-05-14 Hans Boehm <Hans.Boehm@hp.com>
doc/README.txt: Update to reflect C++0x effort.
2007-05-07 Hans Boehm <Hans.Boehm@hp.com> (with help from Philipp Zambelli)
* src/atomic_ops/sysdeps/msftc/x86.h: Don't just assume that mfence
is present.
* src/atomic_ops/sysdeps/gcc/arm.h (AO_test_and_set_full): Correct
oldval type.
2006-11-09 Earl Chew (Agilent)
* msftc/x86.h: Follow Microsoft documentation and include
windows.h.
[1.2 release]
2006-07-11 Hans Boehm <Hans.Boehm@hp.com>
* src/atomic_ops/sysdeps/hpc/ia64.h: Fix typos.
2006-03-28 Earl Chew (Agilent)
* src/atomic_ops/sysdeps/gcc/powerpc.h: Remove unused variable cr.
* src/atomic_ops/sysdeps/msftc/x86.h:
Use new intrinsics available in MSVC 2003 and MSVC 2005.
Use inline assembler to generate mfence and byte sized xchg
Use correct prototype for InterlockedCompareExchange.
* src/atomic_ops.h: Add test for __PPC__ .
* tests/run_parallel.inc: Add simple VxWorks support.
* tests/test_atomic.c, tests/test_atomic_include.h: Add prototypes
to silence compiler warnings.
2006-1-13 Hans Boehm <Hans.Boehm@hp.com>
*src/atomic_ops/sysdeps/gcc/powerpc.h: Beginnings of 64 bit support.
*src/atomic_ops/sysdeps/gcc/x86.h: Use "=q" for AO_test_and_set_full.
2005-11-4 Hans Boehm <Hans.Boehm@hp.com>
*src/atomic_ops/sysdeps/gcc/ia64.h: Include
all_acquire_release_volatile.h, instead of just the pointer-sized
version.
*src/atomic_ops/sysdeps/gcc/ia64.h: Include
all_acquire_release_volatile.h and all_atomic_load_store.h,
instead of just the pointer-sized versions.
[1.1 release]
2005-09-27 Hans Boehm <Hans.Boehm@hp.com>
*src/atomic_ops.h: Define AO_CAN_EMUL_CAS for arm.
*src/atomic_ops/sysdeps/read_ordered.h: New file, extracted from
ordered_except_wr.h.
*src/atomic_ops/sysdeps/ordered_except_wr.h: include read_ordered.h
instead of duplicating it.
*src/atomic_ops/sysdeps/gcc/arm.h: Include read_ordered.h.
2005-09-16 Hans Boehm <Hans.Boehm@hp.com>
*src/atomic_ops/sysdeps/gcc/arm.h: Replace the AO_test_and_set
definition with one that might actually work. (Thanks to Kazu
Hirata and Paul Brook.)
2005-08-01 Hans Boehm <Hans.Boehm@hp.com>
*src/atomic_ops/Makefile.am: Change function naming from "byte" to
"char" (again).
[1.0 release]
2005-03-21 Hans Boehm <Hans.Boehm@hp.com>
Fix various acquire_release_volatile.h files to reflect the fact
that both icc and gcc seem to reorder ordinary memory accesses around
volatile accesses early in the compilation. Modify the acquire
release test to catch this problem (with high probablity, and only on
a multiprocessor).
2005-03 Hans Boehm <Hans.Boehm@hp.com>
Fixes for recently introduced bugs. Update x86 and x86-64 assembly
syntax to deal with complaints by some recent gcc versions.
2005-02 Hans Boehm <Hans.Boehm@hp.com>
Added libatomic_ops_gpl library with support for mostly
lock-free stack and malloc().
2005-01 Ian Wienand <ianw@gelato.unsw.edu.au>, Al Stone <ahs3@debian.org>,
Hans Boehm <Hans.Boehm@hp.com>
Use autoconf, automake, starting with code from Debian package.
Don't use libtool.
2005-01 Hans Boehm <Hans.Boehm@hp.com>
* test_and_set_t_is_ao_t.h, test_and_set_t_is_char.h, others:
Change most platforms to use byte-wide test-and-set locations.
2005-01 Hans Boehm <Hans.Boehm@hp.com>
* ao_t_is_int.h: Add to trivially support int-wide operations
on platforms with int-sized pointers.
2004-12 Hans Boehm <Hans.Boehm@hp.com>
* gcc/powerpc.h: First serious attempt to support PowerPC (with
help from Maged Michael and others).
2004-12 Hans Boehm <Hans.Boehm@hp.com>
* sunc/sparc.[hS]: Added minimal supprt for the Sun SPARC compiler.
* atomic_ops_sysdeps.S: Add support for platforms that require
out-of-line assmebly code.
2004-10 Hans Boehm <Hans.Boehm@hp.com>
More work on char, short, int sized data. Add both
compare_double_and_swap_double and compare_and_swap_double.
Typically each platform will provide at most one of these.
2004-07-02 Ranko Zivojnovic
Replace both instances of AO_HAVE_NOP_FULL with AO_HAVE_nop_full.
2004-06 Hans Boehm <Hans.Boehm@hp.com>
Start to add atomic_ops primitives for different sized data.
2003-12-18 Hans Boehm <Hans.Boehm@hp.com>
* atomic_ops/sysdeps/acquire_release_volatile.h, atomic_ops.h:
Fix support for ecc on IA64. Remove compiler_barrier workaround
for gcc 3.4 and later.
2003-12-17 Hans Boehm <Hans.Boehm@hp.com>
* atomic_ops/sysdeps/hpc/{ia64.h,hppa.h},
atomic_ops/sysdeps/msftc/x86.h, Makefile, Makefile.atomic_ops,
Makefile.atomic_ops.msft, atomic_ops.h: Add initial support
for atomic_ops for VC++/Windows/X86 and HP/UX with the HP
compiler on PA_RISC and IA64.
2003-12-09 Hans Boehm <Hans.Boehm@hp.com>
* many: Install under "atomic_ops" instead of "ao".
Change atomic_ops include file structure. Auxiliary include
files are all under include/atomic_ops.
Fix (hopefully) "make dist" in atomic_ops distribution.
Renamed various types to end in _t, though the old versions
are still defined for backward compatibility.
2003-12-08 Carlos O'Donell <carlos@baldric.uwo.ca>
* ao_sysdeps/gcc/hppa.h: Define AO_CLEAR macro. Change
AO_pa_clearable_loc type. Add __ldcw, and __ldcw_align
helper macros. AO_test_and_set_full uses helper macros.
Started sometime after version 0.4 release. Currently the format is
informal. Eventually should become more GNU-like.

View File

@ -1,14 +0,0 @@
The configuration and build scripts for this package were generated by
automake/autoconf. "configure --prefix=<install dir>; make; make install"
in this directory should work.
Note that much of the content of this library is in the header files.
However two small libraries are built and installed:
- libatomic_ops.a is a support library, which is not needed on some platforms.
This is intended to be usable, under some mild restrictions, in free or
proprietary code, as are all the header files. See doc/LICENSING.txt.
- libatomic_ops_gpl.a contains some higher level facilities. This code is
currently covered by the GPL. The contents currently correspond to
the headers atomic_ops_stack.h and atomic_ops_malloc.h.

View File

@ -1,3 +0,0 @@
SUBDIRS = src doc tests
#distclean-local:

View File

@ -1,565 +0,0 @@
# Makefile.in generated by automake 1.9.3 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = .
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(top_srcdir)/configure AUTHORS COPYING \
ChangeLog INSTALL NEWS compile config.guess config.sub depcomp \
install-sh missing mkinstalldirs
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno configure.status.lineno
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/src/config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-exec-recursive install-info-recursive \
install-recursive installcheck-recursive installdirs-recursive \
pdf-recursive ps-recursive uninstall-info-recursive \
uninstall-recursive
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
{ test ! -d $(distdir) \
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -fr $(distdir); }; }
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCAS = @CCAS@
CCASFLAGS = @CCASFLAGS@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
NEED_ASM_FALSE = @NEED_ASM_FALSE@
NEED_ASM_TRUE = @NEED_ASM_TRUE@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PICFLAG = @PICFLAG@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
ac_ct_CC = @ac_ct_CC@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
datarootdir = @datarootdir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@
target_cpu = @target_cpu@
target_os = @target_os@
target_vendor = @target_vendor@
SUBDIRS = src doc tests
all: all-recursive
.SUFFIXES:
am--refresh:
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
cd $(srcdir) && $(AUTOMAKE) --gnu \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
echo ' $(SHELL) ./config.status'; \
$(SHELL) ./config.status;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
# PLTSCHEME: don't re-run autoconf or aclocal:
# $(top_srcdir)/configure: $(am__configure_deps)
# cd $(srcdir) && $(AUTOCONF)
# $(ACLOCAL_M4): $(am__aclocal_m4_deps)
# cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
uninstall-info-am:
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@set fnord $$MAKEFLAGS; amf=$$2; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
@set fnord $$MAKEFLAGS; amf=$$2; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
$(am__remove_distdir)
mkdir $(distdir)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(mkdir_p) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
distdir) \
|| exit 1; \
fi; \
done
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r $(distdir)
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
$(am__remove_distdir)
dist dist-all: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
chmod a-w $(distdir)
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& cd $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
distuninstallcheck \
&& chmod -R a-w "$$dc_install_base" \
&& ({ \
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
} || { rm -rf "$$dc_destdir"; exit 1; }) \
&& rm -rf "$$dc_destdir" \
&& $(MAKE) $(AM_MAKEFLAGS) dist \
&& rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
$(am__remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
distuninstallcheck:
@cd $(distuninstallcheck_dir) \
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
fi ; \
$(distuninstallcheck_listfiles) ; \
exit 1; } >&2
distcleancheck: distclean
@if test '$(srcdir)' = . ; then \
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
exit 1 ; \
fi
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left in build directory after distclean:" ; \
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
check: check-recursive
all-am: Makefile
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean-am: clean-generic mostlyclean-am
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
info: info-recursive
info-am:
install-data-am:
install-exec-am:
install-info: install-info-recursive
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am: uninstall-info-am
uninstall-info: uninstall-info-recursive
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
check-am clean clean-generic clean-recursive ctags \
ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \
dist-tarZ dist-zip distcheck distclean distclean-generic \
distclean-recursive distclean-tags distcleancheck distdir \
distuninstallcheck dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-exec \
install-exec-am install-info install-info-am install-man \
install-strip installcheck installcheck-am installdirs \
installdirs-am maintainer-clean maintainer-clean-generic \
maintainer-clean-recursive mostlyclean mostlyclean-generic \
mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
uninstall uninstall-am uninstall-info-am
#distclean-local:
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -1 +0,0 @@

View File

@ -1,13 +0,0 @@
This package provides semi-portable access to hardware provided
atomic memory operations. These might allow you to write code:
- That does more interesting things in signal handlers.
- Makes more effective use of multiprocessors by allowing you to write
clever lock-free code. Note that such code is very difficult to get
right, and will unavoidably be less portable than lock-based code. It
ia also not always faster than lock-based code. But it may occasionally
be a large performance win.
- To experiment with new and much better thread programming paradigms, etc.
For details and licensing restrictions see the files in the doc
subdirectory.

File diff suppressed because it is too large Load Diff

View File

@ -1,142 +0,0 @@
#! /bin/sh
# Wrapper for compilers which do not understand `-c -o'.
scriptversion=2005-05-14.22
# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# This file is maintained in Automake, please report
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
case $1 in
'')
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: compile [--help] [--version] PROGRAM [ARGS]
Wrapper for compilers which do not understand `-c -o'.
Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
arguments, and rename the output as expected.
If you are trying to build a whole package this is not the
right script to run: please start by reading the file `INSTALL'.
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "compile $scriptversion"
exit $?
;;
esac
ofile=
cfile=
eat=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as `compile cc -o foo foo.c'.
# So we strip `-o arg' only if arg is an object.
eat=1
case $2 in
*.o | *.obj)
ofile=$2
;;
*)
set x "$@" -o "$2"
shift
;;
esac
;;
*.c)
cfile=$1
set x "$@" "$1"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -z "$ofile" || test -z "$cfile"; then
# If no `-o' option was seen then we might have been invoked from a
# pattern rule where we don't need one. That is ok -- this is a
# normal compilation that the losing compiler can handle. If no
# `.c' file was seen then we are probably linking. That is also
# ok.
exec "$@"
fi
# Name of file we expect compiler to create.
cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
# Create the lock directory.
# Note: use `[/.-]' here to ensure that we don't use the same name
# that we are using for the .o file. Also, base the name on the expected
# object file name, since that is what matters with a parallel build.
lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d
while true; do
if mkdir "$lockdir" >/dev/null 2>&1; then
break
fi
sleep 1
done
# FIXME: race condition here if user kills between mkdir and trap.
trap "rmdir '$lockdir'; exit 1" 1 2 15
# Run the compile.
"$@"
ret=$?
if test -f "$cofile"; then
mv "$cofile" "$ofile"
elif test -f "${cofile}bj"; then
mv "${cofile}bj" "$ofile"
fi
rmdir "$lockdir"
exit $ret
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,66 +0,0 @@
# Process this file with autoconf to produce a configure script.
AC_INIT([libatomic_ops],[1.2])
AC_CANONICAL_TARGET([])
AC_CONFIG_SRCDIR(src/atomic_ops.c)
AM_INIT_AUTOMAKE
AC_PROG_RANLIB
AM_CONFIG_HEADER(src/config.h)
# Checks for programs.
AC_PROG_CC
AM_PROG_AS
# Checks for functions.
AC_FUNC_MMAP
# Checks for header files.
AC_HEADER_STDC
# AC_CHECK_HEADERS([ ])
# Determine PIC flag, adjust default CFLAGS
need_asm=false
PICFLAG=
AC_MSG_CHECKING(Determining PIC compiler flag)
if test "$GCC" = yes; then
AC_MSG_RESULT(-fPIC)
PICFLAG=-fPIC
else
case "$host" in
*-*-hpux*)
AC_MSG_RESULT("+Z")
PICFLAG="+Z"
if test "$GCC" != yes; then
CFLAGS="$CFLAGS +O2 -mt"
fi
;;
*-*-solaris*)
AC_MSG_RESULT(-Kpic)
PICFLAG=-Kpic
if test "$GCC" != yes; then
CFLAGS="$CFLAGS -O"
need_asm=true
fi
;;
*-*-linux*)
AC_MSG_RESULT(-fPIC)
PICFLAG=-fPIC
# Any Linux compiler had better be gcc compatible.
;;
*)
AC_MSG_RESULT("<none>")
;;
esac
fi
CFLAGS="$CFLAGS -DNDEBUG"
AC_SUBST(PICFLAG)
AC_SUBST(DEFS)
AM_CONDITIONAL(NEED_ASM, test x$need_asm = xtrue)
AC_CONFIG_FILES([Makefile src/Makefile src/atomic_ops/Makefile src/atomic_ops/sysdeps/Makefile doc/Makefile tests/Makefile])
AC_CONFIG_COMMANDS([default],[[]],[[PICFLAG=${PICFLAG}
CC=${CC}
DEFS=${DEFS}]])
AC_OUTPUT

View File

@ -1,530 +0,0 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
scriptversion=2005-07-09.11
# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
case $1 in
'')
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
Run PROGRAMS ARGS to compile a file, generating dependencies
as side-effects.
Environment variables:
depmode Dependency tracking mode.
source Source file read by `PROGRAMS ARGS'.
object Object file output by `PROGRAMS ARGS'.
DEPDIR directory where to store dependencies.
depfile Dependency file to output.
tmpdepfile Temporary file to use when outputing dependencies.
libtool Whether libtool is used (yes/no).
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "depcomp $scriptversion"
exit $?
;;
esac
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
fi
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
depfile=${depfile-`echo "$object" |
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
# here, because this file can only contain one case statement.
if test "$depmode" = hp; then
# HP compiler uses -M and no extra arg.
gccflag=-M
depmode=gcc
fi
if test "$depmode" = dashXmstdout; then
# This is just like dashmstdout with a different argument.
dashmflag=-xM
depmode=dashmstdout
fi
case "$depmode" in
gcc3)
## gcc 3 implements dependency tracking that does exactly what
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
## it if -MD -MP comes after the -MF stuff. Hmm.
"$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
mv "$tmpdepfile" "$depfile"
;;
gcc)
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
## -MM, not -M (despite what the docs say).
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
gccflag=-MD,
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
## The second -e expression handles DOS-style file names with drive letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
## This next piece of magic avoids the `deleted header file' problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
tr ' ' '
' < "$tmpdepfile" |
## Some versions of gcc put a space before the `:'. On the theory
## that the space means something, we add a space to the output as
## well.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
sgi)
if test "$libtool" = yes; then
"$@" "-Wp,-MDupdate,$tmpdepfile"
else
"$@" -MDupdate "$tmpdepfile"
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
echo "$object : \\" > "$depfile"
# Clip off the initial element (the dependent). Don't try to be
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
# the IRIX cc adds comments like `#:fec' to the end of the
# dependency line.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
tr '
' ' ' >> $depfile
echo >> $depfile
# The second pass generates a dummy entry for each header file.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
>> $depfile
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. In older versions, this file always lives in the
# current directory. Also, the AIX compiler puts `$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
tmpdepfile="$stripped.u"
if test "$libtool" = yes; then
"$@" -Wc,-M
else
"$@" -M
fi
stat=$?
if test -f "$tmpdepfile"; then :
else
stripped=`echo "$stripped" | sed 's,^.*/,,'`
tmpdepfile="$stripped.u"
fi
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
if test -f "$tmpdepfile"; then
outname="$stripped.o"
# Each line is of the form `foo.o: dependent.h'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
icc)
# Intel's C compiler understands `-MD -MF file'. However on
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
# ICC 7.0 will fill foo.d with something like
# foo.o: sub/foo.c
# foo.o: sub/foo.h
# which is wrong. We want:
# sub/foo.o: sub/foo.c
# sub/foo.o: sub/foo.h
# sub/foo.c:
# sub/foo.h:
# ICC 7.1 will output
# foo.o: sub/foo.c sub/foo.h
# and will wrap long lines using \ :
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
"$@" -MD -MF "$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
# Each line is of the form `foo.o: dependent.h',
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this invocation
# correctly. Breaking it into two sed invocations is a workaround.
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
tru64)
# The Tru64 compiler uses -MD to generate dependencies as a side
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
# dependencies in `foo.d' instead, so we check for that too.
# Subdirectories are respected.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
# With Tru64 cc, shared objects can also be used to make a
# static library. This mecanism is used in libtool 1.4 series to
# handle both shared and static libraries in a single compilation.
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
#
# With libtool 1.5 this exception was removed, and libtool now
# generates 2 separate objects for the 2 libraries. These two
# compilations output dependencies in in $dir.libs/$base.o.d and
# in $dir$base.o.d. We have to check for both files, because
# one of the two compilations can be disabled. We should prefer
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
# automatically cleaned when .libs/ is deleted, while ignoring
# the former would cause a distcleancheck panic.
tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
tmpdepfile2=$dir$base.o.d # libtool 1.5
tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
"$@" -Wc,-MD
else
tmpdepfile1=$dir$base.o.d
tmpdepfile2=$dir$base.d
tmpdepfile3=$dir$base.d
tmpdepfile4=$dir$base.d
"$@" -MD
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
# That's a tab and a space in the [].
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
#nosideeffect)
# This comment above is used by automake to tell side-effect
# dependency tracking mechanisms from slower ones.
dashmstdout)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test $1 != '--mode=compile'; do
shift
done
shift
fi
# Remove `-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
test -z "$dashmflag" && dashmflag=-M
# Require at least two characters before searching for `:'
# in the target name. This is to cope with DOS-style filenames:
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
"$@" $dashmflag |
sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
tr ' ' '
' < "$tmpdepfile" | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
dashXmstdout)
# This case only exists to satisfy depend.m4. It is never actually
# run, as this mode is specially recognized in the preamble.
exit 1
;;
makedepend)
"$@" || exit $?
# Remove any Libtool call
if test "$libtool" = yes; then
while test $1 != '--mode=compile'; do
shift
done
shift
fi
# X makedepend
shift
cleared=no
for arg in "$@"; do
case $cleared in
no)
set ""; shift
cleared=yes ;;
esac
case "$arg" in
-D*|-I*)
set fnord "$@" "$arg"; shift ;;
# Strip any option that makedepend may not understand. Remove
# the object too, otherwise makedepend will parse it as a source file.
-*|$object)
;;
*)
set fnord "$@" "$arg"; shift ;;
esac
done
obj_suffix="`echo $object | sed 's/^.*\././'`"
touch "$tmpdepfile"
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
sed '1,2d' "$tmpdepfile" | tr ' ' '
' | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
cpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test $1 != '--mode=compile'; do
shift
done
shift
fi
# Remove `-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
"$@" -E |
sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
sed '$ s: \\$::' > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
cat < "$tmpdepfile" >> "$depfile"
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvisualcpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o,
# because we must use -o when running libtool.
"$@" || exit $?
IFS=" "
for arg
do
case "$arg" in
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
set fnord "$@"
shift
shift
;;
*)
set fnord "$@" "$arg"
shift
shift
;;
esac
done
"$@" -E |
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
echo " " >> "$depfile"
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
none)
exec "$@"
;;
*)
echo "Unknown depmode $depmode" 1>&2
exit 1
;;
esac
exit 0
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

View File

@ -1,340 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View File

@ -1,64 +0,0 @@
Our intent is to make it easy to use libatomic_ops, in
both free and proprietary software. Hence most code that we expect to be
linked into a client application is covered by an MIT-style license.
A few library routines are covered by the GNU General Public License.
These are put into a separate library, libatomic_ops_gpl.a .
The low-level part of the library is mostly covered by the following
license:
----------------------------------------
Copyright (c) ...
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
--------------------------------
A few files in the sysdeps directory were inherited in part from the
Boehm-Demers-Weiser conservative garbage collector, and are covered by
its license, which is similar in spirit:
--------------------------------
Copyright (c) ...
THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
Permission is hereby granted to use or copy this program
for any purpose, provided the above notices are retained on all copies.
Permission to modify the code and to distribute modified code is granted,
provided the above notices are retained, and a notice that the code was
modified is included with the above copyright notice.
----------------------------------
A few files are covered by the GNU General Public License. (See file
"COPYING".) This applies only to test code, sample applications,
and the libatomic_ops_gpl portion of the library.
Thus libatomic_ops_gpl should generally not be linked into proprietary code.
(This distinction was motivated by patent considerations.)
It is possible that the license of the GPL pieces may be changed for
future versions to make them more consistent with the rest of the package.
If you submit patches, and have strong preferences about licensing, please
express them.

View File

@ -1,3 +0,0 @@
# installed documentation
#
dist_pkgdata_DATA=COPYING LICENSING.txt README.txt COPYING README_stack.txt README_malloc.txt README_win32.txt

View File

@ -1,330 +0,0 @@
# Makefile.in generated by automake 1.9.3 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
subdir = doc
DIST_COMMON = $(dist_pkgdata_DATA) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in COPYING
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/src/config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
am__installdirs = "$(DESTDIR)$(pkgdatadir)"
dist_pkgdataDATA_INSTALL = $(INSTALL_DATA)
DATA = $(dist_pkgdata_DATA)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCAS = @CCAS@
CCASFLAGS = @CCASFLAGS@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
NEED_ASM_FALSE = @NEED_ASM_FALSE@
NEED_ASM_TRUE = @NEED_ASM_TRUE@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PICFLAG = @PICFLAG@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
ac_ct_CC = @ac_ct_CC@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
datarootdir = @datarootdir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@
target_cpu = @target_cpu@
target_os = @target_os@
target_vendor = @target_vendor@
# installed documentation
#
dist_pkgdata_DATA = COPYING LICENSING.txt README.txt COPYING README_stack.txt README_malloc.txt README_win32.txt
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu doc/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
uninstall-info-am:
install-dist_pkgdataDATA: $(dist_pkgdata_DATA)
@$(NORMAL_INSTALL)
test -z "$(pkgdatadir)" || $(mkdir_p) "$(DESTDIR)$(pkgdatadir)"
@list='$(dist_pkgdata_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(dist_pkgdataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgdatadir)/$$f'"; \
$(dist_pkgdataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgdatadir)/$$f"; \
done
uninstall-dist_pkgdataDATA:
@$(NORMAL_UNINSTALL)
@list='$(dist_pkgdata_DATA)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(pkgdatadir)/$$f'"; \
rm -f "$(DESTDIR)$(pkgdatadir)/$$f"; \
done
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(DATA)
installdirs:
for dir in "$(DESTDIR)$(pkgdatadir)"; do \
test -z "$$dir" || $(mkdir_p) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am: install-dist_pkgdataDATA
install-exec-am:
install-info: install-info-am
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-dist_pkgdataDATA uninstall-info-am
.PHONY: all all-am check check-am clean clean-generic distclean \
distclean-generic distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am \
install-dist_pkgdataDATA install-exec install-exec-am \
install-info install-info-am install-man install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
pdf-am ps ps-am uninstall uninstall-am \
uninstall-dist_pkgdataDATA uninstall-info-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -1,245 +0,0 @@
Usage:
0) If possible, do this on a multiprocessor, especially if you are planning
on modifying or enhancing the package. It will work on a uniprocessor,
but the tests are much more likely to pass in the presence of serious problems.
1) Type ./configure --prefix=<install dir>; make; make check
in the directory containing unpacked source. The usual GNU build machinery
is used, except that only static, but position-independent, libraries
are normally built. On Windows, read README_win32.txt instead.
2) Applications should include atomic_ops.h. Nearly all operations
are implemented by header files included from it. It is sometimes
necessary, and always recommended to also link against libatomic_ops.a.
To use the almost non-blocking stack or malloc implementations,
see the corresponding README files, and also link against libatomic_gpl.a
before linking against libatomic_ops.a.
OVERVIEW:
Atomic_ops.h defines a large collection of operations, each one of which is
a combination of an (optional) atomic memory operation, and a memory barrier.
Also defines associated feature-test macros to determine whether a particular
operation is available on the current target hardware (either directly or
by synthesis). This is an attempt to replace various existing files with
similar goals, since they usually do not handle differences in memory
barrier styles with sufficient generality.
If this is included after defining AO_REQUIRE_CAS, then the package
will make an attempt to emulate compare-and-swap in a way that (at least
on Linux) should still be async-signal-safe. As a result, most other
atomic operations will then be defined using the compare-and-swap
emulation. This emulation is slow, since it needs to disable signals.
And it needs to block in case of contention. If you care about performance
on a platform that can't directly provide compare-and-swap, there are
probably better alternatives. But this allows easy ports to some such
platforms (e.g. PA_RISC). The option is ignored if compare-and-swap
can be implemented directly.
If atomic_ops.h is included after defining AO_USE_PTHREAD_DEFS, then all
atomic operations will be emulated with pthread locking. This is NOT
async-signal-safe. And it is slow. It is intended primarily for debugging
of the atomic_ops package itself.
Note that the implementation reflects our understanding of real processor
behavior. This occasionally diverges from the documented behavior. (E.g.
the documented X86 behavior seems to be weak enough that it is impractical
to use. Current real implementations appear to be much better behaved.)
We of course are in no position to guarantee that future processors
(even HPs) will continue to behave this way, though we hope they will.
This is a work in progress. Corrections/additions for other platforms are
greatly appreciated. It passes rudimentary tests on X86, Itanium, and
Alpha.
OPERATIONS:
Most operations operate on values of type AO_t, which are unsigned integers
whose size matches that of pointers on the given architecture. Exceptions
are:
- AO_test_and_set operates on AO_TS_t, which is whatever size the hardware
supports with good performance. In some cases this is the length of a cache
line. In some cases it is a byte. In many cases it is equivalent to AO_t.
- A few operations are implemented on smaller or larger size integers.
Such operations are indicated by the appropriate prefix:
AO_char_... Operates on unsigned char values.
AO_short_... Operates on unsigned short values.
AO_int_... Operates on unsigned int values.
(Currently a very limited selection of these is implemented. We're
working on it.)
The defined operations are all of the form AO_[<size>_]<op><barrier>(<args>).
The <op> component specifies an atomic memory operation. It may be
one of the following, where the corresponding argument and result types
are also specified:
void nop()
No atomic operation. The barrier may still be useful.
AO_t load(volatile AO_t * addr)
Atomic load of *addr.
void store(volatile AO_t * addr, AO_t new_val)
Atomically store new_val to *addr.
AO_t fetch_and_add(volatile AO_t *addr, AO_t incr)
Atomically add incr to *addr, and return the original value of *addr.
AO_t fetch_and_add1(volatile AO_t *addr)
Equivalent to AO_fetch_and_add(addr, 1).
AO_t fetch_and_sub1(volatile AO_t *addr)
Equivalent to AO_fetch_and_add(addr, (AO_t)(-1)).
void or(volatile AO_t *addr, AO_t incr)
Atomically or incr into *addr.
int compare_and_swap(volatile AO_t * addr, AO_t old_val, AO_t new_val)
Atomically compare *addr to old_val, and replace *addr by new_val
if the first comparison succeeds. Returns nonzero if the comparison
succeeded and *addr was updated.
AO_TS_VAL_t test_and_set(volatile AO_TS_t * addr)
Atomically read the binary value at *addr, and set it. AO_TS_VAL_t
is an enumeration type which includes the two values AO_TS_SET and
and AO_TS_CLEAR. An AO_TS_t location is capable of holding an
AO_TS_VAL_t, but may be much larger, as dictated by hardware
constraints. Test_and_set logically sets the value to AO_TS_SET.
It may be reset to AO_TS_CLEAR with the AO_CLEAR(AO_TS_t *) macro.
AO_TS_t locations should be initialized to AO_TS_INITIALIZER.
The values of AO_TS_SET and AO_TS_CLEAR are hardware dependent.
(On PA-RISC, AO_TS_SET is zero!)
Test_and_set is a more limited version of compare_and_swap. Its only
advantage is that it is more easily implementable on some hardware. It
should thus be used if only binary test-and-set functionality is needed.
If available, we also provide compare_and_swap operations that operate
on wider values. Since standard data types for double width values
may not be available, these explicitly take pairs of arguments for the
new and/or old value. Unfortunately, there are two common variants,
neither of which can easily and efficiently emulate the other.
The first performs a comparison against the entire value being replaced,
where the second replaces a double-width replacement, but performs
a single-width comparison:
int compare_double_and_swap_double(volatile AO_double_t * addr,
AO_t old_val1, AO_t old_val2,
AO_t new_val1, AO_t new_val2);
int compare_and_swap_double(volatile AO_double_t * addr,
AO_t old_val1,
AO_t new_val1, AO_t new_val2);
where AO_double_t is a structure containing AO_val1 and AO_val2 fields,
both of type AO_t. For compare_and_swap_double, we compare against
the val1 field. AO_double_t exists only if AO_HAVE_double_t
is defined.
ORDERING CONSTRAINTS:
Each operation name also includes a suffix that specifies the associated
ordering semantics. The ordering constraint limits reordering of this
operation with repsect to other atomic operations and ordinary memory
references. The current implementation assumes that all memory references
are to ordinary cacheable memory; the ordering guarantee is with respect
to other threads or processes, not I/O devices. (Whether or not this
distinction is important is platform-dependent.)
Ordering suffixes are one of the following:
<none>: No memory barrier. A plain AO_nop() really does nothing.
_release: Earlier operations must become visible to other threads
before the atomic operation.
_acquire: Later operations must become visible after this operation.
_read: Subsequent reads must become visible after reads included in
the atomic operation or preceding it. Rarely useful for clients?
_write: Earlier writes become visible before writes during or after
the atomic operation. Rarely useful for clients?
_full: Ordered with respect to both earlier and later memops.
AO_store_full or AO_nop_full are the normal ways to force a store
to be ordered with respect to a later load.
_release_write: Ordered with respect to earlier writes. This is
normally implemented as either a _write or _release
barrier.
_dd_acquire_read: Ordered with respect to later reads that are data
dependent on this one. This is needed on
a pointer read, which is later dereferenced to read a
second value, with the expectation that the second
read is ordered after the first one. On most architectures,
this is equivalent to no barrier. (This is very
hard to define precisely. It should probably be avoided.
A major problem is that optimizers tend to try to
eliminate dependencies from the generated code, since
dependencies force the hardware to execute the code
serially.)
_release_read: Ordered with respect to earlier reads. Useful for
implementing read locks. Can be implemented as _release,
but not as _read, since _read groups the current operation
with the earlier ones.
We assume that if a store is data-dependent on an a previous load, then
the two are always implicitly ordered.
It is possible to test whether AO_<op><barrier> is available on the
current platform by checking whether AO_HAVE_<op>_<barrier> is defined
as a macro.
Note that we generally don't implement operations that are either
meaningless (e.g. AO_nop_acquire, AO_nop_release) or which appear to
have no clear use (e.g. AO_load_release, AO_store_acquire, AO_load_write,
AO_store_read). On some platforms (e.g. PA-RISC) many operations
will remain undefined unless AO_REQUIRE_CAS is defined before including
the package.
When typed in the package build directory, the following command
will print operations that are unimplemented on the platform:
make test_atomic; ./test_atomic
The following command generates a file "list_atomic.i" containing the
macro expansions of all implemented operations on the platform:
make list_atomic.i
Future directions:
It currently appears that something roughly analogous to this is very likely
to become part of the C++0x standard. That effort has pointed out a number
of issues that we expect to address there. Since some of the solutions
really require compiler support, they may not be completely addressed here.
Known issues include:
We should be more precise in defining the semantics of the ordering
constraints, and if and how we can guarantee sequential consistency.
Dd_acquire_read is very hard or impossible to define in a way that cannot
be invalidated by reasonably standard compiler transformations.
There is probably no good reason to provide operations on standard
integer types, since those may have the wrong alignment constraints.
Example:
If you want to initialize an object, and then "publish" a pointer to it
in a global location p, such that other threads reading the new value of
p are guaranteed to see an initialized object, it suffices to use
AO_release_write(p, ...) to write the pointer to the object, and to
retrieve it in other threads with AO_acquire_read(p).
Platform notes:
All X86: We quietly assume 486 or better.
Windows:
Currently AO_REQUIRE_CAS is not supported.
Microsoft compilers:
Define AO_ASSUME_WINDOWS98 to get access to hardware compare-and-swap
functionality. This relies on the InterlockedCompareExchange() function
which was apparently not supported in Windows95. (There may be a better
way to get access to this.) Currently only X86(32 bit) is supported for
Windows.
Gcc on x86:
Define AO_USE_PENTIUM4_INSTRS to use the Pentium 4 mfence instruction.
Currently this is appears to be of marginal benefit.

View File

@ -1,57 +0,0 @@
The libatomic_ops_gpl includes a simple almost-lock-free malloc implementation.
This is intended as a safe way to allocate memory from a signal handler,
or to allocate memory in the context of a library that does not know what
thread library it will be used with. In either case locking is impossible.
Note that the operations are only guaranteed to be 1-lock-free, i.e. a
single blocked thread will not prevent progress, but multiple blocked
threads may. To safely use these operations in a signal handler,
the handler should be non-reentrant, i.e. it should not be interruptable
by another handler using these operations. Furthermore use outside
of signal handlers in a multithreaded application should be protected
by a lock, so that at most one invocation may be interrupted by a signal.
The header will define the macro "AO_MALLOC_IS_LOCK_FREE" on platforms
on which malloc is completely lock-free, and hence these restrictions
do not apply.
In the presence of threads, but absence of contention, the time performance
of this package should be as good, or slightly better than, most system
malloc implementations. Its space performance
is theoretically optimal (to within a constant factor), but probably
quite poor in practice. In particular, no attempt is made to
coalesce free small memory blocks. Something like Doug Lea's malloc is
likely to use significantly less memory for complex applications.
Perfomance on platforms without an efficient compare-and-swap implementation
will be poor.
This package was not designed for processor-scalability in the face of
high allocation rates. If all threads happen to allocate different-sized
objects, you might get lucky. Otherwise expect contention and false-sharing
problems. If this is an issue, something like Maged Michael's algorithm
(PLDI 2004) would be technically a far better choice. If you are concerned
only with scalablity, and not signal-safety, you might also consider
using Hoard instead. We have seen a factor of 3 to 4 slowdown from the
standard glibc malloc implementation with contention, even when the
performance without contention was faster. (To make the implementation
more scalable, one would need to replicate at least the free list headers,
so that concurrent access is possible without cache conflicts.)
Unfortunately there is no portable async-signal-safe way to obtain large
chunks of memory from the OS. Based on reading of the source code,
mmap-based allocation appears safe under Linux, and probably BSD variants.
It is probably unsafe for operating systems built on Mach, such as
Apple's Darwin. Without use of mmap, the allocator is
limited to a fixed size, statically preallocated heap (2MB by default),
and will fail to allocate objects above a certain size (just under 64K
by default). Use of mmap to circumvent these limitations requires an
explicit call.
The entire interface to the AO_malloc package currently consists of:
#include <atomic_ops_malloc.h> /* includes atomic_ops.h */
void *AO_malloc(size_t sz);
void AO_free(void *p);
void AO_malloc_enable_mmap(void);

View File

@ -1,78 +0,0 @@
Note that the AO_stack implementation is licensed under the GPL,
unlike the lower level routines.
The header file atomic_ops_stack.h defines a linked stack abstraction.
Stacks may be accessed by multiple concurrent threads. The implementation
is 1-lock-free, i.e. it will continue to make progress if at most one
thread becomes inactive while operating on the data structure.
(The implementation can be built to be N-lock-free for any given N. But that
seems to rarely be useful, especially since larger N involve some slowdown.)
This makes it safe to access these data structures from non-reentrant
signal handlers, provided at most one non-signal-handler thread is
accessing the data structure at once. This latter condition can be
ensured by acquiring an ordinary lock around the non-hndler accesses
to the data structure.
For details see:
Hans-J. Boehm, "An Almost Non-Blocking Stack", PODC 2004,
http://portal.acm.org/citation.cfm?doid=1011767.1011774, or
http://www.hpl.hp.com/techreports/2004/HPL-2004-105.html
(This is not exactly the implementation described there, since the
interface was cleaned up in the interim. But it should perform
very similarly.)
We use a fully lock-free implementation when the underlying hardware
makes that less expensive, i.e. when we have a double-wide compare-and-swap
operation available. (The fully lock-free implementation uses an AO_t-
sized version count, and assumes it does not wrap during the time any
given operation is active. This seems reasonably safe on 32-bit hardware,
and very safe on 64-bit hardware.) If a fully lock-free implementation
is used, the macro AO_STACK_IS_LOCK_FREE will be defined.
The implementation is interesting only because it allows reuse of
existing nodes. This is necessary, for example, to implement a memory
allocator.
Since we want to leave the precise stack node type up to the client,
we insist only that each stack node contains a link field of type AO_t.
When a new node is pushed on the stack, the push operation expects to be
passed the pointer to this link field, which will then be overwritten by
this link field. Similarly, the pop operation returns a pointer to the
link field of the object that previously was on the top of the stack.
The cleanest way to use these routines is probably to define the stack node
type with an initial AO_t link field, so that the conversion between the
link-field pointer and the stack element pointer is just a compile-time
cast. But other possibilities exist. (This would be cleaner in C++ with
templates.)
A stack is represented by an AO_stack_t structure. (This is normally
2 or 3 times the size of a pointer.) It may be statically initialized
by setting it to AO_STACK_INITIALIZER, or dynamically initialized to
an empty stack with AO_stack_init. There are only three operations for
accessing stacks:
void AO_stack_init(AO_stack_t *list);
void AO_stack_push_release(AO_stack_t *list, AO_t *new_element);
AO_t * AO_stack_pop_acquire(volatile AO_stack_t *list);
We require that the objects pushed as list elements remain addressable
as long as any push or pop operation are in progress. (It is OK for an object
to be "pop"ped off a stack and "deallocated" with a concurrent "pop" on
the same stack still in progress, but only if "deallocation" leaves the
object addressable. The second "pop" may still read the object, but
the value it reads will not matter.)
We require that the headers (AO_stack objects) remain allocated and
valid as long as any operations on them are still in-flight.
We also provide macros AO_REAL_HEAD_PTR that converts an AO_stack_t
to a pointer to the link field in the next element, and AO_REAL_NEXT_PTR
that converts a link field to a real, dereferencable, pointer to the link field
in the next element. This is intended only for debugging, or to traverse
the list after modification has ceased. There is otherwise no guarantee that
walking a stack using this macro will produce any kind of consistent
picture of the data structure.

View File

@ -1,28 +0,0 @@
Most of the atomic_ops functionality is available under Win32 with
the Microsoft tools, but the build process currently is considerably more
primitive than on Linux/Unix platforms.
To build:
1) Go to the src directory in the distribution.
2) Make sure the Microsoft command-line tools (e.g. nmake) are available.
3) Run "nmake -f Makefile.msft". This should run some tests, which
may print warnings about the types of the "Interlocked" functions.
I haven't been able to make all versions of VC++ happy. If you know
how to, please send a patch.
4) To compile applications, you will need to retain or copy the following
pieces from the resulting src directory contents:
"atomic_ops.h" - Header file defining low-level primitives. This
includes files from:
"atomic_ops"- Subdirectory containing implementation header files.
"atomic_ops_stack.h" - Header file describing almost lock-free stack.
"atomic_ops_malloc.h" - Header file describing almost lock-free malloc.
"libatomic_ops_gpl.lib" - Library containing implementation of the
above two. The atomic_ops.h implementation
is entirely in the header files in Win32.
Most clients of atomic_ops.h will need to define AO_ASSUME_WINDOWS98 before
including it. Compare_and_swap is otherwise not available.
Note that the library is covered by the GNU General Public License, while
the top 2 of these pieces allow use in proprietary code.

View File

@ -1,323 +0,0 @@
#!/bin/sh
# install - install a program, script, or datafile
scriptversion=2005-05-14.22
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
#
# Copyright (C) 1994 X Consortium
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the X Consortium shall not
# be used in advertising or otherwise to promote the sale, use or other deal-
# ings in this Software without prior written authorization from the X Consor-
# tium.
#
#
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch. It can only install one file at a time, a restriction
# shared with many OS's install programs.
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit="${DOITPROG-}"
# put in absolute paths if you don't have them in your path; or use env. vars.
mvprog="${MVPROG-mv}"
cpprog="${CPPROG-cp}"
chmodprog="${CHMODPROG-chmod}"
chownprog="${CHOWNPROG-chown}"
chgrpprog="${CHGRPPROG-chgrp}"
stripprog="${STRIPPROG-strip}"
rmprog="${RMPROG-rm}"
mkdirprog="${MKDIRPROG-mkdir}"
chmodcmd="$chmodprog 0755"
chowncmd=
chgrpcmd=
stripcmd=
rmcmd="$rmprog -f"
mvcmd="$mvprog"
src=
dst=
dir_arg=
dstarg=
no_target_directory=
usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
or: $0 [OPTION]... SRCFILES... DIRECTORY
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
or: $0 [OPTION]... -d DIRECTORIES...
In the 1st form, copy SRCFILE to DSTFILE.
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
In the 4th, create DIRECTORIES.
Options:
-c (ignored)
-d create directories instead of installing files.
-g GROUP $chgrpprog installed files to GROUP.
-m MODE $chmodprog installed files to MODE.
-o USER $chownprog installed files to USER.
-s $stripprog installed files.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
--help display this help and exit.
--version display version info and exit.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
"
while test -n "$1"; do
case $1 in
-c) shift
continue;;
-d) dir_arg=true
shift
continue;;
-g) chgrpcmd="$chgrpprog $2"
shift
shift
continue;;
--help) echo "$usage"; exit $?;;
-m) chmodcmd="$chmodprog $2"
shift
shift
continue;;
-o) chowncmd="$chownprog $2"
shift
shift
continue;;
-s) stripcmd=$stripprog
shift
continue;;
-t) dstarg=$2
shift
shift
continue;;
-T) no_target_directory=true
shift
continue;;
--version) echo "$0 $scriptversion"; exit $?;;
*) # When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
test -n "$dir_arg$dstarg" && break
# Otherwise, the last argument is the destination. Remove it from $@.
for arg
do
if test -n "$dstarg"; then
# $@ is not empty: it contains at least $arg.
set fnord "$@" "$dstarg"
shift # fnord
fi
shift # arg
dstarg=$arg
done
break;;
esac
done
if test -z "$1"; then
if test -z "$dir_arg"; then
echo "$0: no input file specified." >&2
exit 1
fi
# It's OK to call `install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
for src
do
# Protect names starting with `-'.
case $src in
-*) src=./$src ;;
esac
if test -n "$dir_arg"; then
dst=$src
src=
if test -d "$dst"; then
mkdircmd=:
chmodcmd=
else
mkdircmd=$mkdirprog
fi
else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if test ! -f "$src" && test ! -d "$src"; then
echo "$0: $src does not exist." >&2
exit 1
fi
if test -z "$dstarg"; then
echo "$0: no destination specified." >&2
exit 1
fi
dst=$dstarg
# Protect names starting with `-'.
case $dst in
-*) dst=./$dst ;;
esac
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
if test -n "$no_target_directory"; then
echo "$0: $dstarg: Is a directory" >&2
exit 1
fi
dst=$dst/`basename "$src"`
fi
fi
# This sed command emulates the dirname command.
dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
# Make sure that the destination directory exists.
# Skip lots of stat calls in the usual case.
if test ! -d "$dstdir"; then
defaultIFS='
'
IFS="${IFS-$defaultIFS}"
oIFS=$IFS
# Some sh's can't handle IFS=/ for some reason.
IFS='%'
set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
shift
IFS=$oIFS
pathcomp=
while test $# -ne 0 ; do
pathcomp=$pathcomp$1
shift
if test ! -d "$pathcomp"; then
$mkdirprog "$pathcomp"
# mkdir can fail with a `File exist' error in case several
# install-sh are creating the directory concurrently. This
# is OK.
test -d "$pathcomp" || exit
fi
pathcomp=$pathcomp/
done
fi
if test -n "$dir_arg"; then
$doit $mkdircmd "$dst" \
&& { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
&& { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
&& { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
else
dstfile=`basename "$dst"`
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
rmtmp=$dstdir/_rm.$$_
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
trap '(exit $?); exit' 1 2 13 15
# Copy the file name to the temp name.
$doit $cpprog "$src" "$dsttmp" &&
# and set any options; do chmod last to preserve setuid bits.
#
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $cpprog $src $dsttmp" command.
#
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
&& { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
&& { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
# Now rename the file to the real destination.
{ $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
|| {
# The rename failed, perhaps because mv can't rename something else
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
# Now remove or move aside any old file at destination location.
# We try this two ways since rm can't unlink itself on some
# systems and the destination file might be busy for other
# reasons. In this case, the final cleanup might fail but the new
# file should still install successfully.
{
if test -f "$dstdir/$dstfile"; then
$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
|| $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
|| {
echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
(exit 1); exit 1
}
else
:
fi
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
}
}
fi || { (exit 1); exit 1; }
done
# The final little trick to "correctly" pass the exit status to the exit trap.
{
(exit 0); exit 0
}
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

View File

@ -1,360 +0,0 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
scriptversion=2005-06-08.21
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
# Free Software Foundation, Inc.
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
fi
run=:
# In the cases where this matters, `missing' is being run in the
# srcdir already.
if test -f configure.ac; then
configure_ac=configure.ac
else
configure_ac=configure.in
fi
msg="missing on your system"
case "$1" in
--run)
# Try to run requested program, and just exit if it succeeds.
run=
shift
"$@" && exit 0
# Exit code 63 means version mismatch. This often happens
# when the user try to use an ancient version of a tool on
# a file that requires a minimum version. In this case we
# we should proceed has if the program had been absent, or
# if --run hadn't been passed.
if test $? = 63; then
run=:
msg="probably too old"
fi
;;
-h|--h|--he|--hel|--help)
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
error status if there is no known handling for PROGRAM.
Options:
-h, --help display this help and exit
-v, --version output version information and exit
--run try to run the given command, and emulate it if it fails
Supported PROGRAM values:
aclocal touch file \`aclocal.m4'
autoconf touch file \`configure'
autoheader touch file \`config.h.in'
automake touch all \`Makefile.in' files
bison create \`y.tab.[ch]', if possible, from existing .[ch]
flex create \`lex.yy.c', if possible, from existing .c
help2man touch the output file
lex create \`lex.yy.c', if possible, from existing .c
makeinfo touch the output file
tar try tar, gnutar, gtar, then tar without non-portable flags
yacc create \`y.tab.[ch]', if possible, from existing .[ch]
Send bug reports to <bug-automake@gnu.org>."
exit $?
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
echo "missing $scriptversion (GNU Automake)"
exit $?
;;
-*)
echo 1>&2 "$0: Unknown \`$1' option"
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
;;
esac
# Now exit if we have it, but it failed. Also exit now if we
# don't have it and --version was passed (most likely to detect
# the program).
case "$1" in
lex|yacc)
# Not GNU programs, they don't have --version.
;;
tar)
if test -n "$run"; then
echo 1>&2 "ERROR: \`tar' requires --run"
exit 1
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
exit 1
fi
;;
*)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
# Could not run --version or --help. This is probably someone
# running `$TOOL --version' or `$TOOL --help' to check whether
# $TOOL exists and not knowing $TOOL uses missing.
exit 1
fi
;;
esac
# If it does not exist, or fails to run (possibly an outdated version),
# try to emulate it.
case "$1" in
aclocal*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
to install the \`Automake' and \`Perl' packages. Grab them from
any GNU archive site."
touch aclocal.m4
;;
autoconf)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`${configure_ac}'. You might want to install the
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
archive site."
touch configure
;;
autoheader)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`acconfig.h' or \`${configure_ac}'. You might want
to install the \`Autoconf' and \`GNU m4' packages. Grab them
from any GNU archive site."
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
test -z "$files" && files="config.h"
touch_files=
for f in $files; do
case "$f" in
*:*) touch_files="$touch_files "`echo "$f" |
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
*) touch_files="$touch_files $f.in";;
esac
done
touch $touch_files
;;
automake*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
You might want to install the \`Automake' and \`Perl' packages.
Grab them from any GNU archive site."
find . -type f -name Makefile.am -print |
sed 's/\.am$/.in/' |
while read f; do touch "$f"; done
;;
autom4te)
echo 1>&2 "\
WARNING: \`$1' is needed, but is $msg.
You might have modified some files without having the
proper tools for further handling them.
You can get \`$1' as part of \`Autoconf' from any GNU
archive site."
file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
echo "#! /bin/sh"
echo "# Created by GNU Automake missing as a replacement of"
echo "# $ $@"
echo "exit 0"
chmod +x $file
exit 1
fi
;;
bison|yacc)
echo 1>&2 "\
WARNING: \`$1' $msg. You should only need it if
you modified a \`.y' file. You may need the \`Bison' package
in order for those modifications to take effect. You can get
\`Bison' from any GNU archive site."
rm -f y.tab.c y.tab.h
if [ $# -ne 1 ]; then
eval LASTARG="\${$#}"
case "$LASTARG" in
*.y)
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
if [ -f "$SRCFILE" ]; then
cp "$SRCFILE" y.tab.c
fi
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
if [ -f "$SRCFILE" ]; then
cp "$SRCFILE" y.tab.h
fi
;;
esac
fi
if [ ! -f y.tab.h ]; then
echo >y.tab.h
fi
if [ ! -f y.tab.c ]; then
echo 'main() { return 0; }' >y.tab.c
fi
;;
lex|flex)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a \`.l' file. You may need the \`Flex' package
in order for those modifications to take effect. You can get
\`Flex' from any GNU archive site."
rm -f lex.yy.c
if [ $# -ne 1 ]; then
eval LASTARG="\${$#}"
case "$LASTARG" in
*.l)
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
if [ -f "$SRCFILE" ]; then
cp "$SRCFILE" lex.yy.c
fi
;;
esac
fi
if [ ! -f lex.yy.c ]; then
echo 'main() { return 0; }' >lex.yy.c
fi
;;
help2man)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a dependency of a manual page. You may need the
\`Help2man' package in order for those modifications to take
effect. You can get \`Help2man' from any GNU archive site."
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
if test -z "$file"; then
file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
fi
if [ -f "$file" ]; then
touch $file
else
test -z "$file" || exec >$file
echo ".ab help2man is required to generate this page"
exit 1
fi
;;
makeinfo)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a \`.texi' or \`.texinfo' file, or any other file
indirectly affecting the aspect of the manual. The spurious
call might also be the consequence of using a buggy \`make' (AIX,
DU, IRIX). You might want to install the \`Texinfo' package or
the \`GNU make' package. Grab either from any GNU archive site."
# The file to touch is that specified with -o ...
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
if test -z "$file"; then
# ... or it is the one specified with @setfilename ...
infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
# ... or it is derived from the source name (dir/f.texi becomes f.info)
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
fi
# If the file does not exist, the user really needs makeinfo;
# let's fail without touching anything.
test -f $file || exit 1
touch $file
;;
tar)
shift
# We have already tried tar in the generic part.
# Look for gnutar/gtar before invocation to avoid ugly error
# messages.
if (gnutar --version > /dev/null 2>&1); then
gnutar "$@" && exit 0
fi
if (gtar --version > /dev/null 2>&1); then
gtar "$@" && exit 0
fi
firstarg="$1"
if shift; then
case "$firstarg" in
*o*)
firstarg=`echo "$firstarg" | sed s/o//`
tar "$firstarg" "$@" && exit 0
;;
esac
case "$firstarg" in
*h*)
firstarg=`echo "$firstarg" | sed s/h//`
tar "$firstarg" "$@" && exit 0
;;
esac
fi
echo 1>&2 "\
WARNING: I can't seem to be able to run \`tar' with the given arguments.
You may want to install GNU tar or Free paxutils, or check the
command line arguments."
exit 1
;;
*)
echo 1>&2 "\
WARNING: \`$1' is needed, and is $msg.
You might have modified some files without having the
proper tools for further handling them. Check the \`README' file,
it often tells you about the needed prerequisites for installing
this package. You may also peek at any GNU archive site, in case
some other package would contain this missing \`$1' program."
exit 1
;;
esac
exit 0
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

View File

@ -1,158 +0,0 @@
#! /bin/sh
# mkinstalldirs --- make directory hierarchy
scriptversion=2005-06-29.22
# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
# Created: 1993-05-16
# Public domain.
#
# This file is maintained in Automake, please report
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
errstatus=0
dirmode=
usage="\
Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
Create each directory DIR (with mode MODE, if specified), including all
leading file name components.
Report bugs to <bug-automake@gnu.org>."
# process command line arguments
while test $# -gt 0 ; do
case $1 in
-h | --help | --h*) # -h for help
echo "$usage"
exit $?
;;
-m) # -m PERM arg
shift
test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
dirmode=$1
shift
;;
--version)
echo "$0 $scriptversion"
exit $?
;;
--) # stop option processing
shift
break
;;
-*) # unknown option
echo "$usage" 1>&2
exit 1
;;
*) # first non-opt arg
break
;;
esac
done
for file
do
if test -d "$file"; then
shift
else
break
fi
done
case $# in
0) exit 0 ;;
esac
# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and
# mkdir -p a/c at the same time, both will detect that a is missing,
# one will create a, then the other will try to create a and die with
# a "File exists" error. This is a problem when calling mkinstalldirs
# from a parallel make. We use --version in the probe to restrict
# ourselves to GNU mkdir, which is thread-safe.
case $dirmode in
'')
if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
echo "mkdir -p -- $*"
exec mkdir -p -- "$@"
else
# On NextStep and OpenStep, the `mkdir' command does not
# recognize any option. It will interpret all options as
# directories to create, and then abort because `.' already
# exists.
test -d ./-p && rmdir ./-p
test -d ./--version && rmdir ./--version
fi
;;
*)
if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
test ! -d ./--version; then
echo "mkdir -m $dirmode -p -- $*"
exec mkdir -m "$dirmode" -p -- "$@"
else
# Clean up after NextStep and OpenStep mkdir.
for d in ./-m ./-p ./--version "./$dirmode";
do
test -d $d && rmdir $d
done
fi
;;
esac
for file
do
case $file in
/*) pathcomp=/ ;;
*) pathcomp= ;;
esac
oIFS=$IFS
IFS=/
set fnord $file
shift
IFS=$oIFS
for d
do
test "x$d" = x && continue
pathcomp=$pathcomp$d
case $pathcomp in
-*) pathcomp=./$pathcomp ;;
esac
if test ! -d "$pathcomp"; then
echo "mkdir $pathcomp"
mkdir "$pathcomp" || lasterr=$?
if test ! -d "$pathcomp"; then
errstatus=$lasterr
else
if test ! -z "$dirmode"; then
echo "chmod $dirmode $pathcomp"
lasterr=
chmod "$dirmode" "$pathcomp" || lasterr=$?
if test ! -z "$lasterr"; then
errstatus=$lasterr
fi
fi
fi
fi
pathcomp=$pathcomp/
done
done
exit $errstatus
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

View File

@ -1,16 +0,0 @@
SUBDIRS=atomic_ops
AM_CFLAGS=@PICFLAG@
include_HEADERS=atomic_ops.h atomic_ops_stack.h atomic_ops_malloc.h
lib_LIBRARIES = libatomic_ops.a libatomic_ops_gpl.a
if NEED_ASM
libatomic_ops_a_SOURCES = atomic_ops.c atomic_ops_sysdeps.S
else
libatomic_ops_a_SOURCES = atomic_ops.c
endif
libatomic_ops_gpl_a_SOURCES = atomic_ops_stack.c atomic_ops_malloc.c
EXTRA_DIST=Makefile.msft

View File

@ -1,598 +0,0 @@
# Makefile.in generated by automake 1.9.3 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
SOURCES = $(libatomic_ops_a_SOURCES) $(libatomic_ops_gpl_a_SOURCES)
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
subdir = src
DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/config.h.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
libLIBRARIES_INSTALL = $(INSTALL_DATA)
LIBRARIES = $(lib_LIBRARIES)
AR = ar
ARFLAGS = cru
libatomic_ops_a_AR = $(AR) $(ARFLAGS)
libatomic_ops_a_LIBADD =
am__libatomic_ops_a_SOURCES_DIST = atomic_ops.c atomic_ops_sysdeps.S
@NEED_ASM_FALSE@am_libatomic_ops_a_OBJECTS = atomic_ops.$(OBJEXT)
@NEED_ASM_TRUE@am_libatomic_ops_a_OBJECTS = atomic_ops.$(OBJEXT) \
@NEED_ASM_TRUE@ atomic_ops_sysdeps.$(OBJEXT)
libatomic_ops_a_OBJECTS = $(am_libatomic_ops_a_OBJECTS)
libatomic_ops_gpl_a_AR = $(AR) $(ARFLAGS)
libatomic_ops_gpl_a_LIBADD =
am_libatomic_ops_gpl_a_OBJECTS = atomic_ops_stack.$(OBJEXT) \
atomic_ops_malloc.$(OBJEXT)
libatomic_ops_gpl_a_OBJECTS = $(am_libatomic_ops_gpl_a_OBJECTS)
DEFAULT_INCLUDES = -I. -I$(srcdir) -I.
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
CCASCOMPILE = $(CCAS) $(AM_CCASFLAGS) $(CCASFLAGS)
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(libatomic_ops_a_SOURCES) $(libatomic_ops_gpl_a_SOURCES)
DIST_SOURCES = $(am__libatomic_ops_a_SOURCES_DIST) \
$(libatomic_ops_gpl_a_SOURCES)
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-exec-recursive install-info-recursive \
install-recursive installcheck-recursive installdirs-recursive \
pdf-recursive ps-recursive uninstall-info-recursive \
uninstall-recursive
includeHEADERS_INSTALL = $(INSTALL_HEADER)
HEADERS = $(include_HEADERS)
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCAS = @CCAS@
CCASFLAGS = @CCASFLAGS@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
NEED_ASM_FALSE = @NEED_ASM_FALSE@
NEED_ASM_TRUE = @NEED_ASM_TRUE@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PICFLAG = @PICFLAG@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
ac_ct_CC = @ac_ct_CC@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
datarootdir = @datarootdir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@
target_cpu = @target_cpu@
target_os = @target_os@
target_vendor = @target_vendor@
SUBDIRS = atomic_ops
AM_CFLAGS = @PICFLAG@
include_HEADERS = atomic_ops.h atomic_ops_stack.h atomic_ops_malloc.h
lib_LIBRARIES = libatomic_ops.a libatomic_ops_gpl.a
@NEED_ASM_FALSE@libatomic_ops_a_SOURCES = atomic_ops.c
@NEED_ASM_TRUE@libatomic_ops_a_SOURCES = atomic_ops.c atomic_ops_sysdeps.S
libatomic_ops_gpl_a_SOURCES = atomic_ops_stack.c atomic_ops_malloc.c
EXTRA_DIST = Makefile.msft
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
.SUFFIXES: .S .c .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu src/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
config.h: stamp-h1
@if test ! -f $@; then \
rm -f stamp-h1; \
$(MAKE) stamp-h1; \
else :; fi
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status src/config.h
$(srcdir)/config.h.in: $(am__configure_deps)
cd $(top_srcdir) && $(AUTOHEADER)
rm -f stamp-h1
touch $@
distclean-hdr:
-rm -f config.h stamp-h1
install-libLIBRARIES: $(lib_LIBRARIES)
@$(NORMAL_INSTALL)
test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
@list='$(lib_LIBRARIES)'; for p in $$list; do \
if test -f $$p; then \
f=$(am__strip_dir) \
echo " $(libLIBRARIES_INSTALL) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
$(libLIBRARIES_INSTALL) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
else :; fi; \
done
@$(POST_INSTALL)
@list='$(lib_LIBRARIES)'; for p in $$list; do \
if test -f $$p; then \
p=$(am__strip_dir) \
echo " $(RANLIB) '$(DESTDIR)$(libdir)/$$p'"; \
$(RANLIB) "$(DESTDIR)$(libdir)/$$p"; \
else :; fi; \
done
uninstall-libLIBRARIES:
@$(NORMAL_UNINSTALL)
@list='$(lib_LIBRARIES)'; for p in $$list; do \
p=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(libdir)/$$p'"; \
rm -f "$(DESTDIR)$(libdir)/$$p"; \
done
clean-libLIBRARIES:
-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
libatomic_ops.a: $(libatomic_ops_a_OBJECTS) $(libatomic_ops_a_DEPENDENCIES)
-rm -f libatomic_ops.a
$(libatomic_ops_a_AR) libatomic_ops.a $(libatomic_ops_a_OBJECTS) $(libatomic_ops_a_LIBADD)
$(RANLIB) libatomic_ops.a
libatomic_ops_gpl.a: $(libatomic_ops_gpl_a_OBJECTS) $(libatomic_ops_gpl_a_DEPENDENCIES)
-rm -f libatomic_ops_gpl.a
$(libatomic_ops_gpl_a_AR) libatomic_ops_gpl.a $(libatomic_ops_gpl_a_OBJECTS) $(libatomic_ops_gpl_a_LIBADD)
$(RANLIB) libatomic_ops_gpl.a
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atomic_ops.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atomic_ops_malloc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atomic_ops_stack.Po@am__quote@
.S.o:
$(CCASCOMPILE) -c $<
.S.obj:
$(CCASCOMPILE) -c `$(CYGPATH_W) '$<'`
.c.o:
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
uninstall-info-am:
install-includeHEADERS: $(include_HEADERS)
@$(NORMAL_INSTALL)
test -z "$(includedir)" || $(mkdir_p) "$(DESTDIR)$(includedir)"
@list='$(include_HEADERS)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \
$(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \
done
uninstall-includeHEADERS:
@$(NORMAL_UNINSTALL)
@list='$(include_HEADERS)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \
rm -f "$(DESTDIR)$(includedir)/$$f"; \
done
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@set fnord $$MAKEFLAGS; amf=$$2; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
@set fnord $$MAKEFLAGS; amf=$$2; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(mkdir_p) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
distdir) \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-recursive
all-am: Makefile $(LIBRARIES) $(HEADERS) config.h
installdirs: installdirs-recursive
installdirs-am:
for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \
test -z "$$dir" || $(mkdir_p) "$$dir"; \
done
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean-am: clean-generic clean-libLIBRARIES mostlyclean-am
distclean: distclean-recursive
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-hdr distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
info: info-recursive
info-am:
install-data-am: install-includeHEADERS
install-exec-am: install-libLIBRARIES
install-info: install-info-recursive
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-compile mostlyclean-generic
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am: uninstall-includeHEADERS uninstall-info-am \
uninstall-libLIBRARIES
uninstall-info: uninstall-info-recursive
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
clean clean-generic clean-libLIBRARIES clean-recursive ctags \
ctags-recursive distclean distclean-compile distclean-generic \
distclean-hdr distclean-recursive distclean-tags distdir dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-exec install-exec-am \
install-includeHEADERS install-info install-info-am \
install-libLIBRARIES install-man install-strip installcheck \
installcheck-am installdirs installdirs-am maintainer-clean \
maintainer-clean-generic maintainer-clean-recursive \
mostlyclean mostlyclean-compile mostlyclean-generic \
mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
uninstall uninstall-am uninstall-includeHEADERS \
uninstall-info-am uninstall-libLIBRARIES
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -1,45 +0,0 @@
#
# Copyright (c) 2003-2005 Hewlett-Packard Developlment Company, L.P.
#
# The really trivial win32/VC++ Makefile. Note that atomic_ops.c isn't useful.
# And we rely on a pre-built test_atomic_include.h and generalize-small.h,
# since we can't rely on sed.
# Win32 clients only need to include the header files.
# To install, copy atomic_ops.h and the atomic_ops/... tree to your favorite
# include directory.
#MY_CPU=X86
#CPU=$(MY_CPU)
#!include <ntwin32.mak>
LIB_OBJS=atomic_ops_stack.obj atomic_ops_malloc.obj
all: check
atomic_ops_stack.obj:
cl -O2 -c -DAO_ASSUME_WINDOWS98 atomic_ops_stack.c
atomic_ops_malloc.obj:
cl -O2 -c -DAO_ASSUME_WINDOWS98 atomic_ops_malloc.c
test_atomic: ..\tests\test_atomic.c ..\tests\test_atomic_include.h
cl -O2 -I. -DAO_ASSUME_WINDOWS98 ..\tests\test_atomic.c -o test_atomic
test_atomic_w95: ..\tests\test_atomic.c ..\tests\test_atomic_include.h
cl -O2 -I. ..\tests\test_atomic.c -o test_atomic_w95
test_malloc: ..\tests\test_malloc.c ..\tests\test_atomic_include.h \
libatomic_ops_gpl.lib
cl -O2 -DAO_ASSUME_WINDOWS98 -I. ..\tests\test_malloc.c -o test_malloc libatomic_ops_gpl.lib
libatomic_ops_gpl.lib: $(LIB_OBJS)
lib /MACHINE:i386 /out:libatomic_ops_gpl.lib $(LIB_OBJS)
check: test_atomic test_atomic_w95 test_malloc
echo The following will print lots of \"Missing ...\" messages.
test_atomic_w95
echo The following will print some \"Missing ...\" messages.
test_atomic
test_malloc

View File

@ -1,225 +0,0 @@
/*
* Copyright (c) 2003 Hewlett-Packard Development Company, L.P.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
/*
* Initialized data and out-of-line functions to support atomic_ops.h
* go here. Currently this is needed only for pthread-based atomics
* emulation, or for compare-and-swap emulation.
* Pthreads emulation isn't useful on a native Windows platform, and
* cas emulation is not needed. Thus we skip this on Windows.
*/
#if defined(HAVE_CONFIG_H)
# include "config.h"
#endif
#if !defined(_MSC_VER) && !defined(__MINGW32__) && !defined(__BORLANDC__)
#undef AO_REQUIRE_CAS
#include <pthread.h>
#include <signal.h>
#ifdef _HPUX_SOURCE
# include <sys/time.h>
#else
# include <sys/select.h>
#endif
#include "atomic_ops.h" /* Without cas emulation! */
#ifndef AO_HAVE_double_t
# include "atomic_ops/sysdeps/standard_ao_double_t.h"
#endif
/*
* Lock for pthreads-based implementation.
*/
pthread_mutex_t AO_pt_lock = PTHREAD_MUTEX_INITIALIZER;
/*
* Out of line compare-and-swap emulation based on test and set.
*
* We use a small table of locks for different compare_and_swap locations.
* Before we update perform a compare-and-swap, we grap the corresponding
* lock. Different locations may hash to the same lock, but since we
* never acquire more than one lock at a time, this can't deadlock.
* We explicitly disable signals while we perform this operation.
*
* FIXME: We should probably also suppport emulation based on Lamport
* locks, since we may not have test_and_set either.
*/
#define AO_HASH_SIZE 16
#define AO_HASH(x) (((unsigned long)(x) >> 12) & (AO_HASH_SIZE-1))
AO_TS_t AO_locks[AO_HASH_SIZE] = {
AO_TS_INITIALIZER, AO_TS_INITIALIZER,
AO_TS_INITIALIZER, AO_TS_INITIALIZER,
AO_TS_INITIALIZER, AO_TS_INITIALIZER,
AO_TS_INITIALIZER, AO_TS_INITIALIZER,
AO_TS_INITIALIZER, AO_TS_INITIALIZER,
AO_TS_INITIALIZER, AO_TS_INITIALIZER,
AO_TS_INITIALIZER, AO_TS_INITIALIZER,
AO_TS_INITIALIZER, AO_TS_INITIALIZER,
};
static AO_T dummy = 1;
/* Spin for 2**n units. */
void AO_spin(int n)
{
int i;
AO_T j = AO_load(&dummy);
for (i = 0; i < (2 << n); ++i)
{
j *= 5;
j -= 4;
}
AO_store(&dummy, j);
}
void AO_pause(int n)
{
if (n < 12)
AO_spin(n);
else
{
struct timeval tv;
/* Short async-signal-safe sleep. */
tv.tv_sec = 0;
tv.tv_usec = (n > 28? 100000 : (1 << (n - 12)));
select(0, 0, 0, 0, &tv);
}
}
static void lock_ool(volatile AO_TS_t *l)
{
int i = 0;
while (AO_test_and_set_acquire(l) == AO_TS_SET)
AO_pause(++i);
}
AO_INLINE void lock(volatile AO_TS_t *l)
{
if (AO_test_and_set_acquire(l) == AO_TS_SET)
lock_ool(l);
}
AO_INLINE void unlock(volatile AO_TS_t *l)
{
AO_CLEAR(l);
}
static sigset_t all_sigs;
static volatile AO_t initialized = 0;
static volatile AO_TS_t init_lock = AO_TS_INITIALIZER;
int AO_compare_and_swap_emulation(volatile AO_t *addr, AO_t old,
AO_t new_val)
{
AO_TS_t *my_lock = AO_locks + AO_HASH(addr);
sigset_t old_sigs;
int result;
if (!AO_load_acquire(&initialized))
{
lock(&init_lock);
if (!initialized) sigfillset(&all_sigs);
unlock(&init_lock);
AO_store_release(&initialized, 1);
}
sigprocmask(SIG_BLOCK, &all_sigs, &old_sigs);
/* Neither sigprocmask nor pthread_sigmask is 100% */
/* guaranteed to work here. Sigprocmask is not */
/* guaranteed be thread safe, and pthread_sigmask */
/* is not async-signal-safe. Under linuxthreads, */
/* sigprocmask may block some pthreads-internal */
/* signals. So long as we do that for short periods, */
/* we should be OK. */
lock(my_lock);
if (*addr == old)
{
*addr = new_val;
result = 1;
}
else
result = 0;
unlock(my_lock);
sigprocmask(SIG_SETMASK, &old_sigs, NULL);
return result;
}
int AO_compare_double_and_swap_double_emulation(volatile AO_double_t *addr,
AO_t old_val1, AO_t old_val2,
AO_t new_val1, AO_t new_val2)
{
AO_TS_t *my_lock = AO_locks + AO_HASH(addr);
sigset_t old_sigs;
int result;
if (!AO_load_acquire(&initialized))
{
lock(&init_lock);
if (!initialized) sigfillset(&all_sigs);
unlock(&init_lock);
AO_store_release(&initialized, 1);
}
sigprocmask(SIG_BLOCK, &all_sigs, &old_sigs);
/* Neither sigprocmask nor pthread_sigmask is 100% */
/* guaranteed to work here. Sigprocmask is not */
/* guaranteed be thread safe, and pthread_sigmask */
/* is not async-signal-safe. Under linuxthreads, */
/* sigprocmask may block some pthreads-internal */
/* signals. So long as we do that for short periods, */
/* we should be OK. */
lock(my_lock);
if (addr -> AO_val1 == old_val1 && addr -> AO_val2 == old_val2)
{
addr -> AO_val1 = new_val1;
addr -> AO_val2 = new_val2;
result = 1;
}
else
result = 0;
unlock(my_lock);
sigprocmask(SIG_SETMASK, &old_sigs, NULL);
return result;
}
void AO_store_full_emulation(volatile AO_t *addr, AO_t val)
{
AO_TS_t *my_lock = AO_locks + AO_HASH(addr);
lock(my_lock);
*addr = val;
unlock(my_lock);
}
#else /* Non-posix platform */
int AO_non_posix_implementation_is_entirely_in_headers;
#endif

View File

@ -1,300 +0,0 @@
/*
* Copyright (c) 2003 Hewlett-Packard Development Company, L.P.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
#ifndef ATOMIC_OPS_H
#define ATOMIC_OPS_H
#include <assert.h>
#include <stddef.h>
/* We define various atomic operations on memory in a */
/* machine-specific way. Unfortunately, this is complicated */
/* by the fact that these may or may not be combined with */
/* various memory barriers. Thus the actual operations we */
/* define have the form AO_<atomic-op>_<barrier>, for all */
/* plausible combinations of <atomic-op> and <barrier>. */
/* This of course results in a mild combinatorial explosion. */
/* To deal with it, we try to generate derived */
/* definitions for as many of the combinations as we can, as */
/* automatically as possible. */
/* */
/* Our assumption throughout is that the programmer will */
/* specify the least demanding operation and memory barrier */
/* that will guarantee correctness for the implementation. */
/* Our job is to find the least expensive way to implement it */
/* on the applicable hardware. In many cases that will */
/* involve, for example, a stronger memory barrier, or a */
/* combination of hardware primitives. */
/* */
/* Conventions: */
/* "plain" atomic operations are not guaranteed to include */
/* a barrier. The suffix in the name specifies the barrier */
/* type. Suffixes are: */
/* _release: Earlier operations may not be delayed past it. */
/* _acquire: Later operations may not move ahead of it. */
/* _read: Subsequent reads must follow this operation and */
/* preceding reads. */
/* _write: Earlier writes precede both this operation and */
/* later writes. */
/* _full: Ordered with respect to both earlier and later memops.*/
/* _release_write: Ordered with respect to earlier writes. */
/* _acquire_read: Ordered with repsect to later reads. */
/* */
/* Currently we try to define the following atomic memory */
/* operations, in combination with the above barriers: */
/* AO_nop */
/* AO_load */
/* AO_store */
/* AO_test_and_set (binary) */
/* AO_fetch_and_add */
/* AO_fetch_and_add1 */
/* AO_fetch_and_sub1 */
/* AO_or */
/* AO_compare_and_swap */
/* */
/* Note that atomicity guarantees are valid only if both */
/* readers and writers use AO_ operations to access the */
/* shared value, while ordering constraints are intended to */
/* apply all memory operations. If a location can potentially */
/* be accessed simultaneously from multiple threads, and one of */
/* those accesses may be a write access, then all such */
/* accesses to that location should be through AO_ primitives. */
/* However if AO_ operations enforce sufficient ordering to */
/* ensure that a location x cannot be accessed concurrently, */
/* or can only be read concurrently, then x can be accessed */
/* via ordinary references and assignments. */
/* */
/* Compare_and_exchange takes an address and an expected old */
/* value and a new value, and returns an int. Nonzero */
/* indicates that it succeeded. */
/* Test_and_set takes an address, atomically replaces it by */
/* AO_TS_SET, and returns the prior value. */
/* An AO_TS_t location can be reset with the */
/* AO_CLEAR macro, which normally uses AO_store_release. */
/* AO_fetch_and_add takes an address and an AO_t increment */
/* value. The AO_fetch_and_add1 and AO_fetch_and_sub1 variants */
/* are provided, since they allow faster implementations on */
/* some hardware. AO_or atomically ors an AO_t value into a */
/* memory location, but does not provide access to the original.*/
/* */
/* We expect this list to grow slowly over time. */
/* */
/* Note that AO_nop_full is a full memory barrier. */
/* */
/* Note that if some data is initialized with */
/* data.x = ...; data.y = ...; ... */
/* AO_store_release_write(&data_is_initialized, 1) */
/* then data is guaranteed to be initialized after the test */
/* if (AO_load_release_read(&data_is_initialized)) ... */
/* succeeds. Furthermore, this should generate near-optimal */
/* code on all common platforms. */
/* */
/* All operations operate on unsigned AO_t, which */
/* is the natural word size, and usually unsigned long. */
/* It is possible to check whether a particular operation op */
/* is available on a particular platform by checking whether */
/* AO_HAVE_op is defined. We make heavy use of these macros */
/* internally. */
/* The rest of this file basically has three sections: */
/* */
/* Some utility and default definitions. */
/* */
/* The architecture dependent section: */
/* This defines atomic operations that have direct hardware */
/* support on a particular platform, mostly by uncluding the */
/* appropriate compiler- and hardware-dependent file. */
/* */
/* The synthesis section: */
/* This tries to define other atomic operations in terms of */
/* those that are explicitly available on the platform. */
/* This section is hardware independent. */
/* We make no attempt to synthesize operations in ways that */
/* effectively introduce locks, except for the debugging/demo */
/* pthread-based implementation at the beginning. A more */
/* relistic implementation that falls back to locks could be */
/* added as a higher layer. But that would sacrifice */
/* usability from signal handlers. */
/* The synthesis section is implemented almost entirely in */
/* atomic_ops_generalize.h. */
/* Some common defaults. Overridden for some architectures. */
#define AO_t size_t
/* The test_and_set primitive returns an AO_TS_VAL_t value. */
/* AO_TS_t is the type of an in-memory test-and-set location. */
#define AO_TS_INITIALIZER (AO_t)AO_TS_CLEAR
/* Platform-dependent stuff: */
#if defined(__GNUC__) || defined(_MSC_VER) || defined(__INTEL_COMPILER)
# define AO_INLINE static __inline
#else
# define AO_INLINE static
#endif
#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
# define AO_compiler_barrier() __asm__ __volatile__("" : : : "memory")
#elif defined(_MSC_VER)
# if defined(_AMD64_)
# pragma intrinsic(_ReadWriteBarrier)
# define AO_compiler_barrier() _ReadWriteBarrier()
/* We assume this does not generate a fence instruction. */
/* The documentation is a bit unclear. */
# else
# define AO_compiler_barrier() __asm { }
/* The preceding implementation may be preferable here too. */
/* But the documentation warns about VC++ 2003 and earlier. */
# endif
#elif defined(__INTEL_COMPILER)
# define AO_compiler_barrier() __memory_barrier() /* Too strong? IA64-only? */
#elif defined(_HPUX_SOURCE)
# if defined(__ia64)
# include <machine/sys/inline.h>
# define AO_compiler_barrier() _Asm_sched_fence()
# else
/* FIXME - We dont know how to do this. This is a guess. */
/* And probably a bad one. */
static volatile int AO_barrier_dummy;
# define AO_compiler_barrier() AO_barrier_dummy = AO_barrier_dummy
# endif
#else
/* We conjecture that the following usually gives us the right */
/* semantics or an error. */
# define AO_compiler_barrier() asm("")
#endif
#if defined(AO_USE_PTHREAD_DEFS)
# include "atomic_ops/sysdeps/generic_pthread.h"
#endif /* AO_USE_PTHREAD_DEFS */
#if defined(__GNUC__) && !defined(AO_USE_PTHREAD_DEFS) \
&& !defined(__INTEL_COMPILER)
# if defined(__i386__)
# include "atomic_ops/sysdeps/gcc/x86.h"
# endif /* __i386__ */
# if defined(__x86_64__)
# include "atomic_ops/sysdeps/gcc/x86_64.h"
# endif /* __i386__ */
# if defined(__ia64__)
# include "atomic_ops/sysdeps/gcc/ia64.h"
# define AO_GENERALIZE_TWICE
# endif /* __ia64__ */
# if defined(__hppa__)
# include "atomic_ops/sysdeps/gcc/hppa.h"
# define AO_CAN_EMUL_CAS
# endif /* __hppa__ */
# if defined(__alpha__)
# include "atomic_ops/sysdeps/gcc/alpha.h"
# define AO_GENERALIZE_TWICE
# endif /* __alpha__ */
# if defined(__s390__)
# include "atomic_ops/sysdeps/gcc/s390.h"
# endif /* __s390__ */
# if defined(__sparc__)
# include "atomic_ops/sysdeps/gcc/sparc.h"
# define AO_CAN_EMUL_CAS
# endif /* __sparc__ */
# if defined(__m68k__)
# include "atomic_ops/sysdeps/gcc/m68k.h"
# endif /* __m68k__ */
# if defined(__powerpc__) || defined(__ppc__) || defined(__PPC__) \
|| defined(__powerpc64__) || defined(__ppc64__)
# include "atomic_ops/sysdeps/gcc/powerpc.h"
# endif /* __powerpc__ */
# if defined(__arm__) && !defined(AO_USE_PTHREAD_DEFS)
# include "atomic_ops/sysdeps/gcc/arm.h"
# define AO_CAN_EMUL_CAS
# endif /* __arm__ */
# if defined(__cris__) || defined(CRIS)
# include "atomic_ops/sysdeps/gcc/cris.h"
# endif
#endif /* __GNUC__ && !AO_USE_PTHREAD_DEFS */
#if defined(__INTEL_COMPILER) && !defined(AO_USE_PTHREAD_DEFS)
# if defined(__ia64__)
# include "atomic_ops/sysdeps/icc/ia64.h"
# define AO_GENERALIZE_TWICE
# endif
#endif
#if defined(_HPUX_SOURCE) && !defined(__GNUC__) && !defined(AO_USE_PTHREAD_DEFS)
# if defined(__ia64)
# include "atomic_ops/sysdeps/hpc/ia64.h"
# define AO_GENERALIZE_TWICE
# else
# include "atomic_ops/sysdeps/hpc/hppa.h"
# define AO_CAN_EMUL_CAS
# endif
#endif
#if !defined(__GNUC__) && (defined(sparc) || defined(__sparc)) \
&& !defined(AO_USE_PTHREAD_DEFS)
# include "atomic_ops/sysdeps/sunc/sparc.h"
# define AO_CAN_EMUL_CAS
#endif
#if defined(_MSC_VER)
# if defined(_AMD64_)
# include "atomic_ops/sysdeps/msftc/x86_64.h"
# elif _M_IX86 >= 400
# include "atomic_ops/sysdeps/msftc/x86.h"
# endif
#endif
#if defined(AO_REQUIRE_CAS) && !defined(AO_HAVE_compare_and_swap) \
&& !defined(AO_HAVE_compare_and_swap_full) \
&& !defined(AO_HAVE_compare_and_swap_acquire)
# if defined(AO_CAN_EMUL_CAS)
# include "atomic_ops/sysdeps/emul_cas.h"
# else
# error Cannot implement AO_compare_and_swap_full on this architecture.
# endif
#endif /* AO_REQUIRE_CAS && !AO_HAVE_compare_and_swap ... */
/* The most common way to clear a test-and-set location */
/* at the end of a critical section. */
#if AO_AO_TS_T && !defined(AO_CLEAR)
# define AO_CLEAR(addr) AO_store_release((AO_TS_t *)addr, AO_TS_CLEAR)
#endif
#if AO_CHAR_TS_T && !defined(AO_CLEAR)
# define AO_CLEAR(addr) AO_char_store_release((AO_TS_t *)addr, AO_TS_CLEAR)
#endif
/*
* The generalization section.
* Theoretically this should repeatedly include atomic_ops_generalize.h.
* In fact, we observe that this converges after a small fixed number
* of iterations, usually one.
*/
#include "atomic_ops/generalize.h"
#ifdef AO_GENERALIZE_TWICE
# include "atomic_ops/generalize.h"
#endif
/* For compatibility with version 0.4 and earlier */
#define AO_TS_T AO_TS_t
#define AO_T AO_t
#define AO_TS_VAL AO_TS_VAL_t
#endif /* ATOMIC_OPS_H */

View File

@ -1,12 +0,0 @@
SUBDIRS=sysdeps
EXTRA_DIST=generalize-small.template
#Private Headers
private_HEADERS=generalize.h generalize-small.h
privatedir=${includedir}/atomic_ops/
generalize-small.h: generalize-small.template
sed -e s:XSIZE:char:g -e s:XCTYPE:char:g $? > $@
sed -e s:XSIZE:short:g -e s:XCTYPE:short:g $? >> $@
sed -e s:XSIZE:int:g -e s:XCTYPE:int:g $? >> $@

View File

@ -1,481 +0,0 @@
# Makefile.in generated by automake 1.9.3 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ../..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
subdir = src/atomic_ops
DIST_COMMON = $(private_HEADERS) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/src/config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-exec-recursive install-info-recursive \
install-recursive installcheck-recursive installdirs-recursive \
pdf-recursive ps-recursive uninstall-info-recursive \
uninstall-recursive
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
am__installdirs = "$(DESTDIR)$(privatedir)"
privateHEADERS_INSTALL = $(INSTALL_HEADER)
HEADERS = $(private_HEADERS)
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCAS = @CCAS@
CCASFLAGS = @CCASFLAGS@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
NEED_ASM_FALSE = @NEED_ASM_FALSE@
NEED_ASM_TRUE = @NEED_ASM_TRUE@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PICFLAG = @PICFLAG@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
ac_ct_CC = @ac_ct_CC@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
datarootdir = @datarootdir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@
target_cpu = @target_cpu@
target_os = @target_os@
target_vendor = @target_vendor@
SUBDIRS = sysdeps
EXTRA_DIST = generalize-small.template
#Private Headers
private_HEADERS = generalize.h generalize-small.h
privatedir = ${includedir}/atomic_ops/
all: all-recursive
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/atomic_ops/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu src/atomic_ops/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
uninstall-info-am:
install-privateHEADERS: $(private_HEADERS)
@$(NORMAL_INSTALL)
test -z "$(privatedir)" || $(mkdir_p) "$(DESTDIR)$(privatedir)"
@list='$(private_HEADERS)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(privateHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(privatedir)/$$f'"; \
$(privateHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(privatedir)/$$f"; \
done
uninstall-privateHEADERS:
@$(NORMAL_UNINSTALL)
@list='$(private_HEADERS)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(privatedir)/$$f'"; \
rm -f "$(DESTDIR)$(privatedir)/$$f"; \
done
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@set fnord $$MAKEFLAGS; amf=$$2; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
@set fnord $$MAKEFLAGS; amf=$$2; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(mkdir_p) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
distdir) \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-recursive
all-am: Makefile $(HEADERS)
installdirs: installdirs-recursive
installdirs-am:
for dir in "$(DESTDIR)$(privatedir)"; do \
test -z "$$dir" || $(mkdir_p) "$$dir"; \
done
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean-am: clean-generic mostlyclean-am
distclean: distclean-recursive
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
info: info-recursive
info-am:
install-data-am: install-privateHEADERS
install-exec-am:
install-info: install-info-recursive
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am: uninstall-info-am uninstall-privateHEADERS
uninstall-info: uninstall-info-recursive
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
clean clean-generic clean-recursive ctags ctags-recursive \
distclean distclean-generic distclean-recursive distclean-tags \
distdir dvi dvi-am html html-am info info-am install \
install-am install-data install-data-am install-exec \
install-exec-am install-info install-info-am install-man \
install-privateHEADERS install-strip installcheck \
installcheck-am installdirs installdirs-am maintainer-clean \
maintainer-clean-generic maintainer-clean-recursive \
mostlyclean mostlyclean-generic mostlyclean-recursive pdf \
pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
uninstall-info-am uninstall-privateHEADERS
generalize-small.h: generalize-small.template
sed -e s:XSIZE:char:g -e s:XCTYPE:char:g $? > $@
sed -e s:XSIZE:short:g -e s:XCTYPE:short:g $? >> $@
sed -e s:XSIZE:int:g -e s:XCTYPE:int:g $? >> $@
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

File diff suppressed because it is too large Load Diff

View File

@ -1,575 +0,0 @@
/* XSIZE_load */
#if defined(AO_HAVE_XSIZE_load_acquire) && !defined(AO_HAVE_XSIZE_load)
# define AO_XSIZE_load(addr) AO_XSIZE_load_acquire(addr)
# define AO_HAVE_XSIZE_load
#endif
#if defined(AO_HAVE_XSIZE_load_full) && !defined(AO_HAVE_XSIZE_load_acquire)
# define AO_XSIZE_load_acquire(addr) AO_XSIZE_load_full(addr)
# define AO_HAVE_XSIZE_load_acquire
#endif
#if defined(AO_HAVE_XSIZE_load_full) && !defined(AO_HAVE_XSIZE_load_read)
# define AO_XSIZE_load_read(addr) AO_XSIZE_load_full(addr)
# define AO_HAVE_XSIZE_load_read
#endif
#if !defined(AO_HAVE_XSIZE_load_acquire_read) && defined(AO_HAVE_XSIZE_load_acquire)
# define AO_XSIZE_load_acquire_read(addr) AO_XSIZE_load_acquire(addr)
# define AO_HAVE_XSIZE_load_acquire_read
#endif
#if defined(AO_HAVE_XSIZE_load) && defined(AO_HAVE_nop_full) && \
!defined(AO_HAVE_XSIZE_load_acquire)
AO_INLINE unsigned XCTYPE
AO_XSIZE_load_acquire(volatile unsigned XCTYPE *addr)
{
unsigned XCTYPE result = AO_XSIZE_load(addr);
/* Acquire barrier would be useless, since the load could be delayed */
/* beyond it. */
AO_nop_full();
return result;
}
# define AO_HAVE_XSIZE_load_acquire
#endif
#if defined(AO_HAVE_XSIZE_load) && defined(AO_HAVE_nop_read) && \
!defined(AO_HAVE_XSIZE_load_read)
AO_INLINE unsigned XCTYPE
AO_XSIZE_load_read(volatile unsigned XCTYPE *addr)
{
unsigned XCTYPE result = AO_XSIZE_load(addr);
/* Acquire barrier would be useless, since the load could be delayed */
/* beyond it. */
AO_nop_read();
return result;
}
# define AO_HAVE_XSIZE_load_read
#endif
#if defined(AO_HAVE_XSIZE_load_acquire) && defined(AO_HAVE_nop_full) && \
!defined(AO_HAVE_XSIZE_load_full)
# define AO_XSIZE_load_full(addr) (AO_nop_full(), AO_XSIZE_load_acquire(addr))
# define AO_HAVE_XSIZE_load_full
#endif
#if !defined(AO_HAVE_XSIZE_load_acquire_read) && defined(AO_HAVE_XSIZE_load_read)
# define AO_XSIZE_load_acquire_read(addr) AO_XSIZE_load_read(addr)
# define AO_HAVE_XSIZE_load_acquire_read
#endif
#if defined(AO_HAVE_XSIZE_load_acquire_read) && !defined(AO_HAVE_XSIZE_load)
# define AO_XSIZE_load(addr) AO_XSIZE_load_acquire_read(addr)
# define AO_HAVE_XSIZE_load
#endif
#ifdef AO_NO_DD_ORDERING
# if defined(AO_HAVE_XSIZE_load_acquire_read)
# define AO_XSIZE_load_dd_acquire_read(addr) \
AO_XSIZE_load_acquire_read(addr)
# define AO_HAVE_XSIZE_load_dd_acquire_read
# endif
#else
# if defined(AO_HAVE_XSIZE_load)
# define AO_XSIZE_load_dd_acquire_read(addr) \
AO_XSIZE_load(addr)
# define AO_HAVE_XSIZE_load_dd_acquire_read
# endif
#endif
/* XSIZE_store */
#if defined(AO_HAVE_XSIZE_store_release) && !defined(AO_HAVE_XSIZE_store)
# define AO_XSIZE_store(addr, val) AO_XSIZE_store_release(addr,val)
# define AO_HAVE_XSIZE_store
#endif
#if defined(AO_HAVE_XSIZE_store_full) && !defined(AO_HAVE_XSIZE_store_release)
# define AO_XSIZE_store_release(addr,val) AO_XSIZE_store_full(addr,val)
# define AO_HAVE_XSIZE_store_release
#endif
#if defined(AO_HAVE_XSIZE_store_full) && !defined(AO_HAVE_XSIZE_store_write)
# define AO_XSIZE_store_write(addr,val) AO_XSIZE_store_full(addr,val)
# define AO_HAVE_XSIZE_store_write
#endif
#if defined(AO_HAVE_XSIZE_store_release) && \
!defined(AO_HAVE_XSIZE_store_release_write)
# define AO_XSIZE_store_release_write(addr, val) \
AO_XSIZE_store_release(addr,val)
# define AO_HAVE_XSIZE_store_release_write
#endif
#if defined(AO_HAVE_XSIZE_store_write) && !defined(AO_HAVE_XSIZE_store)
# define AO_XSIZE_store(addr, val) AO_XSIZE_store_write(addr,val)
# define AO_HAVE_XSIZE_store
#endif
#if defined(AO_HAVE_XSIZE_store) && defined(AO_HAVE_nop_full) && \
!defined(AO_HAVE_XSIZE_store_release)
# define AO_XSIZE_store_release(addr,val) \
(AO_nop_full(), AO_XSIZE_store(addr,val))
# define AO_HAVE_XSIZE_store_release
#endif
#if defined(AO_HAVE_nop_write) && defined(AO_HAVE_XSIZE_store) && \
!defined(AO_HAVE_XSIZE_store_write)
# define AO_XSIZE_store_write(addr, val) \
(AO_nop_write(), AO_XSIZE_store(addr,val))
# define AO_HAVE_XSIZE_store_write
#endif
#if defined(AO_HAVE_XSIZE_store_write) && \
!defined(AO_HAVE_XSIZE_store_release_write)
# define AO_XSIZE_store_release_write(addr, val) AO_XSIZE_store_write(addr,val)
# define AO_HAVE_XSIZE_store_release_write
#endif
#if defined(AO_HAVE_XSIZE_store_release) && defined(AO_HAVE_nop_full) && \
!defined(AO_HAVE_XSIZE_store_full)
# define AO_XSIZE_store_full(addr, val) \
(AO_XSIZE_store_release(addr, val), AO_nop_full())
# define AO_HAVE_XSIZE_store_full
#endif
/* XSIZE_fetch_and_add */
#if defined(AO_HAVE_XSIZE_compare_and_swap_full) && \
!defined(AO_HAVE_XSIZE_fetch_and_add_full)
AO_INLINE AO_t
AO_XSIZE_fetch_and_add_full(volatile unsigned XCTYPE *addr,
unsigned XCTYPE incr)
{
unsigned XCTYPE old;
do
{
old = *addr;
}
while (!AO_XSIZE_compare_and_swap_full(addr, old, old+incr));
return old;
}
# define AO_HAVE_XSIZE_fetch_and_add_full
#endif
#if defined(AO_HAVE_XSIZE_compare_and_swap_acquire) && \
!defined(AO_HAVE_XSIZE_fetch_and_add_acquire)
AO_INLINE AO_t
AO_XSIZE_fetch_and_add_acquire(volatile unsigned XCTYPE *addr,
unsigned XCTYPE incr)
{
unsigned XCTYPE old;
do
{
old = *addr;
}
while (!AO_XSIZE_compare_and_swap_acquire(addr, old, old+incr));
return old;
}
# define AO_HAVE_XSIZE_fetch_and_add_acquire
#endif
#if defined(AO_HAVE_XSIZE_compare_and_swap_release) && \
!defined(AO_HAVE_XSIZE_fetch_and_add_release)
AO_INLINE AO_t
AO_XSIZE_fetch_and_add_release(volatile unsigned XCTYPE *addr,
unsigned XCTYPE incr)
{
unsigned XCTYPE old;
do
{
old = *addr;
}
while (!AO_XSIZE_compare_and_swap_release(addr, old, old+incr));
return old;
}
# define AO_HAVE_XSIZE_fetch_and_add_release
#endif
#if defined(AO_HAVE_XSIZE_fetch_and_add_full)
# if !defined(AO_HAVE_XSIZE_fetch_and_add_release)
# define AO_XSIZE_fetch_and_add_release(addr, val) \
AO_XSIZE_fetch_and_add_full(addr, val)
# define AO_HAVE_XSIZE_fetch_and_add_release
# endif
# if !defined(AO_HAVE_XSIZE_fetch_and_add_acquire)
# define AO_XSIZE_fetch_and_add_acquire(addr, val) \
AO_XSIZE_fetch_and_add_full(addr, val)
# define AO_HAVE_XSIZE_fetch_and_add_acquire
# endif
# if !defined(AO_HAVE_XSIZE_fetch_and_add_write)
# define AO_XSIZE_fetch_and_add_write(addr, val) \
AO_XSIZE_fetch_and_add_full(addr, val)
# define AO_HAVE_XSIZE_fetch_and_add_write
# endif
# if !defined(AO_HAVE_XSIZE_fetch_and_add_read)
# define AO_XSIZE_fetch_and_add_read(addr, val) \
AO_XSIZE_fetch_and_add_full(addr, val)
# define AO_HAVE_XSIZE_fetch_and_add_read
# endif
#endif /* AO_HAVE_XSIZE_fetch_and_add_full */
#if !defined(AO_HAVE_XSIZE_fetch_and_add) && \
defined(AO_HAVE_XSIZE_fetch_and_add_release)
# define AO_XSIZE_fetch_and_add(addr, val) \
AO_XSIZE_fetch_and_add_release(addr, val)
# define AO_HAVE_XSIZE_fetch_and_add
#endif
#if !defined(AO_HAVE_XSIZE_fetch_and_add) && \
defined(AO_HAVE_XSIZE_fetch_and_add_acquire)
# define AO_XSIZE_fetch_and_add(addr, val) \
AO_XSIZE_fetch_and_add_acquire(addr, val)
# define AO_HAVE_XSIZE_fetch_and_add
#endif
#if !defined(AO_HAVE_XSIZE_fetch_and_add) && \
defined(AO_HAVE_XSIZE_fetch_and_add_write)
# define AO_XSIZE_fetch_and_add(addr, val) \
AO_XSIZE_fetch_and_add_write(addr, val)
# define AO_HAVE_XSIZE_fetch_and_add
#endif
#if !defined(AO_HAVE_XSIZE_fetch_and_add) && \
defined(AO_HAVE_XSIZE_fetch_and_add_read)
# define AO_XSIZE_fetch_and_add(addr, val) \
AO_XSIZE_fetch_and_add_read(addr, val)
# define AO_HAVE_XSIZE_fetch_and_add
#endif
#if defined(AO_HAVE_XSIZE_fetch_and_add_acquire) &&\
defined(AO_HAVE_nop_full) && \
!defined(AO_HAVE_XSIZE_fetch_and_add_full)
# define AO_XSIZE_fetch_and_add_full(addr, val) \
(AO_nop_full(), AO_XSIZE_fetch_and_add_acquire(addr, val))
#endif
#if !defined(AO_HAVE_XSIZE_fetch_and_add_release_write) && \
defined(AO_HAVE_XSIZE_fetch_and_add_write)
# define AO_XSIZE_fetch_and_add_release_write(addr, val) \
AO_XSIZE_fetch_and_add_write(addr, val)
# define AO_HAVE_XSIZE_fetch_and_add_release_write
#endif
#if !defined(AO_HAVE_XSIZE_fetch_and_add_release_write) && \
defined(AO_HAVE_XSIZE_fetch_and_add_release)
# define AO_XSIZE_fetch_and_add_release_write(addr, val) \
AO_XSIZE_fetch_and_add_release(addr, val)
# define AO_HAVE_XSIZE_fetch_and_add_release_write
#endif
#if !defined(AO_HAVE_XSIZE_fetch_and_add_acquire_read) && \
defined(AO_HAVE_XSIZE_fetch_and_add_read)
# define AO_XSIZE_fetch_and_add_acquire_read(addr, val) \
AO_XSIZE_fetch_and_add_read(addr, val)
# define AO_HAVE_XSIZE_fetch_and_add_acquire_read
#endif
#if !defined(AO_HAVE_XSIZE_fetch_and_add_acquire_read) && \
defined(AO_HAVE_XSIZE_fetch_and_add_acquire)
# define AO_XSIZE_fetch_and_add_acquire_read(addr, val) \
AO_XSIZE_fetch_and_add_acquire(addr, val)
# define AO_HAVE_XSIZE_fetch_and_add_acquire_read
#endif
#ifdef AO_NO_DD_ORDERING
# if defined(AO_HAVE_XSIZE_fetch_and_add_acquire_read)
# define AO_XSIZE_fetch_and_add_dd_acquire_read(addr, val) \
AO_XSIZE_fetch_and_add_acquire_read(addr, val)
# define AO_HAVE_XSIZE_fetch_and_add_dd_acquire_read
# endif
#else
# if defined(AO_HAVE_XSIZE_fetch_and_add)
# define AO_XSIZE_fetch_and_add_dd_acquire_read(addr, val) \
AO_XSIZE_fetch_and_add(addr, val)
# define AO_HAVE_XSIZE_fetch_and_add_dd_acquire_read
# endif
#endif
/* XSIZE_fetch_and_add1 */
#if defined(AO_HAVE_XSIZE_fetch_and_add_full) &&\
!defined(AO_HAVE_XSIZE_fetch_and_add1_full)
# define AO_XSIZE_fetch_and_add1_full(addr) \
AO_XSIZE_fetch_and_add_full(addr,1)
# define AO_HAVE_XSIZE_fetch_and_add1_full
#endif
#if defined(AO_HAVE_XSIZE_fetch_and_add_release) &&\
!defined(AO_HAVE_XSIZE_fetch_and_add1_release)
# define AO_XSIZE_fetch_and_add1_release(addr) \
AO_XSIZE_fetch_and_add_release(addr,1)
# define AO_HAVE_XSIZE_fetch_and_add1_release
#endif
#if defined(AO_HAVE_XSIZE_fetch_and_add_acquire) &&\
!defined(AO_HAVE_XSIZE_fetch_and_add1_acquire)
# define AO_XSIZE_fetch_and_add1_acquire(addr) \
AO_XSIZE_fetch_and_add_acquire(addr,1)
# define AO_HAVE_XSIZE_fetch_and_add1_acquire
#endif
#if defined(AO_HAVE_XSIZE_fetch_and_add_write) &&\
!defined(AO_HAVE_XSIZE_fetch_and_add1_write)
# define AO_XSIZE_fetch_and_add1_write(addr) \
AO_XSIZE_fetch_and_add_write(addr,1)
# define AO_HAVE_XSIZE_fetch_and_add1_write
#endif
#if defined(AO_HAVE_XSIZE_fetch_and_add_read) &&\
!defined(AO_HAVE_XSIZE_fetch_and_add1_read)
# define AO_XSIZE_fetch_and_add1_read(addr) \
AO_XSIZE_fetch_and_add_read(addr,1)
# define AO_HAVE_XSIZE_fetch_and_add1_read
#endif
#if defined(AO_HAVE_XSIZE_fetch_and_add_release_write) &&\
!defined(AO_HAVE_XSIZE_fetch_and_add1_release_write)
# define AO_XSIZE_fetch_and_add1_release_write(addr) \
AO_XSIZE_fetch_and_add_release_write(addr,1)
# define AO_HAVE_XSIZE_fetch_and_add1_release_write
#endif
#if defined(AO_HAVE_XSIZE_fetch_and_add_acquire_read) &&\
!defined(AO_HAVE_XSIZE_fetch_and_add1_acquire_read)
# define AO_XSIZE_fetch_and_add1_acquire_read(addr) \
AO_XSIZE_fetch_and_add_acquire_read(addr,1)
# define AO_HAVE_XSIZE_fetch_and_add1_acquire_read
#endif
#if defined(AO_HAVE_XSIZE_fetch_and_add) &&\
!defined(AO_HAVE_XSIZE_fetch_and_add1)
# define AO_XSIZE_fetch_and_add1(addr) \
AO_XSIZE_fetch_and_add(addr,1)
# define AO_HAVE_XSIZE_fetch_and_add1
#endif
#if defined(AO_HAVE_XSIZE_fetch_and_add1_full)
# if !defined(AO_HAVE_XSIZE_fetch_and_add1_release)
# define AO_XSIZE_fetch_and_add1_release(addr) \
AO_XSIZE_fetch_and_add1_full(addr)
# define AO_HAVE_XSIZE_fetch_and_add1_release
# endif
# if !defined(AO_HAVE_XSIZE_fetch_and_add1_acquire)
# define AO_XSIZE_fetch_and_add1_acquire(addr) \
AO_XSIZE_fetch_and_add1_full(addr)
# define AO_HAVE_XSIZE_fetch_and_add1_acquire
# endif
# if !defined(AO_HAVE_XSIZE_fetch_and_add1_write)
# define AO_XSIZE_fetch_and_add1_write(addr) \
AO_XSIZE_fetch_and_add1_full(addr)
# define AO_HAVE_XSIZE_fetch_and_add1_write
# endif
# if !defined(AO_HAVE_XSIZE_fetch_and_add1_read)
# define AO_XSIZE_fetch_and_add1_read(addr) \
AO_XSIZE_fetch_and_add1_full(addr)
# define AO_HAVE_XSIZE_fetch_and_add1_read
# endif
#endif /* AO_HAVE_XSIZE_fetch_and_add1_full */
#if !defined(AO_HAVE_XSIZE_fetch_and_add1) && \
defined(AO_HAVE_XSIZE_fetch_and_add1_release)
# define AO_XSIZE_fetch_and_add1(addr) \
AO_XSIZE_fetch_and_add1_release(addr)
# define AO_HAVE_XSIZE_fetch_and_add1
#endif
#if !defined(AO_HAVE_XSIZE_fetch_and_add1) && \
defined(AO_HAVE_XSIZE_fetch_and_add1_acquire)
# define AO_XSIZE_fetch_and_add1(addr) \
AO_XSIZE_fetch_and_add1_acquire(addr)
# define AO_HAVE_XSIZE_fetch_and_add1
#endif
#if !defined(AO_HAVE_XSIZE_fetch_and_add1) && \
defined(AO_HAVE_XSIZE_fetch_and_add1_write)
# define AO_XSIZE_fetch_and_add1(addr) \
AO_XSIZE_fetch_and_add1_write(addr)
# define AO_HAVE_XSIZE_fetch_and_add1
#endif
#if !defined(AO_HAVE_XSIZE_fetch_and_add1) && \
defined(AO_HAVE_XSIZE_fetch_and_add1_read)
# define AO_XSIZE_fetch_and_add1(addr) \
AO_XSIZE_fetch_and_add1_read(addr)
# define AO_HAVE_XSIZE_fetch_and_add1
#endif
#if defined(AO_HAVE_XSIZE_fetch_and_add1_acquire) &&\
defined(AO_HAVE_nop_full) && \
!defined(AO_HAVE_XSIZE_fetch_and_add1_full)
# define AO_XSIZE_fetch_and_add1_full(addr) \
(AO_nop_full(), AO_XSIZE_fetch_and_add1_acquire(addr))
# define AO_HAVE_XSIZE_fetch_and_add1_full
#endif
#if !defined(AO_HAVE_XSIZE_fetch_and_add1_release_write) && \
defined(AO_HAVE_XSIZE_fetch_and_add1_write)
# define AO_XSIZE_fetch_and_add1_release_write(addr) \
AO_XSIZE_fetch_and_add1_write(addr)
# define AO_HAVE_XSIZE_fetch_and_add1_release_write
#endif
#if !defined(AO_HAVE_XSIZE_fetch_and_add1_release_write) && \
defined(AO_HAVE_XSIZE_fetch_and_add1_release)
# define AO_XSIZE_fetch_and_add1_release_write(addr) \
AO_XSIZE_fetch_and_add1_release(addr)
# define AO_HAVE_XSIZE_fetch_and_add1_release_write
#endif
#if !defined(AO_HAVE_XSIZE_fetch_and_add1_acquire_read) && \
defined(AO_HAVE_XSIZE_fetch_and_add1_read)
# define AO_XSIZE_fetch_and_add1_acquire_read(addr) \
AO_XSIZE_fetch_and_add1_read(addr)
# define AO_HAVE_XSIZE_fetch_and_add1_acquire_read
#endif
#if !defined(AO_HAVE_XSIZE_fetch_and_add1_acquire_read) && \
defined(AO_HAVE_XSIZE_fetch_and_add1_acquire)
# define AO_XSIZE_fetch_and_add1_acquire_read(addr) \
AO_XSIZE_fetch_and_add1_acquire(addr)
# define AO_HAVE_XSIZE_fetch_and_add1_acquire_read
#endif
#ifdef AO_NO_DD_ORDERING
# if defined(AO_HAVE_XSIZE_fetch_and_add1_acquire_read)
# define AO_XSIZE_fetch_and_add1_dd_acquire_read(addr) \
AO_XSIZE_fetch_and_add1_acquire_read(addr)
# define AO_HAVE_XSIZE_fetch_and_add1_dd_acquire_read
# endif
#else
# if defined(AO_HAVE_XSIZE_fetch_and_add1)
# define AO_XSIZE_fetch_and_add1_dd_acquire_read(addr) \
AO_XSIZE_fetch_and_add1(addr)
# define AO_HAVE_XSIZE_fetch_and_add1_dd_acquire_read
# endif
#endif
/* XSIZE_fetch_and_sub1 */
#if defined(AO_HAVE_XSIZE_fetch_and_add_full) &&\
!defined(AO_HAVE_XSIZE_fetch_and_sub1_full)
# define AO_XSIZE_fetch_and_sub1_full(addr) \
AO_XSIZE_fetch_and_add_full(addr,(unsigned XCTYPE)(-1))
# define AO_HAVE_XSIZE_fetch_and_sub1_full
#endif
#if defined(AO_HAVE_XSIZE_fetch_and_add_release) &&\
!defined(AO_HAVE_XSIZE_fetch_and_sub1_release)
# define AO_XSIZE_fetch_and_sub1_release(addr) \
AO_XSIZE_fetch_and_add_release(addr,(unsigned XCTYPE)(-1))
# define AO_HAVE_XSIZE_fetch_and_sub1_release
#endif
#if defined(AO_HAVE_XSIZE_fetch_and_add_acquire) &&\
!defined(AO_HAVE_XSIZE_fetch_and_sub1_acquire)
# define AO_XSIZE_fetch_and_sub1_acquire(addr) \
AO_XSIZE_fetch_and_add_acquire(addr,(unsigned XCTYPE)(-1))
# define AO_HAVE_XSIZE_fetch_and_sub1_acquire
#endif
#if defined(AO_HAVE_XSIZE_fetch_and_add_write) &&\
!defined(AO_HAVE_XSIZE_fetch_and_sub1_write)
# define AO_XSIZE_fetch_and_sub1_write(addr) \
AO_XSIZE_fetch_and_add_write(addr,(unsigned XCTYPE)(-1))
# define AO_HAVE_XSIZE_fetch_and_sub1_write
#endif
#if defined(AO_HAVE_XSIZE_fetch_and_add_read) &&\
!defined(AO_HAVE_XSIZE_fetch_and_sub1_read)
# define AO_XSIZE_fetch_and_sub1_read(addr) \
AO_XSIZE_fetch_and_add_read(addr,(unsigned XCTYPE)(-1))
# define AO_HAVE_XSIZE_fetch_and_sub1_read
#endif
#if defined(AO_HAVE_XSIZE_fetch_and_add_release_write) &&\
!defined(AO_HAVE_XSIZE_fetch_and_sub1_release_write)
# define AO_XSIZE_fetch_and_sub1_release_write(addr) \
AO_XSIZE_fetch_and_add_release_write(addr,(unsigned XCTYPE)(-1))
# define AO_HAVE_XSIZE_fetch_and_sub1_release_write
#endif
#if defined(AO_HAVE_XSIZE_fetch_and_add_acquire_read) &&\
!defined(AO_HAVE_XSIZE_fetch_and_sub1_acquire_read)
# define AO_XSIZE_fetch_and_sub1_acquire_read(addr) \
AO_XSIZE_fetch_and_add_acquire_read(addr,(unsigned XCTYPE)(-1))
# define AO_HAVE_XSIZE_fetch_and_sub1_acquire_read
#endif
#if defined(AO_HAVE_XSIZE_fetch_and_add) &&\
!defined(AO_HAVE_XSIZE_fetch_and_sub1)
# define AO_XSIZE_fetch_and_sub1(addr) \
AO_XSIZE_fetch_and_add(addr,(unsigned XCTYPE)(-1))
# define AO_HAVE_XSIZE_fetch_and_sub1
#endif
#if defined(AO_HAVE_XSIZE_fetch_and_sub1_full)
# if !defined(AO_HAVE_XSIZE_fetch_and_sub1_release)
# define AO_XSIZE_fetch_and_sub1_release(addr) \
AO_XSIZE_fetch_and_sub1_full(addr)
# define AO_HAVE_XSIZE_fetch_and_sub1_release
# endif
# if !defined(AO_HAVE_XSIZE_fetch_and_sub1_acquire)
# define AO_XSIZE_fetch_and_sub1_acquire(addr) \
AO_XSIZE_fetch_and_sub1_full(addr)
# define AO_HAVE_XSIZE_fetch_and_sub1_acquire
# endif
# if !defined(AO_HAVE_XSIZE_fetch_and_sub1_write)
# define AO_XSIZE_fetch_and_sub1_write(addr) \
AO_XSIZE_fetch_and_sub1_full(addr)
# define AO_HAVE_XSIZE_fetch_and_sub1_write
# endif
# if !defined(AO_HAVE_XSIZE_fetch_and_sub1_read)
# define AO_XSIZE_fetch_and_sub1_read(addr) \
AO_XSIZE_fetch_and_sub1_full(addr)
# define AO_HAVE_XSIZE_fetch_and_sub1_read
# endif
#endif /* AO_HAVE_XSIZE_fetch_and_sub1_full */
#if !defined(AO_HAVE_XSIZE_fetch_and_sub1) && \
defined(AO_HAVE_XSIZE_fetch_and_sub1_release)
# define AO_XSIZE_fetch_and_sub1(addr) \
AO_XSIZE_fetch_and_sub1_release(addr)
# define AO_HAVE_XSIZE_fetch_and_sub1
#endif
#if !defined(AO_HAVE_XSIZE_fetch_and_sub1) && \
defined(AO_HAVE_XSIZE_fetch_and_sub1_acquire)
# define AO_XSIZE_fetch_and_sub1(addr) \
AO_XSIZE_fetch_and_sub1_acquire(addr)
# define AO_HAVE_XSIZE_fetch_and_sub1
#endif
#if !defined(AO_HAVE_XSIZE_fetch_and_sub1) && \
defined(AO_HAVE_XSIZE_fetch_and_sub1_write)
# define AO_XSIZE_fetch_and_sub1(addr) \
AO_XSIZE_fetch_and_sub1_write(addr)
# define AO_HAVE_XSIZE_fetch_and_sub1
#endif
#if !defined(AO_HAVE_XSIZE_fetch_and_sub1) && \
defined(AO_HAVE_XSIZE_fetch_and_sub1_read)
# define AO_XSIZE_fetch_and_sub1(addr) \
AO_XSIZE_fetch_and_sub1_read(addr)
# define AO_HAVE_XSIZE_fetch_and_sub1
#endif
#if defined(AO_HAVE_XSIZE_fetch_and_sub1_acquire) &&\
defined(AO_HAVE_nop_full) && \
!defined(AO_HAVE_XSIZE_fetch_and_sub1_full)
# define AO_XSIZE_fetch_and_sub1_full(addr) \
(AO_nop_full(), AO_XSIZE_fetch_and_sub1_acquire(addr))
# define AO_HAVE_XSIZE_fetch_and_sub1_full
#endif
#if !defined(AO_HAVE_XSIZE_fetch_and_sub1_release_write) && \
defined(AO_HAVE_XSIZE_fetch_and_sub1_write)
# define AO_XSIZE_fetch_and_sub1_release_write(addr) \
AO_XSIZE_fetch_and_sub1_write(addr)
# define AO_HAVE_XSIZE_fetch_and_sub1_release_write
#endif
#if !defined(AO_HAVE_XSIZE_fetch_and_sub1_release_write) && \
defined(AO_HAVE_XSIZE_fetch_and_sub1_release)
# define AO_XSIZE_fetch_and_sub1_release_write(addr) \
AO_XSIZE_fetch_and_sub1_release(addr)
# define AO_HAVE_XSIZE_fetch_and_sub1_release_write
#endif
#if !defined(AO_HAVE_XSIZE_fetch_and_sub1_acquire_read) && \
defined(AO_HAVE_XSIZE_fetch_and_sub1_read)
# define AO_XSIZE_fetch_and_sub1_acquire_read(addr) \
AO_XSIZE_fetch_and_sub1_read(addr)
# define AO_HAVE_XSIZE_fetch_and_sub1_acquire_read
#endif
#if !defined(AO_HAVE_XSIZE_fetch_and_sub1_acquire_read) && \
defined(AO_HAVE_XSIZE_fetch_and_sub1_acquire)
# define AO_XSIZE_fetch_and_sub1_acquire_read(addr) \
AO_XSIZE_fetch_and_sub1_acquire(addr)
# define AO_HAVE_XSIZE_fetch_and_sub1_acquire_read
#endif
#ifdef AO_NO_DD_ORDERING
# if defined(AO_HAVE_XSIZE_fetch_and_sub1_acquire_read)
# define AO_XSIZE_fetch_and_sub1_dd_acquire_read(addr) \
AO_XSIZE_fetch_and_sub1_acquire_read(addr)
# define AO_HAVE_XSIZE_fetch_and_sub1_dd_acquire_read
# endif
#else
# if defined(AO_HAVE_XSIZE_fetch_and_sub1)
# define AO_XSIZE_fetch_and_sub1_dd_acquire_read(addr) \
AO_XSIZE_fetch_and_sub1(addr)
# define AO_HAVE_XSIZE_fetch_and_sub1_dd_acquire_read
# endif
#endif

File diff suppressed because it is too large Load Diff

View File

@ -1,47 +0,0 @@
#General sysdep utility headers, followed by the arch-specific ones
nobase_sysdep_HEADERS= generic_pthread.h \
atomic_load_store.h \
aligned_atomic_load_store.h \
acquire_release_volatile.h \
char_acquire_release_volatile.h \
char_atomic_load_store.h \
short_acquire_release_volatile.h \
short_aligned_atomic_load_store.h \
short_atomic_load_store.h \
int_acquire_release_volatile.h \
int_aligned_atomic_load_store.h \
int_atomic_load_store.h \
all_acquire_release_volatile.h \
all_aligned_atomic_load_store.h \
all_atomic_load_store.h \
read_ordered.h \
ordered_except_wr.h \
ordered.h \
ao_t_is_int.h \
test_and_set_t_is_ao_t.h \
test_and_set_t_is_char.h \
emul_cas.h \
standard_ao_double_t.h \
README \
\
gcc/alpha.h gcc/arm.h gcc/x86.h \
gcc/hppa.h gcc/ia64.h \
gcc/powerpc.h gcc/sparc.h \
gcc/hppa.h gcc/m68k.h gcc/s390.h \
gcc/ia64.h gcc/x86_64.h gcc/cris.h \
\
icc/ia64.h \
\
msftc/x86.h \
msftc/x86_64.h \
\
hpc/ia64.h hpc/hppa.h \
\
sunc/sparc.h \
\
ibmc/powerpc.h
sysdepdir= ${includedir}/atomic_ops/sysdeps
# A few architectures require special .S files
EXTRA_DIST = sunc/sparc.S

View File

@ -1,427 +0,0 @@
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ../../..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
subdir = src/atomic_ops/sysdeps
DIST_COMMON = README $(nobase_sysdep_HEADERS) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/src/config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
am__installdirs = "$(DESTDIR)$(sysdepdir)"
nobase_sysdepHEADERS_INSTALL = $(install_sh_DATA)
HEADERS = $(nobase_sysdep_HEADERS)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCAS = @CCAS@
CCASFLAGS = @CCASFLAGS@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
GREP = @GREP@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
NEED_ASM_FALSE = @NEED_ASM_FALSE@
NEED_ASM_TRUE = @NEED_ASM_TRUE@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PICFLAG = @PICFLAG@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
ac_ct_CC = @ac_ct_CC@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@
target_cpu = @target_cpu@
target_os = @target_os@
target_vendor = @target_vendor@
#General sysdep utility headers, followed by the arch-specific ones
nobase_sysdep_HEADERS = generic_pthread.h \
atomic_load_store.h \
aligned_atomic_load_store.h \
acquire_release_volatile.h \
char_acquire_release_volatile.h \
char_atomic_load_store.h \
short_acquire_release_volatile.h \
short_aligned_atomic_load_store.h \
short_atomic_load_store.h \
int_acquire_release_volatile.h \
int_aligned_atomic_load_store.h \
int_atomic_load_store.h \
all_acquire_release_volatile.h \
all_aligned_atomic_load_store.h \
all_atomic_load_store.h \
read_ordered.h \
ordered_except_wr.h \
ordered.h \
ao_t_is_int.h \
test_and_set_t_is_ao_t.h \
test_and_set_t_is_char.h \
emul_cas.h \
standard_ao_double_t.h \
README \
\
gcc/alpha.h gcc/arm.h gcc/x86.h \
gcc/hppa.h gcc/ia64.h \
gcc/powerpc.h gcc/sparc.h \
gcc/hppa.h gcc/m68k.h gcc/s390.h \
gcc/ia64.h gcc/x86_64.h gcc/cris.h \
\
icc/ia64.h \
\
msftc/x86.h \
msftc/x86_64.h \
\
hpc/ia64.h hpc/hppa.h \
\
sunc/sparc.h \
\
ibmc/powerpc.h
sysdepdir = ${includedir}/atomic_ops/sysdeps
# A few architectures require special .S files
EXTRA_DIST = sunc/sparc.S
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/atomic_ops/sysdeps/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu src/atomic_ops/sysdeps/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
uninstall-info-am:
install-nobase_sysdepHEADERS: $(nobase_sysdep_HEADERS)
@$(NORMAL_INSTALL)
test -z "$(sysdepdir)" || $(mkdir_p) "$(DESTDIR)$(sysdepdir)"
@$(am__vpath_adj_setup) \
list='$(nobase_sysdep_HEADERS)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
$(am__vpath_adj) \
echo " $(nobase_sysdepHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(sysdepdir)/$$f'"; \
$(nobase_sysdepHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(sysdepdir)/$$f"; \
done
uninstall-nobase_sysdepHEADERS:
@$(NORMAL_UNINSTALL)
@$(am__vpath_adj_setup) \
list='$(nobase_sysdep_HEADERS)'; for p in $$list; do \
$(am__vpath_adj) \
echo " rm -f '$(DESTDIR)$(sysdepdir)/$$f'"; \
rm -f "$(DESTDIR)$(sysdepdir)/$$f"; \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
$(mkdir_p) $(distdir)/gcc $(distdir)/hpc $(distdir)/ibmc $(distdir)/icc $(distdir)/msftc $(distdir)/sunc
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(HEADERS)
installdirs:
for dir in "$(DESTDIR)$(sysdepdir)"; do \
test -z "$$dir" || $(mkdir_p) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am: install-nobase_sysdepHEADERS
install-exec-am:
install-info: install-info-am
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-info-am uninstall-nobase_sysdepHEADERS
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
ctags distclean distclean-generic distclean-tags distdir dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-exec install-exec-am \
install-info install-info-am install-man \
install-nobase_sysdepHEADERS install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \
uninstall-nobase_sysdepHEADERS
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -1,7 +0,0 @@
There are two kinds of entities in this directory:
- Subdirectories corresponding to specific compilers (or compiler/OS combinations).
Each of these includes one or more architecture-specific headers.
- More generic header files corresponding to a particular ordering and/or
atomicity property that might be shared by multiple hardware platforms.

View File

@ -1,64 +0,0 @@
/*
* Copyright (c) 2003 Hewlett-Packard Development Company, L.P.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
/*
* This file adds definitions appropriate for environments in which an AO_t
* volatile load has acquire semantics, and an AO_t volatile store has release
* semantics. This is arguably supposed to be true with the standard Itanium
* software conventions.
*/
/*
* Empirically gcc/ia64 does some reordering of ordinary operations around volatiles
* even when we think it shouldn't. Gcc 3.3 and earlier could reorder a volatile store
* with another store. As of March 2005, gcc pre-4 reused previously computed
* common subexpressions across a volatile load.
* Hence we now add compiler barriers for gcc.
*/
#if !defined(AO_GCC_BARRIER)
# if defined(__GNUC__)
# define AO_GCC_BARRIER() AO_compiler_barrier()
# else
# define AO_GCC_BARRIER()
# endif
#endif
AO_INLINE AO_t
AO_load_acquire(volatile AO_t *p)
{
AO_t result = *p;
/* A normal volatile load generates an ld.acq */
AO_GCC_BARRIER();
return result;
}
#define AO_HAVE_load_acquire
AO_INLINE void
AO_store_release(volatile AO_t *p, AO_t val)
{
AO_GCC_BARRIER();
/* A normal volatile store generates an st.rel */
*p = val;
}
#define AO_HAVE_store_release

Some files were not shown because too many files have changed in this diff Show More