diff --git a/collects/browser/browser.scrbl b/collects/browser/browser.scrbl index f1f7fd52b4..ddc8112a0b 100644 --- a/collects/browser/browser.scrbl +++ b/collects/browser/browser.scrbl @@ -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{...}. 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} diff --git a/collects/browser/tests/test-docs-complete.rkt b/collects/browser/tests/test-docs-complete.rkt index 7e129f8391..69013ddbdb 100644 --- a/collects/browser/tests/test-docs-complete.rkt +++ b/collects/browser/tests/test-docs-complete.rkt @@ -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)) diff --git a/collects/compiler/compiler-unit.rkt b/collects/compiler/compiler-unit.rkt index 3912d73b58..1c1d67fc03 100644 --- a/collects/compiler/compiler-unit.rkt +++ b/collects/compiler/compiler-unit.rkt @@ -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) diff --git a/collects/datalog/tests/test-docs-complete.rkt b/collects/datalog/tests/test-docs-complete.rkt deleted file mode 100644 index f3e76cba19..0000000000 --- a/collects/datalog/tests/test-docs-complete.rkt +++ /dev/null @@ -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)) diff --git a/collects/frtime/tests/test-docs-complete.rkt b/collects/frtime/tests/test-docs-complete.rkt index 079f924377..a693979c97 100644 --- a/collects/frtime/tests/test-docs-complete.rkt +++ b/collects/frtime/tests/test-docs-complete.rkt @@ -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)) diff --git a/collects/html/html.scrbl b/collects/html/html.scrbl index 9bc420dceb..8d3115d236 100644 --- a/collects/html/html.scrbl +++ b/collects/html/html.scrbl @@ -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 "

Hello world

Testing!

" "")))) - (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))] } diff --git a/collects/html/tests/test-docs-complete.rkt b/collects/html/tests/test-docs-complete.rkt deleted file mode 100644 index 0b8ea6e496..0000000000 --- a/collects/html/tests/test-docs-complete.rkt +++ /dev/null @@ -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)) diff --git a/collects/lang/htdp-beginner.rkt b/collects/lang/htdp-beginner.rkt index 0ea60daa6c..350e0bbf08 100644 --- a/collects/lang/htdp-beginner.rkt +++ b/collects/lang/htdp-beginner.rkt @@ -40,7 +40,7 @@ check-error check-member-of check-range - define-wish + ;; define-wish #%datum #%top-interaction empty true false diff --git a/collects/meta/props b/collects/meta/props index 665fd3f09b..bfc80300cc 100755 --- a/collects/meta/props +++ b/collects/meta/props @@ -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 diff --git a/collects/plai/tests/test-docs-complete.rkt b/collects/plai/tests/test-docs-complete.rkt index f4e3f04261..8f4e2c6702 100644 --- a/collects/plai/tests/test-docs-complete.rkt +++ b/collects/plai/tests/test-docs-complete.rkt @@ -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)) diff --git a/collects/planet/private/planet-shared.rkt b/collects/planet/private/planet-shared.rkt index dbed9bd4aa..4d52048cad 100644 --- a/collects/planet/private/planet-shared.rkt +++ b/collects/planet/private/planet-shared.rkt @@ -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 diff --git a/collects/racket/place.rkt b/collects/racket/place.rkt index eedaa88b9c..7fcfb1f5ae 100644 --- a/collects/racket/place.rkt +++ b/collects/racket/place.rkt @@ -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 ...))])) diff --git a/collects/rackunit/scribblings/quick-start.scrbl b/collects/rackunit/scribblings/quick-start.scrbl index 28f7ed56fe..3ffede3981 100644 --- a/collects/rackunit/scribblings/quick-start.scrbl +++ b/collects/rackunit/scribblings/quick-start.scrbl @@ -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 diff --git a/collects/scribblings/framework/color.scrbl b/collects/scribblings/framework/color.scrbl index 3502243890..6d09ad486d 100644 --- a/collects/scribblings/framework/color.scrbl +++ b/collects/scribblings/framework/color.scrbl @@ -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 diff --git a/collects/scribblings/htdp-langs/beginner.scrbl b/collects/scribblings/htdp-langs/beginner.scrbl index 4c91595190..814d7f927e 100644 --- a/collects/scribblings/htdp-langs/beginner.scrbl +++ b/collects/scribblings/htdp-langs/beginner.scrbl @@ -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} diff --git a/collects/scribblings/raco/api.scrbl b/collects/scribblings/raco/api.scrbl index 064f136f98..f4ff5cc836 100644 --- a/collects/scribblings/raco/api.scrbl +++ b/collects/scribblings/raco/api.scrbl @@ -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 diff --git a/collects/scribblings/reference/memory.scrbl b/collects/scribblings/reference/memory.scrbl index 9c4f60750a..0a8c7fe9c0 100644 --- a/collects/scribblings/reference/memory.scrbl +++ b/collects/scribblings/reference/memory.scrbl @@ -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. diff --git a/collects/scribblings/reference/places.scrbl b/collects/scribblings/reference/places.scrbl index 1285d22779..6cf2d3cf4b 100644 --- a/collects/scribblings/reference/places.scrbl +++ b/collects/scribblings/reference/places.scrbl @@ -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?)]{ diff --git a/collects/setup/parallel-do.rkt b/collects/setup/parallel-do.rkt index 2716c2affe..f3bf99ba48 100644 --- a/collects/setup/parallel-do.rkt +++ b/collects/setup/parallel-do.rkt @@ -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)) - diff --git a/collects/setup/setup-unit.rkt b/collects/setup/setup-unit.rkt index 988d567280..e8fef2f8d5 100644 --- a/collects/setup/setup-unit.rkt +++ b/collects/setup/setup-unit.rkt @@ -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 diff --git a/collects/string-constants/main.rkt b/collects/string-constants/main.rkt index e535848faf..5f4e3f7bde 100644 --- a/collects/string-constants/main.rkt +++ b/collects/string-constants/main.rkt @@ -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")) diff --git a/collects/string-constants/danish-string-constants.rkt b/collects/string-constants/private/danish-string-constants.rkt similarity index 100% rename from collects/string-constants/danish-string-constants.rkt rename to collects/string-constants/private/danish-string-constants.rkt diff --git a/collects/string-constants/dutch-string-constants.rkt b/collects/string-constants/private/dutch-string-constants.rkt similarity index 100% rename from collects/string-constants/dutch-string-constants.rkt rename to collects/string-constants/private/dutch-string-constants.rkt diff --git a/collects/string-constants/english-string-constants.rkt b/collects/string-constants/private/english-string-constants.rkt similarity index 100% rename from collects/string-constants/english-string-constants.rkt rename to collects/string-constants/private/english-string-constants.rkt diff --git a/collects/string-constants/french-string-constants.rkt b/collects/string-constants/private/french-string-constants.rkt similarity index 100% rename from collects/string-constants/french-string-constants.rkt rename to collects/string-constants/private/french-string-constants.rkt diff --git a/collects/string-constants/german-string-constants.rkt b/collects/string-constants/private/german-string-constants.rkt similarity index 100% rename from collects/string-constants/german-string-constants.rkt rename to collects/string-constants/private/german-string-constants.rkt diff --git a/collects/string-constants/japanese-string-constants.rkt b/collects/string-constants/private/japanese-string-constants.rkt similarity index 100% rename from collects/string-constants/japanese-string-constants.rkt rename to collects/string-constants/private/japanese-string-constants.rkt diff --git a/collects/string-constants/korean-string-constants.rkt b/collects/string-constants/private/korean-string-constants.rkt similarity index 100% rename from collects/string-constants/korean-string-constants.rkt rename to collects/string-constants/private/korean-string-constants.rkt diff --git a/collects/string-constants/portuguese-string-constants.rkt b/collects/string-constants/private/portuguese-string-constants.rkt similarity index 100% rename from collects/string-constants/portuguese-string-constants.rkt rename to collects/string-constants/private/portuguese-string-constants.rkt diff --git a/collects/string-constants/russian-string-constants.rkt b/collects/string-constants/private/russian-string-constants.rkt similarity index 100% rename from collects/string-constants/russian-string-constants.rkt rename to collects/string-constants/private/russian-string-constants.rkt diff --git a/collects/string-constants/simplified-chinese-string-constants.rkt b/collects/string-constants/private/simplified-chinese-string-constants.rkt similarity index 100% rename from collects/string-constants/simplified-chinese-string-constants.rkt rename to collects/string-constants/private/simplified-chinese-string-constants.rkt diff --git a/collects/string-constants/spanish-string-constants.rkt b/collects/string-constants/private/spanish-string-constants.rkt similarity index 100% rename from collects/string-constants/spanish-string-constants.rkt rename to collects/string-constants/private/spanish-string-constants.rkt diff --git a/collects/string-constants/string-constant-lang.rkt b/collects/string-constants/private/string-constant-lang.rkt similarity index 100% rename from collects/string-constants/string-constant-lang.rkt rename to collects/string-constants/private/string-constant-lang.rkt diff --git a/collects/string-constants/traditional-chinese-string-constants.rkt b/collects/string-constants/private/traditional-chinese-string-constants.rkt similarity index 100% rename from collects/string-constants/traditional-chinese-string-constants.rkt rename to collects/string-constants/private/traditional-chinese-string-constants.rkt diff --git a/collects/string-constants/ukrainian-string-constants.rkt b/collects/string-constants/private/ukrainian-string-constants.rkt similarity index 100% rename from collects/string-constants/ukrainian-string-constants.rkt rename to collects/string-constants/private/ukrainian-string-constants.rkt diff --git a/collects/string-constants/string-constant.rkt b/collects/string-constants/string-constant.rkt index 1279a75f83..2e9597e9e7 100644 --- a/collects/string-constants/string-constant.rkt +++ b/collects/string-constants/string-constant.rkt @@ -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)) -|# diff --git a/collects/string-constants/string-constants.scrbl b/collects/string-constants/string-constants.scrbl index 8a2d41d235..1286c43007 100644 --- a/collects/string-constants/string-constants.scrbl +++ b/collects/string-constants/string-constants.scrbl @@ -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. @; ---------------------------------------------------------------------- diff --git a/collects/string-constants/tests/test-docs-complete.rkt b/collects/string-constants/tests/test-docs-complete.rkt index 36ea325380..fe1fc8e167 100644 --- a/collects/string-constants/tests/test-docs-complete.rkt +++ b/collects/string-constants/tests/test-docs-complete.rkt @@ -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)) diff --git a/collects/tests/datalog/test-docs-complete.rkt b/collects/tests/datalog/test-docs-complete.rkt new file mode 100644 index 0000000000..489df99dec --- /dev/null +++ b/collects/tests/datalog/test-docs-complete.rkt @@ -0,0 +1,3 @@ +#lang racket/base +(require tests/utils/docs-complete) +(check-docs (quote datalog)) \ No newline at end of file diff --git a/collects/tests/html/test-docs-complete.rkt b/collects/tests/html/test-docs-complete.rkt new file mode 100644 index 0000000000..fecdc1cd5d --- /dev/null +++ b/collects/tests/html/test-docs-complete.rkt @@ -0,0 +1,3 @@ +#lang racket/base +(require tests/utils/docs-complete) +(check-docs (quote html)) \ No newline at end of file diff --git a/collects/tests/lazy/lang.rkt b/collects/tests/lazy/lang.rkt index 6d579363d4..e710270a64 100644 --- a/collects/tests/lazy/lang.rkt +++ b/collects/tests/lazy/lang.rkt @@ -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)))) diff --git a/collects/tests/racket/benchmarks/common/README.txt b/collects/tests/racket/benchmarks/common/README.txt index b9e027ca97..b3773b6307 100644 --- a/collects/tests/racket/benchmarks/common/README.txt +++ b/collects/tests/racket/benchmarks/common/README.txt @@ -9,7 +9,7 @@ where 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 diff --git a/collects/tests/racket/benchmarks/common/auto.rkt b/collects/tests/racket/benchmarks/common/auto.rkt index 6385a67aed..d03a2d59af 100755 --- a/collects/tests/racket/benchmarks/common/auto.rkt +++ b/collects/tests/racket/benchmarks/common/auto.rkt @@ -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 ".") diff --git a/collects/tests/racket/benchmarks/common/cpstack.rkt b/collects/tests/racket/benchmarks/common/cpstack.rkt deleted file mode 100644 index c39bfd7276..0000000000 --- a/collects/tests/racket/benchmarks/common/cpstack.rkt +++ /dev/null @@ -1,2 +0,0 @@ - -(module cpstack "wrap.ss") diff --git a/collects/tests/racket/benchmarks/common/cpstak.rkt b/collects/tests/racket/benchmarks/common/cpstak.rkt new file mode 100644 index 0000000000..8ca30fcf96 --- /dev/null +++ b/collects/tests/racket/benchmarks/common/cpstak.rkt @@ -0,0 +1,2 @@ + +(module cpstak "wrap.ss") diff --git a/collects/tests/racket/benchmarks/common/cpstack.sch b/collects/tests/racket/benchmarks/common/cpstak.sch similarity index 100% rename from collects/tests/racket/benchmarks/common/cpstack.sch rename to collects/tests/racket/benchmarks/common/cpstak.sch diff --git a/collects/tests/racket/benchmarks/common/typed/cpstack-non-optimizing.rkt b/collects/tests/racket/benchmarks/common/typed/cpstak-non-optimizing.rkt similarity index 100% rename from collects/tests/racket/benchmarks/common/typed/cpstack-non-optimizing.rkt rename to collects/tests/racket/benchmarks/common/typed/cpstak-non-optimizing.rkt diff --git a/collects/tests/racket/benchmarks/common/typed/cpstack-optimizing.rkt b/collects/tests/racket/benchmarks/common/typed/cpstak-optimizing.rkt similarity index 100% rename from collects/tests/racket/benchmarks/common/typed/cpstack-optimizing.rkt rename to collects/tests/racket/benchmarks/common/typed/cpstak-optimizing.rkt diff --git a/collects/tests/racket/benchmarks/common/typed/cpstack.rktl b/collects/tests/racket/benchmarks/common/typed/cpstak.rktl similarity index 100% rename from collects/tests/racket/benchmarks/common/typed/cpstack.rktl rename to collects/tests/racket/benchmarks/common/typed/cpstak.rktl diff --git a/collects/tests/racket/optimize.rktl b/collects/tests/racket/optimize.rktl index 45fa8e98b6..c71e6d3299 100644 --- a/collects/tests/racket/optimize.rktl +++ b/collects/tests/racket/optimize.rktl @@ -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) diff --git a/collects/tests/racket/place-channel.rkt b/collects/tests/racket/place-channel.rkt new file mode 100644 index 0000000000..5bdf886bb9 --- /dev/null +++ b/collects/tests/racket/place-channel.rkt @@ -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) diff --git a/collects/tests/racket/place-channel.rktl b/collects/tests/racket/place-channel.rktl deleted file mode 100644 index 0cd3a77259..0000000000 --- a/collects/tests/racket/place-channel.rktl +++ /dev/null @@ -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 -#<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) diff --git a/collects/tests/utils/docs-complete.rkt b/collects/tests/utils/docs-complete.rkt index 2a442dc59b..57e95b5c79 100644 --- a/collects/tests/utils/docs-complete.rkt +++ b/collects/tests/utils/docs-complete.rkt @@ -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) diff --git a/collects/typed-scheme/scribblings/ts-reference.scrbl b/collects/typed-scheme/scribblings/ts-reference.scrbl index af6677c826..759d4a281f 100644 --- a/collects/typed-scheme/scribblings/ts-reference.scrbl +++ b/collects/typed-scheme/scribblings/ts-reference.scrbl @@ -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} diff --git a/collects/unstable/tests/test-docs-complete.rkt b/collects/unstable/tests/test-docs-complete.rkt index 7bb19b356b..f3702dce49 100644 --- a/collects/unstable/tests/test-docs-complete.rkt +++ b/collects/unstable/tests/test-docs-complete.rkt @@ -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)) diff --git a/doc/release-notes/teachpack/HISTORY.txt b/doc/release-notes/teachpack/HISTORY.txt index 237bd8cf90..d883e3aa67 100644 --- a/doc/release-notes/teachpack/HISTORY.txt +++ b/doc/release-notes/teachpack/HISTORY.txt @@ -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] diff --git a/src/configure b/src/configure index f120fbef56..80f13fbce2 100755 --- a/src/configure +++ b/src/configure @@ -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= use 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= 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"` ;; diff --git a/src/racket/Makefile.in b/src/racket/Makefile.in index 057798e714..fff89455ef 100644 --- a/src/racket/Makefile.in +++ b/src/racket/Makefile.in @@ -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 diff --git a/src/racket/configure.ac b/src/racket/configure.ac index 6b8aa976c1..1a0820110b 100644 --- a/src/racket/configure.ac +++ b/src/racket/configure.ac @@ -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= use 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= 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" diff --git a/src/racket/gc/Makefile.in b/src/racket/gc/Makefile.in index c246bd0fca..05bbf0c8d8 100644 --- a/src/racket/gc/Makefile.in +++ b/src/racket/gc/Makefile.in @@ -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@ diff --git a/src/racket/gc/libatomic_ops/AUTHORS b/src/racket/gc/libatomic_ops/AUTHORS deleted file mode 100644 index b770890715..0000000000 --- a/src/racket/gc/libatomic_ops/AUTHORS +++ /dev/null @@ -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. - diff --git a/src/racket/gc/libatomic_ops/COPYING b/src/racket/gc/libatomic_ops/COPYING deleted file mode 100644 index d60c31a97a..0000000000 --- a/src/racket/gc/libatomic_ops/COPYING +++ /dev/null @@ -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. - - - Copyright (C) - - 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. - - , 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. diff --git a/src/racket/gc/libatomic_ops/ChangeLog b/src/racket/gc/libatomic_ops/ChangeLog deleted file mode 100644 index e68ab4cb11..0000000000 --- a/src/racket/gc/libatomic_ops/ChangeLog +++ /dev/null @@ -1,206 +0,0 @@ -2008-02-11 Hans Boehm - (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 - * src/atomic_ops/sysdeps/standard_ao_double_t.h: Let - double_ptr_storage default to long long; define everywhere. - -2008-01-08 Hans Boehm (Really mostly Joerg Wagner) - * src/atomic_ops/sysdeps/msftc/x86.h: Conditionally add - compare_double_and_swap_double. - -2008-01-06 Hans Boehm (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 - (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 - * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire): Add - %X1 modifier to support indexed addressing. - -2007-07-23 Hans Boehm (really Jim Marshall) - * src/atomic_ops/sysdeps/msftc/x86.h (_InterlockedExchangeAdd): Define - for VC++6. - -2007-07-05 Andreas Tobler - * src/atomic_ops.h: Check for __powerpc64__ and __ppc64__ to include - powerpc.h. - -2007-06-26 Hans Boehm (really Luca Barbato) - * src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire): Add - 64-bit version. - -2007-06-13 Hans Boehm - * src/atomic_ops.h: include stddef.h - -2007-06-06 Hans Boehm - * 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 - * src/atomic_ops/sysdeps/gcc/hppa.h (AO_test_and_set_full): - Add cast for return. - -2007-05-14 Hans Boehm - doc/README.txt: Update to reflect C++0x effort. - -2007-05-07 Hans Boehm (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 - * 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 - *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 - *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 - *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 - *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 - *src/atomic_ops/Makefile.am: Change function naming from "byte" to - "char" (again). - -[1.0 release] - -2005-03-21 Hans Boehm - 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 - 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 - Added libatomic_ops_gpl library with support for mostly - lock-free stack and malloc(). - -2005-01 Ian Wienand , Al Stone , - Hans Boehm - Use autoconf, automake, starting with code from Debian package. - Don't use libtool. - -2005-01 Hans Boehm - * 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 - * ao_t_is_int.h: Add to trivially support int-wide operations - on platforms with int-sized pointers. - -2004-12 Hans Boehm - * gcc/powerpc.h: First serious attempt to support PowerPC (with - help from Maged Michael and others). - -2004-12 Hans Boehm - * 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 - 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 - Start to add atomic_ops primitives for different sized data. - -2003-12-18 Hans Boehm - * 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 - * 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 - - * 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 - - * 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. diff --git a/src/racket/gc/libatomic_ops/INSTALL b/src/racket/gc/libatomic_ops/INSTALL deleted file mode 100644 index ab8c872bab..0000000000 --- a/src/racket/gc/libatomic_ops/INSTALL +++ /dev/null @@ -1,14 +0,0 @@ -The configuration and build scripts for this package were generated by -automake/autoconf. "configure --prefix=; 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. diff --git a/src/racket/gc/libatomic_ops/Makefile.am b/src/racket/gc/libatomic_ops/Makefile.am deleted file mode 100644 index da64dc2bae..0000000000 --- a/src/racket/gc/libatomic_ops/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ -SUBDIRS = src doc tests - -#distclean-local: diff --git a/src/racket/gc/libatomic_ops/Makefile.in b/src/racket/gc/libatomic_ops/Makefile.in deleted file mode 100644 index 8dd8b64ac0..0000000000 --- a/src/racket/gc/libatomic_ops/Makefile.in +++ /dev/null @@ -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: diff --git a/src/racket/gc/libatomic_ops/NEWS b/src/racket/gc/libatomic_ops/NEWS deleted file mode 100644 index 8b13789179..0000000000 --- a/src/racket/gc/libatomic_ops/NEWS +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/racket/gc/libatomic_ops/README b/src/racket/gc/libatomic_ops/README deleted file mode 100644 index 81aa8b7cb4..0000000000 --- a/src/racket/gc/libatomic_ops/README +++ /dev/null @@ -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. diff --git a/src/racket/gc/libatomic_ops/aclocal.m4 b/src/racket/gc/libatomic_ops/aclocal.m4 deleted file mode 100644 index 2cfa0ef422..0000000000 --- a/src/racket/gc/libatomic_ops/aclocal.m4 +++ /dev/null @@ -1,1076 +0,0 @@ -# generated automatically by aclocal 1.9.3 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 -# Free Software Foundation, Inc. -# This file 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. - -# -*- Autoconf -*- -# Copyright (C) 2002, 2003 Free Software Foundation, Inc. -# Generated from amversion.in; do not edit by hand. - -# 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., 59 Temple Place - Suite 330, Boston, MA - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION so it can be traced. -# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], - [AM_AUTOMAKE_VERSION([1.9.3])]) - -# Figure out how to run the assembler. -*- Autoconf -*- - -# serial 3 - -# Copyright (C) 2001, 2003, 2004 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# AM_PROG_AS -# ---------- -AC_DEFUN([AM_PROG_AS], -[# By default we simply use the C compiler to build assembly code. -AC_REQUIRE([AC_PROG_CC]) -test "${CCAS+set}" = set || CCAS=$CC -test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS -AC_ARG_VAR([CCAS], [assembler compiler command (defaults to CC)]) -AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)]) -]) - -# AM_AUX_DIR_EXPAND - -# Copyright (C) 2001, 2003 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997, 2000, 2001, 2003, 2004 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 6 - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE]) -AC_SUBST([$1_FALSE]) -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - -# serial 7 -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 -# 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - - -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - case $depmode in - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - none) break ;; - esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. - if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH]) -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 -# 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -#serial 2 - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # So let's grep whole file. - if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done -done -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 2000, 2001, 2003 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 7 - -# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. -AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) - -# Do all the work for Automake. -*- Autoconf -*- - -# This macro actually does too much some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 -# 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 11 - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.58])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -# test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && - test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) -AM_PROG_INSTALL_SH -AM_PROG_INSTALL_STRIP -AC_REQUIRE([AM_PROG_MKDIR_P])dnl -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -]) -]) - - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $1 | $1:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. - -# Copyright (C) 2001, 2003 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -install_sh=${install_sh-"$am_aux_dir/install-sh"} -AC_SUBST(install_sh)]) - -# -*- Autoconf -*- -# Copyright (C) 2003 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 1 - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 2 - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo done -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# -*- Autoconf -*- - - -# Copyright (C) 1997, 1999, 2000, 2001, 2003 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 3 - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) -fi -]) - -# AM_PROG_MKDIR_P -# --------------- -# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. - -# Copyright (C) 2003, 2004 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories -# created by `make install' are always world readable, even if the -# installer happens to have an overly restrictive umask (e.g. 077). -# This was a mistake. There are at least two reasons why we must not -# use `-m 0755': -# - it causes special bits like SGID to be ignored, -# - it may be too restrictive (some setups expect 775 directories). -# -# Do not use -m 0755 and let people choose whatever they expect by -# setting umask. -# -# We cannot accept any implementation of `mkdir' that recognizes `-p'. -# Some implementations (such as Solaris 8's) are not thread-safe: if a -# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' -# concurrently, both version can detect that a/ is missing, but only -# one can create it and the other will error out. Consequently we -# restrict ourselves to GNU make (using the --version option ensures -# this.) -AC_DEFUN([AM_PROG_MKDIR_P], -[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then - # We used to keeping the `.' as first argument, in order to - # allow $(mkdir_p) to be used without argument. As in - # $(mkdir_p) $(somedir) - # where $(somedir) is conditionally defined. However this is wrong - # for two reasons: - # 1. if the package is installed by a user who cannot write `.' - # make install will fail, - # 2. the above comment should most certainly read - # $(mkdir_p) $(DESTDIR)$(somedir) - # so it does not work when $(somedir) is undefined and - # $(DESTDIR) is not. - # To support the latter case, we have to write - # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), - # so the `.' trick is pointless. - mkdir_p='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. - for d in ./-p ./--version; - do - test -d $d && rmdir $d - done - # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. - if test -f "$ac_aux_dir/mkinstalldirs"; then - mkdir_p='$(mkinstalldirs)' - else - mkdir_p='$(install_sh) -d' - fi -fi -AC_SUBST([mkdir_p])]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 2 - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# ------------------------------ -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) - -# _AM_SET_OPTIONS(OPTIONS) -# ---------------------------------- -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# -# Check to make sure that the build environment is sane. -# - -# Copyright (C) 1996, 1997, 2000, 2001, 2003 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 3 - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT(yes)]) - -# AM_PROG_INSTALL_STRIP - -# Copyright (C) 2001, 2003 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# One issue with vendor `install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 1 - - -# _AM_PROG_TAR(FORMAT) -# -------------------- -# Check how to create a tarball in format FORMAT. -# FORMAT should be one of `v7', `ustar', or `pax'. -# -# Substitute a variable $(am__tar) that is a command -# writing to stdout a FORMAT-tarball containing the directory -# $tardir. -# tardir=directory && $(am__tar) > result.tar -# -# Substitute a variable $(am__untar) that extract such -# a tarball read from stdin. -# $(am__untar) < result.tar -AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. -AM_MISSING_PROG([AMTAR], [tar]) -m4_if([$1], [v7], - [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], - [m4_case([$1], [ustar],, [pax],, - [m4_fatal([Unknown tar format])]) -AC_MSG_CHECKING([how to create a $1 tar archive]) -# Loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -_am_tools=${am_cv_prog_tar_$1-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of `-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi -done -rm -rf conftest.dir - -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -AC_MSG_RESULT([$am_cv_prog_tar_$1])]) -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) # _AM_PROG_TAR - diff --git a/src/racket/gc/libatomic_ops/compile b/src/racket/gc/libatomic_ops/compile deleted file mode 100755 index 1b1d232169..0000000000 --- a/src/racket/gc/libatomic_ops/compile +++ /dev/null @@ -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 . -# -# 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 or send patches to -# . - -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 . -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: diff --git a/src/racket/gc/libatomic_ops/config.guess b/src/racket/gc/libatomic_ops/config.guess deleted file mode 100755 index 7924ac077d..0000000000 --- a/src/racket/gc/libatomic_ops/config.guess +++ /dev/null @@ -1,1500 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, -# Inc. - -timestamp='2006-06-06' - -# This file 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., 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 Per Bothner . -# Please send patches to . Submit a context -# diff and a properly formatted ChangeLog entry. -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# The plan is that this can be called by configure scripts if you -# don't specify an explicit build system type. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -trap 'exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# Portable tmp directory creation inspired by the Autoconf team. - -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep __ELF__ >/dev/null - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - # Debian GNU/NetBSD machines have a different userland, and - # thus, need a distinct triplet. However, they do not need - # kernel version information, so it can be replaced with a - # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in - Debian*) - release='-gnu' - ;; - *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - ;; - esac - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit ;; - *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} - exit ;; - *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit ;; - *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} - exit ;; - macppc:MirBSD:*:*) - echo powerppc-unknown-mirbsd${UNAME_RELEASE} - exit ;; - *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit ;; - alpha:OSF1:*:*) - case $UNAME_RELEASE in - *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - ;; - *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` - ;; - esac - # According to Compaq, /usr/sbin/psrinfo has been available on - # OSF/1 and Tru64 systems produced since 1995. I hope that - # covers most systems running today. This code pipes the CPU - # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in - "EV4 (21064)") - UNAME_MACHINE="alpha" ;; - "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; - "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; - "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; - "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; - "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; - "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; - "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; - "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; - "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; - "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; - "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; - "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; - esac - # A Pn.n version is a patched version. - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; - *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; - *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit ;; - arm:riscos:*:*|arm:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; - DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; - DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - i86pc:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; - m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} - exit ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && - { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} - exit ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` - then - echo "$SYSTEM_NAME" - else - echo rs6000-ibm-aix3.2.5 - fi - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit ;; - *:AIX:*:[45]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if [ ${HP_ARCH} = "hppa2.0w" ] - then - eval $set_cc_for_build - - # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating - # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler - # generating 64-bit code. GNU and HP use different nomenclature: - # - # $ CC_FOR_BUILD=cc ./config.guess - # => hppa2.0w-hp-hpux11.23 - # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess - # => hppa64-hp-hpux11.23 - - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep __LP64__ >/dev/null - then - HP_ARCH="hppa2.0w" - else - HP_ARCH="hppa64" - fi - fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:FreeBSD:*:*) - case ${UNAME_MACHINE} in - pc98) - echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - esac - exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; - i*:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; - x86:Interix*:[345]*) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; - EM64T:Interix*:[345]*) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit ;; - amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - *:GNU:*:*) - # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; - arm*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - cris:Linux:*:*) - echo cris-axis-linux-gnu - exit ;; - crisv32:Linux:*:*) - echo crisv32-axis-linux-gnu - exit ;; - frv:Linux:*:*) - echo frv-unknown-linux-gnu - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - mips:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips - #undef mipsel - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mipsel - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips - #else - CPU= - #endif - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^CPU/{ - s: ::g - p - }'`" - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips64 - #undef mips64el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mips64el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips64 - #else - CPU= - #endif - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^CPU/{ - s: ::g - p - }'`" - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - or32:Linux:*:*) - echo or32-unknown-linux-gnu - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu - exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - exit ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; - esac - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux - exit ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-gnu - exit ;; - x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu - exit ;; - i*86:Linux:*:*) - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. cd to the root directory to prevent - # problems with other programs or directories called `ld' in the path. - # Set LC_ALL=C to ensure ld outputs messages in English. - ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ - | sed -ne '/supported targets:/!d - s/[ ][ ]*/ /g - s/.*supported targets: *// - s/ .*// - p'` - case "$ld_supported_targets" in - elf32-i386) - TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" - ;; - a.out-i386-linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit ;; - coff-i386) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit ;; - "") - # Either a pre-BFD a.out linker (linux-gnuoldld) or - # one that does not give us useful --help. - echo "${UNAME_MACHINE}-pc-linux-gnuoldld" - exit ;; - esac - # Determine whether the default compiler is a.out or elf - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - #ifdef __ELF__ - # ifdef __GLIBC__ - # if __GLIBC__ >= 2 - LIBC=gnu - # else - LIBC=gnulibc1 - # endif - # else - LIBC=gnulibc1 - # endif - #else - #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) - LIBC=gnu - #else - LIBC=gnuaout - #endif - #endif - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^LIBC/{ - s: ::g - p - }'`" - test x"${LIBC}" != x && { - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" - exit - } - test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } - ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit ;; - i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable - exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit ;; - i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` - (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i386. - echo i386-pc-msdosdjgpp - exit ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; - M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; - M68*:*:R3V[5678]*:*) - test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; - 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; - i*86:VOS:*:*) - # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos - exit ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - case $UNAME_PROCESSOR in - unknown) UNAME_PROCESSOR=powerpc ;; - esac - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit ;; - NSE-?:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit ;; - SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} - exit ;; - *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; - *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; - esac ;; - *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; - i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' - exit ;; - i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos - exit ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -eval $set_cc_for_build -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - c34*) - echo c34-convex-bsd - exit ;; - c38*) - echo c38-convex-bsd - exit ;; - c4*) - echo c4-convex-bsd - exit ;; - esac -fi - -cat >&2 < in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/src/racket/gc/libatomic_ops/config.sub b/src/racket/gc/libatomic_ops/config.sub deleted file mode 100755 index 70584b007e..0000000000 --- a/src/racket/gc/libatomic_ops/config.sub +++ /dev/null @@ -1,1608 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, -# Inc. - -timestamp='2006-06-06' - -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file 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., 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. - - -# Please send patches to . Submit a context -# diff and a properly formatted ChangeLog entry. -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.sub ($timestamp) - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit ;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ - uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray) - os= - basic_machine=$1 - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5v6*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ - | bfin \ - | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | mcore \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64vr | mips64vrel \ - | mips64orion | mips64orionel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | mt \ - | msp430 \ - | nios | nios2 \ - | ns16k | ns32k \ - | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ - | pyramid \ - | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu | strongarm \ - | tahoe | thumb | tic4x | tic80 | tron \ - | v850 | v850e \ - | we32k \ - | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ - | z8k) - basic_machine=$basic_machine-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12) - # Motorola 68HC11/12. - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - ms1) - basic_machine=mt-unknown - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ - | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nios-* | nios2-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ - | pyramid-* \ - | romp-* | rs6000-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ - | tahoe-* | thumb-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tron-* \ - | v850-* | v850e-* | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \ - | xstormy16-* | xtensa-* \ - | ymp-* \ - | z8k-*) - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16c) - basic_machine=cr16c-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - mingw32) - basic_machine=i386-pc - os=-mingw32 - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc) basic_machine=powerpc-unknown - ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rdos) - basic_machine=i386-pc - os=-rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - tic54x | c54x*) - basic_machine=tic54x-unknown - os=-coff - ;; - tic55x | c55x*) - basic_machine=tic55x-unknown - os=-coff - ;; - tic6x | c6x*) - basic_machine=tic6x-unknown - os=-coff - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - mmix) - basic_machine=mmix-knuth - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -openbsd* | -solidbsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto-qnx*) - ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux-dietlibc) - os=-linux-dietlibc - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -os400*) - os=-os400 - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -syllable*) - os=-syllable - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -tpf*) - os=-tpf - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -kaos*) - os=-kaos - ;; - -zvmoe) - os=-zvmoe - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - spu-*) - os=-elf - ;; - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - c4x-* | tic4x-*) - os=-coff - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 - ;; - m68*-cisco) - os=-aout - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-haiku) - os=-haiku - ;; - *-ibm) - os=-aix - ;; - *-knuth) - os=-mmixware - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -os400*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -tpf*) - vendor=ibm - ;; - -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/src/racket/gc/libatomic_ops/configure b/src/racket/gc/libatomic_ops/configure deleted file mode 100755 index 85aa52b437..0000000000 --- a/src/racket/gc/libatomic_ops/configure +++ /dev/null @@ -1,5899 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.64 for libatomic_ops 1.2. -# -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software -# Foundation, Inc. -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - # We cannot yet assume a decent shell, so we have to provide a - # neutralization value for shells without unset; and this also - # works around shells that cannot unset nonexistent variables. - BASH_ENV=/dev/null - ENV=/dev/null - (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, -$0: including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error ERROR [LINENO LOG_FD] -# --------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with status $?, using 1 if that was 0. -as_fn_error () -{ - as_status=$?; test $as_status -eq 0 && as_status=1 - if test "$3"; then - as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 - fi - $as_echo "$as_me: error: $1" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='libatomic_ops' -PACKAGE_TARNAME='libatomic_ops' -PACKAGE_VERSION='1.2' -PACKAGE_STRING='libatomic_ops 1.2' -PACKAGE_BUGREPORT='' -PACKAGE_URL='' - -ac_unique_file="src/atomic_ops.c" -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='LTLIBOBJS -LIBOBJS -NEED_ASM_FALSE -NEED_ASM_TRUE -PICFLAG -EGREP -GREP -CPP -CCASFLAGS -CCAS -am__fastdepCC_FALSE -am__fastdepCC_TRUE -CCDEPMODE -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__quote -am__include -DEPDIR -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -RANLIB -am__untar -am__tar -AMTAR -am__leading_dot -SET_MAKE -AWK -mkdir_p -INSTALL_STRIP_PROGRAM -STRIP -install_sh -MAKEINFO -AUTOHEADER -AUTOMAKE -AUTOCONF -ACLOCAL -VERSION -PACKAGE -CYGPATH_W -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -target_os -target_vendor -target_cpu -target -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_dependency_tracking -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CCAS -CCASFLAGS -CPP' - -# PLTSCHEME: hack to supress a warning: -enable_option_checking=no - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information." - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures libatomic_ops 1.2 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/libatomic_ops] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] - --target=TARGET configure for building compilers for TARGET [HOST] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of libatomic_ops 1.2:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CCAS assembler compiler command (defaults to CC) - CCASFLAGS assembler compiler flags (defaults to CFLAGS) - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to the package provider. -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -libatomic_ops configure 1.2 -generated by GNU Autoconf 2.64 - -Copyright (C) 2009 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - return $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - return $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - -} # ac_fn_c_check_header_mongrel - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - return $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - -} # ac_fn_c_check_header_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - return $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - -} # ac_fn_c_check_func -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by libatomic_ops $as_me 1.2, which was -generated by GNU Autoconf 2.64. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - cat <<\_ASBOX -## ---------------- ## -## Cache variables. ## -## ---------------- ## -_ASBOX - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - cat <<\_ASBOX -## ----------------- ## -## Output variables. ## -## ----------------- ## -_ASBOX - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - cat <<\_ASBOX -## ------------------- ## -## File substitutions. ## -## ------------------- ## -_ASBOX - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## -## confdefs.h. ## -## ----------- ## -_ASBOX - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - ac_site_file1=$CONFIG_SITE -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - for ac_t in install-sh install.sh shtool; do - if test -f "$ac_dir/$ac_t"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/$ac_t -c" - break 2 - fi - done -done -if test -z "$ac_aux_dir"; then - as_fn_error "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -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. - - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if test "${ac_cv_build+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if test "${ac_cv_host+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 -$as_echo_n "checking target system type... " >&6; } -if test "${ac_cv_target+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test "x$target_alias" = x; then - ac_cv_target=$ac_cv_host -else - ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || - as_fn_error "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 -$as_echo "$ac_cv_target" >&6; } -case $ac_cv_target in -*-*-*) ;; -*) as_fn_error "invalid value of canonical target" "$LINENO" 5;; -esac -target=$ac_cv_target -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_target -shift -target_cpu=$1 -target_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -target_os=$* -IFS=$ac_save_IFS -case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac - - -# The aliases save the names the user supplied, while $host etc. -# will get canonicalized. -test -n "$target_alias" && - test "$program_prefix$program_suffix$program_transform_name" = \ - NONENONEs,x,x, && - program_prefix=${target_alias}- - -am__api_version="1.9" -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } -# Just in case -sleep 1 -echo timestamp > conftest.file -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error "ls -t appears to fail. Make sure there is not a broken -alias in your environment" "$LINENO" 5 - fi - - test "$2" = conftest.file - ) -then - # Ok. - : -else - as_fn_error "newly created file is older than distributed files! -Check your system clock" "$LINENO" 5 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -fi - -if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then - # We used to keeping the `.' as first argument, in order to - # allow $(mkdir_p) to be used without argument. As in - # $(mkdir_p) $(somedir) - # where $(somedir) is conditionally defined. However this is wrong - # for two reasons: - # 1. if the package is installed by a user who cannot write `.' - # make install will fail, - # 2. the above comment should most certainly read - # $(mkdir_p) $(DESTDIR)$(somedir) - # so it does not work when $(somedir) is undefined and - # $(DESTDIR) is not. - # To support the latter case, we have to write - # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), - # so the `.' trick is pointless. - mkdir_p='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. - for d in ./-p ./--version; - do - test -d $d && rmdir $d - done - # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. - if test -f "$ac_aux_dir/mkinstalldirs"; then - mkdir_p='$(mkinstalldirs)' - else - mkdir_p='$(install_sh) -d' - fi -fi - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_AWK+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -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_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -# test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && - test -f $srcdir/config.status; then - as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - PACKAGE='libatomic_ops' - VERSION='1.2' - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -install_sh=${install_sh-"$am_aux_dir/install-sh"} - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_STRIP+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -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_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -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_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -# Always define AMTAR for backward compatibility. - -AMTAR=${AMTAR-"${am_missing_run}tar"} - -am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_RANLIB+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -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_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -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_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - - -ac_config_headers="$ac_config_headers src/config.h" - - -# Checks for programs. -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_CC+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -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_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -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_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_CC+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -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_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_CC+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -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 - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_CC+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -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_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -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_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error "no acceptable C compiler found in \$PATH -See \`config.log' for more details." "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - rm -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out conftest.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -if test -z "$ac_file"; then : - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ as_fn_set_status 77 -as_fn_error "C compiler cannot create executables -See \`config.log' for more details." "$LINENO" 5; }; } -fi -ac_exeext=$ac_cv_exeext - -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out conftest.out -ac_clean_files=$ac_clean_files_save -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." "$LINENO" 5; } -fi -rm -f conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if test "${ac_cv_objext+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error "cannot compute suffix of object files: cannot compile -See \`config.log' for more details." "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if test "${ac_cv_c_compiler_gnu+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if test "${ac_cv_prog_cc_g+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if test "${ac_cv_prog_cc_c89+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo done -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - -# Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi - - -if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - - - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - case $depmode in - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - none) break ;; - esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. - if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - - -if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - -# By default we simply use the C compiler to build assembly code. - -test "${CCAS+set}" = set || CCAS=$CC -test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS - - - - -# Checks for functions. - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if test "${ac_cv_path_GREP+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if test "${ac_cv_path_EGREP+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if test "${ac_cv_header_stdc+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -eval as_val=\$$as_ac_Header - if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_header in stdlib.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -eval as_val=\$$as_ac_Header - if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -for ac_func in getpagesize -do : - ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" -if test "x$ac_cv_func_getpagesize" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETPAGESIZE 1 -_ACEOF - -fi -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 -$as_echo_n "checking for working mmap... " >&6; } -if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_mmap_fixed_mapped=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -/* malloc might have been renamed as rpl_malloc. */ -#undef malloc - -/* Thanks to Mike Haertel and Jim Avera for this test. - Here is a matrix of mmap possibilities: - mmap private not fixed - mmap private fixed at somewhere currently unmapped - mmap private fixed at somewhere already mapped - mmap shared not fixed - mmap shared fixed at somewhere currently unmapped - mmap shared fixed at somewhere already mapped - For private mappings, we should verify that changes cannot be read() - back from the file, nor mmap's back from the file at a different - address. (There have been systems where private was not correctly - implemented like the infamous i386 svr4.0, and systems where the - VM page cache was not coherent with the file system buffer cache - like early versions of FreeBSD and possibly contemporary NetBSD.) - For shared mappings, we should conversely verify that changes get - propagated back to all the places they're supposed to be. - - Grep wants private fixed already mapped. - The main things grep needs to know about mmap are: - * does it exist and is it safe to write into the mmap'd area - * how to use it (BSD variants) */ - -#include -#include - -#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H -char *malloc (); -#endif - -/* This mess was copied from the GNU getpagesize.h. */ -#ifndef HAVE_GETPAGESIZE -/* Assume that all systems that can run configure have sys/param.h. */ -# ifndef HAVE_SYS_PARAM_H -# define HAVE_SYS_PARAM_H 1 -# endif - -# ifdef _SC_PAGESIZE -# define getpagesize() sysconf(_SC_PAGESIZE) -# else /* no _SC_PAGESIZE */ -# ifdef HAVE_SYS_PARAM_H -# include -# ifdef EXEC_PAGESIZE -# define getpagesize() EXEC_PAGESIZE -# else /* no EXEC_PAGESIZE */ -# ifdef NBPG -# define getpagesize() NBPG * CLSIZE -# ifndef CLSIZE -# define CLSIZE 1 -# endif /* no CLSIZE */ -# else /* no NBPG */ -# ifdef NBPC -# define getpagesize() NBPC -# else /* no NBPC */ -# ifdef PAGESIZE -# define getpagesize() PAGESIZE -# endif /* PAGESIZE */ -# endif /* no NBPC */ -# endif /* no NBPG */ -# endif /* no EXEC_PAGESIZE */ -# else /* no HAVE_SYS_PARAM_H */ -# define getpagesize() 8192 /* punt totally */ -# endif /* no HAVE_SYS_PARAM_H */ -# endif /* no _SC_PAGESIZE */ - -#endif /* no HAVE_GETPAGESIZE */ - -int -main () -{ - char *data, *data2, *data3; - int i, pagesize; - int fd; - - pagesize = getpagesize (); - - /* First, make a file with some known garbage in it. */ - data = (char *) malloc (pagesize); - if (!data) - return 1; - for (i = 0; i < pagesize; ++i) - *(data + i) = rand (); - umask (0); - fd = creat ("conftest.mmap", 0600); - if (fd < 0) - return 1; - if (write (fd, data, pagesize) != pagesize) - return 1; - close (fd); - - /* Next, try to mmap the file at a fixed address which already has - something else allocated at it. If we can, also make sure that - we see the same garbage. */ - fd = open ("conftest.mmap", O_RDWR); - if (fd < 0) - return 1; - data2 = (char *) malloc (2 * pagesize); - if (!data2) - return 1; - data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1); - if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_FIXED, fd, 0L)) - return 1; - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data2 + i)) - return 1; - - /* Finally, make sure that changes to the mapped area do not - percolate back to the file as seen by read(). (This is a bug on - some variants of i386 svr4.0.) */ - for (i = 0; i < pagesize; ++i) - *(data2 + i) = *(data2 + i) + 1; - data3 = (char *) malloc (pagesize); - if (!data3) - return 1; - if (read (fd, data3, pagesize) != pagesize) - return 1; - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data3 + i)) - return 1; - close (fd); - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_func_mmap_fixed_mapped=yes -else - ac_cv_func_mmap_fixed_mapped=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 -$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } -if test $ac_cv_func_mmap_fixed_mapped = yes; then - -$as_echo "#define HAVE_MMAP 1" >>confdefs.h - -fi -rm -f conftest.mmap - - -# Checks for header files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if test "${ac_cv_header_stdc+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# AC_CHECK_HEADERS([ ]) - -# Determine PIC flag, adjust default CFLAGS -need_asm=false -PICFLAG= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Determining PIC compiler flag" >&5 -$as_echo_n "checking Determining PIC compiler flag... " >&6; } -if test "$GCC" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: -fPIC" >&5 -$as_echo "-fPIC" >&6; } - PICFLAG=-fPIC -else - case "$host" in - *-*-hpux*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"+Z\"" >&5 -$as_echo "\"+Z\"" >&6; } - PICFLAG="+Z" - if test "$GCC" != yes; then - CFLAGS="$CFLAGS +O2 -mt" - fi - ;; - *-*-solaris*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: -Kpic" >&5 -$as_echo "-Kpic" >&6; } - PICFLAG=-Kpic - if test "$GCC" != yes; then - CFLAGS="$CFLAGS -O" - need_asm=true - fi - ;; - *-*-linux*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: -fPIC" >&5 -$as_echo "-fPIC" >&6; } - PICFLAG=-fPIC - # Any Linux compiler had better be gcc compatible. - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"\"" >&5 -$as_echo "\"\"" >&6; } - ;; - esac -fi -CFLAGS="$CFLAGS -DNDEBUG" - - - - - - -if test x$need_asm = xtrue; then - NEED_ASM_TRUE= - NEED_ASM_FALSE='#' -else - NEED_ASM_TRUE='#' - NEED_ASM_FALSE= -fi - - -ac_config_files="$ac_config_files Makefile src/Makefile src/atomic_ops/Makefile src/atomic_ops/sysdeps/Makefile doc/Makefile tests/Makefile" - -ac_config_commands="$ac_config_commands default" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - test "x$cache_file" != "x/dev/null" && - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - cat confcache >$cache_file - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${NEED_ASM_TRUE}" && test -z "${NEED_ASM_FALSE}"; then - as_fn_error "conditional \"NEED_ASM\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: ${CONFIG_STATUS=./config.status} -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error ERROR [LINENO LOG_FD] -# --------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with status $?, using 1 if that was 0. -as_fn_error () -{ - as_status=$?; test $as_status -eq 0 && as_status=1 - if test "$3"; then - as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 - fi - $as_echo "$as_me: error: $1" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by libatomic_ops $as_me 1.2, which was -generated by GNU Autoconf 2.64. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to the package provider." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_version="\\ -libatomic_ops config.status 1.2 -configured by $0, generated by GNU Autoconf 2.64, - with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" - -Copyright (C) 2009 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" -PICFLAG=${PICFLAG} -CC=${CC} -DEFS=${DEFS} - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; - "src/atomic_ops/Makefile") CONFIG_FILES="$CONFIG_FILES src/atomic_ops/Makefile" ;; - "src/atomic_ops/sysdeps/Makefile") CONFIG_FILES="$CONFIG_FILES src/atomic_ops/sysdeps/Makefile" ;; - "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; - "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; - "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; - - *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= - trap 'exit_status=$? - { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5 - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\).*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\).*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ - || as_fn_error "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/ -s/:*\${srcdir}:*/:/ -s/:*@srcdir@:*/:/ -s/^\([^=]*=[ ]*\):*/\1/ -s/:*$// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script `defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_t=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_t"; then - break - elif $ac_last_try; then - as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' >$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$tmp/stdin" \ - || as_fn_error "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ - || as_fn_error "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&2;} - - rm -f "$tmp/stdin" - case $ac_file in - -) cat "$tmp/out" && rm -f "$tmp/out";; - *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; - esac \ - || as_fn_error "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" - } >"$tmp/config.h" \ - || as_fn_error "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$tmp/config.h" "$ac_file" \ - || as_fn_error "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error "could not create -" "$LINENO" 5 - fi -# Compute "$ac_file"'s index in $config_headers. -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - "$ac_file" | "$ac_file":* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for "$ac_file"" >`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'`/stamp-h$_am_stamp_count - ;; - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # So let's grep whole file. - if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done -done - ;; - "default":C) ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit $? -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - diff --git a/src/racket/gc/libatomic_ops/configure.ac b/src/racket/gc/libatomic_ops/configure.ac deleted file mode 100644 index 3d0efe7638..0000000000 --- a/src/racket/gc/libatomic_ops/configure.ac +++ /dev/null @@ -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("") - ;; - 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 diff --git a/src/racket/gc/libatomic_ops/depcomp b/src/racket/gc/libatomic_ops/depcomp deleted file mode 100755 index 04701da536..0000000000 --- a/src/racket/gc/libatomic_ops/depcomp +++ /dev/null @@ -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 . - -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 . -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: diff --git a/src/racket/gc/libatomic_ops/doc/COPYING b/src/racket/gc/libatomic_ops/doc/COPYING deleted file mode 100644 index d60c31a97a..0000000000 --- a/src/racket/gc/libatomic_ops/doc/COPYING +++ /dev/null @@ -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. - - - Copyright (C) - - 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. - - , 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. diff --git a/src/racket/gc/libatomic_ops/doc/LICENSING.txt b/src/racket/gc/libatomic_ops/doc/LICENSING.txt deleted file mode 100644 index 1ae0e93326..0000000000 --- a/src/racket/gc/libatomic_ops/doc/LICENSING.txt +++ /dev/null @@ -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. - diff --git a/src/racket/gc/libatomic_ops/doc/Makefile.am b/src/racket/gc/libatomic_ops/doc/Makefile.am deleted file mode 100644 index ce212d08ae..0000000000 --- a/src/racket/gc/libatomic_ops/doc/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ -# installed documentation -# -dist_pkgdata_DATA=COPYING LICENSING.txt README.txt COPYING README_stack.txt README_malloc.txt README_win32.txt diff --git a/src/racket/gc/libatomic_ops/doc/Makefile.in b/src/racket/gc/libatomic_ops/doc/Makefile.in deleted file mode 100644 index 25698cf39b..0000000000 --- a/src/racket/gc/libatomic_ops/doc/Makefile.in +++ /dev/null @@ -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: diff --git a/src/racket/gc/libatomic_ops/doc/README.txt b/src/racket/gc/libatomic_ops/doc/README.txt deleted file mode 100644 index e7c2f0d1c5..0000000000 --- a/src/racket/gc/libatomic_ops/doc/README.txt +++ /dev/null @@ -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=; 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_[_](). - -The 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: - -: 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_ is available on the -current platform by checking whether AO_HAVE__ 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. diff --git a/src/racket/gc/libatomic_ops/doc/README_malloc.txt b/src/racket/gc/libatomic_ops/doc/README_malloc.txt deleted file mode 100644 index 680b3e2422..0000000000 --- a/src/racket/gc/libatomic_ops/doc/README_malloc.txt +++ /dev/null @@ -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 /* includes atomic_ops.h */ - -void *AO_malloc(size_t sz); -void AO_free(void *p); -void AO_malloc_enable_mmap(void); diff --git a/src/racket/gc/libatomic_ops/doc/README_stack.txt b/src/racket/gc/libatomic_ops/doc/README_stack.txt deleted file mode 100644 index 98ff87ccb6..0000000000 --- a/src/racket/gc/libatomic_ops/doc/README_stack.txt +++ /dev/null @@ -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. diff --git a/src/racket/gc/libatomic_ops/doc/README_win32.txt b/src/racket/gc/libatomic_ops/doc/README_win32.txt deleted file mode 100644 index 0fe6f88c1b..0000000000 --- a/src/racket/gc/libatomic_ops/doc/README_win32.txt +++ /dev/null @@ -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. diff --git a/src/racket/gc/libatomic_ops/install-sh b/src/racket/gc/libatomic_ops/install-sh deleted file mode 100755 index 4d4a9519ea..0000000000 --- a/src/racket/gc/libatomic_ops/install-sh +++ /dev/null @@ -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: diff --git a/src/racket/gc/libatomic_ops/missing b/src/racket/gc/libatomic_ops/missing deleted file mode 100755 index 894e786e16..0000000000 --- a/src/racket/gc/libatomic_ops/missing +++ /dev/null @@ -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 , 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 ." - 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: diff --git a/src/racket/gc/libatomic_ops/mkinstalldirs b/src/racket/gc/libatomic_ops/mkinstalldirs deleted file mode 100755 index 259dbfcd35..0000000000 --- a/src/racket/gc/libatomic_ops/mkinstalldirs +++ /dev/null @@ -1,158 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy - -scriptversion=2005-06-29.22 - -# Original author: Noah Friedman -# Created: 1993-05-16 -# Public domain. -# -# This file is maintained in Automake, please report -# bugs to or send patches to -# . - -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 ." - -# 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: diff --git a/src/racket/gc/libatomic_ops/src/Makefile.am b/src/racket/gc/libatomic_ops/src/Makefile.am deleted file mode 100644 index 7ca41ff116..0000000000 --- a/src/racket/gc/libatomic_ops/src/Makefile.am +++ /dev/null @@ -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 - diff --git a/src/racket/gc/libatomic_ops/src/Makefile.in b/src/racket/gc/libatomic_ops/src/Makefile.in deleted file mode 100644 index 7fb27de571..0000000000 --- a/src/racket/gc/libatomic_ops/src/Makefile.in +++ /dev/null @@ -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: diff --git a/src/racket/gc/libatomic_ops/src/Makefile.msft b/src/racket/gc/libatomic_ops/src/Makefile.msft deleted file mode 100644 index 5b93d27d72..0000000000 --- a/src/racket/gc/libatomic_ops/src/Makefile.msft +++ /dev/null @@ -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 - -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 - - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops.c b/src/racket/gc/libatomic_ops/src/atomic_ops.c deleted file mode 100644 index f01b8d2e02..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops.c +++ /dev/null @@ -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 -#include -#ifdef _HPUX_SOURCE -# include -#else -# include -#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 diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops.h b/src/racket/gc/libatomic_ops/src/atomic_ops.h deleted file mode 100644 index e1b40ca883..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops.h +++ /dev/null @@ -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 -#include - -/* 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__, for all */ -/* plausible combinations of and . */ -/* 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 -# 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 */ diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/Makefile.am b/src/racket/gc/libatomic_ops/src/atomic_ops/Makefile.am deleted file mode 100644 index 8000273f28..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/Makefile.am +++ /dev/null @@ -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 $? >> $@ diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/Makefile.in b/src/racket/gc/libatomic_ops/src/atomic_ops/Makefile.in deleted file mode 100644 index 8e5fb911d1..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/Makefile.in +++ /dev/null @@ -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: diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/generalize-small.h b/src/racket/gc/libatomic_ops/src/atomic_ops/generalize-small.h deleted file mode 100644 index 4e45a0de9b..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/generalize-small.h +++ /dev/null @@ -1,1725 +0,0 @@ -/* char_load */ -#if defined(AO_HAVE_char_load_acquire) && !defined(AO_HAVE_char_load) -# define AO_char_load(addr) AO_char_load_acquire(addr) -# define AO_HAVE_char_load -#endif - -#if defined(AO_HAVE_char_load_full) && !defined(AO_HAVE_char_load_acquire) -# define AO_char_load_acquire(addr) AO_char_load_full(addr) -# define AO_HAVE_char_load_acquire -#endif - -#if defined(AO_HAVE_char_load_full) && !defined(AO_HAVE_char_load_read) -# define AO_char_load_read(addr) AO_char_load_full(addr) -# define AO_HAVE_char_load_read -#endif - -#if !defined(AO_HAVE_char_load_acquire_read) && defined(AO_HAVE_char_load_acquire) -# define AO_char_load_acquire_read(addr) AO_char_load_acquire(addr) -# define AO_HAVE_char_load_acquire_read -#endif - -#if defined(AO_HAVE_char_load) && defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_char_load_acquire) - AO_INLINE unsigned char - AO_char_load_acquire(volatile unsigned char *addr) - { - unsigned char result = AO_char_load(addr); - /* Acquire barrier would be useless, since the load could be delayed */ - /* beyond it. */ - AO_nop_full(); - return result; - } -# define AO_HAVE_char_load_acquire -#endif - -#if defined(AO_HAVE_char_load) && defined(AO_HAVE_nop_read) && \ - !defined(AO_HAVE_char_load_read) - AO_INLINE unsigned char - AO_char_load_read(volatile unsigned char *addr) - { - unsigned char result = AO_char_load(addr); - /* Acquire barrier would be useless, since the load could be delayed */ - /* beyond it. */ - AO_nop_read(); - return result; - } -# define AO_HAVE_char_load_read -#endif - -#if defined(AO_HAVE_char_load_acquire) && defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_char_load_full) -# define AO_char_load_full(addr) (AO_nop_full(), AO_char_load_acquire(addr)) -# define AO_HAVE_char_load_full -#endif - -#if !defined(AO_HAVE_char_load_acquire_read) && defined(AO_HAVE_char_load_read) -# define AO_char_load_acquire_read(addr) AO_char_load_read(addr) -# define AO_HAVE_char_load_acquire_read -#endif - -#if defined(AO_HAVE_char_load_acquire_read) && !defined(AO_HAVE_char_load) -# define AO_char_load(addr) AO_char_load_acquire_read(addr) -# define AO_HAVE_char_load -#endif - -#ifdef AO_NO_DD_ORDERING -# if defined(AO_HAVE_char_load_acquire_read) -# define AO_char_load_dd_acquire_read(addr) \ - AO_char_load_acquire_read(addr) -# define AO_HAVE_char_load_dd_acquire_read -# endif -#else -# if defined(AO_HAVE_char_load) -# define AO_char_load_dd_acquire_read(addr) \ - AO_char_load(addr) -# define AO_HAVE_char_load_dd_acquire_read -# endif -#endif - - -/* char_store */ - -#if defined(AO_HAVE_char_store_release) && !defined(AO_HAVE_char_store) -# define AO_char_store(addr, val) AO_char_store_release(addr,val) -# define AO_HAVE_char_store -#endif - -#if defined(AO_HAVE_char_store_full) && !defined(AO_HAVE_char_store_release) -# define AO_char_store_release(addr,val) AO_char_store_full(addr,val) -# define AO_HAVE_char_store_release -#endif - -#if defined(AO_HAVE_char_store_full) && !defined(AO_HAVE_char_store_write) -# define AO_char_store_write(addr,val) AO_char_store_full(addr,val) -# define AO_HAVE_char_store_write -#endif - -#if defined(AO_HAVE_char_store_release) && \ - !defined(AO_HAVE_char_store_release_write) -# define AO_char_store_release_write(addr, val) \ - AO_char_store_release(addr,val) -# define AO_HAVE_char_store_release_write -#endif - -#if defined(AO_HAVE_char_store_write) && !defined(AO_HAVE_char_store) -# define AO_char_store(addr, val) AO_char_store_write(addr,val) -# define AO_HAVE_char_store -#endif - -#if defined(AO_HAVE_char_store) && defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_char_store_release) -# define AO_char_store_release(addr,val) \ - (AO_nop_full(), AO_char_store(addr,val)) -# define AO_HAVE_char_store_release -#endif - -#if defined(AO_HAVE_nop_write) && defined(AO_HAVE_char_store) && \ - !defined(AO_HAVE_char_store_write) -# define AO_char_store_write(addr, val) \ - (AO_nop_write(), AO_char_store(addr,val)) -# define AO_HAVE_char_store_write -#endif - -#if defined(AO_HAVE_char_store_write) && \ - !defined(AO_HAVE_char_store_release_write) -# define AO_char_store_release_write(addr, val) AO_char_store_write(addr,val) -# define AO_HAVE_char_store_release_write -#endif - -#if defined(AO_HAVE_char_store_release) && defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_char_store_full) -# define AO_char_store_full(addr, val) \ - (AO_char_store_release(addr, val), AO_nop_full()) -# define AO_HAVE_char_store_full -#endif - - -/* char_fetch_and_add */ -#if defined(AO_HAVE_char_compare_and_swap_full) && \ - !defined(AO_HAVE_char_fetch_and_add_full) - AO_INLINE AO_t - AO_char_fetch_and_add_full(volatile unsigned char *addr, - unsigned char incr) - { - unsigned char old; - do - { - old = *addr; - } - while (!AO_char_compare_and_swap_full(addr, old, old+incr)); - return old; - } -# define AO_HAVE_char_fetch_and_add_full -#endif - -#if defined(AO_HAVE_char_compare_and_swap_acquire) && \ - !defined(AO_HAVE_char_fetch_and_add_acquire) - AO_INLINE AO_t - AO_char_fetch_and_add_acquire(volatile unsigned char *addr, - unsigned char incr) - { - unsigned char old; - do - { - old = *addr; - } - while (!AO_char_compare_and_swap_acquire(addr, old, old+incr)); - return old; - } -# define AO_HAVE_char_fetch_and_add_acquire -#endif - -#if defined(AO_HAVE_char_compare_and_swap_release) && \ - !defined(AO_HAVE_char_fetch_and_add_release) - AO_INLINE AO_t - AO_char_fetch_and_add_release(volatile unsigned char *addr, - unsigned char incr) - { - unsigned char old; - do - { - old = *addr; - } - while (!AO_char_compare_and_swap_release(addr, old, old+incr)); - return old; - } -# define AO_HAVE_char_fetch_and_add_release -#endif - -#if defined(AO_HAVE_char_fetch_and_add_full) -# if !defined(AO_HAVE_char_fetch_and_add_release) -# define AO_char_fetch_and_add_release(addr, val) \ - AO_char_fetch_and_add_full(addr, val) -# define AO_HAVE_char_fetch_and_add_release -# endif -# if !defined(AO_HAVE_char_fetch_and_add_acquire) -# define AO_char_fetch_and_add_acquire(addr, val) \ - AO_char_fetch_and_add_full(addr, val) -# define AO_HAVE_char_fetch_and_add_acquire -# endif -# if !defined(AO_HAVE_char_fetch_and_add_write) -# define AO_char_fetch_and_add_write(addr, val) \ - AO_char_fetch_and_add_full(addr, val) -# define AO_HAVE_char_fetch_and_add_write -# endif -# if !defined(AO_HAVE_char_fetch_and_add_read) -# define AO_char_fetch_and_add_read(addr, val) \ - AO_char_fetch_and_add_full(addr, val) -# define AO_HAVE_char_fetch_and_add_read -# endif -#endif /* AO_HAVE_char_fetch_and_add_full */ - -#if !defined(AO_HAVE_char_fetch_and_add) && \ - defined(AO_HAVE_char_fetch_and_add_release) -# define AO_char_fetch_and_add(addr, val) \ - AO_char_fetch_and_add_release(addr, val) -# define AO_HAVE_char_fetch_and_add -#endif -#if !defined(AO_HAVE_char_fetch_and_add) && \ - defined(AO_HAVE_char_fetch_and_add_acquire) -# define AO_char_fetch_and_add(addr, val) \ - AO_char_fetch_and_add_acquire(addr, val) -# define AO_HAVE_char_fetch_and_add -#endif -#if !defined(AO_HAVE_char_fetch_and_add) && \ - defined(AO_HAVE_char_fetch_and_add_write) -# define AO_char_fetch_and_add(addr, val) \ - AO_char_fetch_and_add_write(addr, val) -# define AO_HAVE_char_fetch_and_add -#endif -#if !defined(AO_HAVE_char_fetch_and_add) && \ - defined(AO_HAVE_char_fetch_and_add_read) -# define AO_char_fetch_and_add(addr, val) \ - AO_char_fetch_and_add_read(addr, val) -# define AO_HAVE_char_fetch_and_add -#endif - -#if defined(AO_HAVE_char_fetch_and_add_acquire) &&\ - defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_char_fetch_and_add_full) -# define AO_char_fetch_and_add_full(addr, val) \ - (AO_nop_full(), AO_char_fetch_and_add_acquire(addr, val)) -#endif - -#if !defined(AO_HAVE_char_fetch_and_add_release_write) && \ - defined(AO_HAVE_char_fetch_and_add_write) -# define AO_char_fetch_and_add_release_write(addr, val) \ - AO_char_fetch_and_add_write(addr, val) -# define AO_HAVE_char_fetch_and_add_release_write -#endif -#if !defined(AO_HAVE_char_fetch_and_add_release_write) && \ - defined(AO_HAVE_char_fetch_and_add_release) -# define AO_char_fetch_and_add_release_write(addr, val) \ - AO_char_fetch_and_add_release(addr, val) -# define AO_HAVE_char_fetch_and_add_release_write -#endif -#if !defined(AO_HAVE_char_fetch_and_add_acquire_read) && \ - defined(AO_HAVE_char_fetch_and_add_read) -# define AO_char_fetch_and_add_acquire_read(addr, val) \ - AO_char_fetch_and_add_read(addr, val) -# define AO_HAVE_char_fetch_and_add_acquire_read -#endif -#if !defined(AO_HAVE_char_fetch_and_add_acquire_read) && \ - defined(AO_HAVE_char_fetch_and_add_acquire) -# define AO_char_fetch_and_add_acquire_read(addr, val) \ - AO_char_fetch_and_add_acquire(addr, val) -# define AO_HAVE_char_fetch_and_add_acquire_read -#endif - -#ifdef AO_NO_DD_ORDERING -# if defined(AO_HAVE_char_fetch_and_add_acquire_read) -# define AO_char_fetch_and_add_dd_acquire_read(addr, val) \ - AO_char_fetch_and_add_acquire_read(addr, val) -# define AO_HAVE_char_fetch_and_add_dd_acquire_read -# endif -#else -# if defined(AO_HAVE_char_fetch_and_add) -# define AO_char_fetch_and_add_dd_acquire_read(addr, val) \ - AO_char_fetch_and_add(addr, val) -# define AO_HAVE_char_fetch_and_add_dd_acquire_read -# endif -#endif - -/* char_fetch_and_add1 */ - -#if defined(AO_HAVE_char_fetch_and_add_full) &&\ - !defined(AO_HAVE_char_fetch_and_add1_full) -# define AO_char_fetch_and_add1_full(addr) \ - AO_char_fetch_and_add_full(addr,1) -# define AO_HAVE_char_fetch_and_add1_full -#endif -#if defined(AO_HAVE_char_fetch_and_add_release) &&\ - !defined(AO_HAVE_char_fetch_and_add1_release) -# define AO_char_fetch_and_add1_release(addr) \ - AO_char_fetch_and_add_release(addr,1) -# define AO_HAVE_char_fetch_and_add1_release -#endif -#if defined(AO_HAVE_char_fetch_and_add_acquire) &&\ - !defined(AO_HAVE_char_fetch_and_add1_acquire) -# define AO_char_fetch_and_add1_acquire(addr) \ - AO_char_fetch_and_add_acquire(addr,1) -# define AO_HAVE_char_fetch_and_add1_acquire -#endif -#if defined(AO_HAVE_char_fetch_and_add_write) &&\ - !defined(AO_HAVE_char_fetch_and_add1_write) -# define AO_char_fetch_and_add1_write(addr) \ - AO_char_fetch_and_add_write(addr,1) -# define AO_HAVE_char_fetch_and_add1_write -#endif -#if defined(AO_HAVE_char_fetch_and_add_read) &&\ - !defined(AO_HAVE_char_fetch_and_add1_read) -# define AO_char_fetch_and_add1_read(addr) \ - AO_char_fetch_and_add_read(addr,1) -# define AO_HAVE_char_fetch_and_add1_read -#endif -#if defined(AO_HAVE_char_fetch_and_add_release_write) &&\ - !defined(AO_HAVE_char_fetch_and_add1_release_write) -# define AO_char_fetch_and_add1_release_write(addr) \ - AO_char_fetch_and_add_release_write(addr,1) -# define AO_HAVE_char_fetch_and_add1_release_write -#endif -#if defined(AO_HAVE_char_fetch_and_add_acquire_read) &&\ - !defined(AO_HAVE_char_fetch_and_add1_acquire_read) -# define AO_char_fetch_and_add1_acquire_read(addr) \ - AO_char_fetch_and_add_acquire_read(addr,1) -# define AO_HAVE_char_fetch_and_add1_acquire_read -#endif -#if defined(AO_HAVE_char_fetch_and_add) &&\ - !defined(AO_HAVE_char_fetch_and_add1) -# define AO_char_fetch_and_add1(addr) \ - AO_char_fetch_and_add(addr,1) -# define AO_HAVE_char_fetch_and_add1 -#endif - -#if defined(AO_HAVE_char_fetch_and_add1_full) -# if !defined(AO_HAVE_char_fetch_and_add1_release) -# define AO_char_fetch_and_add1_release(addr) \ - AO_char_fetch_and_add1_full(addr) -# define AO_HAVE_char_fetch_and_add1_release -# endif -# if !defined(AO_HAVE_char_fetch_and_add1_acquire) -# define AO_char_fetch_and_add1_acquire(addr) \ - AO_char_fetch_and_add1_full(addr) -# define AO_HAVE_char_fetch_and_add1_acquire -# endif -# if !defined(AO_HAVE_char_fetch_and_add1_write) -# define AO_char_fetch_and_add1_write(addr) \ - AO_char_fetch_and_add1_full(addr) -# define AO_HAVE_char_fetch_and_add1_write -# endif -# if !defined(AO_HAVE_char_fetch_and_add1_read) -# define AO_char_fetch_and_add1_read(addr) \ - AO_char_fetch_and_add1_full(addr) -# define AO_HAVE_char_fetch_and_add1_read -# endif -#endif /* AO_HAVE_char_fetch_and_add1_full */ - -#if !defined(AO_HAVE_char_fetch_and_add1) && \ - defined(AO_HAVE_char_fetch_and_add1_release) -# define AO_char_fetch_and_add1(addr) \ - AO_char_fetch_and_add1_release(addr) -# define AO_HAVE_char_fetch_and_add1 -#endif -#if !defined(AO_HAVE_char_fetch_and_add1) && \ - defined(AO_HAVE_char_fetch_and_add1_acquire) -# define AO_char_fetch_and_add1(addr) \ - AO_char_fetch_and_add1_acquire(addr) -# define AO_HAVE_char_fetch_and_add1 -#endif -#if !defined(AO_HAVE_char_fetch_and_add1) && \ - defined(AO_HAVE_char_fetch_and_add1_write) -# define AO_char_fetch_and_add1(addr) \ - AO_char_fetch_and_add1_write(addr) -# define AO_HAVE_char_fetch_and_add1 -#endif -#if !defined(AO_HAVE_char_fetch_and_add1) && \ - defined(AO_HAVE_char_fetch_and_add1_read) -# define AO_char_fetch_and_add1(addr) \ - AO_char_fetch_and_add1_read(addr) -# define AO_HAVE_char_fetch_and_add1 -#endif - -#if defined(AO_HAVE_char_fetch_and_add1_acquire) &&\ - defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_char_fetch_and_add1_full) -# define AO_char_fetch_and_add1_full(addr) \ - (AO_nop_full(), AO_char_fetch_and_add1_acquire(addr)) -# define AO_HAVE_char_fetch_and_add1_full -#endif - -#if !defined(AO_HAVE_char_fetch_and_add1_release_write) && \ - defined(AO_HAVE_char_fetch_and_add1_write) -# define AO_char_fetch_and_add1_release_write(addr) \ - AO_char_fetch_and_add1_write(addr) -# define AO_HAVE_char_fetch_and_add1_release_write -#endif -#if !defined(AO_HAVE_char_fetch_and_add1_release_write) && \ - defined(AO_HAVE_char_fetch_and_add1_release) -# define AO_char_fetch_and_add1_release_write(addr) \ - AO_char_fetch_and_add1_release(addr) -# define AO_HAVE_char_fetch_and_add1_release_write -#endif -#if !defined(AO_HAVE_char_fetch_and_add1_acquire_read) && \ - defined(AO_HAVE_char_fetch_and_add1_read) -# define AO_char_fetch_and_add1_acquire_read(addr) \ - AO_char_fetch_and_add1_read(addr) -# define AO_HAVE_char_fetch_and_add1_acquire_read -#endif -#if !defined(AO_HAVE_char_fetch_and_add1_acquire_read) && \ - defined(AO_HAVE_char_fetch_and_add1_acquire) -# define AO_char_fetch_and_add1_acquire_read(addr) \ - AO_char_fetch_and_add1_acquire(addr) -# define AO_HAVE_char_fetch_and_add1_acquire_read -#endif - -#ifdef AO_NO_DD_ORDERING -# if defined(AO_HAVE_char_fetch_and_add1_acquire_read) -# define AO_char_fetch_and_add1_dd_acquire_read(addr) \ - AO_char_fetch_and_add1_acquire_read(addr) -# define AO_HAVE_char_fetch_and_add1_dd_acquire_read -# endif -#else -# if defined(AO_HAVE_char_fetch_and_add1) -# define AO_char_fetch_and_add1_dd_acquire_read(addr) \ - AO_char_fetch_and_add1(addr) -# define AO_HAVE_char_fetch_and_add1_dd_acquire_read -# endif -#endif - -/* char_fetch_and_sub1 */ - -#if defined(AO_HAVE_char_fetch_and_add_full) &&\ - !defined(AO_HAVE_char_fetch_and_sub1_full) -# define AO_char_fetch_and_sub1_full(addr) \ - AO_char_fetch_and_add_full(addr,(unsigned char)(-1)) -# define AO_HAVE_char_fetch_and_sub1_full -#endif -#if defined(AO_HAVE_char_fetch_and_add_release) &&\ - !defined(AO_HAVE_char_fetch_and_sub1_release) -# define AO_char_fetch_and_sub1_release(addr) \ - AO_char_fetch_and_add_release(addr,(unsigned char)(-1)) -# define AO_HAVE_char_fetch_and_sub1_release -#endif -#if defined(AO_HAVE_char_fetch_and_add_acquire) &&\ - !defined(AO_HAVE_char_fetch_and_sub1_acquire) -# define AO_char_fetch_and_sub1_acquire(addr) \ - AO_char_fetch_and_add_acquire(addr,(unsigned char)(-1)) -# define AO_HAVE_char_fetch_and_sub1_acquire -#endif -#if defined(AO_HAVE_char_fetch_and_add_write) &&\ - !defined(AO_HAVE_char_fetch_and_sub1_write) -# define AO_char_fetch_and_sub1_write(addr) \ - AO_char_fetch_and_add_write(addr,(unsigned char)(-1)) -# define AO_HAVE_char_fetch_and_sub1_write -#endif -#if defined(AO_HAVE_char_fetch_and_add_read) &&\ - !defined(AO_HAVE_char_fetch_and_sub1_read) -# define AO_char_fetch_and_sub1_read(addr) \ - AO_char_fetch_and_add_read(addr,(unsigned char)(-1)) -# define AO_HAVE_char_fetch_and_sub1_read -#endif -#if defined(AO_HAVE_char_fetch_and_add_release_write) &&\ - !defined(AO_HAVE_char_fetch_and_sub1_release_write) -# define AO_char_fetch_and_sub1_release_write(addr) \ - AO_char_fetch_and_add_release_write(addr,(unsigned char)(-1)) -# define AO_HAVE_char_fetch_and_sub1_release_write -#endif -#if defined(AO_HAVE_char_fetch_and_add_acquire_read) &&\ - !defined(AO_HAVE_char_fetch_and_sub1_acquire_read) -# define AO_char_fetch_and_sub1_acquire_read(addr) \ - AO_char_fetch_and_add_acquire_read(addr,(unsigned char)(-1)) -# define AO_HAVE_char_fetch_and_sub1_acquire_read -#endif -#if defined(AO_HAVE_char_fetch_and_add) &&\ - !defined(AO_HAVE_char_fetch_and_sub1) -# define AO_char_fetch_and_sub1(addr) \ - AO_char_fetch_and_add(addr,(unsigned char)(-1)) -# define AO_HAVE_char_fetch_and_sub1 -#endif - -#if defined(AO_HAVE_char_fetch_and_sub1_full) -# if !defined(AO_HAVE_char_fetch_and_sub1_release) -# define AO_char_fetch_and_sub1_release(addr) \ - AO_char_fetch_and_sub1_full(addr) -# define AO_HAVE_char_fetch_and_sub1_release -# endif -# if !defined(AO_HAVE_char_fetch_and_sub1_acquire) -# define AO_char_fetch_and_sub1_acquire(addr) \ - AO_char_fetch_and_sub1_full(addr) -# define AO_HAVE_char_fetch_and_sub1_acquire -# endif -# if !defined(AO_HAVE_char_fetch_and_sub1_write) -# define AO_char_fetch_and_sub1_write(addr) \ - AO_char_fetch_and_sub1_full(addr) -# define AO_HAVE_char_fetch_and_sub1_write -# endif -# if !defined(AO_HAVE_char_fetch_and_sub1_read) -# define AO_char_fetch_and_sub1_read(addr) \ - AO_char_fetch_and_sub1_full(addr) -# define AO_HAVE_char_fetch_and_sub1_read -# endif -#endif /* AO_HAVE_char_fetch_and_sub1_full */ - -#if !defined(AO_HAVE_char_fetch_and_sub1) && \ - defined(AO_HAVE_char_fetch_and_sub1_release) -# define AO_char_fetch_and_sub1(addr) \ - AO_char_fetch_and_sub1_release(addr) -# define AO_HAVE_char_fetch_and_sub1 -#endif -#if !defined(AO_HAVE_char_fetch_and_sub1) && \ - defined(AO_HAVE_char_fetch_and_sub1_acquire) -# define AO_char_fetch_and_sub1(addr) \ - AO_char_fetch_and_sub1_acquire(addr) -# define AO_HAVE_char_fetch_and_sub1 -#endif -#if !defined(AO_HAVE_char_fetch_and_sub1) && \ - defined(AO_HAVE_char_fetch_and_sub1_write) -# define AO_char_fetch_and_sub1(addr) \ - AO_char_fetch_and_sub1_write(addr) -# define AO_HAVE_char_fetch_and_sub1 -#endif -#if !defined(AO_HAVE_char_fetch_and_sub1) && \ - defined(AO_HAVE_char_fetch_and_sub1_read) -# define AO_char_fetch_and_sub1(addr) \ - AO_char_fetch_and_sub1_read(addr) -# define AO_HAVE_char_fetch_and_sub1 -#endif - -#if defined(AO_HAVE_char_fetch_and_sub1_acquire) &&\ - defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_char_fetch_and_sub1_full) -# define AO_char_fetch_and_sub1_full(addr) \ - (AO_nop_full(), AO_char_fetch_and_sub1_acquire(addr)) -# define AO_HAVE_char_fetch_and_sub1_full -#endif - -#if !defined(AO_HAVE_char_fetch_and_sub1_release_write) && \ - defined(AO_HAVE_char_fetch_and_sub1_write) -# define AO_char_fetch_and_sub1_release_write(addr) \ - AO_char_fetch_and_sub1_write(addr) -# define AO_HAVE_char_fetch_and_sub1_release_write -#endif -#if !defined(AO_HAVE_char_fetch_and_sub1_release_write) && \ - defined(AO_HAVE_char_fetch_and_sub1_release) -# define AO_char_fetch_and_sub1_release_write(addr) \ - AO_char_fetch_and_sub1_release(addr) -# define AO_HAVE_char_fetch_and_sub1_release_write -#endif -#if !defined(AO_HAVE_char_fetch_and_sub1_acquire_read) && \ - defined(AO_HAVE_char_fetch_and_sub1_read) -# define AO_char_fetch_and_sub1_acquire_read(addr) \ - AO_char_fetch_and_sub1_read(addr) -# define AO_HAVE_char_fetch_and_sub1_acquire_read -#endif -#if !defined(AO_HAVE_char_fetch_and_sub1_acquire_read) && \ - defined(AO_HAVE_char_fetch_and_sub1_acquire) -# define AO_char_fetch_and_sub1_acquire_read(addr) \ - AO_char_fetch_and_sub1_acquire(addr) -# define AO_HAVE_char_fetch_and_sub1_acquire_read -#endif - -#ifdef AO_NO_DD_ORDERING -# if defined(AO_HAVE_char_fetch_and_sub1_acquire_read) -# define AO_char_fetch_and_sub1_dd_acquire_read(addr) \ - AO_char_fetch_and_sub1_acquire_read(addr) -# define AO_HAVE_char_fetch_and_sub1_dd_acquire_read -# endif -#else -# if defined(AO_HAVE_char_fetch_and_sub1) -# define AO_char_fetch_and_sub1_dd_acquire_read(addr) \ - AO_char_fetch_and_sub1(addr) -# define AO_HAVE_char_fetch_and_sub1_dd_acquire_read -# endif -#endif - -/* short_load */ -#if defined(AO_HAVE_short_load_acquire) && !defined(AO_HAVE_short_load) -# define AO_short_load(addr) AO_short_load_acquire(addr) -# define AO_HAVE_short_load -#endif - -#if defined(AO_HAVE_short_load_full) && !defined(AO_HAVE_short_load_acquire) -# define AO_short_load_acquire(addr) AO_short_load_full(addr) -# define AO_HAVE_short_load_acquire -#endif - -#if defined(AO_HAVE_short_load_full) && !defined(AO_HAVE_short_load_read) -# define AO_short_load_read(addr) AO_short_load_full(addr) -# define AO_HAVE_short_load_read -#endif - -#if !defined(AO_HAVE_short_load_acquire_read) && defined(AO_HAVE_short_load_acquire) -# define AO_short_load_acquire_read(addr) AO_short_load_acquire(addr) -# define AO_HAVE_short_load_acquire_read -#endif - -#if defined(AO_HAVE_short_load) && defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_short_load_acquire) - AO_INLINE unsigned short - AO_short_load_acquire(volatile unsigned short *addr) - { - unsigned short result = AO_short_load(addr); - /* Acquire barrier would be useless, since the load could be delayed */ - /* beyond it. */ - AO_nop_full(); - return result; - } -# define AO_HAVE_short_load_acquire -#endif - -#if defined(AO_HAVE_short_load) && defined(AO_HAVE_nop_read) && \ - !defined(AO_HAVE_short_load_read) - AO_INLINE unsigned short - AO_short_load_read(volatile unsigned short *addr) - { - unsigned short result = AO_short_load(addr); - /* Acquire barrier would be useless, since the load could be delayed */ - /* beyond it. */ - AO_nop_read(); - return result; - } -# define AO_HAVE_short_load_read -#endif - -#if defined(AO_HAVE_short_load_acquire) && defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_short_load_full) -# define AO_short_load_full(addr) (AO_nop_full(), AO_short_load_acquire(addr)) -# define AO_HAVE_short_load_full -#endif - -#if !defined(AO_HAVE_short_load_acquire_read) && defined(AO_HAVE_short_load_read) -# define AO_short_load_acquire_read(addr) AO_short_load_read(addr) -# define AO_HAVE_short_load_acquire_read -#endif - -#if defined(AO_HAVE_short_load_acquire_read) && !defined(AO_HAVE_short_load) -# define AO_short_load(addr) AO_short_load_acquire_read(addr) -# define AO_HAVE_short_load -#endif - -#ifdef AO_NO_DD_ORDERING -# if defined(AO_HAVE_short_load_acquire_read) -# define AO_short_load_dd_acquire_read(addr) \ - AO_short_load_acquire_read(addr) -# define AO_HAVE_short_load_dd_acquire_read -# endif -#else -# if defined(AO_HAVE_short_load) -# define AO_short_load_dd_acquire_read(addr) \ - AO_short_load(addr) -# define AO_HAVE_short_load_dd_acquire_read -# endif -#endif - - -/* short_store */ - -#if defined(AO_HAVE_short_store_release) && !defined(AO_HAVE_short_store) -# define AO_short_store(addr, val) AO_short_store_release(addr,val) -# define AO_HAVE_short_store -#endif - -#if defined(AO_HAVE_short_store_full) && !defined(AO_HAVE_short_store_release) -# define AO_short_store_release(addr,val) AO_short_store_full(addr,val) -# define AO_HAVE_short_store_release -#endif - -#if defined(AO_HAVE_short_store_full) && !defined(AO_HAVE_short_store_write) -# define AO_short_store_write(addr,val) AO_short_store_full(addr,val) -# define AO_HAVE_short_store_write -#endif - -#if defined(AO_HAVE_short_store_release) && \ - !defined(AO_HAVE_short_store_release_write) -# define AO_short_store_release_write(addr, val) \ - AO_short_store_release(addr,val) -# define AO_HAVE_short_store_release_write -#endif - -#if defined(AO_HAVE_short_store_write) && !defined(AO_HAVE_short_store) -# define AO_short_store(addr, val) AO_short_store_write(addr,val) -# define AO_HAVE_short_store -#endif - -#if defined(AO_HAVE_short_store) && defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_short_store_release) -# define AO_short_store_release(addr,val) \ - (AO_nop_full(), AO_short_store(addr,val)) -# define AO_HAVE_short_store_release -#endif - -#if defined(AO_HAVE_nop_write) && defined(AO_HAVE_short_store) && \ - !defined(AO_HAVE_short_store_write) -# define AO_short_store_write(addr, val) \ - (AO_nop_write(), AO_short_store(addr,val)) -# define AO_HAVE_short_store_write -#endif - -#if defined(AO_HAVE_short_store_write) && \ - !defined(AO_HAVE_short_store_release_write) -# define AO_short_store_release_write(addr, val) AO_short_store_write(addr,val) -# define AO_HAVE_short_store_release_write -#endif - -#if defined(AO_HAVE_short_store_release) && defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_short_store_full) -# define AO_short_store_full(addr, val) \ - (AO_short_store_release(addr, val), AO_nop_full()) -# define AO_HAVE_short_store_full -#endif - - -/* short_fetch_and_add */ -#if defined(AO_HAVE_short_compare_and_swap_full) && \ - !defined(AO_HAVE_short_fetch_and_add_full) - AO_INLINE AO_t - AO_short_fetch_and_add_full(volatile unsigned short *addr, - unsigned short incr) - { - unsigned short old; - do - { - old = *addr; - } - while (!AO_short_compare_and_swap_full(addr, old, old+incr)); - return old; - } -# define AO_HAVE_short_fetch_and_add_full -#endif - -#if defined(AO_HAVE_short_compare_and_swap_acquire) && \ - !defined(AO_HAVE_short_fetch_and_add_acquire) - AO_INLINE AO_t - AO_short_fetch_and_add_acquire(volatile unsigned short *addr, - unsigned short incr) - { - unsigned short old; - do - { - old = *addr; - } - while (!AO_short_compare_and_swap_acquire(addr, old, old+incr)); - return old; - } -# define AO_HAVE_short_fetch_and_add_acquire -#endif - -#if defined(AO_HAVE_short_compare_and_swap_release) && \ - !defined(AO_HAVE_short_fetch_and_add_release) - AO_INLINE AO_t - AO_short_fetch_and_add_release(volatile unsigned short *addr, - unsigned short incr) - { - unsigned short old; - do - { - old = *addr; - } - while (!AO_short_compare_and_swap_release(addr, old, old+incr)); - return old; - } -# define AO_HAVE_short_fetch_and_add_release -#endif - -#if defined(AO_HAVE_short_fetch_and_add_full) -# if !defined(AO_HAVE_short_fetch_and_add_release) -# define AO_short_fetch_and_add_release(addr, val) \ - AO_short_fetch_and_add_full(addr, val) -# define AO_HAVE_short_fetch_and_add_release -# endif -# if !defined(AO_HAVE_short_fetch_and_add_acquire) -# define AO_short_fetch_and_add_acquire(addr, val) \ - AO_short_fetch_and_add_full(addr, val) -# define AO_HAVE_short_fetch_and_add_acquire -# endif -# if !defined(AO_HAVE_short_fetch_and_add_write) -# define AO_short_fetch_and_add_write(addr, val) \ - AO_short_fetch_and_add_full(addr, val) -# define AO_HAVE_short_fetch_and_add_write -# endif -# if !defined(AO_HAVE_short_fetch_and_add_read) -# define AO_short_fetch_and_add_read(addr, val) \ - AO_short_fetch_and_add_full(addr, val) -# define AO_HAVE_short_fetch_and_add_read -# endif -#endif /* AO_HAVE_short_fetch_and_add_full */ - -#if !defined(AO_HAVE_short_fetch_and_add) && \ - defined(AO_HAVE_short_fetch_and_add_release) -# define AO_short_fetch_and_add(addr, val) \ - AO_short_fetch_and_add_release(addr, val) -# define AO_HAVE_short_fetch_and_add -#endif -#if !defined(AO_HAVE_short_fetch_and_add) && \ - defined(AO_HAVE_short_fetch_and_add_acquire) -# define AO_short_fetch_and_add(addr, val) \ - AO_short_fetch_and_add_acquire(addr, val) -# define AO_HAVE_short_fetch_and_add -#endif -#if !defined(AO_HAVE_short_fetch_and_add) && \ - defined(AO_HAVE_short_fetch_and_add_write) -# define AO_short_fetch_and_add(addr, val) \ - AO_short_fetch_and_add_write(addr, val) -# define AO_HAVE_short_fetch_and_add -#endif -#if !defined(AO_HAVE_short_fetch_and_add) && \ - defined(AO_HAVE_short_fetch_and_add_read) -# define AO_short_fetch_and_add(addr, val) \ - AO_short_fetch_and_add_read(addr, val) -# define AO_HAVE_short_fetch_and_add -#endif - -#if defined(AO_HAVE_short_fetch_and_add_acquire) &&\ - defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_short_fetch_and_add_full) -# define AO_short_fetch_and_add_full(addr, val) \ - (AO_nop_full(), AO_short_fetch_and_add_acquire(addr, val)) -#endif - -#if !defined(AO_HAVE_short_fetch_and_add_release_write) && \ - defined(AO_HAVE_short_fetch_and_add_write) -# define AO_short_fetch_and_add_release_write(addr, val) \ - AO_short_fetch_and_add_write(addr, val) -# define AO_HAVE_short_fetch_and_add_release_write -#endif -#if !defined(AO_HAVE_short_fetch_and_add_release_write) && \ - defined(AO_HAVE_short_fetch_and_add_release) -# define AO_short_fetch_and_add_release_write(addr, val) \ - AO_short_fetch_and_add_release(addr, val) -# define AO_HAVE_short_fetch_and_add_release_write -#endif -#if !defined(AO_HAVE_short_fetch_and_add_acquire_read) && \ - defined(AO_HAVE_short_fetch_and_add_read) -# define AO_short_fetch_and_add_acquire_read(addr, val) \ - AO_short_fetch_and_add_read(addr, val) -# define AO_HAVE_short_fetch_and_add_acquire_read -#endif -#if !defined(AO_HAVE_short_fetch_and_add_acquire_read) && \ - defined(AO_HAVE_short_fetch_and_add_acquire) -# define AO_short_fetch_and_add_acquire_read(addr, val) \ - AO_short_fetch_and_add_acquire(addr, val) -# define AO_HAVE_short_fetch_and_add_acquire_read -#endif - -#ifdef AO_NO_DD_ORDERING -# if defined(AO_HAVE_short_fetch_and_add_acquire_read) -# define AO_short_fetch_and_add_dd_acquire_read(addr, val) \ - AO_short_fetch_and_add_acquire_read(addr, val) -# define AO_HAVE_short_fetch_and_add_dd_acquire_read -# endif -#else -# if defined(AO_HAVE_short_fetch_and_add) -# define AO_short_fetch_and_add_dd_acquire_read(addr, val) \ - AO_short_fetch_and_add(addr, val) -# define AO_HAVE_short_fetch_and_add_dd_acquire_read -# endif -#endif - -/* short_fetch_and_add1 */ - -#if defined(AO_HAVE_short_fetch_and_add_full) &&\ - !defined(AO_HAVE_short_fetch_and_add1_full) -# define AO_short_fetch_and_add1_full(addr) \ - AO_short_fetch_and_add_full(addr,1) -# define AO_HAVE_short_fetch_and_add1_full -#endif -#if defined(AO_HAVE_short_fetch_and_add_release) &&\ - !defined(AO_HAVE_short_fetch_and_add1_release) -# define AO_short_fetch_and_add1_release(addr) \ - AO_short_fetch_and_add_release(addr,1) -# define AO_HAVE_short_fetch_and_add1_release -#endif -#if defined(AO_HAVE_short_fetch_and_add_acquire) &&\ - !defined(AO_HAVE_short_fetch_and_add1_acquire) -# define AO_short_fetch_and_add1_acquire(addr) \ - AO_short_fetch_and_add_acquire(addr,1) -# define AO_HAVE_short_fetch_and_add1_acquire -#endif -#if defined(AO_HAVE_short_fetch_and_add_write) &&\ - !defined(AO_HAVE_short_fetch_and_add1_write) -# define AO_short_fetch_and_add1_write(addr) \ - AO_short_fetch_and_add_write(addr,1) -# define AO_HAVE_short_fetch_and_add1_write -#endif -#if defined(AO_HAVE_short_fetch_and_add_read) &&\ - !defined(AO_HAVE_short_fetch_and_add1_read) -# define AO_short_fetch_and_add1_read(addr) \ - AO_short_fetch_and_add_read(addr,1) -# define AO_HAVE_short_fetch_and_add1_read -#endif -#if defined(AO_HAVE_short_fetch_and_add_release_write) &&\ - !defined(AO_HAVE_short_fetch_and_add1_release_write) -# define AO_short_fetch_and_add1_release_write(addr) \ - AO_short_fetch_and_add_release_write(addr,1) -# define AO_HAVE_short_fetch_and_add1_release_write -#endif -#if defined(AO_HAVE_short_fetch_and_add_acquire_read) &&\ - !defined(AO_HAVE_short_fetch_and_add1_acquire_read) -# define AO_short_fetch_and_add1_acquire_read(addr) \ - AO_short_fetch_and_add_acquire_read(addr,1) -# define AO_HAVE_short_fetch_and_add1_acquire_read -#endif -#if defined(AO_HAVE_short_fetch_and_add) &&\ - !defined(AO_HAVE_short_fetch_and_add1) -# define AO_short_fetch_and_add1(addr) \ - AO_short_fetch_and_add(addr,1) -# define AO_HAVE_short_fetch_and_add1 -#endif - -#if defined(AO_HAVE_short_fetch_and_add1_full) -# if !defined(AO_HAVE_short_fetch_and_add1_release) -# define AO_short_fetch_and_add1_release(addr) \ - AO_short_fetch_and_add1_full(addr) -# define AO_HAVE_short_fetch_and_add1_release -# endif -# if !defined(AO_HAVE_short_fetch_and_add1_acquire) -# define AO_short_fetch_and_add1_acquire(addr) \ - AO_short_fetch_and_add1_full(addr) -# define AO_HAVE_short_fetch_and_add1_acquire -# endif -# if !defined(AO_HAVE_short_fetch_and_add1_write) -# define AO_short_fetch_and_add1_write(addr) \ - AO_short_fetch_and_add1_full(addr) -# define AO_HAVE_short_fetch_and_add1_write -# endif -# if !defined(AO_HAVE_short_fetch_and_add1_read) -# define AO_short_fetch_and_add1_read(addr) \ - AO_short_fetch_and_add1_full(addr) -# define AO_HAVE_short_fetch_and_add1_read -# endif -#endif /* AO_HAVE_short_fetch_and_add1_full */ - -#if !defined(AO_HAVE_short_fetch_and_add1) && \ - defined(AO_HAVE_short_fetch_and_add1_release) -# define AO_short_fetch_and_add1(addr) \ - AO_short_fetch_and_add1_release(addr) -# define AO_HAVE_short_fetch_and_add1 -#endif -#if !defined(AO_HAVE_short_fetch_and_add1) && \ - defined(AO_HAVE_short_fetch_and_add1_acquire) -# define AO_short_fetch_and_add1(addr) \ - AO_short_fetch_and_add1_acquire(addr) -# define AO_HAVE_short_fetch_and_add1 -#endif -#if !defined(AO_HAVE_short_fetch_and_add1) && \ - defined(AO_HAVE_short_fetch_and_add1_write) -# define AO_short_fetch_and_add1(addr) \ - AO_short_fetch_and_add1_write(addr) -# define AO_HAVE_short_fetch_and_add1 -#endif -#if !defined(AO_HAVE_short_fetch_and_add1) && \ - defined(AO_HAVE_short_fetch_and_add1_read) -# define AO_short_fetch_and_add1(addr) \ - AO_short_fetch_and_add1_read(addr) -# define AO_HAVE_short_fetch_and_add1 -#endif - -#if defined(AO_HAVE_short_fetch_and_add1_acquire) &&\ - defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_short_fetch_and_add1_full) -# define AO_short_fetch_and_add1_full(addr) \ - (AO_nop_full(), AO_short_fetch_and_add1_acquire(addr)) -# define AO_HAVE_short_fetch_and_add1_full -#endif - -#if !defined(AO_HAVE_short_fetch_and_add1_release_write) && \ - defined(AO_HAVE_short_fetch_and_add1_write) -# define AO_short_fetch_and_add1_release_write(addr) \ - AO_short_fetch_and_add1_write(addr) -# define AO_HAVE_short_fetch_and_add1_release_write -#endif -#if !defined(AO_HAVE_short_fetch_and_add1_release_write) && \ - defined(AO_HAVE_short_fetch_and_add1_release) -# define AO_short_fetch_and_add1_release_write(addr) \ - AO_short_fetch_and_add1_release(addr) -# define AO_HAVE_short_fetch_and_add1_release_write -#endif -#if !defined(AO_HAVE_short_fetch_and_add1_acquire_read) && \ - defined(AO_HAVE_short_fetch_and_add1_read) -# define AO_short_fetch_and_add1_acquire_read(addr) \ - AO_short_fetch_and_add1_read(addr) -# define AO_HAVE_short_fetch_and_add1_acquire_read -#endif -#if !defined(AO_HAVE_short_fetch_and_add1_acquire_read) && \ - defined(AO_HAVE_short_fetch_and_add1_acquire) -# define AO_short_fetch_and_add1_acquire_read(addr) \ - AO_short_fetch_and_add1_acquire(addr) -# define AO_HAVE_short_fetch_and_add1_acquire_read -#endif - -#ifdef AO_NO_DD_ORDERING -# if defined(AO_HAVE_short_fetch_and_add1_acquire_read) -# define AO_short_fetch_and_add1_dd_acquire_read(addr) \ - AO_short_fetch_and_add1_acquire_read(addr) -# define AO_HAVE_short_fetch_and_add1_dd_acquire_read -# endif -#else -# if defined(AO_HAVE_short_fetch_and_add1) -# define AO_short_fetch_and_add1_dd_acquire_read(addr) \ - AO_short_fetch_and_add1(addr) -# define AO_HAVE_short_fetch_and_add1_dd_acquire_read -# endif -#endif - -/* short_fetch_and_sub1 */ - -#if defined(AO_HAVE_short_fetch_and_add_full) &&\ - !defined(AO_HAVE_short_fetch_and_sub1_full) -# define AO_short_fetch_and_sub1_full(addr) \ - AO_short_fetch_and_add_full(addr,(unsigned short)(-1)) -# define AO_HAVE_short_fetch_and_sub1_full -#endif -#if defined(AO_HAVE_short_fetch_and_add_release) &&\ - !defined(AO_HAVE_short_fetch_and_sub1_release) -# define AO_short_fetch_and_sub1_release(addr) \ - AO_short_fetch_and_add_release(addr,(unsigned short)(-1)) -# define AO_HAVE_short_fetch_and_sub1_release -#endif -#if defined(AO_HAVE_short_fetch_and_add_acquire) &&\ - !defined(AO_HAVE_short_fetch_and_sub1_acquire) -# define AO_short_fetch_and_sub1_acquire(addr) \ - AO_short_fetch_and_add_acquire(addr,(unsigned short)(-1)) -# define AO_HAVE_short_fetch_and_sub1_acquire -#endif -#if defined(AO_HAVE_short_fetch_and_add_write) &&\ - !defined(AO_HAVE_short_fetch_and_sub1_write) -# define AO_short_fetch_and_sub1_write(addr) \ - AO_short_fetch_and_add_write(addr,(unsigned short)(-1)) -# define AO_HAVE_short_fetch_and_sub1_write -#endif -#if defined(AO_HAVE_short_fetch_and_add_read) &&\ - !defined(AO_HAVE_short_fetch_and_sub1_read) -# define AO_short_fetch_and_sub1_read(addr) \ - AO_short_fetch_and_add_read(addr,(unsigned short)(-1)) -# define AO_HAVE_short_fetch_and_sub1_read -#endif -#if defined(AO_HAVE_short_fetch_and_add_release_write) &&\ - !defined(AO_HAVE_short_fetch_and_sub1_release_write) -# define AO_short_fetch_and_sub1_release_write(addr) \ - AO_short_fetch_and_add_release_write(addr,(unsigned short)(-1)) -# define AO_HAVE_short_fetch_and_sub1_release_write -#endif -#if defined(AO_HAVE_short_fetch_and_add_acquire_read) &&\ - !defined(AO_HAVE_short_fetch_and_sub1_acquire_read) -# define AO_short_fetch_and_sub1_acquire_read(addr) \ - AO_short_fetch_and_add_acquire_read(addr,(unsigned short)(-1)) -# define AO_HAVE_short_fetch_and_sub1_acquire_read -#endif -#if defined(AO_HAVE_short_fetch_and_add) &&\ - !defined(AO_HAVE_short_fetch_and_sub1) -# define AO_short_fetch_and_sub1(addr) \ - AO_short_fetch_and_add(addr,(unsigned short)(-1)) -# define AO_HAVE_short_fetch_and_sub1 -#endif - -#if defined(AO_HAVE_short_fetch_and_sub1_full) -# if !defined(AO_HAVE_short_fetch_and_sub1_release) -# define AO_short_fetch_and_sub1_release(addr) \ - AO_short_fetch_and_sub1_full(addr) -# define AO_HAVE_short_fetch_and_sub1_release -# endif -# if !defined(AO_HAVE_short_fetch_and_sub1_acquire) -# define AO_short_fetch_and_sub1_acquire(addr) \ - AO_short_fetch_and_sub1_full(addr) -# define AO_HAVE_short_fetch_and_sub1_acquire -# endif -# if !defined(AO_HAVE_short_fetch_and_sub1_write) -# define AO_short_fetch_and_sub1_write(addr) \ - AO_short_fetch_and_sub1_full(addr) -# define AO_HAVE_short_fetch_and_sub1_write -# endif -# if !defined(AO_HAVE_short_fetch_and_sub1_read) -# define AO_short_fetch_and_sub1_read(addr) \ - AO_short_fetch_and_sub1_full(addr) -# define AO_HAVE_short_fetch_and_sub1_read -# endif -#endif /* AO_HAVE_short_fetch_and_sub1_full */ - -#if !defined(AO_HAVE_short_fetch_and_sub1) && \ - defined(AO_HAVE_short_fetch_and_sub1_release) -# define AO_short_fetch_and_sub1(addr) \ - AO_short_fetch_and_sub1_release(addr) -# define AO_HAVE_short_fetch_and_sub1 -#endif -#if !defined(AO_HAVE_short_fetch_and_sub1) && \ - defined(AO_HAVE_short_fetch_and_sub1_acquire) -# define AO_short_fetch_and_sub1(addr) \ - AO_short_fetch_and_sub1_acquire(addr) -# define AO_HAVE_short_fetch_and_sub1 -#endif -#if !defined(AO_HAVE_short_fetch_and_sub1) && \ - defined(AO_HAVE_short_fetch_and_sub1_write) -# define AO_short_fetch_and_sub1(addr) \ - AO_short_fetch_and_sub1_write(addr) -# define AO_HAVE_short_fetch_and_sub1 -#endif -#if !defined(AO_HAVE_short_fetch_and_sub1) && \ - defined(AO_HAVE_short_fetch_and_sub1_read) -# define AO_short_fetch_and_sub1(addr) \ - AO_short_fetch_and_sub1_read(addr) -# define AO_HAVE_short_fetch_and_sub1 -#endif - -#if defined(AO_HAVE_short_fetch_and_sub1_acquire) &&\ - defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_short_fetch_and_sub1_full) -# define AO_short_fetch_and_sub1_full(addr) \ - (AO_nop_full(), AO_short_fetch_and_sub1_acquire(addr)) -# define AO_HAVE_short_fetch_and_sub1_full -#endif - -#if !defined(AO_HAVE_short_fetch_and_sub1_release_write) && \ - defined(AO_HAVE_short_fetch_and_sub1_write) -# define AO_short_fetch_and_sub1_release_write(addr) \ - AO_short_fetch_and_sub1_write(addr) -# define AO_HAVE_short_fetch_and_sub1_release_write -#endif -#if !defined(AO_HAVE_short_fetch_and_sub1_release_write) && \ - defined(AO_HAVE_short_fetch_and_sub1_release) -# define AO_short_fetch_and_sub1_release_write(addr) \ - AO_short_fetch_and_sub1_release(addr) -# define AO_HAVE_short_fetch_and_sub1_release_write -#endif -#if !defined(AO_HAVE_short_fetch_and_sub1_acquire_read) && \ - defined(AO_HAVE_short_fetch_and_sub1_read) -# define AO_short_fetch_and_sub1_acquire_read(addr) \ - AO_short_fetch_and_sub1_read(addr) -# define AO_HAVE_short_fetch_and_sub1_acquire_read -#endif -#if !defined(AO_HAVE_short_fetch_and_sub1_acquire_read) && \ - defined(AO_HAVE_short_fetch_and_sub1_acquire) -# define AO_short_fetch_and_sub1_acquire_read(addr) \ - AO_short_fetch_and_sub1_acquire(addr) -# define AO_HAVE_short_fetch_and_sub1_acquire_read -#endif - -#ifdef AO_NO_DD_ORDERING -# if defined(AO_HAVE_short_fetch_and_sub1_acquire_read) -# define AO_short_fetch_and_sub1_dd_acquire_read(addr) \ - AO_short_fetch_and_sub1_acquire_read(addr) -# define AO_HAVE_short_fetch_and_sub1_dd_acquire_read -# endif -#else -# if defined(AO_HAVE_short_fetch_and_sub1) -# define AO_short_fetch_and_sub1_dd_acquire_read(addr) \ - AO_short_fetch_and_sub1(addr) -# define AO_HAVE_short_fetch_and_sub1_dd_acquire_read -# endif -#endif - -/* int_load */ -#if defined(AO_HAVE_int_load_acquire) && !defined(AO_HAVE_int_load) -# define AO_int_load(addr) AO_int_load_acquire(addr) -# define AO_HAVE_int_load -#endif - -#if defined(AO_HAVE_int_load_full) && !defined(AO_HAVE_int_load_acquire) -# define AO_int_load_acquire(addr) AO_int_load_full(addr) -# define AO_HAVE_int_load_acquire -#endif - -#if defined(AO_HAVE_int_load_full) && !defined(AO_HAVE_int_load_read) -# define AO_int_load_read(addr) AO_int_load_full(addr) -# define AO_HAVE_int_load_read -#endif - -#if !defined(AO_HAVE_int_load_acquire_read) && defined(AO_HAVE_int_load_acquire) -# define AO_int_load_acquire_read(addr) AO_int_load_acquire(addr) -# define AO_HAVE_int_load_acquire_read -#endif - -#if defined(AO_HAVE_int_load) && defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_int_load_acquire) - AO_INLINE unsigned int - AO_int_load_acquire(volatile unsigned int *addr) - { - unsigned int result = AO_int_load(addr); - /* Acquire barrier would be useless, since the load could be delayed */ - /* beyond it. */ - AO_nop_full(); - return result; - } -# define AO_HAVE_int_load_acquire -#endif - -#if defined(AO_HAVE_int_load) && defined(AO_HAVE_nop_read) && \ - !defined(AO_HAVE_int_load_read) - AO_INLINE unsigned int - AO_int_load_read(volatile unsigned int *addr) - { - unsigned int result = AO_int_load(addr); - /* Acquire barrier would be useless, since the load could be delayed */ - /* beyond it. */ - AO_nop_read(); - return result; - } -# define AO_HAVE_int_load_read -#endif - -#if defined(AO_HAVE_int_load_acquire) && defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_int_load_full) -# define AO_int_load_full(addr) (AO_nop_full(), AO_int_load_acquire(addr)) -# define AO_HAVE_int_load_full -#endif - -#if !defined(AO_HAVE_int_load_acquire_read) && defined(AO_HAVE_int_load_read) -# define AO_int_load_acquire_read(addr) AO_int_load_read(addr) -# define AO_HAVE_int_load_acquire_read -#endif - -#if defined(AO_HAVE_int_load_acquire_read) && !defined(AO_HAVE_int_load) -# define AO_int_load(addr) AO_int_load_acquire_read(addr) -# define AO_HAVE_int_load -#endif - -#ifdef AO_NO_DD_ORDERING -# if defined(AO_HAVE_int_load_acquire_read) -# define AO_int_load_dd_acquire_read(addr) \ - AO_int_load_acquire_read(addr) -# define AO_HAVE_int_load_dd_acquire_read -# endif -#else -# if defined(AO_HAVE_int_load) -# define AO_int_load_dd_acquire_read(addr) \ - AO_int_load(addr) -# define AO_HAVE_int_load_dd_acquire_read -# endif -#endif - - -/* int_store */ - -#if defined(AO_HAVE_int_store_release) && !defined(AO_HAVE_int_store) -# define AO_int_store(addr, val) AO_int_store_release(addr,val) -# define AO_HAVE_int_store -#endif - -#if defined(AO_HAVE_int_store_full) && !defined(AO_HAVE_int_store_release) -# define AO_int_store_release(addr,val) AO_int_store_full(addr,val) -# define AO_HAVE_int_store_release -#endif - -#if defined(AO_HAVE_int_store_full) && !defined(AO_HAVE_int_store_write) -# define AO_int_store_write(addr,val) AO_int_store_full(addr,val) -# define AO_HAVE_int_store_write -#endif - -#if defined(AO_HAVE_int_store_release) && \ - !defined(AO_HAVE_int_store_release_write) -# define AO_int_store_release_write(addr, val) \ - AO_int_store_release(addr,val) -# define AO_HAVE_int_store_release_write -#endif - -#if defined(AO_HAVE_int_store_write) && !defined(AO_HAVE_int_store) -# define AO_int_store(addr, val) AO_int_store_write(addr,val) -# define AO_HAVE_int_store -#endif - -#if defined(AO_HAVE_int_store) && defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_int_store_release) -# define AO_int_store_release(addr,val) \ - (AO_nop_full(), AO_int_store(addr,val)) -# define AO_HAVE_int_store_release -#endif - -#if defined(AO_HAVE_nop_write) && defined(AO_HAVE_int_store) && \ - !defined(AO_HAVE_int_store_write) -# define AO_int_store_write(addr, val) \ - (AO_nop_write(), AO_int_store(addr,val)) -# define AO_HAVE_int_store_write -#endif - -#if defined(AO_HAVE_int_store_write) && \ - !defined(AO_HAVE_int_store_release_write) -# define AO_int_store_release_write(addr, val) AO_int_store_write(addr,val) -# define AO_HAVE_int_store_release_write -#endif - -#if defined(AO_HAVE_int_store_release) && defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_int_store_full) -# define AO_int_store_full(addr, val) \ - (AO_int_store_release(addr, val), AO_nop_full()) -# define AO_HAVE_int_store_full -#endif - - -/* int_fetch_and_add */ -#if defined(AO_HAVE_int_compare_and_swap_full) && \ - !defined(AO_HAVE_int_fetch_and_add_full) - AO_INLINE AO_t - AO_int_fetch_and_add_full(volatile unsigned int *addr, - unsigned int incr) - { - unsigned int old; - do - { - old = *addr; - } - while (!AO_int_compare_and_swap_full(addr, old, old+incr)); - return old; - } -# define AO_HAVE_int_fetch_and_add_full -#endif - -#if defined(AO_HAVE_int_compare_and_swap_acquire) && \ - !defined(AO_HAVE_int_fetch_and_add_acquire) - AO_INLINE AO_t - AO_int_fetch_and_add_acquire(volatile unsigned int *addr, - unsigned int incr) - { - unsigned int old; - do - { - old = *addr; - } - while (!AO_int_compare_and_swap_acquire(addr, old, old+incr)); - return old; - } -# define AO_HAVE_int_fetch_and_add_acquire -#endif - -#if defined(AO_HAVE_int_compare_and_swap_release) && \ - !defined(AO_HAVE_int_fetch_and_add_release) - AO_INLINE AO_t - AO_int_fetch_and_add_release(volatile unsigned int *addr, - unsigned int incr) - { - unsigned int old; - do - { - old = *addr; - } - while (!AO_int_compare_and_swap_release(addr, old, old+incr)); - return old; - } -# define AO_HAVE_int_fetch_and_add_release -#endif - -#if defined(AO_HAVE_int_fetch_and_add_full) -# if !defined(AO_HAVE_int_fetch_and_add_release) -# define AO_int_fetch_and_add_release(addr, val) \ - AO_int_fetch_and_add_full(addr, val) -# define AO_HAVE_int_fetch_and_add_release -# endif -# if !defined(AO_HAVE_int_fetch_and_add_acquire) -# define AO_int_fetch_and_add_acquire(addr, val) \ - AO_int_fetch_and_add_full(addr, val) -# define AO_HAVE_int_fetch_and_add_acquire -# endif -# if !defined(AO_HAVE_int_fetch_and_add_write) -# define AO_int_fetch_and_add_write(addr, val) \ - AO_int_fetch_and_add_full(addr, val) -# define AO_HAVE_int_fetch_and_add_write -# endif -# if !defined(AO_HAVE_int_fetch_and_add_read) -# define AO_int_fetch_and_add_read(addr, val) \ - AO_int_fetch_and_add_full(addr, val) -# define AO_HAVE_int_fetch_and_add_read -# endif -#endif /* AO_HAVE_int_fetch_and_add_full */ - -#if !defined(AO_HAVE_int_fetch_and_add) && \ - defined(AO_HAVE_int_fetch_and_add_release) -# define AO_int_fetch_and_add(addr, val) \ - AO_int_fetch_and_add_release(addr, val) -# define AO_HAVE_int_fetch_and_add -#endif -#if !defined(AO_HAVE_int_fetch_and_add) && \ - defined(AO_HAVE_int_fetch_and_add_acquire) -# define AO_int_fetch_and_add(addr, val) \ - AO_int_fetch_and_add_acquire(addr, val) -# define AO_HAVE_int_fetch_and_add -#endif -#if !defined(AO_HAVE_int_fetch_and_add) && \ - defined(AO_HAVE_int_fetch_and_add_write) -# define AO_int_fetch_and_add(addr, val) \ - AO_int_fetch_and_add_write(addr, val) -# define AO_HAVE_int_fetch_and_add -#endif -#if !defined(AO_HAVE_int_fetch_and_add) && \ - defined(AO_HAVE_int_fetch_and_add_read) -# define AO_int_fetch_and_add(addr, val) \ - AO_int_fetch_and_add_read(addr, val) -# define AO_HAVE_int_fetch_and_add -#endif - -#if defined(AO_HAVE_int_fetch_and_add_acquire) &&\ - defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_int_fetch_and_add_full) -# define AO_int_fetch_and_add_full(addr, val) \ - (AO_nop_full(), AO_int_fetch_and_add_acquire(addr, val)) -#endif - -#if !defined(AO_HAVE_int_fetch_and_add_release_write) && \ - defined(AO_HAVE_int_fetch_and_add_write) -# define AO_int_fetch_and_add_release_write(addr, val) \ - AO_int_fetch_and_add_write(addr, val) -# define AO_HAVE_int_fetch_and_add_release_write -#endif -#if !defined(AO_HAVE_int_fetch_and_add_release_write) && \ - defined(AO_HAVE_int_fetch_and_add_release) -# define AO_int_fetch_and_add_release_write(addr, val) \ - AO_int_fetch_and_add_release(addr, val) -# define AO_HAVE_int_fetch_and_add_release_write -#endif -#if !defined(AO_HAVE_int_fetch_and_add_acquire_read) && \ - defined(AO_HAVE_int_fetch_and_add_read) -# define AO_int_fetch_and_add_acquire_read(addr, val) \ - AO_int_fetch_and_add_read(addr, val) -# define AO_HAVE_int_fetch_and_add_acquire_read -#endif -#if !defined(AO_HAVE_int_fetch_and_add_acquire_read) && \ - defined(AO_HAVE_int_fetch_and_add_acquire) -# define AO_int_fetch_and_add_acquire_read(addr, val) \ - AO_int_fetch_and_add_acquire(addr, val) -# define AO_HAVE_int_fetch_and_add_acquire_read -#endif - -#ifdef AO_NO_DD_ORDERING -# if defined(AO_HAVE_int_fetch_and_add_acquire_read) -# define AO_int_fetch_and_add_dd_acquire_read(addr, val) \ - AO_int_fetch_and_add_acquire_read(addr, val) -# define AO_HAVE_int_fetch_and_add_dd_acquire_read -# endif -#else -# if defined(AO_HAVE_int_fetch_and_add) -# define AO_int_fetch_and_add_dd_acquire_read(addr, val) \ - AO_int_fetch_and_add(addr, val) -# define AO_HAVE_int_fetch_and_add_dd_acquire_read -# endif -#endif - -/* int_fetch_and_add1 */ - -#if defined(AO_HAVE_int_fetch_and_add_full) &&\ - !defined(AO_HAVE_int_fetch_and_add1_full) -# define AO_int_fetch_and_add1_full(addr) \ - AO_int_fetch_and_add_full(addr,1) -# define AO_HAVE_int_fetch_and_add1_full -#endif -#if defined(AO_HAVE_int_fetch_and_add_release) &&\ - !defined(AO_HAVE_int_fetch_and_add1_release) -# define AO_int_fetch_and_add1_release(addr) \ - AO_int_fetch_and_add_release(addr,1) -# define AO_HAVE_int_fetch_and_add1_release -#endif -#if defined(AO_HAVE_int_fetch_and_add_acquire) &&\ - !defined(AO_HAVE_int_fetch_and_add1_acquire) -# define AO_int_fetch_and_add1_acquire(addr) \ - AO_int_fetch_and_add_acquire(addr,1) -# define AO_HAVE_int_fetch_and_add1_acquire -#endif -#if defined(AO_HAVE_int_fetch_and_add_write) &&\ - !defined(AO_HAVE_int_fetch_and_add1_write) -# define AO_int_fetch_and_add1_write(addr) \ - AO_int_fetch_and_add_write(addr,1) -# define AO_HAVE_int_fetch_and_add1_write -#endif -#if defined(AO_HAVE_int_fetch_and_add_read) &&\ - !defined(AO_HAVE_int_fetch_and_add1_read) -# define AO_int_fetch_and_add1_read(addr) \ - AO_int_fetch_and_add_read(addr,1) -# define AO_HAVE_int_fetch_and_add1_read -#endif -#if defined(AO_HAVE_int_fetch_and_add_release_write) &&\ - !defined(AO_HAVE_int_fetch_and_add1_release_write) -# define AO_int_fetch_and_add1_release_write(addr) \ - AO_int_fetch_and_add_release_write(addr,1) -# define AO_HAVE_int_fetch_and_add1_release_write -#endif -#if defined(AO_HAVE_int_fetch_and_add_acquire_read) &&\ - !defined(AO_HAVE_int_fetch_and_add1_acquire_read) -# define AO_int_fetch_and_add1_acquire_read(addr) \ - AO_int_fetch_and_add_acquire_read(addr,1) -# define AO_HAVE_int_fetch_and_add1_acquire_read -#endif -#if defined(AO_HAVE_int_fetch_and_add) &&\ - !defined(AO_HAVE_int_fetch_and_add1) -# define AO_int_fetch_and_add1(addr) \ - AO_int_fetch_and_add(addr,1) -# define AO_HAVE_int_fetch_and_add1 -#endif - -#if defined(AO_HAVE_int_fetch_and_add1_full) -# if !defined(AO_HAVE_int_fetch_and_add1_release) -# define AO_int_fetch_and_add1_release(addr) \ - AO_int_fetch_and_add1_full(addr) -# define AO_HAVE_int_fetch_and_add1_release -# endif -# if !defined(AO_HAVE_int_fetch_and_add1_acquire) -# define AO_int_fetch_and_add1_acquire(addr) \ - AO_int_fetch_and_add1_full(addr) -# define AO_HAVE_int_fetch_and_add1_acquire -# endif -# if !defined(AO_HAVE_int_fetch_and_add1_write) -# define AO_int_fetch_and_add1_write(addr) \ - AO_int_fetch_and_add1_full(addr) -# define AO_HAVE_int_fetch_and_add1_write -# endif -# if !defined(AO_HAVE_int_fetch_and_add1_read) -# define AO_int_fetch_and_add1_read(addr) \ - AO_int_fetch_and_add1_full(addr) -# define AO_HAVE_int_fetch_and_add1_read -# endif -#endif /* AO_HAVE_int_fetch_and_add1_full */ - -#if !defined(AO_HAVE_int_fetch_and_add1) && \ - defined(AO_HAVE_int_fetch_and_add1_release) -# define AO_int_fetch_and_add1(addr) \ - AO_int_fetch_and_add1_release(addr) -# define AO_HAVE_int_fetch_and_add1 -#endif -#if !defined(AO_HAVE_int_fetch_and_add1) && \ - defined(AO_HAVE_int_fetch_and_add1_acquire) -# define AO_int_fetch_and_add1(addr) \ - AO_int_fetch_and_add1_acquire(addr) -# define AO_HAVE_int_fetch_and_add1 -#endif -#if !defined(AO_HAVE_int_fetch_and_add1) && \ - defined(AO_HAVE_int_fetch_and_add1_write) -# define AO_int_fetch_and_add1(addr) \ - AO_int_fetch_and_add1_write(addr) -# define AO_HAVE_int_fetch_and_add1 -#endif -#if !defined(AO_HAVE_int_fetch_and_add1) && \ - defined(AO_HAVE_int_fetch_and_add1_read) -# define AO_int_fetch_and_add1(addr) \ - AO_int_fetch_and_add1_read(addr) -# define AO_HAVE_int_fetch_and_add1 -#endif - -#if defined(AO_HAVE_int_fetch_and_add1_acquire) &&\ - defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_int_fetch_and_add1_full) -# define AO_int_fetch_and_add1_full(addr) \ - (AO_nop_full(), AO_int_fetch_and_add1_acquire(addr)) -# define AO_HAVE_int_fetch_and_add1_full -#endif - -#if !defined(AO_HAVE_int_fetch_and_add1_release_write) && \ - defined(AO_HAVE_int_fetch_and_add1_write) -# define AO_int_fetch_and_add1_release_write(addr) \ - AO_int_fetch_and_add1_write(addr) -# define AO_HAVE_int_fetch_and_add1_release_write -#endif -#if !defined(AO_HAVE_int_fetch_and_add1_release_write) && \ - defined(AO_HAVE_int_fetch_and_add1_release) -# define AO_int_fetch_and_add1_release_write(addr) \ - AO_int_fetch_and_add1_release(addr) -# define AO_HAVE_int_fetch_and_add1_release_write -#endif -#if !defined(AO_HAVE_int_fetch_and_add1_acquire_read) && \ - defined(AO_HAVE_int_fetch_and_add1_read) -# define AO_int_fetch_and_add1_acquire_read(addr) \ - AO_int_fetch_and_add1_read(addr) -# define AO_HAVE_int_fetch_and_add1_acquire_read -#endif -#if !defined(AO_HAVE_int_fetch_and_add1_acquire_read) && \ - defined(AO_HAVE_int_fetch_and_add1_acquire) -# define AO_int_fetch_and_add1_acquire_read(addr) \ - AO_int_fetch_and_add1_acquire(addr) -# define AO_HAVE_int_fetch_and_add1_acquire_read -#endif - -#ifdef AO_NO_DD_ORDERING -# if defined(AO_HAVE_int_fetch_and_add1_acquire_read) -# define AO_int_fetch_and_add1_dd_acquire_read(addr) \ - AO_int_fetch_and_add1_acquire_read(addr) -# define AO_HAVE_int_fetch_and_add1_dd_acquire_read -# endif -#else -# if defined(AO_HAVE_int_fetch_and_add1) -# define AO_int_fetch_and_add1_dd_acquire_read(addr) \ - AO_int_fetch_and_add1(addr) -# define AO_HAVE_int_fetch_and_add1_dd_acquire_read -# endif -#endif - -/* int_fetch_and_sub1 */ - -#if defined(AO_HAVE_int_fetch_and_add_full) &&\ - !defined(AO_HAVE_int_fetch_and_sub1_full) -# define AO_int_fetch_and_sub1_full(addr) \ - AO_int_fetch_and_add_full(addr,(unsigned int)(-1)) -# define AO_HAVE_int_fetch_and_sub1_full -#endif -#if defined(AO_HAVE_int_fetch_and_add_release) &&\ - !defined(AO_HAVE_int_fetch_and_sub1_release) -# define AO_int_fetch_and_sub1_release(addr) \ - AO_int_fetch_and_add_release(addr,(unsigned int)(-1)) -# define AO_HAVE_int_fetch_and_sub1_release -#endif -#if defined(AO_HAVE_int_fetch_and_add_acquire) &&\ - !defined(AO_HAVE_int_fetch_and_sub1_acquire) -# define AO_int_fetch_and_sub1_acquire(addr) \ - AO_int_fetch_and_add_acquire(addr,(unsigned int)(-1)) -# define AO_HAVE_int_fetch_and_sub1_acquire -#endif -#if defined(AO_HAVE_int_fetch_and_add_write) &&\ - !defined(AO_HAVE_int_fetch_and_sub1_write) -# define AO_int_fetch_and_sub1_write(addr) \ - AO_int_fetch_and_add_write(addr,(unsigned int)(-1)) -# define AO_HAVE_int_fetch_and_sub1_write -#endif -#if defined(AO_HAVE_int_fetch_and_add_read) &&\ - !defined(AO_HAVE_int_fetch_and_sub1_read) -# define AO_int_fetch_and_sub1_read(addr) \ - AO_int_fetch_and_add_read(addr,(unsigned int)(-1)) -# define AO_HAVE_int_fetch_and_sub1_read -#endif -#if defined(AO_HAVE_int_fetch_and_add_release_write) &&\ - !defined(AO_HAVE_int_fetch_and_sub1_release_write) -# define AO_int_fetch_and_sub1_release_write(addr) \ - AO_int_fetch_and_add_release_write(addr,(unsigned int)(-1)) -# define AO_HAVE_int_fetch_and_sub1_release_write -#endif -#if defined(AO_HAVE_int_fetch_and_add_acquire_read) &&\ - !defined(AO_HAVE_int_fetch_and_sub1_acquire_read) -# define AO_int_fetch_and_sub1_acquire_read(addr) \ - AO_int_fetch_and_add_acquire_read(addr,(unsigned int)(-1)) -# define AO_HAVE_int_fetch_and_sub1_acquire_read -#endif -#if defined(AO_HAVE_int_fetch_and_add) &&\ - !defined(AO_HAVE_int_fetch_and_sub1) -# define AO_int_fetch_and_sub1(addr) \ - AO_int_fetch_and_add(addr,(unsigned int)(-1)) -# define AO_HAVE_int_fetch_and_sub1 -#endif - -#if defined(AO_HAVE_int_fetch_and_sub1_full) -# if !defined(AO_HAVE_int_fetch_and_sub1_release) -# define AO_int_fetch_and_sub1_release(addr) \ - AO_int_fetch_and_sub1_full(addr) -# define AO_HAVE_int_fetch_and_sub1_release -# endif -# if !defined(AO_HAVE_int_fetch_and_sub1_acquire) -# define AO_int_fetch_and_sub1_acquire(addr) \ - AO_int_fetch_and_sub1_full(addr) -# define AO_HAVE_int_fetch_and_sub1_acquire -# endif -# if !defined(AO_HAVE_int_fetch_and_sub1_write) -# define AO_int_fetch_and_sub1_write(addr) \ - AO_int_fetch_and_sub1_full(addr) -# define AO_HAVE_int_fetch_and_sub1_write -# endif -# if !defined(AO_HAVE_int_fetch_and_sub1_read) -# define AO_int_fetch_and_sub1_read(addr) \ - AO_int_fetch_and_sub1_full(addr) -# define AO_HAVE_int_fetch_and_sub1_read -# endif -#endif /* AO_HAVE_int_fetch_and_sub1_full */ - -#if !defined(AO_HAVE_int_fetch_and_sub1) && \ - defined(AO_HAVE_int_fetch_and_sub1_release) -# define AO_int_fetch_and_sub1(addr) \ - AO_int_fetch_and_sub1_release(addr) -# define AO_HAVE_int_fetch_and_sub1 -#endif -#if !defined(AO_HAVE_int_fetch_and_sub1) && \ - defined(AO_HAVE_int_fetch_and_sub1_acquire) -# define AO_int_fetch_and_sub1(addr) \ - AO_int_fetch_and_sub1_acquire(addr) -# define AO_HAVE_int_fetch_and_sub1 -#endif -#if !defined(AO_HAVE_int_fetch_and_sub1) && \ - defined(AO_HAVE_int_fetch_and_sub1_write) -# define AO_int_fetch_and_sub1(addr) \ - AO_int_fetch_and_sub1_write(addr) -# define AO_HAVE_int_fetch_and_sub1 -#endif -#if !defined(AO_HAVE_int_fetch_and_sub1) && \ - defined(AO_HAVE_int_fetch_and_sub1_read) -# define AO_int_fetch_and_sub1(addr) \ - AO_int_fetch_and_sub1_read(addr) -# define AO_HAVE_int_fetch_and_sub1 -#endif - -#if defined(AO_HAVE_int_fetch_and_sub1_acquire) &&\ - defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_int_fetch_and_sub1_full) -# define AO_int_fetch_and_sub1_full(addr) \ - (AO_nop_full(), AO_int_fetch_and_sub1_acquire(addr)) -# define AO_HAVE_int_fetch_and_sub1_full -#endif - -#if !defined(AO_HAVE_int_fetch_and_sub1_release_write) && \ - defined(AO_HAVE_int_fetch_and_sub1_write) -# define AO_int_fetch_and_sub1_release_write(addr) \ - AO_int_fetch_and_sub1_write(addr) -# define AO_HAVE_int_fetch_and_sub1_release_write -#endif -#if !defined(AO_HAVE_int_fetch_and_sub1_release_write) && \ - defined(AO_HAVE_int_fetch_and_sub1_release) -# define AO_int_fetch_and_sub1_release_write(addr) \ - AO_int_fetch_and_sub1_release(addr) -# define AO_HAVE_int_fetch_and_sub1_release_write -#endif -#if !defined(AO_HAVE_int_fetch_and_sub1_acquire_read) && \ - defined(AO_HAVE_int_fetch_and_sub1_read) -# define AO_int_fetch_and_sub1_acquire_read(addr) \ - AO_int_fetch_and_sub1_read(addr) -# define AO_HAVE_int_fetch_and_sub1_acquire_read -#endif -#if !defined(AO_HAVE_int_fetch_and_sub1_acquire_read) && \ - defined(AO_HAVE_int_fetch_and_sub1_acquire) -# define AO_int_fetch_and_sub1_acquire_read(addr) \ - AO_int_fetch_and_sub1_acquire(addr) -# define AO_HAVE_int_fetch_and_sub1_acquire_read -#endif - -#ifdef AO_NO_DD_ORDERING -# if defined(AO_HAVE_int_fetch_and_sub1_acquire_read) -# define AO_int_fetch_and_sub1_dd_acquire_read(addr) \ - AO_int_fetch_and_sub1_acquire_read(addr) -# define AO_HAVE_int_fetch_and_sub1_dd_acquire_read -# endif -#else -# if defined(AO_HAVE_int_fetch_and_sub1) -# define AO_int_fetch_and_sub1_dd_acquire_read(addr) \ - AO_int_fetch_and_sub1(addr) -# define AO_HAVE_int_fetch_and_sub1_dd_acquire_read -# endif -#endif - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/generalize-small.template b/src/racket/gc/libatomic_ops/src/atomic_ops/generalize-small.template deleted file mode 100644 index b7e02b01b8..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/generalize-small.template +++ /dev/null @@ -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 - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/generalize.h b/src/racket/gc/libatomic_ops/src/atomic_ops/generalize.h deleted file mode 100644 index bfcf2d7ba2..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/generalize.h +++ /dev/null @@ -1,1355 +0,0 @@ -/* - * Copyright (c) 2003-2004 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. - */ - -/* - * Generalize atomic operations for atomic_ops.h. - * Should not be included directly. - * - * We make no attempt to define useless operations, such as - * AO_nop_acquire - * AO_nop_release - * - * We have also so far neglected to define some others, which - * do not appear likely to be useful, e.g. stores with acquire - * or read barriers. - * - * This file is sometimes included twice by atomic_ops.h. - * All definitions include explicit checks that we are not replacing - * an earlier definition. In general, more desirable expansions - * appear earlier so that we are more likely to use them. - * - * We only make safe generalizations, except that by default we define - * the ...dd_acquire_read operations to be equivalent to those without - * a barrier. On platforms for which this is unsafe, the platform-specific - * file must define AO_NO_DD_ORDERING. - */ - -#ifndef ATOMIC_OPS_H -# error Atomic_ops_generalize.h should not be included directly. -#endif - -#if AO_CHAR_TS_T -# define AO_TS_COMPARE_AND_SWAP_FULL(a,o,n) \ - AO_char_compare_and_swap_full(a,o,n) -# define AO_TS_COMPARE_AND_SWAP_ACQUIRE(a,o,n) \ - AO_char_compare_and_swap_acquire(a,o,n) -# define AO_TS_COMPARE_AND_SWAP_RELEASE(a,o,n) \ - AO_char_compare_and_swap_release(a,o,n) -# define AO_TS_COMPARE_AND_SWAP(a,o,n) \ - AO_char_compare_and_swap(a,o,n) -#endif - -#if AO_AO_TS_T -# define AO_TS_COMPARE_AND_SWAP_FULL(a,o,n) \ - AO_compare_and_swap_full(a,o,n) -# define AO_TS_COMPARE_AND_SWAP_ACQUIRE(a,o,n) \ - AO_compare_and_swap_acquire(a,o,n) -# define AO_TS_COMPARE_AND_SWAP_RELEASE(a,o,n) \ - AO_compare_and_swap_release(a,o,n) -# define AO_TS_COMPARE_AND_SWAP(a,o,n) \ - AO_compare_and_swap(a,o,n) -#endif - -/* Generate test_and_set_full, if necessary and possible. */ -#if !defined(AO_HAVE_test_and_set) && \ - !defined(AO_HAVE_test_and_set_release) && \ - !defined(AO_HAVE_test_and_set_acquire) && \ - !defined(AO_HAVE_test_and_set_read) && \ - !defined(AO_HAVE_test_and_set_full) -# if AO_AO_TS_T && defined(AO_HAVE_compare_and_swap_full) || \ - AO_CHAR_TS_T && defined(AO_HAVE_char_compare_and_swap_full) - AO_INLINE AO_TS_VAL_t - AO_test_and_set_full(volatile AO_TS_t *addr) - { - if (AO_TS_COMPARE_AND_SWAP_FULL(addr, AO_TS_CLEAR, AO_TS_SET)) - return AO_TS_CLEAR; - else - return AO_TS_SET; - } -# define AO_HAVE_test_and_set_full -# endif /* AO_HAVE_compare_and_swap_full */ - -# if AO_AO_TS_T && defined(AO_HAVE_compare_and_swap_acquire) || \ - AO_CHAR_TS_T && defined(AO_HAVE_char_compare_and_swap_acquire) - AO_INLINE AO_TS_VAL_t - AO_test_and_set_acquire(volatile AO_TS_t *addr) - { - if (AO_TS_COMPARE_AND_SWAP_ACQUIRE(addr, AO_TS_CLEAR, AO_TS_SET)) - return AO_TS_CLEAR; - else - return AO_TS_SET; - } -# define AO_HAVE_test_and_set_acquire -# endif /* AO_HAVE_compare_and_swap_acquire */ - -# if AO_AO_TS_T && defined(AO_HAVE_compare_and_swap_release) || \ - AO_CHAR_TS_T && defined(AO_HAVE_char_compare_and_swap_release) - AO_INLINE AO_TS_VAL_t - AO_test_and_set_release(volatile AO_TS_t *addr) - { - if (AO_TS_COMPARE_AND_SWAP_RELEASE(addr, AO_TS_CLEAR, AO_TS_SET)) - return AO_TS_CLEAR; - else - return AO_TS_SET; - } -# define AO_HAVE_test_and_set_release -# endif /* AO_HAVE_compare_and_swap_release */ - -# if AO_AO_TS_T && defined(AO_HAVE_compare_and_swap) || \ - AO_CHAR_TS_T && defined(AO_HAVE_char_compare_and_swap) - AO_INLINE AO_TS_VAL_t - AO_test_and_set(volatile AO_TS_t *addr) - { - if (AO_TS_COMPARE_AND_SWAP(addr, AO_TS_CLEAR, AO_TS_SET)) - return AO_TS_CLEAR; - else - return AO_TS_SET; - } -# define AO_HAVE_test_and_set -# endif /* AO_HAVE_compare_and_swap */ - -# if defined(AO_HAVE_test_and_set) && defined(AO_HAVE_nop_full) \ - && !defined(AO_HAVE_test_and_set_acquire) - AO_INLINE AO_TS_VAL_t - AO_test_and_set_acquire(volatile AO_TS_t *addr) - { - AO_TS_VAL_t result = AO_test_and_set(addr); - AO_nop_full(); - return result; - } -# define AO_HAVE_test_and_set_acquire -# endif - -#endif /* No prior test and set */ - -/* Nop */ -#if !defined(AO_HAVE_nop) - AO_INLINE void AO_nop(void) {} -# define AO_HAVE_nop -#endif - -#if defined(AO_HAVE_test_and_set_full) && !defined(AO_HAVE_nop_full) - AO_INLINE void - AO_nop_full() - { - AO_TS_t dummy = AO_TS_INITIALIZER; - AO_test_and_set_full(&dummy); - } -# define AO_HAVE_nop_full -#endif - -#if defined(AO_HAVE_nop_acquire) -# error AO_nop_acquire is useless: dont define. -#endif -#if defined(AO_HAVE_nop_release) -# error AO_nop_release is useless: dont define. -#endif - -#if defined(AO_HAVE_nop_full) && !defined(AO_HAVE_nop_read) -# define AO_nop_read() AO_nop_full() -# define AO_HAVE_nop_read -#endif - -#if defined(AO_HAVE_nop_full) && !defined(AO_HAVE_nop_write) -# define AO_nop_write() AO_nop_full() -# define AO_HAVE_nop_write -#endif - -/* Load */ -#if defined(AO_HAVE_load_full) && !defined(AO_HAVE_load_acquire) -# define AO_load_acquire(addr) AO_load_full(addr) -# define AO_HAVE_load_acquire -#endif - -#if defined(AO_HAVE_load_acquire) && !defined(AO_HAVE_load) -# define AO_load(addr) AO_load_acquire(addr) -# define AO_HAVE_load -#endif - -#if defined(AO_HAVE_load_full) && !defined(AO_HAVE_load_read) -# define AO_load_read(addr) AO_load_full(addr) -# define AO_HAVE_load_read -#endif - -#if !defined(AO_HAVE_load_acquire_read) && defined(AO_HAVE_load_acquire) -# define AO_load_acquire_read(addr) AO_load_acquire(addr) -# define AO_HAVE_load_acquire_read -#endif - -#if defined(AO_HAVE_load) && defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_load_acquire) - AO_INLINE AO_t - AO_load_acquire(volatile AO_t *addr) - { - AO_t result = AO_load(addr); - /* Acquire barrier would be useless, since the load could be delayed */ - /* beyond it. */ - AO_nop_full(); - return result; - } -# define AO_HAVE_load_acquire -#endif - -#if defined(AO_HAVE_load) && defined(AO_HAVE_nop_read) && \ - !defined(AO_HAVE_load_read) - AO_INLINE AO_t - AO_load_read(volatile AO_t *addr) - { - AO_t result = AO_load(addr); - /* Acquire barrier would be useless, since the load could be delayed */ - /* beyond it. */ - AO_nop_read(); - return result; - } -# define AO_HAVE_load_read -#endif - -#if defined(AO_HAVE_load_acquire) && defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_load_full) -# define AO_load_full(addr) (AO_nop_full(), AO_load_acquire(addr)) -# define AO_HAVE_load_full -#endif - -#if !defined(AO_HAVE_load_acquire_read) && defined(AO_HAVE_load_read) -# define AO_load_acquire_read(addr) AO_load_read(addr) -# define AO_HAVE_load_acquire_read -#endif - -#if defined(AO_HAVE_load_acquire_read) && !defined(AO_HAVE_load) -# define AO_load(addr) AO_load_acquire_read(addr) -# define AO_HAVE_load -#endif - -#ifdef AO_NO_DD_ORDERING -# if defined(AO_HAVE_load_acquire_read) -# define AO_load_dd_acquire_read(addr) AO_load_acquire_read(addr) -# define AO_HAVE_load_dd_acquire_read -# endif -#else -# if defined(AO_HAVE_load) -# define AO_load_dd_acquire_read(addr) AO_load(addr) -# define AO_HAVE_load_dd_acquire_read -# endif -#endif - - -/* Store */ - -#if defined(AO_HAVE_store_full) && !defined(AO_HAVE_store_release) -# define AO_store_release(addr,val) AO_store_full(addr,val) -# define AO_HAVE_store_release -#endif - -#if defined(AO_HAVE_store_release) && !defined(AO_HAVE_store) -# define AO_store(addr, val) AO_store_release(addr,val) -# define AO_HAVE_store -#endif - -#if defined(AO_HAVE_store_full) && !defined(AO_HAVE_store_write) -# define AO_store_write(addr,val) AO_store_full(addr,val) -# define AO_HAVE_store_write -#endif - -#if defined(AO_HAVE_store_release) && !defined(AO_HAVE_store_release_write) -# define AO_store_release_write(addr, val) AO_store_release(addr,val) -# define AO_HAVE_store_release_write -#endif - -#if defined(AO_HAVE_store_write) && !defined(AO_HAVE_store) -# define AO_store(addr, val) AO_store_write(addr,val) -# define AO_HAVE_store -#endif - -#if defined(AO_HAVE_store) && defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_store_release) -# define AO_store_release(addr,val) (AO_nop_full(), AO_store(addr,val)) -# define AO_HAVE_store_release -#endif - -#if defined(AO_HAVE_nop_write) && defined(AO_HAVE_store) && \ - !defined(AO_HAVE_store_write) -# define AO_store_write(addr, val) (AO_nop_write(), AO_store(addr,val)) -# define AO_HAVE_store_write -#endif - -#if defined(AO_HAVE_store_write) && !defined(AO_HAVE_store_release_write) -# define AO_store_release_write(addr, val) AO_store_write(addr,val) -# define AO_HAVE_store_release_write -#endif - -#if defined(AO_HAVE_store_release) && defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_store_full) -# define AO_store_full(addr, val) (AO_store_release(addr, val), AO_nop_full()) -# define AO_HAVE_store_full -#endif - -/* NEC LE-IT: Test and set */ -#if defined(AO_HAVE_test_and_set) && \ - defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_test_and_set_release) -# define AO_test_and_set_release(addr) \ - (AO_nop_full(), AO_test_and_set(addr)) -# define AO_HAVE_test_and_set_release -#endif - -#if defined(AO_HAVE_test_and_set) && \ - defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_test_and_set_acquire) -AO_INLINE AO_TS_t -AO_test_and_set_acquire(volatile AO_TS_t *addr) -{ - AO_TS_t res = AO_test_and_set(addr); - AO_nop_full(); - return res; -} -# define AO_HAVE_test_and_set_acquire -#endif - - -/* Fetch_and_add */ -/* We first try to implement fetch_and_add variants in terms */ -/* of the corresponding compare_and_swap variants to minimize */ -/* adding barriers. */ -#if defined(AO_HAVE_compare_and_swap_full) && \ - !defined(AO_HAVE_fetch_and_add_full) - AO_INLINE AO_t - AO_fetch_and_add_full(volatile AO_t *addr, AO_t incr) - { - AO_t old; - do - { - old = *addr; - } - while (!AO_compare_and_swap_full(addr, old, old+incr)); - return old; - } -# define AO_HAVE_fetch_and_add_full -#endif - -#if defined(AO_HAVE_compare_and_swap_acquire) && \ - !defined(AO_HAVE_fetch_and_add_acquire) - AO_INLINE AO_t - AO_fetch_and_add_acquire(volatile AO_t *addr, AO_t incr) - { - AO_t old; - do - { - old = *addr; - } - while (!AO_compare_and_swap_acquire(addr, old, old+incr)); - return old; - } -# define AO_HAVE_fetch_and_add_acquire -#endif - -#if defined(AO_HAVE_compare_and_swap_release) && \ - !defined(AO_HAVE_fetch_and_add_release) - AO_INLINE AO_t - AO_fetch_and_add_release(volatile AO_t *addr, AO_t incr) - { - AO_t old; - do - { - old = *addr; - } - while (!AO_compare_and_swap_release(addr, old, old+incr)); - return old; - } -# define AO_HAVE_fetch_and_add_release -#endif - -#if defined(AO_HAVE_compare_and_swap) && \ - !defined(AO_HAVE_fetch_and_add) - AO_INLINE AO_t - AO_fetch_and_add(volatile AO_t *addr, AO_t incr) - { - AO_t old; - do - { - old = *addr; - } - while (!AO_compare_and_swap(addr, old, old+incr)); - return old; - } -# define AO_HAVE_fetch_and_add -#endif - -#if defined(AO_HAVE_fetch_and_add_full) -# if !defined(AO_HAVE_fetch_and_add_release) -# define AO_fetch_and_add_release(addr, val) \ - AO_fetch_and_add_full(addr, val) -# define AO_HAVE_fetch_and_add_release -# endif -# if !defined(AO_HAVE_fetch_and_add_acquire) -# define AO_fetch_and_add_acquire(addr, val) \ - AO_fetch_and_add_full(addr, val) -# define AO_HAVE_fetch_and_add_acquire -# endif -# if !defined(AO_HAVE_fetch_and_add_write) -# define AO_fetch_and_add_write(addr, val) \ - AO_fetch_and_add_full(addr, val) -# define AO_HAVE_fetch_and_add_write -# endif -# if !defined(AO_HAVE_fetch_and_add_read) -# define AO_fetch_and_add_read(addr, val) \ - AO_fetch_and_add_full(addr, val) -# define AO_HAVE_fetch_and_add_read -# endif -#endif /* AO_HAVE_fetch_and_add_full */ - -#if !defined(AO_HAVE_fetch_and_add) && \ - defined(AO_HAVE_fetch_and_add_release) -# define AO_fetch_and_add(addr, val) \ - AO_fetch_and_add_release(addr, val) -# define AO_HAVE_fetch_and_add -#endif -#if !defined(AO_HAVE_fetch_and_add) && \ - defined(AO_HAVE_fetch_and_add_acquire) -# define AO_fetch_and_add(addr, val) \ - AO_fetch_and_add_acquire(addr, val) -# define AO_HAVE_fetch_and_add -#endif -#if !defined(AO_HAVE_fetch_and_add) && \ - defined(AO_HAVE_fetch_and_add_write) -# define AO_fetch_and_add(addr, val) \ - AO_fetch_and_add_write(addr, val) -# define AO_HAVE_fetch_and_add -#endif -#if !defined(AO_HAVE_fetch_and_add) && \ - defined(AO_HAVE_fetch_and_add_read) -# define AO_fetch_and_add(addr, val) \ - AO_fetch_and_add_read(addr, val) -# define AO_HAVE_fetch_and_add -#endif - -#if defined(AO_HAVE_fetch_and_add_acquire) &&\ - defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_fetch_and_add_full) -# define AO_fetch_and_add_full(addr, val) \ - (AO_nop_full(), AO_fetch_and_add_acquire(addr, val)) -# define AO_HAVE_fetch_and_add_full -#endif - -#if !defined(AO_HAVE_fetch_and_add_release_write) && \ - defined(AO_HAVE_fetch_and_add_write) -# define AO_fetch_and_add_release_write(addr, val) \ - AO_fetch_and_add_write(addr, val) -# define AO_HAVE_fetch_and_add_release_write -#endif -#if !defined(AO_HAVE_fetch_and_add_release_write) && \ - defined(AO_HAVE_fetch_and_add_release) -# define AO_fetch_and_add_release_write(addr, val) \ - AO_fetch_and_add_release(addr, val) -# define AO_HAVE_fetch_and_add_release_write -#endif -#if !defined(AO_HAVE_fetch_and_add_acquire_read) && \ - defined(AO_HAVE_fetch_and_add_read) -# define AO_fetch_and_add_acquire_read(addr, val) \ - AO_fetch_and_add_read(addr, val) -# define AO_HAVE_fetch_and_add_acquire_read -#endif -#if !defined(AO_HAVE_fetch_and_add_acquire_read) && \ - defined(AO_HAVE_fetch_and_add_acquire) -# define AO_fetch_and_add_acquire_read(addr, val) \ - AO_fetch_and_add_acquire(addr, val) -# define AO_HAVE_fetch_and_add_acquire_read -#endif - -#ifdef AO_NO_DD_ORDERING -# if defined(AO_HAVE_fetch_and_add_acquire_read) -# define AO_fetch_and_add_dd_acquire_read(addr, val) \ - AO_fetch_and_add_acquire_read(addr, val) -# define AO_HAVE_fetch_and_add_dd_acquire_read -# endif -#else -# if defined(AO_HAVE_fetch_and_add) -# define AO_fetch_and_add_dd_acquire_read(addr, val) \ - AO_fetch_and_add(addr, val) -# define AO_HAVE_fetch_and_add_dd_acquire_read -# endif -#endif - -/* Fetch_and_add1 */ - -#if defined(AO_HAVE_fetch_and_add_full) &&\ - !defined(AO_HAVE_fetch_and_add1_full) -# define AO_fetch_and_add1_full(addr) AO_fetch_and_add_full(addr,1) -# define AO_HAVE_fetch_and_add1_full -#endif -#if defined(AO_HAVE_fetch_and_add_release) &&\ - !defined(AO_HAVE_fetch_and_add1_release) -# define AO_fetch_and_add1_release(addr) AO_fetch_and_add_release(addr,1) -# define AO_HAVE_fetch_and_add1_release -#endif -#if defined(AO_HAVE_fetch_and_add_acquire) &&\ - !defined(AO_HAVE_fetch_and_add1_acquire) -# define AO_fetch_and_add1_acquire(addr) AO_fetch_and_add_acquire(addr,1) -# define AO_HAVE_fetch_and_add1_acquire -#endif -#if defined(AO_HAVE_fetch_and_add_write) &&\ - !defined(AO_HAVE_fetch_and_add1_write) -# define AO_fetch_and_add1_write(addr) AO_fetch_and_add_write(addr,1) -# define AO_HAVE_fetch_and_add1_write -#endif -#if defined(AO_HAVE_fetch_and_add_read) &&\ - !defined(AO_HAVE_fetch_and_add1_read) -# define AO_fetch_and_add1_read(addr) AO_fetch_and_add_read(addr,1) -# define AO_HAVE_fetch_and_add1_read -#endif -#if defined(AO_HAVE_fetch_and_add_release_write) &&\ - !defined(AO_HAVE_fetch_and_add1_release_write) -# define AO_fetch_and_add1_release_write(addr) \ - AO_fetch_and_add_release_write(addr,1) -# define AO_HAVE_fetch_and_add1_release_write -#endif -#if defined(AO_HAVE_fetch_and_add_acquire_read) &&\ - !defined(AO_HAVE_fetch_and_add1_acquire_read) -# define AO_fetch_and_add1_acquire_read(addr) \ - AO_fetch_and_add_acquire_read(addr,1) -# define AO_HAVE_fetch_and_add1_acquire_read -#endif -#if defined(AO_HAVE_fetch_and_add) &&\ - !defined(AO_HAVE_fetch_and_add1) -# define AO_fetch_and_add1(addr) \ - AO_fetch_and_add(addr,1) -# define AO_HAVE_fetch_and_add1 -#endif - -#if defined(AO_HAVE_fetch_and_add1_full) -# if !defined(AO_HAVE_fetch_and_add1_release) -# define AO_fetch_and_add1_release(addr) \ - AO_fetch_and_add1_full(addr) -# define AO_HAVE_fetch_and_add1_release -# endif -# if !defined(AO_HAVE_fetch_and_add1_acquire) -# define AO_fetch_and_add1_acquire(addr) \ - AO_fetch_and_add1_full(addr) -# define AO_HAVE_fetch_and_add1_acquire -# endif -# if !defined(AO_HAVE_fetch_and_add1_write) -# define AO_fetch_and_add1_write(addr) \ - AO_fetch_and_add1_full(addr) -# define AO_HAVE_fetch_and_add1_write -# endif -# if !defined(AO_HAVE_fetch_and_add1_read) -# define AO_fetch_and_add1_read(addr) \ - AO_fetch_and_add1_full(addr) -# define AO_HAVE_fetch_and_add1_read -# endif -#endif /* AO_HAVE_fetch_and_add1_full */ - -#if !defined(AO_HAVE_fetch_and_add1) && \ - defined(AO_HAVE_fetch_and_add1_release) -# define AO_fetch_and_add1(addr) \ - AO_fetch_and_add1_release(addr) -# define AO_HAVE_fetch_and_add1 -#endif -#if !defined(AO_HAVE_fetch_and_add1) && \ - defined(AO_HAVE_fetch_and_add1_acquire) -# define AO_fetch_and_add1(addr) \ - AO_fetch_and_add1_acquire(addr) -# define AO_HAVE_fetch_and_add1 -#endif -#if !defined(AO_HAVE_fetch_and_add1) && \ - defined(AO_HAVE_fetch_and_add1_write) -# define AO_fetch_and_add1(addr) \ - AO_fetch_and_add1_write(addr) -# define AO_HAVE_fetch_and_add1 -#endif -#if !defined(AO_HAVE_fetch_and_add1) && \ - defined(AO_HAVE_fetch_and_add1_read) -# define AO_fetch_and_add1(addr) \ - AO_fetch_and_add1_read(addr) -# define AO_HAVE_fetch_and_add1 -#endif - -#if defined(AO_HAVE_fetch_and_add1_acquire) &&\ - defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_fetch_and_add1_full) -# define AO_fetch_and_add1_full(addr) \ - (AO_nop_full(), AO_fetch_and_add1_acquire(addr)) -# define AO_HAVE_fetch_and_add1_full -#endif - -#if !defined(AO_HAVE_fetch_and_add1_release_write) && \ - defined(AO_HAVE_fetch_and_add1_write) -# define AO_fetch_and_add1_release_write(addr) \ - AO_fetch_and_add1_write(addr) -# define AO_HAVE_fetch_and_add1_release_write -#endif -#if !defined(AO_HAVE_fetch_and_add1_release_write) && \ - defined(AO_HAVE_fetch_and_add1_release) -# define AO_fetch_and_add1_release_write(addr) \ - AO_fetch_and_add1_release(addr) -# define AO_HAVE_fetch_and_add1_release_write -#endif -#if !defined(AO_HAVE_fetch_and_add1_acquire_read) && \ - defined(AO_HAVE_fetch_and_add1_read) -# define AO_fetch_and_add1_acquire_read(addr) \ - AO_fetch_and_add1_read(addr) -# define AO_HAVE_fetch_and_add1_acquire_read -#endif -#if !defined(AO_HAVE_fetch_and_add1_acquire_read) && \ - defined(AO_HAVE_fetch_and_add1_acquire) -# define AO_fetch_and_add1_acquire_read(addr) \ - AO_fetch_and_add1_acquire(addr) -# define AO_HAVE_fetch_and_add1_acquire_read -#endif - -#ifdef AO_NO_DD_ORDERING -# if defined(AO_HAVE_fetch_and_add1_acquire_read) -# define AO_fetch_and_add1_dd_acquire_read(addr) \ - AO_fetch_and_add1_acquire_read(addr) -# define AO_HAVE_fetch_and_add1_dd_acquire_read -# endif -#else -# if defined(AO_HAVE_fetch_and_add1) -# define AO_fetch_and_add1_dd_acquire_read(addr) AO_fetch_and_add1(addr) -# define AO_HAVE_fetch_and_add1_dd_acquire_read -# endif -#endif - -/* Fetch_and_sub1 */ - -#if defined(AO_HAVE_fetch_and_add_full) &&\ - !defined(AO_HAVE_fetch_and_sub1_full) -# define AO_fetch_and_sub1_full(addr) AO_fetch_and_add_full(addr,(AO_t)(-1)) -# define AO_HAVE_fetch_and_sub1_full -#endif -#if defined(AO_HAVE_fetch_and_add_release) &&\ - !defined(AO_HAVE_fetch_and_sub1_release) -# define AO_fetch_and_sub1_release(addr) \ - AO_fetch_and_add_release(addr,(AO_t)(-1)) -# define AO_HAVE_fetch_and_sub1_release -#endif -#if defined(AO_HAVE_fetch_and_add_acquire) &&\ - !defined(AO_HAVE_fetch_and_sub1_acquire) -# define AO_fetch_and_sub1_acquire(addr) \ - AO_fetch_and_add_acquire(addr,(AO_t)(-1)) -# define AO_HAVE_fetch_and_sub1_acquire -#endif -#if defined(AO_HAVE_fetch_and_add_write) &&\ - !defined(AO_HAVE_fetch_and_sub1_write) -# define AO_fetch_and_sub1_write(addr) \ - AO_fetch_and_add_write(addr,(AO_t)(-1)) -# define AO_HAVE_fetch_and_sub1_write -#endif -#if defined(AO_HAVE_fetch_and_add_read) &&\ - !defined(AO_HAVE_fetch_and_sub1_read) -# define AO_fetch_and_sub1_read(addr) \ - AO_fetch_and_add_read(addr,(AO_t)(-1)) -# define AO_HAVE_fetch_and_sub1_read -#endif -#if defined(AO_HAVE_fetch_and_add_release_write) &&\ - !defined(AO_HAVE_fetch_and_sub1_release_write) -# define AO_fetch_and_sub1_release_write(addr) \ - AO_fetch_and_add_release_write(addr,(AO_t)(-1)) -# define AO_HAVE_fetch_and_sub1_release_write -#endif -#if defined(AO_HAVE_fetch_and_add_acquire_read) &&\ - !defined(AO_HAVE_fetch_and_sub1_acquire_read) -# define AO_fetch_and_sub1_acquire_read(addr) \ - AO_fetch_and_add_acquire_read(addr,(AO_t)(-1)) -# define AO_HAVE_fetch_and_sub1_acquire_read -#endif -#if defined(AO_HAVE_fetch_and_add) &&\ - !defined(AO_HAVE_fetch_and_sub1) -# define AO_fetch_and_sub1(addr) \ - AO_fetch_and_add(addr,(AO_t)(-1)) -# define AO_HAVE_fetch_and_sub1 -#endif - -#if defined(AO_HAVE_fetch_and_sub1_full) -# if !defined(AO_HAVE_fetch_and_sub1_release) -# define AO_fetch_and_sub1_release(addr) \ - AO_fetch_and_sub1_full(addr) -# define AO_HAVE_fetch_and_sub1_release -# endif -# if !defined(AO_HAVE_fetch_and_sub1_acquire) -# define AO_fetch_and_sub1_acquire(addr) \ - AO_fetch_and_sub1_full(addr) -# define AO_HAVE_fetch_and_sub1_acquire -# endif -# if !defined(AO_HAVE_fetch_and_sub1_write) -# define AO_fetch_and_sub1_write(addr) \ - AO_fetch_and_sub1_full(addr) -# define AO_HAVE_fetch_and_sub1_write -# endif -# if !defined(AO_HAVE_fetch_and_sub1_read) -# define AO_fetch_and_sub1_read(addr) \ - AO_fetch_and_sub1_full(addr) -# define AO_HAVE_fetch_and_sub1_read -# endif -#endif /* AO_HAVE_fetch_and_sub1_full */ - -#if !defined(AO_HAVE_fetch_and_sub1) && \ - defined(AO_HAVE_fetch_and_sub1_release) -# define AO_fetch_and_sub1(addr) \ - AO_fetch_and_sub1_release(addr) -# define AO_HAVE_fetch_and_sub1 -#endif -#if !defined(AO_HAVE_fetch_and_sub1) && \ - defined(AO_HAVE_fetch_and_sub1_acquire) -# define AO_fetch_and_sub1(addr) \ - AO_fetch_and_sub1_acquire(addr) -# define AO_HAVE_fetch_and_sub1 -#endif -#if !defined(AO_HAVE_fetch_and_sub1) && \ - defined(AO_HAVE_fetch_and_sub1_write) -# define AO_fetch_and_sub1(addr) \ - AO_fetch_and_sub1_write(addr) -# define AO_HAVE_fetch_and_sub1 -#endif -#if !defined(AO_HAVE_fetch_and_sub1) && \ - defined(AO_HAVE_fetch_and_sub1_read) -# define AO_fetch_and_sub1(addr) \ - AO_fetch_and_sub1_read(addr) -# define AO_HAVE_fetch_and_sub1 -#endif - -#if defined(AO_HAVE_fetch_and_sub1_acquire) &&\ - defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_fetch_and_sub1_full) -# define AO_fetch_and_sub1_full(addr) \ - (AO_nop_full(), AO_fetch_and_sub1_acquire(addr)) -# define AO_HAVE_fetch_and_sub1_full -#endif - -#if !defined(AO_HAVE_fetch_and_sub1_release_write) && \ - defined(AO_HAVE_fetch_and_sub1_write) -# define AO_fetch_and_sub1_release_write(addr) \ - AO_fetch_and_sub1_write(addr) -# define AO_HAVE_fetch_and_sub1_release_write -#endif -#if !defined(AO_HAVE_fetch_and_sub1_release_write) && \ - defined(AO_HAVE_fetch_and_sub1_release) -# define AO_fetch_and_sub1_release_write(addr) \ - AO_fetch_and_sub1_release(addr) -# define AO_HAVE_fetch_and_sub1_release_write -#endif -#if !defined(AO_HAVE_fetch_and_sub1_acquire_read) && \ - defined(AO_HAVE_fetch_and_sub1_read) -# define AO_fetch_and_sub1_acquire_read(addr) \ - AO_fetch_and_sub1_read(addr) -# define AO_HAVE_fetch_and_sub1_acquire_read -#endif -#if !defined(AO_HAVE_fetch_and_sub1_acquire_read) && \ - defined(AO_HAVE_fetch_and_sub1_acquire) -# define AO_fetch_and_sub1_acquire_read(addr) \ - AO_fetch_and_sub1_acquire(addr) -# define AO_HAVE_fetch_and_sub1_acquire_read -#endif - -#ifdef AO_NO_DD_ORDERING -# if defined(AO_HAVE_fetch_and_sub1_acquire_read) -# define AO_fetch_and_sub1_dd_acquire_read(addr) \ - AO_fetch_and_sub1_acquire_read(addr) -# define AO_HAVE_fetch_and_sub1_dd_acquire_read -# endif -#else -# if defined(AO_HAVE_fetch_and_sub1) -# define AO_fetch_and_sub1_dd_acquire_read(addr) AO_fetch_and_sub1(addr) -# define AO_HAVE_fetch_and_sub1_dd_acquire_read -# endif -#endif - -/* Atomic or */ -#if defined(AO_HAVE_compare_and_swap_full) && \ - !defined(AO_HAVE_or_full) - AO_INLINE void - AO_or_full(volatile AO_t *addr, AO_t incr) - { - AO_t old; - do - { - old = *addr; - } - while (!AO_compare_and_swap_full(addr, old, (old | incr))); - } -# define AO_HAVE_or_full -#endif - -#if defined(AO_HAVE_or_full) -# if !defined(AO_HAVE_or_release) -# define AO_or_release(addr, val) \ - AO_or_full(addr, val) -# define AO_HAVE_or_release -# endif -# if !defined(AO_HAVE_or_acquire) -# define AO_or_acquire(addr, val) \ - AO_or_full(addr, val) -# define AO_HAVE_or_acquire -# endif -# if !defined(AO_HAVE_or_write) -# define AO_or_write(addr, val) \ - AO_or_full(addr, val) -# define AO_HAVE_or_write -# endif -# if !defined(AO_HAVE_or_read) -# define AO_or_read(addr, val) \ - AO_or_full(addr, val) -# define AO_HAVE_or_read -# endif -#endif /* AO_HAVE_or_full */ - -#if !defined(AO_HAVE_or) && \ - defined(AO_HAVE_or_release) -# define AO_or(addr, val) \ - AO_or_release(addr, val) -# define AO_HAVE_or -#endif -#if !defined(AO_HAVE_or) && \ - defined(AO_HAVE_or_acquire) -# define AO_or(addr, val) \ - AO_or_acquire(addr, val) -# define AO_HAVE_or -#endif -#if !defined(AO_HAVE_or) && \ - defined(AO_HAVE_or_write) -# define AO_or(addr, val) \ - AO_or_write(addr, val) -# define AO_HAVE_or -#endif -#if !defined(AO_HAVE_or) && \ - defined(AO_HAVE_or_read) -# define AO_or(addr, val) \ - AO_or_read(addr, val) -# define AO_HAVE_or -#endif - -#if defined(AO_HAVE_or_acquire) &&\ - defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_or_full) -# define AO_or_full(addr, val) \ - (AO_nop_full(), AO_or_acquire(addr, val)) -#endif - -#if !defined(AO_HAVE_or_release_write) && \ - defined(AO_HAVE_or_write) -# define AO_or_release_write(addr, val) \ - AO_or_write(addr, val) -# define AO_HAVE_or_release_write -#endif -#if !defined(AO_HAVE_or_release_write) && \ - defined(AO_HAVE_or_release) -# define AO_or_release_write(addr, val) \ - AO_or_release(addr, val) -# define AO_HAVE_or_release_write -#endif -#if !defined(AO_HAVE_or_acquire_read) && \ - defined(AO_HAVE_or_read) -# define AO_or_acquire_read(addr, val) \ - AO_or_read(addr, val) -# define AO_HAVE_or_acquire_read -#endif -#if !defined(AO_HAVE_or_acquire_read) && \ - defined(AO_HAVE_or_acquire) -# define AO_or_acquire_read(addr, val) \ - AO_or_acquire(addr, val) -# define AO_HAVE_or_acquire_read -#endif - -/* dd_aquire_read is meaningless. */ - -/* Test_and_set */ - -#if defined(AO_HAVE_test_and_set_full) -# if !defined(AO_HAVE_test_and_set_release) -# define AO_test_and_set_release(addr) \ - AO_test_and_set_full(addr) -# define AO_HAVE_test_and_set_release -# endif -# if !defined(AO_HAVE_test_and_set_acquire) -# define AO_test_and_set_acquire(addr) \ - AO_test_and_set_full(addr) -# define AO_HAVE_test_and_set_acquire -# endif -# if !defined(AO_HAVE_test_and_set_write) -# define AO_test_and_set_write(addr) \ - AO_test_and_set_full(addr) -# define AO_HAVE_test_and_set_write -# endif -# if !defined(AO_HAVE_test_and_set_read) -# define AO_test_and_set_read(addr) \ - AO_test_and_set_full(addr) -# define AO_HAVE_test_and_set_read -# endif -#endif /* AO_HAVE_test_and_set_full */ - -#if !defined(AO_HAVE_test_and_set) && \ - defined(AO_HAVE_test_and_set_release) -# define AO_test_and_set(addr) \ - AO_test_and_set_release(addr) -# define AO_HAVE_test_and_set -#endif -#if !defined(AO_HAVE_test_and_set) && \ - defined(AO_HAVE_test_and_set_acquire) -# define AO_test_and_set(addr) \ - AO_test_and_set_acquire(addr) -# define AO_HAVE_test_and_set -#endif -#if !defined(AO_HAVE_test_and_set) && \ - defined(AO_HAVE_test_and_set_write) -# define AO_test_and_set(addr) \ - AO_test_and_set_write(addr) -# define AO_HAVE_test_and_set -#endif -#if !defined(AO_HAVE_test_and_set) && \ - defined(AO_HAVE_test_and_set_read) -# define AO_test_and_set(addr) \ - AO_test_and_set_read(addr) -# define AO_HAVE_test_and_set -#endif - -#if defined(AO_HAVE_test_and_set_acquire) &&\ - defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_test_and_set_full) -# define AO_test_and_set_full(addr) \ - (AO_nop_full(), AO_test_and_set_acquire(addr)) -# define AO_HAVE_test_and_set_full -#endif - -#if !defined(AO_HAVE_test_and_set_release_write) && \ - defined(AO_HAVE_test_and_set_write) -# define AO_test_and_set_release_write(addr) \ - AO_test_and_set_write(addr) -# define AO_HAVE_test_and_set_release_write -#endif -#if !defined(AO_HAVE_test_and_set_release_write) && \ - defined(AO_HAVE_test_and_set_release) -# define AO_test_and_set_release_write(addr) \ - AO_test_and_set_release(addr) -# define AO_HAVE_test_and_set_release_write -#endif -#if !defined(AO_HAVE_test_and_set_acquire_read) && \ - defined(AO_HAVE_test_and_set_read) -# define AO_test_and_set_acquire_read(addr) \ - AO_test_and_set_read(addr) -# define AO_HAVE_test_and_set_acquire_read -#endif -#if !defined(AO_HAVE_test_and_set_acquire_read) && \ - defined(AO_HAVE_test_and_set_acquire) -# define AO_test_and_set_acquire_read(addr) \ - AO_test_and_set_acquire(addr) -# define AO_HAVE_test_and_set_acquire_read -#endif - -#ifdef AO_NO_DD_ORDERING -# if defined(AO_HAVE_test_and_set_acquire_read) -# define AO_test_and_set_dd_acquire_read(addr) \ - AO_test_and_set_acquire_read(addr) -# define AO_HAVE_test_and_set_dd_acquire_read -# endif -#else -# if defined(AO_HAVE_test_and_set) -# define AO_test_and_set_dd_acquire_read(addr) AO_test_and_set(addr) -# define AO_HAVE_test_and_set_dd_acquire_read -# endif -#endif - -/* Compare_and_swap */ -#if defined(AO_HAVE_compare_and_swap) && defined(AO_HAVE_nop_full)\ - && !defined(AO_HAVE_compare_and_swap_acquire) - AO_INLINE int - AO_compare_and_swap_acquire(volatile AO_t *addr, AO_t old, AO_t new_val) - { - int result = AO_compare_and_swap(addr, old, new_val); - AO_nop_full(); - return result; - } -# define AO_HAVE_compare_and_swap_acquire -#endif -#if defined(AO_HAVE_compare_and_swap) && defined(AO_HAVE_nop_full)\ - && !defined(AO_HAVE_compare_and_swap_release) -# define AO_compare_and_swap_release(addr, old, new_val) \ - (AO_nop_full(), AO_compare_and_swap(addr, old, new_val)) -# define AO_HAVE_compare_and_swap_release -#endif -#if defined(AO_HAVE_compare_and_swap_full) -# if !defined(AO_HAVE_compare_and_swap_release) -# define AO_compare_and_swap_release(addr, old, new_val) \ - AO_compare_and_swap_full(addr, old, new_val) -# define AO_HAVE_compare_and_swap_release -# endif -# if !defined(AO_HAVE_compare_and_swap_acquire) -# define AO_compare_and_swap_acquire(addr, old, new_val) \ - AO_compare_and_swap_full(addr, old, new_val) -# define AO_HAVE_compare_and_swap_acquire -# endif -# if !defined(AO_HAVE_compare_and_swap_write) -# define AO_compare_and_swap_write(addr, old, new_val) \ - AO_compare_and_swap_full(addr, old, new_val) -# define AO_HAVE_compare_and_swap_write -# endif -# if !defined(AO_HAVE_compare_and_swap_read) -# define AO_compare_and_swap_read(addr, old, new_val) \ - AO_compare_and_swap_full(addr, old, new_val) -# define AO_HAVE_compare_and_swap_read -# endif -#endif /* AO_HAVE_compare_and_swap_full */ - -#if !defined(AO_HAVE_compare_and_swap) && \ - defined(AO_HAVE_compare_and_swap_release) -# define AO_compare_and_swap(addr, old, new_val) \ - AO_compare_and_swap_release(addr, old, new_val) -# define AO_HAVE_compare_and_swap -#endif -#if !defined(AO_HAVE_compare_and_swap) && \ - defined(AO_HAVE_compare_and_swap_acquire) -# define AO_compare_and_swap(addr, old, new_val) \ - AO_compare_and_swap_acquire(addr, old, new_val) -# define AO_HAVE_compare_and_swap -#endif -#if !defined(AO_HAVE_compare_and_swap) && \ - defined(AO_HAVE_compare_and_swap_write) -# define AO_compare_and_swap(addr, old, new_val) \ - AO_compare_and_swap_write(addr, old, new_val) -# define AO_HAVE_compare_and_swap -#endif -#if !defined(AO_HAVE_compare_and_swap) && \ - defined(AO_HAVE_compare_and_swap_read) -# define AO_compare_and_swap(addr, old, new_val) \ - AO_compare_and_swap_read(addr, old, new_val) -# define AO_HAVE_compare_and_swap -#endif - -#if defined(AO_HAVE_compare_and_swap_acquire) &&\ - defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_compare_and_swap_full) -# define AO_compare_and_swap_full(addr, old, new_val) \ - (AO_nop_full(), AO_compare_and_swap_acquire(addr, old, new_val)) -# define AO_HAVE_compare_and_swap_full -#endif - -#if !defined(AO_HAVE_compare_and_swap_release_write) && \ - defined(AO_HAVE_compare_and_swap_write) -# define AO_compare_and_swap_release_write(addr, old, new_val) \ - AO_compare_and_swap_write(addr, old, new_val) -# define AO_HAVE_compare_and_swap_release_write -#endif -#if !defined(AO_HAVE_compare_and_swap_release_write) && \ - defined(AO_HAVE_compare_and_swap_release) -# define AO_compare_and_swap_release_write(addr, old, new_val) \ - AO_compare_and_swap_release(addr, old, new_val) -# define AO_HAVE_compare_and_swap_release_write -#endif -#if !defined(AO_HAVE_compare_and_swap_acquire_read) && \ - defined(AO_HAVE_compare_and_swap_read) -# define AO_compare_and_swap_acquire_read(addr, old, new_val) \ - AO_compare_and_swap_read(addr, old, new_val) -# define AO_HAVE_compare_and_swap_acquire_read -#endif -#if !defined(AO_HAVE_compare_and_swap_acquire_read) && \ - defined(AO_HAVE_compare_and_swap_acquire) -# define AO_compare_and_swap_acquire_read(addr, old, new_val) \ - AO_compare_and_swap_acquire(addr, old, new_val) -# define AO_HAVE_compare_and_swap_acquire_read -#endif - -#ifdef AO_NO_DD_ORDERING -# if defined(AO_HAVE_compare_and_swap_acquire_read) -# define AO_compare_and_swap_dd_acquire_read(addr, old, new_val) \ - AO_compare_and_swap_acquire_read(addr, old, new_val) -# define AO_HAVE_compare_and_swap_dd_acquire_read -# endif -#else -# if defined(AO_HAVE_compare_and_swap) -# define AO_compare_and_swap_dd_acquire_read(addr, old, new_val) \ - AO_compare_and_swap(addr, old, new_val) -# define AO_HAVE_compare_and_swap_dd_acquire_read -# endif -#endif - -#include "generalize-small.h" - -/* Compare_double_and_swap_double */ -#if defined(AO_HAVE_compare_double_and_swap_double) && defined(AO_HAVE_nop_full)\ - && !defined(AO_HAVE_compare_double_and_swap_double_acquire) - AO_INLINE int - AO_compare_double_and_swap_double_acquire(volatile AO_double_t *addr, - AO_t o1, AO_t o2, - AO_t n1, AO_t n2) - { - int result = AO_compare_double_and_swap_double(addr, o1, o2, n1, n2); - AO_nop_full(); - return result; - } -# define AO_HAVE_compare_double_and_swap_double_acquire -#endif -#if defined(AO_HAVE_compare_double_and_swap_double) \ - && defined(AO_HAVE_nop_full)\ - && !defined(AO_HAVE_compare_double_and_swap_double_release) -# define AO_compare_double_and_swap_double_release(addr, o1, o2, n1, n2) \ - (AO_nop_full(), AO_compare_double_and_swap_double(addr, o1, o2, n1, n2)) -# define AO_HAVE_compare_double_and_swap_double_release -#endif -#if defined(AO_HAVE_compare_double_and_swap_double_full) -# if !defined(AO_HAVE_compare_double_and_swap_double_release) -# define AO_compare_double_and_swap_double_release(addr, o1, o2, n1, n2) \ - AO_compare_double_and_swap_double_full(addr, o1, o2, n1, n2) -# define AO_HAVE_compare_double_and_swap_double_release -# endif -# if !defined(AO_HAVE_compare_double_and_swap_double_acquire) -# define AO_compare_double_and_swap_double_acquire(addr, o1, o2, n1, n2) \ - AO_compare_double_and_swap_double_full(addr, o1, o2, n1, n2) -# define AO_HAVE_compare_double_and_swap_double_acquire -# endif -# if !defined(AO_HAVE_compare_double_and_swap_double_write) -# define AO_compare_double_and_swap_double_write(addr, o1, o2, n1, n2) \ - AO_compare_double_and_swap_double_full(addr, o1, o2, n1, n2) -# define AO_HAVE_compare_double_and_swap_double_write -# endif -# if !defined(AO_HAVE_compare_double_and_swap_double_read) -# define AO_compare_double_and_swap_double_read(addr, o1, o2, n1, n2) \ - AO_compare_double_and_swap_double_full(addr, o1, o2, n1, n2) -# define AO_HAVE_compare_double_and_swap_double_read -# endif -#endif /* AO_HAVE_compare_double_and_swap_double_full */ - -#if !defined(AO_HAVE_compare_double_and_swap_double) && \ - defined(AO_HAVE_compare_double_and_swap_double_release) -# define AO_compare_double_and_swap_double(addr, o1, o2, n1, n2) \ - AO_compare_double_and_swap_double_release(addr, o1, o2, n1, n2) -# define AO_HAVE_compare_double_and_swap_double -#endif -#if !defined(AO_HAVE_compare_double_and_swap_double) && \ - defined(AO_HAVE_compare_double_and_swap_double_acquire) -# define AO_compare_double_and_swap_double(addr, o1, o2, n1, n2) \ - AO_compare_double_and_swap_double_acquire(addr, o1, o2, n1, n2) -# define AO_HAVE_compare_double_and_swap_double -#endif -#if !defined(AO_HAVE_compare_double_and_swap_double) && \ - defined(AO_HAVE_compare_double_and_swap_double_write) -# define AO_compare_double_and_swap_double(addr, o1, o2, n1, n2) \ - AO_compare_double_and_swap_double_write(addr, o1, o2, n1, n2) -# define AO_HAVE_compare_double_and_swap_double -#endif -#if !defined(AO_HAVE_compare_double_and_swap_double) && \ - defined(AO_HAVE_compare_double_and_swap_double_read) -# define AO_compare_double_and_swap_double(addr, o1, o2, n1, n2) \ - AO_compare_double_and_swap_double_read(addr, o1, o2, n1, n2) -# define AO_HAVE_compare_double_and_swap_double -#endif - -#if defined(AO_HAVE_compare_double_and_swap_double_acquire) &&\ - defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_compare_double_and_swap_double_full) -# define AO_compare_double_and_swap_double_full(addr, o1, o2, n1, n2) \ - (AO_nop_full(), AO_compare_double_and_swap_double_acquire(addr, o1, o2, n1, n2)) -# define AO_HAVE_compare_double_and_swap_double_full -#endif - -#if !defined(AO_HAVE_compare_double_and_swap_double_release_write) && \ - defined(AO_HAVE_compare_double_and_swap_double_write) -# define AO_compare_double_and_swap_double_release_write(addr, o1, o2, n1, n2) \ - AO_compare_double_and_swap_double_write(addr, o1, o2, n1, n2) -# define AO_HAVE_compare_double_and_swap_double_release_write -#endif -#if !defined(AO_HAVE_compare_double_and_swap_double_release_write) && \ - defined(AO_HAVE_compare_double_and_swap_double_release) -# define AO_compare_double_and_swap_double_release_write(addr, o1, o2, n1, n2) \ - AO_compare_double_and_swap_double_release(addr, o1, o2, n1, n2) -# define AO_HAVE_compare_double_and_swap_double_release_write -#endif -#if !defined(AO_HAVE_compare_double_and_swap_double_acquire_read) && \ - defined(AO_HAVE_compare_double_and_swap_double_read) -# define AO_compare_double_and_swap_double_acquire_read(addr, o1, o2, n1, n2) \ - AO_compare_double_and_swap_double_read(addr, o1, o2, n1, n2) -# define AO_HAVE_compare_double_and_swap_double_acquire_read -#endif -#if !defined(AO_HAVE_compare_double_and_swap_double_acquire_read) && \ - defined(AO_HAVE_compare_double_and_swap_double_acquire) -# define AO_compare_double_and_swap_double_acquire_read(addr, o1, o2, n1, n2) \ - AO_compare_double_and_swap_double_acquire(addr, o1, o2, n1, n2) -# define AO_HAVE_compare_double_and_swap_double_acquire_read -#endif - -#ifdef AO_NO_DD_ORDERING -# if defined(AO_HAVE_compare_double_and_swap_double_acquire_read) -# define AO_compare_double_and_swap_double_dd_acquire_read(addr, o1, o2, n1, n2) \ - AO_compare_double_and_swap_double_acquire_read(addr, o1, o2, n1, n2) -# define AO_HAVE_compare_double_and_swap_double_dd_acquire_read -# endif -#else -# if defined(AO_HAVE_compare_double_and_swap_double) -# define AO_compare_double_and_swap_double_dd_acquire_read(addr, o1, o2, n1, n2) \ - AO_compare_double_and_swap_double(addr, o1, o2, n1, n2) -# define AO_HAVE_compare_double_and_swap_double_dd_acquire_read -# endif -#endif - -/* Compare_and_swap_double */ -#if defined(AO_HAVE_compare_and_swap_double) && defined(AO_HAVE_nop_full)\ - && !defined(AO_HAVE_compare_and_swap_double_acquire) - AO_INLINE int - AO_compare_and_swap_double_acquire(volatile AO_double_t *addr, - AO_t o1, AO_t o2, - AO_t n1, AO_t n2) - { - int result = AO_compare_and_swap_double(addr, o1, n1, n2); - AO_nop_full(); - return result; - } -# define AO_HAVE_compare_and_swap_double_acquire -#endif -#if defined(AO_HAVE_compare_and_swap_double) \ - && defined(AO_HAVE_nop_full)\ - && !defined(AO_HAVE_compare_and_swap_double_release) -# define AO_compare_and_swap_double_release(addr, o1, n1, n2) \ - (AO_nop_full(), AO_compare_and_swap_double(addr, o1, n1, n2)) -# define AO_HAVE_compare_and_swap_double_release -#endif -#if defined(AO_HAVE_compare_and_swap_double_full) -# if !defined(AO_HAVE_compare_and_swap_double_release) -# define AO_compare_and_swap_double_release(addr, o1, n1, n2) \ - AO_compare_and_swap_double_full(addr, o1, n1, n2) -# define AO_HAVE_compare_and_swap_double_release -# endif -# if !defined(AO_HAVE_compare_and_swap_double_acquire) -# define AO_compare_and_swap_double_acquire(addr, o1, n1, n2) \ - AO_compare_and_swap_double_full(addr, o1, n1, n2) -# define AO_HAVE_compare_and_swap_double_acquire -# endif -# if !defined(AO_HAVE_compare_and_swap_double_write) -# define AO_compare_and_swap_double_write(addr, o1, n1, n2) \ - AO_compare_and_swap_double_full(addr, o1, n1, n2) -# define AO_HAVE_compare_and_swap_double_write -# endif -# if !defined(AO_HAVE_compare_and_swap_double_read) -# define AO_compare_and_swap_double_read(addr, o1, n1, n2) \ - AO_compare_and_swap_double_full(addr, o1, n1, n2) -# define AO_HAVE_compare_and_swap_double_read -# endif -#endif /* AO_HAVE_compare_and_swap_double_full */ - -#if !defined(AO_HAVE_compare_and_swap_double) && \ - defined(AO_HAVE_compare_and_swap_double_release) -# define AO_compare_and_swap_double(addr, o1, n1, n2) \ - AO_compare_and_swap_double_release(addr, o1, n1, n2) -# define AO_HAVE_compare_and_swap_double -#endif -#if !defined(AO_HAVE_compare_and_swap_double) && \ - defined(AO_HAVE_compare_and_swap_double_acquire) -# define AO_compare_and_swap_double(addr, o1, n1, n2) \ - AO_compare_and_swap_double_acquire(addr, o1, n1, n2) -# define AO_HAVE_compare_and_swap_double -#endif -#if !defined(AO_HAVE_compare_and_swap_double) && \ - defined(AO_HAVE_compare_and_swap_double_write) -# define AO_compare_and_swap_double(addr, o1, n1, n2) \ - AO_compare_and_swap_double_write(addr, o1, n1, n2) -# define AO_HAVE_compare_and_swap_double -#endif -#if !defined(AO_HAVE_compare_and_swap_double) && \ - defined(AO_HAVE_compare_and_swap_double_read) -# define AO_compare_and_swap_double(addr, o1, n1, n2) \ - AO_compare_and_swap_double_read(addr, o1, n1, n2) -# define AO_HAVE_compare_and_swap_double -#endif - -#if defined(AO_HAVE_compare_and_swap_double_acquire) &&\ - defined(AO_HAVE_nop_full) && \ - !defined(AO_HAVE_compare_and_swap_double_full) -# define AO_compare_and_swap_double_full(addr, o1, n1, n2) \ - (AO_nop_full(), AO_compare_and_swap_double_acquire(addr, o1, n1, n2)) -# define AO_HAVE_compare_and_swap_double_full -#endif - -#if !defined(AO_HAVE_compare_and_swap_double_release_write) && \ - defined(AO_HAVE_compare_and_swap_double_write) -# define AO_compare_and_swap_double_release_write(addr, o1, n1, n2) \ - AO_compare_and_swap_double_write(addr, o1, n1, n2) -# define AO_HAVE_compare_and_swap_double_release_write -#endif -#if !defined(AO_HAVE_compare_and_swap_double_release_write) && \ - defined(AO_HAVE_compare_and_swap_double_release) -# define AO_compare_and_swap_double_release_write(addr, o1, n1, n2) \ - AO_compare_and_swap_double_release(addr, o1, n1, n2) -# define AO_HAVE_compare_and_swap_double_release_write -#endif -#if !defined(AO_HAVE_compare_and_swap_double_acquire_read) && \ - defined(AO_HAVE_compare_and_swap_double_read) -# define AO_compare_and_swap_double_acquire_read(addr, o1, n1, n2) \ - AO_compare_and_swap_double_read(addr, o1, n1, n2) -# define AO_HAVE_compare_and_swap_double_acquire_read -#endif -#if !defined(AO_HAVE_compare_and_swap_double_acquire_read) && \ - defined(AO_HAVE_compare_and_swap_double_acquire) -# define AO_compare_and_swap_double_acquire_read(addr, o1, n1, n2) \ - AO_compare_and_swap_double_acquire(addr, o1, n1, n2) -# define AO_HAVE_compare_and_swap_double_acquire_read -#endif - -#ifdef AO_NO_DD_ORDERING -# if defined(AO_HAVE_compare_and_swap_double_acquire_read) -# define AO_compare_and_swap_double_dd_acquire_read(addr, o1, n1, n2) \ - AO_compare_and_swap_double_acquire_read(addr, o1, n1, n2) -# define AO_HAVE_compare_and_swap_double_dd_acquire_read -# endif -#else -# if defined(AO_HAVE_compare_and_swap_double) -# define AO_compare_and_swap_double_dd_acquire_read(addr, o1, n1, n2) \ - AO_compare_and_swap_double(addr, o1, n1, n2) -# define AO_HAVE_compare_and_swap_double_dd_acquire_read -# endif -#endif - -/* NEC LE-IT: Convenience functions for AO_double compare and swap which */ -/* types and reads easier in code */ -#if defined(AO_HAVE_compare_double_and_swap_double_release) && \ - !defined(AO_HAVE_double_compare_and_swap_release) -AO_INLINE int -AO_double_compare_and_swap_release(volatile AO_double_t *addr, - AO_double_t old_val, AO_double_t new_val) -{ - return AO_compare_double_and_swap_double_release(addr, - old_val.AO_val1, old_val.AO_val2, - new_val.AO_val1, new_val.AO_val2); -} -#define AO_HAVE_double_compare_and_swap_release -#endif - -#if defined(AO_HAVE_compare_double_and_swap_double_acquire) && \ - !defined(AO_HAVE_double_compare_and_swap_acquire) -AO_INLINE int -AO_double_compare_and_swap_acquire(volatile AO_double_t *addr, - AO_double_t old_val, AO_double_t new_val) -{ - return AO_compare_double_and_swap_double_acquire(addr, - old_val.AO_val1, old_val.AO_val2, - new_val.AO_val1, new_val.AO_val2); -} -#define AO_HAVE_double_compare_and_swap_acquire -#endif - -#if defined(AO_HAVE_compare_double_and_swap_double_full) && \ - !defined(AO_HAVE_double_compare_and_swap_full) -AO_INLINE int -AO_double_compare_and_swap_full(volatile AO_double_t *addr, - AO_double_t old_val, AO_double_t new_val) -{ - return AO_compare_double_and_swap_double_full(addr, - old_val.AO_val1, old_val.AO_val2, - new_val.AO_val1, new_val.AO_val2); -} -#define AO_HAVE_double_compare_and_swap_full -#endif diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/Makefile.am b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/Makefile.am deleted file mode 100644 index 8204d8d20c..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/Makefile.am +++ /dev/null @@ -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 diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/Makefile.in b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/Makefile.in deleted file mode 100644 index e7daa7dc6d..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/Makefile.in +++ /dev/null @@ -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: diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/README b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/README deleted file mode 100644 index 605699fe45..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/README +++ /dev/null @@ -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. diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/acquire_release_volatile.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/acquire_release_volatile.h deleted file mode 100644 index 1a387d39b8..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/acquire_release_volatile.h +++ /dev/null @@ -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 - - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/aligned_atomic_load_store.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/aligned_atomic_load_store.h deleted file mode 100644 index 485b7f45a0..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/aligned_atomic_load_store.h +++ /dev/null @@ -1,48 +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. - */ - -/* - * Definitions for architecturs on which loads and stores of AO_t are - * atomic fo all legal alignments. - */ - -AO_INLINE AO_t -AO_load(volatile AO_t *addr) -{ - assert(((size_t)addr & (sizeof(AO_t) - 1)) == 0); - /* Cast away the volatile for architectures where */ - /* volatile adds barrier semantics. */ - return *(AO_t *)addr; -} - -#define AO_HAVE_load - -AO_INLINE void -AO_store(volatile AO_t *addr, AO_t new_val) -{ - assert(((size_t)addr & (sizeof(AO_t) - 1)) == 0); - (*(AO_t *)addr) = new_val; -} - -#define AO_HAVE_store - - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/all_acquire_release_volatile.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/all_acquire_release_volatile.h deleted file mode 100644 index 67873878d2..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/all_acquire_release_volatile.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2004 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. - */ - -/* - * Describes architectures on which volatile AO_t, unsigned char, unsigned - * short, and unsigned int loads and stores have acquire/release semantics for - * all normally legal alignments. - */ -#include "acquire_release_volatile.h" -#include "char_acquire_release_volatile.h" -#include "short_acquire_release_volatile.h" -#include "int_acquire_release_volatile.h" diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h deleted file mode 100644 index b9f7247a8c..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2004 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. - */ - -/* - * Describes architectures on which AO_t, unsigned char, unsigned short, - * and unsigned int loads and strores are atomic for all normally legal alignments. - */ -#include "aligned_atomic_load_store.h" -#include "char_atomic_load_store.h" -#include "short_aligned_atomic_load_store.h" -#include "int_aligned_atomic_load_store.h" diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/all_atomic_load_store.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/all_atomic_load_store.h deleted file mode 100644 index d0ebe08994..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/all_atomic_load_store.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2004 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. - */ - -/* - * Describes architectures on which AO_t, unsigned char, unsigned short, - * and unsigned int loads and strores are atomic for all normally legal - * alignments. - */ -#include "atomic_load_store.h" -#include "char_atomic_load_store.h" -#include "short_atomic_load_store.h" -#include "int_atomic_load_store.h" diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/ao_t_is_int.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/ao_t_is_int.h deleted file mode 100644 index 18156c81fd..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/ao_t_is_int.h +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright (c) 2003-2004 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. - */ - -/* - * Inclusion of this file signifies that AO_t is in fact int. Hence - * any AO_... operations can also server as AO_int_... operations. - * We currently define only the more important ones here, and allow for - * the normal generalization process to define the others. - * We should probably add others in the future. - */ - -#if defined(AO_HAVE_compare_and_swap_full) && \ - !defined(AO_HAVE_int_compare_and_swap_full) -# define AO_int_compare_and_swap_full(addr, old, new_val) \ - AO_compare_and_swap_full((volatile AO_t *)addr, \ - (AO_t) old, (AO_t)new_val) -# define AO_HAVE_int_compare_and_swap_full -# endif - -#if defined(AO_HAVE_compare_and_swap_acquire) && \ - !defined(AO_HAVE_int_compare_and_swap_acquire) -# define AO_int_compare_and_swap_acquire(addr, old, new_val) \ - AO_compare_and_swap_acquire((volatile AO_t *)addr, \ - (AO_t) old, (AO_t)new_val) -# define AO_HAVE_int_compare_and_swap_acquire -# endif - -#if defined(AO_HAVE_compare_and_swap_release) && \ - !defined(AO_HAVE_int_compare_and_swap_release) -# define AO_int_compare_and_swap_release(addr, old, new_val) \ - AO_compare_and_swap_release((volatile AO_t *)addr, \ - (AO_t) old, (AO_t)new_val) -# define AO_HAVE_int_compare_and_swap_release -# endif - -#if defined(AO_HAVE_compare_and_swap_write) && \ - !defined(AO_HAVE_int_compare_and_swap_write) -# define AO_int_compare_and_swap_write(addr, old, new_val) \ - AO_compare_and_swap_write((volatile AO_t *)addr, \ - (AO_t) old, (AO_t)new_val) -# define AO_HAVE_int_compare_and_swap_write -# endif - -#if defined(AO_HAVE_compare_and_swap_read) && \ - !defined(AO_HAVE_int_compare_and_swap_read) -# define AO_int_compare_and_swap_read(addr, old, new_val) \ - AO_compare_and_swap_read((volatile AO_t *)addr, \ - (AO_t) old, (AO_t)new_val) -# define AO_HAVE_int_compare_and_swap_read -# endif - -#if defined(AO_HAVE_compare_and_swap) && \ - !defined(AO_HAVE_int_compare_and_swap) -# define AO_int_compare_and_swap(addr, old, new_val) \ - AO_compare_and_swap((volatile AO_t *)addr, \ - (AO_t) old, (AO_t)new_val) -# define AO_HAVE_int_compare_and_swap -# endif - -#if defined(AO_HAVE_load_acquire) && \ - !defined(AO_HAVE_int_load_acquire) -# define AO_int_load_acquire(addr) (int)AO_load_acquire((volatile AO_t *)addr) -# define AO_HAVE_int_load_acquire -# endif - -#if defined(AO_HAVE_store_release) && \ - !defined(AO_HAVE_int_store_release) -# define AO_int_store_release(addr, val) \ - AO_store_release((volatile AO_t *)addr, (AO_t)val) -# define AO_HAVE_int_store_release -# endif - -#if defined(AO_HAVE_fetch_and_add_full) && \ - !defined(AO_HAVE_int_fetch_and_add_full) -# define AO_int_fetch_and_add_full(addr, incr) \ - (int)AO_fetch_and_add_full((volatile AO_t *)addr, (AO_t)incr) -# define AO_HAVE_int_fetch_and_add_full -# endif - -#if defined(AO_HAVE_fetch_and_add1_acquire) && \ - !defined(AO_HAVE_int_fetch_and_add1_acquire) -# define AO_int_fetch_and_add1_acquire(addr) \ - (int)AO_fetch_and_add1_acquire((volatile AO_t *)addr) -# define AO_HAVE_int_fetch_and_add1_acquire -# endif - -#if defined(AO_HAVE_fetch_and_add1_release) && \ - !defined(AO_HAVE_int_fetch_and_add1_release) -# define AO_int_fetch_and_add1_release(addr) \ - (int)AO_fetch_and_add1_release((volatile AO_t *)addr) -# define AO_HAVE_int_fetch_and_add1_release -# endif - -#if defined(AO_HAVE_fetch_and_sub1_acquire) && \ - !defined(AO_HAVE_int_fetch_and_sub1_acquire) -# define AO_int_fetch_and_sub1_acquire(addr) \ - (int)AO_fetch_and_sub1_acquire((volatile AO_t *)addr) -# define AO_HAVE_int_fetch_and_sub1_acquire -# endif - -#if defined(AO_HAVE_fetch_and_sub1_release) && \ - !defined(AO_HAVE_int_fetch_and_sub1_release) -# define AO_int_fetch_and_sub1_release(addr) \ - (int)AO_fetch_and_sub1_release((volatile AO_t *)addr) -# define AO_HAVE_int_fetch_and_sub1_release -# endif - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/armcc/arm_v6.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/armcc/arm_v6.h deleted file mode 100644 index 3e2318b81e..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/armcc/arm_v6.h +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Copyright (c) 2007 by NEC LE-IT: All rights reserved. - * A transcription of ARMv6 atomic operations for the ARM Realview Toolchain. - * This code works with armcc from RVDS 3.1 - * This is based on work in gcc/arm.h by - * Copyright (c) 1991-1994 by Xerox Corporation. All rights reserved. - * Copyright (c) 1996-1999 by Silicon Graphics. All rights reserved. - * Copyright (c) 1999-2003 by Hewlett-Packard Company. All rights reserved. - * - * - * - * 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. - * - */ -#include "../read_ordered.h" -#include "../test_and_set_t_is_ao_t.h" /* Probably suboptimal */ - -#if __TARGET_ARCH_ARM < 6 -Dont use with ARM instruction sets lower than v6 -#endif - -/* NEC LE-IT: ARMv6 is the first architecture providing support for simple LL/SC - * A data memory barrier must be raised via CP15 command (see documentation). - * - * ARMv7 is compatible to ARMv6 but has a simpler command for issuing a - * memory barrier (DMB). Raising it via CP15 should still work as told me by the - * support engineers. If it turns out to be much quicker than we should implement - * custom code for ARMv7 using the asm { dmb } command. - * - * If only a single processor is used, we can define AO_UNIPROCESSOR - * and do not need to access CP15 for ensuring a DMB at all. -*/ - -AO_INLINE void -AO_nop_full() -{ -# ifndef AO_UNIPROCESSOR - unsigned int dest=0; - /* issue an data memory barrier (keeps ordering of memory transactions */ - /* before and after this operation) */ - __asm { mcr p15,0,dest,c7,c10,5 } ; -# endif -} - -#define AO_HAVE_nop_full - -AO_INLINE AO_t -AO_load(volatile AO_t *addr) -{ - /* Cast away the volatile in case it adds fence semantics. */ - return (*(AO_t *)addr); -} -#define AO_HAVE_load - -/* NEC LE-IT: atomic "store" - according to ARM documentation this is - * the only safe way to set variables also used in LL/SC environment. - * A direct write won't be recognized by the LL/SC construct in other CPUs. - * - * HB: Based on subsequent discussion, I think it would be OK to use an - * ordinary store here if we knew that interrupt handlers always cleared - * the reservation. They should, but there is some doubt that this is - * currently always the case for e.g. Linux. -*/ -AO_INLINE void AO_store(volatile AO_t *addr, AO_t value) -{ - unsigned long tmp; - -retry: -__asm { - ldrex tmp, [addr] - strex tmp, value, [addr] - teq tmp, #0 - bne retry - }; -} -#define AO_HAVE_store - -/* NEC LE-IT: replace the SWAP as recommended by ARM: - - "Applies to: ARM11 Cores - Though the SWP instruction will still work with ARM V6 cores, it is recommended - to use the new V6 synchronization instructions. The SWP instruction produces - locked read and write accesses which are atomic, i.e. another operation cannot - be done between these locked accesses which ties up external bus (AHB,AXI) - bandwidth and can increase worst case interrupt latencies. LDREX,STREX are - more flexible, other instructions can be done between the LDREX and STREX accesses. - " -*/ -AO_INLINE AO_TS_t -AO_test_and_set(volatile AO_TS_t *addr) { - - AO_TS_t oldval; - unsigned long tmp; - unsigned long one = 1; -retry: -__asm { - ldrex oldval, [addr] - strex tmp, one, [addr] - teq tmp, #0 - bne retry - } - - return oldval; -} - -#define AO_HAVE_test_and_set - -/* NEC LE-IT: fetch and add for ARMv6 */ -AO_INLINE AO_t -AO_fetch_and_add(volatile AO_t *p, AO_t incr) -{ - unsigned long tmp,tmp2; - AO_t result; - -retry: -__asm { - ldrex result, [p] - add tmp, incr, result - strex tmp2, tmp, [p] - teq tmp2, #0 - bne retry } - - return result; -} - -#define AO_HAVE_fetch_and_add - -/* NEC LE-IT: fetch and add1 for ARMv6 */ -AO_INLINE AO_t -AO_fetch_and_add1(volatile AO_t *p) -{ - unsigned long tmp,tmp2; - AO_t result; - -retry: -__asm { - ldrex result, [p] - add tmp, result, #1 - strex tmp2, tmp, [p] - teq tmp2, #0 - bne retry - } - - return result; -} - -#define AO_HAVE_fetch_and_add1 - -/* NEC LE-IT: fetch and sub for ARMv6 */ -AO_INLINE AO_t -AO_fetch_and_sub1(volatile AO_t *p) -{ - unsigned long tmp,tmp2; - AO_t result; - -retry: -__asm { - ldrex result, [p] - sub tmp, result, #1 - strex tmp2, tmp, [p] - teq tmp2, #0 - bne retry - } - - return result; -} - -#define AO_HAVE_fetch_and_sub1 - -/* NEC LE-IT: compare and swap */ -/* Returns nonzero if the comparison succeeded. */ -AO_INLINE int -AO_compare_and_swap(volatile AO_t *addr, - AO_t old_val, AO_t new_val) -{ - AO_t result,tmp; - -retry: -__asm__ { - ldrex tmp, [addr] - mov result, #2 - teq tmp, old_val - strexeq result, new_val, [addr] - teq result, #1 - beq retry - } - - return (result^2)>>1; -} -#define AO_HAVE_compare_and_swap - -#endif // __TARGET_ARCH_ARM diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/atomic_load_store.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/atomic_load_store.h deleted file mode 100644 index 68c5179e4f..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/atomic_load_store.h +++ /dev/null @@ -1,46 +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. - */ - -/* - * Definitions for architecturs on which loads and stores of AO_t are - * atomic fo all legal alignments. - */ - -AO_INLINE AO_t -AO_load(volatile AO_t *addr) -{ - /* Cast away the volatile for architectures like IA64 where */ - /* volatile adds barrier semantics. */ - return (*(AO_t *)addr); -} - -#define AO_HAVE_load - -AO_INLINE void -AO_store(volatile AO_t *addr, AO_t new_val) -{ - (*(AO_t *)addr) = new_val; -} - -#define AO_HAVE_store - - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/char_acquire_release_volatile.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/char_acquire_release_volatile.h deleted file mode 100644 index 37aa0218e3..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/char_acquire_release_volatile.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2003-2004 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 unsigned char - * volatile load has acquire semantics, and an unsigned char volatile store has release - * semantics. This is true with the standard Itanium ABI. - */ -#if !defined(AO_GCC_BARRIER) -# if defined(__GNUC__) -# define AO_GCC_BARRIER() AO_compiler_barrier() -# else -# define AO_GCC_BARRIER() -# endif -#endif - -AO_INLINE unsigned char -AO_char_load_acquire(volatile unsigned char *p) -{ - unsigned char result = *p; - /* A normal volatile load generates an ld.acq */ - AO_GCC_BARRIER(); - return result; -} -#define AO_HAVE_char_load_acquire - -AO_INLINE void -AO_char_store_release(volatile unsigned char *p, unsigned char val) -{ - AO_GCC_BARRIER(); - /* A normal volatile store generates an st.rel */ - *p = val; -} -#define AO_HAVE_char_store_release - - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/char_atomic_load_store.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/char_atomic_load_store.h deleted file mode 100644 index 6eb097836f..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/char_atomic_load_store.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * 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. - */ - -/* - * Definitions for architecturs on which loads and stores of unsigned char are - * atomic for all legal alignments. - */ - -AO_INLINE unsigned char -AO_char_load(volatile unsigned char *addr) -{ - /* Cast away the volatile for architectures like IA64 where */ - /* volatile adds barrier semantics. */ - return (*(unsigned char *)addr); -} - -#define AO_HAVE_char_load - -AO_INLINE void -AO_char_store(volatile unsigned char *addr, unsigned char new_val) -{ - (*(unsigned char *)addr) = new_val; -} - -#define AO_HAVE_char_store - - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/emul_cas.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/emul_cas.h deleted file mode 100644 index 4187f9f39c..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/emul_cas.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * 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. - */ - -/* - * Ensure, if at all possible, that AO_compare_and_swap_full() is - * available. The emulation should be brute-force signal-safe, even - * though it actually blocks. - * Including this file will generate an error if AO_compare_and_swap_full() - * cannot be made available. - * This will be included from platform-specific atomic_ops files - * id appropriate, and if AO_FORCE_CAS is defined. It should not be - * included directly, especially since it affects the implementation - * of other atomic update primitives. - * The implementation assumes that only AO_store_XXX and AO_test_and_set_XXX - * variants are defined, and that AO_test_and_set_XXX is not used to - * operate on compare_and_swap locations. - */ - -#if !defined(ATOMIC_OPS_H) -# error This file should not be included directly. -#endif - -#ifndef AO_HAVE_double_t -# include "standard_ao_double_t.h" -#endif - -int AO_compare_and_swap_emulation(volatile AO_t *addr, AO_t old, - AO_t new_val); - -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); - -void AO_store_full_emulation(volatile AO_t *addr, AO_t val); - -#define AO_compare_and_swap_full(addr, old, newval) \ - AO_compare_and_swap_emulation(addr, old, newval) -#define AO_HAVE_compare_and_swap_full - -#ifndef AO_HAVE_compare_double_and_swap_double -# define AO_compare_double_and_swap_double_full(addr, old1, old2, \ - newval1, newval2) \ - AO_compare_double_and_swap_double_emulation(addr, old1, old2, \ - newval1, newval2) -# define AO_HAVE_compare_double_and_swap_double_full -#endif - -#undef AO_store -#undef AO_HAVE_store -#undef AO_store_write -#undef AO_HAVE_store_write -#undef AO_store_release -#undef AO_HAVE_store_release -#undef AO_store_full -#undef AO_HAVE_store_full -#define AO_store_full(addr, val) AO_store_full_emulation(addr, val) -#define AO_HAVE_store_full diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/alpha.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/alpha.h deleted file mode 100644 index 90c060c115..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/alpha.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 1991-1994 by Xerox Corporation. All rights reserved. - * Copyright (c) 1996-1999 by Silicon Graphics. All rights reserved. - * Copyright (c) 1999-2003 by Hewlett-Packard Company. All rights reserved. - * - * - * 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. - * - */ - -#include "../atomic_load_store.h" - -#include "../test_and_set_t_is_ao_t.h" - -#define AO_NO_DD_ORDERING - /* Data dependence does not imply read ordering. */ - -AO_INLINE void -AO_nop_full() -{ - __asm__ __volatile__("mb" : : : "memory"); -} - -#define AO_HAVE_nop_full - -AO_INLINE void -AO_nop_write() -{ - __asm__ __volatile__("wmb" : : : "memory"); -} - -#define AO_HAVE_nop_write - -/* mb should be used for AO_nop_read(). That's the default. */ - -/* We believe that ldq_l ... stq_c does not imply any memory barrier. */ -/* We should add an explicit fetch_and_add definition. */ -AO_INLINE int -AO_compare_and_swap(volatile AO_t *addr, - AO_t old, AO_t new_val) -{ - unsigned long was_equal; - unsigned long temp; - - __asm__ __volatile__( - "1: ldq_l %0,%1\n" - " cmpeq %0,%4,%2\n" - " mov %3,%0\n" - " beq %2,2f\n" - " stq_c %0,%1\n" - " beq %0,1b\n" - "2:\n" - :"=&r" (temp), "=m" (*addr), "=&r" (was_equal) - : "r" (new_val), "Ir" (old) - :"memory"); - return was_equal; -} - -#define AO_HAVE_compare_and_swap - - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/arm.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/arm.h deleted file mode 100644 index c502d4d440..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/arm.h +++ /dev/null @@ -1,250 +0,0 @@ -/* - * Copyright (c) 1991-1994 by Xerox Corporation. All rights reserved. - * Copyright (c) 1996-1999 by Silicon Graphics. All rights reserved. - * Copyright (c) 1999-2003 by Hewlett-Packard Company. All rights reserved. - * - * - * 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. - * - */ - -#include "../read_ordered.h" - -#include "../test_and_set_t_is_ao_t.h" /* Probably suboptimal */ - -/* NEC LE-IT: ARMv6 is the first architecture providing support for simple LL/SC - * A data memory barrier must be raised via CP15 command (see documentation). - * - * ARMv7 is compatible to ARMv6 but has a simpler command for issuing a - * memory barrier (DMB). Raising it via CP15 should still work as told me by the - * support engineers. If it turns out to be much quicker than we should implement - * custom code for ARMv7 using the asm { dmb } command. - * - * If only a single processor is used, we can define AO_UNIPROCESSOR - * and do not need to access CP15 for ensuring a DMB -*/ - -/* NEC LE-IT: gcc has no way to easily check the arm architecture - * but defines only one of __ARM_ARCH_x__ to be true */ -#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_7__) -AO_INLINE void -AO_nop_full() -{ -#ifndef AO_UNIPROCESSOR - /* issue an data memory barrier (keeps ordering of memory transactions */ - /* before and after this operation) */ - unsigned int dest=0; - __asm__ __volatile__("mcr p15,0,%0,c7,c10,5" :"=&r"(dest) : : "memory"); -#endif -} - -#define AO_HAVE_nop_full - -/* NEC LE-IT: AO_t load is simple reading */ -AO_INLINE AO_t -AO_load(volatile AO_t *addr) -{ - /* Cast away the volatile for architectures like IA64 where */ - /* volatile adds barrier semantics. */ - return (*(AO_t *)addr); -} -#define AO_HAVE_load - -/* NEC LE-IT: atomic "store" - according to ARM documentation this is - * the only safe way to set variables also used in LL/SC environment. - * A direct write won't be recognized by the LL/SC construct on the _same_ CPU. - * Support engineers response for behaviour of ARMv6: - * - Core1 Core2 SUCCESS - =================================== - LDREX(x) - STREX(x) Yes - ----------------------------------- - LDREX(x) - STR(x) - STREX(x) No - ----------------------------------- - LDREX(x) - STR(x) - STREX(x) Yes - ----------------------------------- - - * ARMv7 behaves similar, see documentation CortexA8 TRM, point 8.5 - * - * HB: I think this is only a problem if interrupt handlers do not clear - * the reservation, as they almost certainly should. Probably change this back - * in a while? -*/ -AO_INLINE void AO_store(volatile AO_t *addr, AO_t value) -{ - unsigned long tmp; - - __asm__ __volatile__("@AO_store\n" -"1: ldrex %0, [%1]\n" -" strex %0, %2, [%1]\n" -" teq %0, #0\n" -" bne 1b" - : "=&r"(tmp) - : "r" (addr), "r"(value) - : "cc","memory"); -} -#define AO_HAVE_store - -/* NEC LE-IT: replace the SWAP as recommended by ARM: - - "Applies to: ARM11 Cores - Though the SWP instruction will still work with ARM V6 cores, it is - recommended to use the new V6 synchronization instructions. The SWP - instruction produces ‘locked’ read and write accesses which are atomic, - i.e. another operation cannot be done between these locked accesses which - ties up external bus (AHB,AXI) bandwidth and can increase worst case - interrupt latencies. LDREX,STREX are more flexible, other instructions can - be done between the LDREX and STREX accesses. - " -*/ -AO_INLINE AO_TS_t -AO_test_and_set(volatile AO_TS_t *addr) { - - AO_TS_t oldval; - unsigned long tmp; - - __asm__ __volatile__("@AO_test_and_set\n" -"1: ldrex %0, [%2]\n" -" strex %1, %3, [%2]\n" -" teq %1, #0\n" -" bne 1b\n" - : "=&r"(oldval),"=&r"(tmp) - : "r"(addr), "r"(1) - : "memory","cc"); - - return oldval; -} - -#define AO_HAVE_test_and_set - -/* NEC LE-IT: fetch and add for ARMv6 */ -AO_INLINE AO_t -AO_fetch_and_add(volatile AO_t *p, AO_t incr) -{ - unsigned long tmp,tmp2; - AO_t result; - - __asm__ __volatile__("@AO_fetch_and_add\n" -"1: ldrex %0, [%4]\n" /* get original */ -" add %2, %3, %0\n" /* sum up */ -" strex %1, %2, [%4]\n" /* store them */ -" teq %1, #0\n" -" bne 1b\n" - : "=&r"(result),"=&r"(tmp),"=&r"(tmp2) - : "r"(incr), "r"(p) - : "cc","memory"); - - return result; -} - -#define AO_HAVE_fetch_and_add - -/* NEC LE-IT: fetch and add1 for ARMv6 */ -AO_INLINE AO_t -AO_fetch_and_add1(volatile AO_t *p) -{ - unsigned long tmp,tmp2; - AO_t result; - - __asm__ __volatile__("@AO_fetch_and_add1\n" -"1: ldrex %0, [%3]\n" /* get original */ -" add %1, %0, #1\n" /* increment */ -" strex %2, %1, [%3]\n" /* store them */ -" teq %2, #0\n" -" bne 1b\n" - : "=&r"(result), "=&r"(tmp), "=&r"(tmp2) - : "r"(p) - : "cc","memory"); - - return result; -} - -#define AO_HAVE_fetch_and_add1 - -/* NEC LE-IT: fetch and sub for ARMv6 */ -AO_INLINE AO_t -AO_fetch_and_sub1(volatile AO_t *p) -{ - unsigned long tmp,tmp2; - AO_t result; - - __asm__ __volatile__("@ AO_fetch_and_sub1\n" -"1: ldrex %0, [%3]\n" /* get original */ -" sub %1, %0, #1\n" /* increment */ -" strex %2, %1, [%3]\n" /* store them */ -" teq %2, #0\n" -" bne 1b\n" - : "=&r"(result), "=&r"(tmp), "=&r"(tmp2) - : "r"(p) - : "cc","memory"); - - return result; -} - -#define AO_HAVE_fetch_and_sub1 - -/* NEC LE-IT: compare and swap */ -/* Returns nonzero if the comparison succeeded. */ -AO_INLINE int -AO_compare_and_swap(volatile AO_t *addr, - AO_t old_val, AO_t new_val) -{ - AO_t result,tmp; - - __asm__ __volatile__("@ AO_compare_and_swap\n" -"1: ldrex %1, [%2]\n" /* get original */ -" mov %0, #2\n" /* store a flag */ -" teq %1, %3\n" /* see if match */ -" strexeq %0, %4, [%2]\n" /* store new one if matched */ -" teq %0, #1\n" -" beq 1b\n" /* if update failed, repeat */ -" eor %0, %0, #2\n" /* if succeded, return 2, else 0 */ - : "=&r"(result), "=&r"(tmp) - : "r"(addr), "r"(old_val), "r"(new_val) - : "cc","memory"); - - return (result>>1); -} -#define AO_HAVE_compare_and_swap - -#else -/* pre ARMv6 architecures ... */ - -/* I found a slide set that, if I read it correctly, claims that */ -/* Loads followed by either a Load or Store are ordered, but nothing */ -/* else is. */ -/* It appears that SWP is the only simple memory barrier. */ -#include "../all_atomic_load_store.h" - -AO_INLINE AO_TS_VAL_t -AO_test_and_set_full(volatile AO_TS_t *addr) { - AO_TS_VAL_t oldval; - /* SWP on ARM is very similar to XCHG on x86. */ - /* The first operand is the result, the second the value */ - /* to be stored. Both registers must be different from addr. */ - /* Make the address operand an early clobber output so it */ - /* doesn't overlap with the other operands. The early clobber*/ - /* on oldval is neccessary to prevent the compiler allocating */ - /* them to the same register if they are both unused. */ - __asm__ __volatile__("swp %0, %2, [%3]" - : "=&r"(oldval), "=&r"(addr) - : "r"(1), "1"(addr) - : "memory"); - return oldval; -} - -#define AO_HAVE_test_and_set_full - -#endif // __ARM_ARCH_x diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/cris.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/cris.h deleted file mode 100644 index 3864905754..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/cris.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) 2004 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. - * - * Most of this code originally comes from Hans-Peter Nilsson. It is included - * here with his permission. - * - * This version has not been tested. It was coped here from a GC - * patch so that we wouldn't lose the code in the upgrade to gc7. - */ - -#include "../all_atomic_load_store.h" - -#include "../ordered.h" /* There are no multiprocessor implementations. */ - -#include "../test_and_set_t_is_ao_t.h" - -/* - * The architecture apparently supports an "f" flag which is - * set on preemption. This essentially gives us load-locked, - * store-conditional primitives, though I'm not quite sure how - * this would work on a hypothetical multiprocessor. -HB - * - * For details, see - * http://developer.axis.com/doc/hardware/etrax100lx/prog_man/ - * 1_architectural_description.pdf - * - * Presumably many other primitives (notably CAS, including the double- - * width versions) could be implemented in this manner, if someone got - * around to it. - */ - -AO_INLINE AO_TS_VAL_t -AO_test_and_set_full(volatile AO_TS_t *addr) { - /* Ripped from linuxthreads/sysdeps/cris/pt-machine.h */ - register unsigned long int ret; - - /* Note the use of a dummy output of *addr to expose the write. The - memory barrier is to stop *other* writes being moved past this code. */ - __asm__ __volatile__("clearf\n" - "0:\n\t" - "movu.b [%2],%0\n\t" - "ax\n\t" - "move.b %3,[%2]\n\t" - "bwf 0b\n\t" - "clearf" - : "=&r" (ret), "=m" (*addr) - : "r" (addr), "r" ((int) 1), "m" (*addr) - : "memory"); - return ret; -} - -#define AO_HAVE_test_and_set_full - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/hppa.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/hppa.h deleted file mode 100644 index f303d7f352..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/hppa.h +++ /dev/null @@ -1,97 +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. - * - * Modified by Carlos O'Donell , 2003 - * - Added self-aligning lock. - * - */ - -#include "../all_atomic_load_store.h" - -/* Some architecture set descriptions include special "ordered" memory */ -/* operations. As far as we can tell, no existing processors actually */ -/* require those. Nor does it appear likely that future processors */ -/* will. */ -#include "../ordered.h" - -/* GCC will not guarantee the alignment we need, use four lock words */ -/* and select the correctly aligned datum. See the glibc 2.3.2 */ -/* linuxthread port for the original implementation. */ -struct AO_pa_clearable_loc { - int data[4]; -}; - -#undef AO_TS_INITIALIZER -#define AO_TS_t struct AO_pa_clearable_loc -#define AO_TS_INITIALIZER {1,1,1,1} -/* Switch meaning of set and clear, since we only have an atomic clear */ -/* instruction. */ -typedef enum {AO_PA_TS_set = 0, AO_PA_TS_clear = 1} AO_PA_TS_val; -#define AO_TS_VAL_t AO_PA_TS_val -#define AO_TS_CLEAR AO_PA_TS_clear -#define AO_TS_SET AO_PA_TS_set - -/* The hppa only has one atomic read and modify memory operation, */ -/* load and clear, so hppa spinlocks must use zero to signify that */ -/* someone is holding the lock. The address used for the ldcw */ -/* semaphore must be 16-byte aligned. */ - -#define __ldcw(a) ({ \ - volatile unsigned int __ret; \ - __asm__ __volatile__("ldcw 0(%2),%0" \ - : "=r" (__ret), "=m" (*(a)) : "r" (a)); \ - __ret; \ -}) - -/* Because malloc only guarantees 8-byte alignment for malloc'd data, */ -/* and GCC only guarantees 8-byte alignment for stack locals, we can't */ -/* be assured of 16-byte alignment for atomic lock data even if we */ -/* specify "__attribute ((aligned(16)))" in the type declaration. So, */ -/* we use a struct containing an array of four ints for the atomic lock */ -/* type and dynamically select the 16-byte aligned int from the array */ -/* for the semaphore. */ -#define __PA_LDCW_ALIGNMENT 16 -#define __ldcw_align(a) ({ \ - unsigned long __ret = (unsigned long) a; \ - __ret += __PA_LDCW_ALIGNMENT - 1; \ - __ret &= ~(__PA_LDCW_ALIGNMENT - 1); \ - (volatile unsigned int *) __ret; \ -}) - -/* Works on PA 1.1 and PA 2.0 systems */ -AO_INLINE AO_TS_VAL_t -AO_test_and_set_full(volatile AO_TS_t * addr) -{ - volatile unsigned int *a = __ldcw_align (addr); - return (AO_TS_VAL_t) __ldcw (a); -} - -AO_INLINE void -AO_pa_clear(volatile AO_TS_t * addr) -{ - volatile unsigned int *a = __ldcw_align (addr); - AO_compiler_barrier(); - *a = 1; -} -#define AO_CLEAR(addr) AO_pa_clear(addr) - -#define AO_HAVE_test_and_set_full - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/ia64.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/ia64.h deleted file mode 100644 index 119b9ed19d..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/ia64.h +++ /dev/null @@ -1,297 +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. - */ - -#include "../all_atomic_load_store.h" - -#include "../all_acquire_release_volatile.h" - -#include "../test_and_set_t_is_char.h" - -#ifdef _ILP32 - /* 32-bit HP/UX code. */ - /* This requires pointer "swizzling". Pointers need to be expanded */ - /* to 64 bits using the addp4 instruction before use. This makes it */ - /* hard to share code, but we try anyway. */ -# define AO_LEN "4" - /* We assume that addr always appears in argument position 1 in asm */ - /* code. If it is clobbered due to swizzling, we also need it in */ - /* second position. Any later arguments are referenced symbolically, */ - /* so that we don't have to worry about their position. This requires*/ - /* gcc 3.1, but you shouldn't be using anything older than that on */ - /* IA64 anyway. */ - /* The AO_MASK macro is a workaround for the fact that HP/UX gcc */ - /* appears to otherwise store 64-bit pointers in ar.ccv, i.e. it */ - /* doesn't appear to clear high bits in a pointer value we pass into */ - /* assembly code, even if it is supposedly of type AO_t. */ -# define AO_IN_ADDR "1"(addr) -# define AO_OUT_ADDR , "=r"(addr) -# define AO_SWIZZLE "addp4 %1=0,%1;;\n" -# define AO_MASK(ptr) __asm__("zxt4 %1=%1": "=r"(ptr) : "0"(ptr)); -#else -# define AO_LEN "8" -# define AO_IN_ADDR "r"(addr) -# define AO_OUT_ADDR -# define AO_SWIZZLE -# define AO_MASK(ptr) -#endif - -AO_INLINE void -AO_nop_full() -{ - __asm__ __volatile__("mf" : : : "memory"); -} -#define AO_HAVE_nop_full - -AO_INLINE AO_t -AO_fetch_and_add1_acquire (volatile AO_t *addr) -{ - AO_t result; - - __asm__ __volatile__ (AO_SWIZZLE - "fetchadd" AO_LEN ".acq %0=[%1],1": - "=r" (result) AO_OUT_ADDR: AO_IN_ADDR :"memory"); - return result; -} -#define AO_HAVE_fetch_and_add1_acquire - -AO_INLINE AO_t -AO_fetch_and_add1_release (volatile AO_t *addr) -{ - AO_t result; - - __asm__ __volatile__ (AO_SWIZZLE - "fetchadd" AO_LEN ".rel %0=[%1],1": - "=r" (result) AO_OUT_ADDR: AO_IN_ADDR :"memory"); - return result; -} - -#define AO_HAVE_fetch_and_add1_release - -AO_INLINE AO_t -AO_fetch_and_sub1_acquire (volatile AO_t *addr) -{ - AO_t result; - - __asm__ __volatile__ (AO_SWIZZLE - "fetchadd" AO_LEN ".acq %0=[%1],-1": - "=r" (result) AO_OUT_ADDR: AO_IN_ADDR :"memory"); - return result; -} - -#define AO_HAVE_fetch_and_sub1_acquire - -AO_INLINE AO_t -AO_fetch_and_sub1_release (volatile AO_t *addr) -{ - AO_t result; - - __asm__ __volatile__ (AO_SWIZZLE - "fetchadd" AO_LEN ".rel %0=[%1],-1": - "=r" (result) AO_OUT_ADDR: AO_IN_ADDR :"memory"); - return result; -} - -#define AO_HAVE_fetch_and_sub1_release - -#ifndef _ILP32 - -AO_INLINE unsigned int -AO_int_fetch_and_add1_acquire (volatile unsigned int *addr) -{ - unsigned int result; - - __asm__ __volatile__ ("fetchadd4.acq %0=[%1],1": - "=r" (result): AO_IN_ADDR :"memory"); - return result; -} -#define AO_HAVE_int_fetch_and_add1_acquire - -AO_INLINE unsigned int -AO_int_fetch_and_add1_release (volatile unsigned int *addr) -{ - unsigned int result; - - __asm__ __volatile__ ("fetchadd4.rel %0=[%1],1": - "=r" (result): AO_IN_ADDR :"memory"); - return result; -} - -#define AO_HAVE_int_fetch_and_add1_release - -AO_INLINE unsigned int -AO_int_fetch_and_sub1_acquire (volatile unsigned int *addr) -{ - unsigned int result; - - __asm__ __volatile__ ("fetchadd4.acq %0=[%1],-1": - "=r" (result): AO_IN_ADDR :"memory"); - return result; -} - -#define AO_HAVE_int_fetch_and_sub1_acquire - -AO_INLINE unsigned int -AO_int_fetch_and_sub1_release (volatile unsigned int *addr) -{ - unsigned int result; - - __asm__ __volatile__ ("fetchadd4.rel %0=[%1],-1": - "=r" (result): AO_IN_ADDR :"memory"); - return result; -} - -#define AO_HAVE_int_fetch_and_sub1_release - -#endif /* !_ILP32 */ - -AO_INLINE int -AO_compare_and_swap_acquire(volatile AO_t *addr, - AO_t old, AO_t new_val) -{ - AO_t oldval; - AO_MASK(old); - __asm__ __volatile__(AO_SWIZZLE - "mov ar.ccv=%[old] ;; cmpxchg" AO_LEN - ".acq %0=[%1],%[new_val],ar.ccv" - : "=r"(oldval) AO_OUT_ADDR - : AO_IN_ADDR, [new_val]"r"(new_val), [old]"r"(old) - : "memory"); - return (oldval == old); -} - -#define AO_HAVE_compare_and_swap_acquire - -AO_INLINE int -AO_compare_and_swap_release(volatile AO_t *addr, - AO_t old, AO_t new_val) -{ - AO_t oldval; - AO_MASK(old); - __asm__ __volatile__(AO_SWIZZLE - "mov ar.ccv=%[old] ;; cmpxchg" AO_LEN - ".rel %0=[%1],%[new_val],ar.ccv" - : "=r"(oldval) AO_OUT_ADDR - : AO_IN_ADDR, [new_val]"r"(new_val), [old]"r"(old) - : "memory"); - return (oldval == old); -} - -#define AO_HAVE_compare_and_swap_release - -AO_INLINE int -AO_char_compare_and_swap_acquire(volatile unsigned char *addr, - unsigned char old, unsigned char new_val) -{ - unsigned char oldval; - __asm__ __volatile__(AO_SWIZZLE - "mov ar.ccv=%[old] ;; cmpxchg1.acq %0=[%1],%[new_val],ar.ccv" - : "=r"(oldval) AO_OUT_ADDR - : AO_IN_ADDR, [new_val]"r"(new_val), [old]"r"((AO_t)old) - : "memory"); - return (oldval == old); -} - -#define AO_HAVE_char_compare_and_swap_acquire - -AO_INLINE int -AO_char_compare_and_swap_release(volatile unsigned char *addr, - unsigned char old, unsigned char new_val) -{ - unsigned char oldval; - __asm__ __volatile__(AO_SWIZZLE - "mov ar.ccv=%[old] ;; cmpxchg1.rel %0=[%1],%[new_val],ar.ccv" - : "=r"(oldval) AO_OUT_ADDR - : AO_IN_ADDR, [new_val]"r"(new_val), [old]"r"((AO_t)old) - : "memory"); - return (oldval == old); -} - -#define AO_HAVE_char_compare_and_swap_release - -AO_INLINE int -AO_short_compare_and_swap_acquire(volatile unsigned short *addr, - unsigned short old, unsigned short new_val) -{ - unsigned short oldval; - __asm__ __volatile__(AO_SWIZZLE - "mov ar.ccv=%[old] ;; cmpxchg2.acq %0=[%1],%[new_val],ar.ccv" - : "=r"(oldval) AO_OUT_ADDR - : AO_IN_ADDR, [new_val]"r"(new_val), [old]"r"((AO_t)old) - : "memory"); - return (oldval == old); -} - -#define AO_HAVE_short_compare_and_swap_acquire - -AO_INLINE int -AO_short_compare_and_swap_release(volatile unsigned short *addr, - unsigned short old, unsigned short new_val) -{ - unsigned short oldval; - __asm__ __volatile__(AO_SWIZZLE - "mov ar.ccv=%[old] ;; cmpxchg2.rel %0=[%1],%[new_val],ar.ccv" - : "=r"(oldval) AO_OUT_ADDR - : AO_IN_ADDR, [new_val]"r"(new_val), [old]"r"((AO_t)old) - : "memory"); - return (oldval == old); -} - -#define AO_HAVE_short_compare_and_swap_release - -#ifndef _ILP32 - -AO_INLINE int -AO_int_compare_and_swap_acquire(volatile unsigned int *addr, - unsigned int old, unsigned int new_val) -{ - unsigned int oldval; - __asm__ __volatile__("mov ar.ccv=%3 ;; cmpxchg4.acq %0=[%1],%2,ar.ccv" - : "=r"(oldval) - : AO_IN_ADDR, "r"(new_val), "r"((AO_t)old) : "memory"); - return (oldval == old); -} - -#define AO_HAVE_int_compare_and_swap_acquire - -AO_INLINE int -AO_int_compare_and_swap_release(volatile unsigned int *addr, - unsigned int old, unsigned int new_val) -{ - unsigned int oldval; - __asm__ __volatile__("mov ar.ccv=%3 ;; cmpxchg4.rel %0=[%1],%2,ar.ccv" - : "=r"(oldval) - : AO_IN_ADDR, "r"(new_val), "r"((AO_t)old) : "memory"); - return (oldval == old); -} - -#define AO_HAVE_int_compare_and_swap_release - -#endif /* !_ILP32 */ - -/* FIXME: Add compare_and_swap_double as soon as there is widely */ -/* available hardware that implements it. */ - -/* FIXME: Add compare_double_and_swap_double for the _ILP32 case. */ - -#ifdef _ILP32 -# include "../ao_t_is_int.h" -#endif diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/m68k.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/m68k.h deleted file mode 100644 index 9e7f70a4bf..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/m68k.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 1991-1994 by Xerox Corporation. All rights reserved. - * Copyright (c) 1996-1999 by Silicon Graphics. All rights reserved. - * Copyright (c) 1999-2003 by Hewlett-Packard Company. All rights reserved. - * - * - * 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. - * - */ - -/* FIXME. Very incomplete. */ -#include "../all_aligned_atomic_load_store.h" - -/* Are there any m68k multiprocessors still around? */ -/* AFAIK, Alliants were sequentially consistent. */ -#include "../ordered.h" - -#include "../test_and_set_t_is_ao_t.h" - -/* Contributed by Tony Mantler or new. Should be changed to MIT license? */ -AO_INLINE AO_TS_VAL_t -AO_test_and_set_full(volatile AO_TS_t *addr) { - int oldval; - - /* The return value is semi-phony. */ - /* 'tas' sets bit 7 while the return */ - /* value pretends bit 0 was set */ - __asm__ __volatile__( - "tas %1@; sne %0; negb %0" - : "=d" (oldval) - : "a" (addr) : "memory"); - return oldval; -} - -#define AO_HAVE_test_and_set_full - - - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/powerpc.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/powerpc.h deleted file mode 100644 index 799722aa37..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/powerpc.h +++ /dev/null @@ -1,270 +0,0 @@ -/* - * Copyright (c) 1991-1994 by Xerox Corporation. All rights reserved. - * Copyright (c) 1996-1999 by Silicon Graphics. All rights reserved. - * Copyright (c) 1999-2004 Hewlett-Packard Development Company, L.P. - * - * - * 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. - * - */ - -/* FIXME. Incomplete. No support for 64 bits. */ -/* Memory model documented at http://www-106.ibm.com/developerworks/ */ -/* eserver/articles/archguide.html and (clearer) */ -/* http://www-106.ibm.com/developerworks/eserver/articles/powerpc.html. */ -/* There appears to be no implicit ordering between any kind of */ -/* independent memory references. */ -/* Architecture enforces some ordering based on control dependence. */ -/* I don't know if that could help. */ -/* Data-dependent loads are always ordered. */ -/* Based on the above references, eieio is intended for use on */ -/* uncached memory, which we don't support. It does not order loads */ -/* from cached memory. */ -/* Thanks to Maged Michael, Doug Lea, and Roger Hoover for helping to */ -/* track some of this down and correcting my misunderstandings. -HB */ - -#include "../all_aligned_atomic_load_store.h" - -#include "../test_and_set_t_is_ao_t.h" - /* There seems to be no byte equivalent of lwarx, so this */ - /* may really be what we want, at least in the 32-bit case. */ - -AO_INLINE void -AO_nop_full() -{ - __asm__ __volatile__("sync" : : : "memory"); -} - -#define AO_HAVE_nop_full - -/* lwsync apparently works for everything but a StoreLoad barrier. */ -AO_INLINE void -AO_lwsync() -{ - __asm__ __volatile__("lwsync" : : : "memory"); -} - -#define AO_nop_write() AO_lwsync() -#define AO_HAVE_nop_write - -#define AO_nop_read() AO_lwsync() -#define AO_HAVE_nop_read - -/* We explicitly specify load_acquire, since it is important, and can */ -/* be implemented relatively cheaply. It could be implemented */ -/* with an ordinary load followed by a lwsync. But the general wisdom */ -/* seems to be that a data dependent branch followed by an isync is */ -/* cheaper. And the documentation is fairly explicit that this also */ -/* has acquire semantics. */ -/* ppc64 uses ld not lwz */ -#if defined(__powerpc64__) || defined(__ppc64__) || defined(__64BIT__) -AO_INLINE AO_t -AO_load_acquire(volatile AO_t *addr) -{ - AO_t result; - - /* FIXME: We should get gcc to allocate one of the condition */ - /* registers. I always got "impossible constraint" when I */ - /* tried the "y" constraint. */ - __asm__ __volatile__ ( - "ld %0,%1\n" - "cmpw cr7,%0,%0\n" - "bne- cr7,1f\n" - "1: isync\n" - : "=r" (result) - : "m"(*addr) : "memory", "cc"); - return result; -} -#else -AO_INLINE AO_t -AO_load_acquire(volatile AO_t *addr) -{ - AO_t result; - - /* FIXME: We should get gcc to allocate one of the condition */ - /* registers. I always got "impossible constraint" when I */ - /* tried the "y" constraint. */ - __asm__ __volatile__ ( - "lwz%X1 %0,%1\n" - "cmpw cr7,%0,%0\n" - "bne- cr7,1f\n" - "1: isync\n" - : "=r" (result) - : "m"(*addr) : "memory", "cc"); - return result; -} -#endif -#define AO_HAVE_load_acquire - -/* We explicitly specify store_release, since it relies */ -/* on the fact that lwsync is also a LoadStore barrier. */ -AO_INLINE void -AO_store_release(volatile AO_t *addr, AO_t value) -{ - AO_lwsync(); - *addr = value; -} - -#define AO_HAVE_load_acquire - -/* This is similar to the code in the garbage collector. Deleting */ -/* this and having it synthesized from compare_and_swap would probably */ -/* only cost us a load immediate instruction. */ -#if defined(__powerpc64__) || defined(__ppc64__) || defined(__64BIT__) -/* Completely untested. And we should be using smaller objects anyway. */ -AO_INLINE AO_TS_VAL_t -AO_test_and_set(volatile AO_TS_t *addr) { - unsigned long oldval; - unsigned long temp = 1; /* locked value */ - - __asm__ __volatile__( - "1:ldarx %0,0,%1\n" /* load and reserve */ - "cmpdi %0, 0\n" /* if load is */ - "bne 2f\n" /* non-zero, return already set */ - "stdcx. %2,0,%1\n" /* else store conditional */ - "bne- 1b\n" /* retry if lost reservation */ - "2:\n" /* oldval is zero if we set */ - : "=&r"(oldval) - : "r"(addr), "r"(temp) - : "memory", "cc"); - - return (AO_TS_VAL_t)oldval; -} - -#else - -AO_INLINE AO_TS_VAL_t -AO_test_and_set(volatile AO_TS_t *addr) { - int oldval; - int temp = 1; /* locked value */ - - __asm__ __volatile__( - "1:lwarx %0,0,%1\n" /* load and reserve */ - "cmpwi %0, 0\n" /* if load is */ - "bne 2f\n" /* non-zero, return already set */ - "stwcx. %2,0,%1\n" /* else store conditional */ - "bne- 1b\n" /* retry if lost reservation */ - "2:\n" /* oldval is zero if we set */ - : "=&r"(oldval) - : "r"(addr), "r"(temp) - : "memory", "cc"); - - return (AO_TS_VAL_t)oldval; -} - -#endif - -#define AO_have_test_and_set - -AO_INLINE AO_TS_VAL_t -AO_test_and_set_acquire(volatile AO_TS_t *addr) { - AO_TS_VAL_t result = AO_test_and_set(addr); - AO_lwsync(); - return result; -} - -#define AO_HAVE_test_and_set_acquire - -AO_INLINE AO_TS_VAL_t -AO_test_and_set_release(volatile AO_TS_t *addr) { - AO_lwsync(); - return AO_test_and_set(addr); -} - -#define AO_HAVE_test_and_set_release - -AO_INLINE AO_TS_VAL_t -AO_test_and_set_full(volatile AO_TS_t *addr) { - AO_TS_VAL_t result; - AO_lwsync(); - result = AO_test_and_set(addr); - AO_lwsync(); - return result; -} - -#define AO_HAVE_test_and_set_full - -#if defined(__powerpc64__) || defined(__ppc64__) || defined(__64BIT__) -/* FIXME: Completely untested. */ -AO_INLINE int -AO_compare_and_swap(volatile AO_t *addr, AO_t old, AO_t new_val) { - AO_t oldval; - int result = 0; - - __asm__ __volatile__( - "1:ldarx %0,0,%2\n" /* load and reserve */ - "cmpd %0, %4\n" /* if load is not equal to */ - "bne 2f\n" /* old, fail */ - "stdcx. %3,0,%2\n" /* else store conditional */ - "bne- 1b\n" /* retry if lost reservation */ - "li %1,1\n" /* result = 1; */ - "2:\n" - : "=&r"(oldval), "=&r"(result) - : "r"(addr), "r"(new_val), "r"(old), "1"(result) - : "memory", "cc"); - - return result; -} - -#else - -AO_INLINE int -AO_compare_and_swap(volatile AO_t *addr, AO_t old, AO_t new_val) { - AO_t oldval; - int result = 0; - - __asm__ __volatile__( - "1:lwarx %0,0,%2\n" /* load and reserve */ - "cmpw %0, %4\n" /* if load is not equal to */ - "bne 2f\n" /* old, fail */ - "stwcx. %3,0,%2\n" /* else store conditional */ - "bne- 1b\n" /* retry if lost reservation */ - "li %1,1\n" /* result = 1; */ - "2:\n" - : "=&r"(oldval), "=&r"(result) - : "r"(addr), "r"(new_val), "r"(old), "1"(result) - : "memory", "cc"); - - return result; -} -#endif - -#define AO_HAVE_compare_and_swap - -AO_INLINE int -AO_compare_and_swap_acquire(volatile AO_t *addr, AO_t old, AO_t new_val) { - int result = AO_compare_and_swap(addr, old, new_val); - AO_lwsync(); - return result; -} - -#define AO_HAVE_compare_and_swap_acquire - -AO_INLINE int -AO_compare_and_swap_release(volatile AO_t *addr, AO_t old, AO_t new_val) { - AO_lwsync(); - return AO_compare_and_swap(addr, old, new_val); -} - -#define AO_HAVE_compare_and_swap_release - -AO_INLINE int -AO_compare_and_swap_full(volatile AO_t *addr, AO_t old, AO_t new_val) { - AO_t result; - AO_lwsync(); - result = AO_compare_and_swap(addr, old, new_val); - AO_lwsync(); - return result; -} - -#define AO_HAVE_compare_and_swap_full - -/* FIXME: We should also implement fetch_and_add and or primitives */ -/* directly. */ diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/s390.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/s390.h deleted file mode 100644 index 7cb9986547..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/s390.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 1991-1994 by Xerox Corporation. All rights reserved. - * Copyright (c) 1996-1999 by Silicon Graphics. All rights reserved. - * Copyright (c) 1999-2003 by Hewlett-Packard Company. All rights reserved. - * - * - * 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. - * - */ - -/* FIXME: untested. */ -/* The relevant documentation appears to be at */ -/* http://publibz.boulder.ibm.com/epubs/pdf/dz9zr003.pdf */ -/* around page 5-96. Apparently: */ -/* - Memory references in general are atomic only for a single */ -/* byte. But it appears that the most common load/store */ -/* instructions also guarantee atomicity for aligned */ -/* operands of standard types. WE FOOLISHLY ASSUME that */ -/* compilers only generate those. If that turns out to be */ -/* wrong, we need inline assembly code for AO_load and */ -/* AO_store. */ -/* - A store followed by a load is unordered since the store */ -/* may be delayed. Otherwise everything is ordered. */ -/* - There is a hardware compare-and-swap (CS) instruction. */ - -#include "ordered_except_wr.h" -#include "all_aligned_atomic_load_store.h" - -#include "../test_and_set_t_is_ao_t.h" -/* FIXME: Is there a way to do byte-sized test-and-set? */ - -/* FIXME: AO_nop_full should probably be implemented directly. */ -/* It appears that certain BCR instructions have that effect. */ -/* Presumably they're cheaper than CS? */ - -AO_INLINE AO_t AO_compare_and_swap_full(volatile AO_t *addr, - AO_t old, AO_t new_val) -{ - int retval; - __asm__ __volatile__ ( -# ifndef __s390x__ - " cs %1,%2,0(%3)\n" -# else - " csg %1,%2,0(%3)\n" -# endif - " ipm %0\n" - " srl %0,28\n" - : "=&d" (retval), "+d" (old) - : "d" (new_val), "a" (addr) - : "cc", "memory"); - return retval == 0; -} - -#define AO_HAVE_compare_and_swap_full - -/* FIXME: Add double-wide compare-and-swap for 32-bit executables. */ diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/sparc.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/sparc.h deleted file mode 100644 index 4850855d65..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/sparc.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 1991-1994 by Xerox Corporation. All rights reserved. - * Copyright (c) 1996-1999 by Silicon Graphics. All rights reserved. - * Copyright (c) 1999-2003 by Hewlett-Packard Company. All rights reserved. - * - * - * 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. - * - */ - -/* FIXME. Very incomplete. No support for sparc64. */ -/* Non-ancient SPARCs provide compare-and-swap (casa). */ -/* We should make that available. */ - -#include "../all_atomic_load_store.h" - -/* Real SPARC code uses TSO: */ -#include "../ordered_except_wr.h" - -/* Test_and_set location is just a byte. */ -#include "../test_and_set_t_is_char.h" - -AO_INLINE AO_TS_VAL_t -AO_test_and_set_full(volatile AO_TS_t *addr) { - int oldval; - - __asm__ __volatile__("ldstub %1,%0" - : "=r"(oldval), "=m"(*addr) - : "m"(*addr) : "memory"); - return oldval; -} - -#define AO_HAVE_test_and_set_full - -/* FIXME: This needs to be extended for SPARC v8 and v9. */ -/* SPARC V8 also has swap. V9 has CAS. */ -/* There are barriers like membar #LoadStore. */ -/* CASA (32-bit) and CASXA(64-bit) instructions were */ -/* added in V9. */ diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/x86.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/x86.h deleted file mode 100644 index 6c79f2f3d6..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/x86.h +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Copyright (c) 1991-1994 by Xerox Corporation. All rights reserved. - * Copyright (c) 1996-1999 by Silicon Graphics. All rights reserved. - * Copyright (c) 1999-2003 by Hewlett-Packard Company. All rights reserved. - * - * - * 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. - * - * Some of the machine specific code was borrowed from our GC distribution. - */ - -/* The following really assume we have a 486 or better. Unfortunately */ -/* gcc doesn't define a suitable feature test macro based on command */ -/* line options. */ -/* We should perhaps test dynamically. */ - -#include "../all_aligned_atomic_load_store.h" - -/* Real X86 implementations, except for some old WinChips, appear */ -/* to enforce ordering between memory operations, EXCEPT that a later */ -/* read can pass earlier writes, presumably due to the visible */ -/* presence of store buffers. */ -/* We ignore both the WinChips, and the fact that the official specs */ -/* seem to be much weaker (and arguably too weak to be usable). */ - -#include "../ordered_except_wr.h" - -#include "../test_and_set_t_is_char.h" - -#include "../standard_ao_double_t.h" - -#if defined(AO_USE_PENTIUM4_INSTRS) -AO_INLINE void -AO_nop_full() -{ - __asm__ __volatile__("mfence" : : : "memory"); -} - -#define AO_HAVE_nop_full - -#else - -/* We could use the cpuid instruction. But that seems to be slower */ -/* than the default implementation based on test_and_set_full. Thus */ -/* we omit that bit of misinformation here. */ - -#endif - -/* As far as we can tell, the lfence and sfence instructions are not */ -/* currently needed or useful for cached memory accesses. */ - -/* Really only works for 486 and later */ -AO_INLINE AO_t -AO_fetch_and_add_full (volatile AO_t *p, AO_t incr) -{ - AO_t result; - - __asm__ __volatile__ ("lock; xaddl %0, %1" : - "=r" (result), "=m" (*p) : "0" (incr), "m" (*p) - : "memory"); - return result; -} - -#define AO_HAVE_fetch_and_add_full - -AO_INLINE unsigned char -AO_char_fetch_and_add_full (volatile unsigned char *p, unsigned char incr) -{ - unsigned char result; - - __asm__ __volatile__ ("lock; xaddb %0, %1" : - "=q" (result), "=m" (*p) : "0" (incr), "m" (*p) - : "memory"); - return result; -} - -#define AO_HAVE_char_fetch_and_add_full - -AO_INLINE unsigned short -AO_short_fetch_and_add_full (volatile unsigned short *p, unsigned short incr) -{ - unsigned short result; - - __asm__ __volatile__ ("lock; xaddw %0, %1" : - "=r" (result), "=m" (*p) : "0" (incr), "m" (*p) - : "memory"); - return result; -} - -#define AO_HAVE_short_fetch_and_add_full - -/* Really only works for 486 and later */ -AO_INLINE void -AO_or_full (volatile AO_t *p, AO_t incr) -{ - __asm__ __volatile__ ("lock; orl %1, %0" : - "=m" (*p) : "r" (incr), "m" (*p) : "memory"); -} - -#define AO_HAVE_or_full - -AO_INLINE AO_TS_VAL_t -AO_test_and_set_full(volatile AO_TS_t *addr) -{ - unsigned char oldval; - /* Note: the "xchg" instruction does not need a "lock" prefix */ - __asm__ __volatile__("xchgb %0, %1" - : "=q"(oldval), "=m"(*addr) - : "0"((AO_TS_t)0xff), "m"(*addr) : "memory"); /* PLTSCHEME: AO_TS_t cast */ - return (AO_TS_VAL_t)oldval; -} - -#define AO_HAVE_test_and_set_full - -/* Returns nonzero if the comparison succeeded. */ -AO_INLINE int -AO_compare_and_swap_full(volatile AO_t *addr, - AO_t old, AO_t new_val) -{ - char result; - __asm__ __volatile__("lock; cmpxchgl %3, %0; setz %1" - : "=m"(*addr), "=q"(result) - : "m"(*addr), "r" (new_val), "a"(old) : "memory"); - return (int) result; -} - -#define AO_HAVE_compare_and_swap_full - -/* Returns nonzero if the comparison succeeded. */ -/* Really requires at least a Pentium. */ -AO_INLINE int -AO_compare_double_and_swap_double_full(volatile AO_double_t *addr, - AO_t old_val1, AO_t old_val2, - AO_t new_val1, AO_t new_val2) -{ - char result; - #if __PIC__ - /* If PIC is turned on, we can't use %ebx as it is reserved for the - GOT poiner. We can save and restore %ebx because GCC won't be - using it for anything else (such as any of the m operands) */ - __asm__ __volatile__("pushl %%ebx;" /* save ebx used for PIC GOT ptr */ - "movl %6,%%ebx;" /* move new_val2 to %ebx */ - "lock; cmpxchg8b %0; setz %1;" - "pop %%ebx;" /* restore %ebx */ - : "=m"(*addr), "=q"(result) - : "m"(*addr), "d" (old_val2), "a" (old_val1), - "c" (new_val2), "m" (new_val1) : "memory"); - #else - /* We can't just do the same thing in non-PIC mode, because GCC - * might be using %ebx as the memory operand. We could have ifdef'd - * in a clobber, but there's no point doing the push/pop if we don't - * have to. */ - __asm__ __volatile__("lock; cmpxchg8b %0; setz %1;" - : "=m"(*addr), "=q"(result) - : "m"(*addr), "d" (old_val2), "a" (old_val1), - "c" (new_val2), "b" (new_val1) : "memory"); - #endif - return (int) result; -} - -#define AO_HAVE_compare_double_and_swap_double_full - -#include "../ao_t_is_int.h" diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/x86.h.orig b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/x86.h.orig deleted file mode 100644 index 0b344a7ed4..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/x86.h.orig +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright (c) 1991-1994 by Xerox Corporation. All rights reserved. - * Copyright (c) 1996-1999 by Silicon Graphics. All rights reserved. - * Copyright (c) 1999-2003 by Hewlett-Packard Company. All rights reserved. - * - * - * 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. - * - * Some of the machine specific code was borrowed from our GC distribution. - */ - -/* The following really assume we have a 486 or better. Unfortunately */ -/* gcc doesn't define a suitable feature test macro based on command */ -/* line options. */ -/* We should perhaps test dynamically. */ - -#include "../all_aligned_atomic_load_store.h" - -/* Real X86 implementations, except for some old WinChips, appear */ -/* to enforce ordering between memory operations, EXCEPT that a later */ -/* read can pass earlier writes, presumably due to the visible */ -/* presence of store buffers. */ -/* We ignore both the WinChips, and the fact that the official specs */ -/* seem to be much weaker (and arguably too weak to be usable). */ - -#include "../ordered_except_wr.h" - -#include "../test_and_set_t_is_char.h" - -#include "../standard_ao_double_t.h" - -#if defined(AO_USE_PENTIUM4_INSTRS) -AO_INLINE void -AO_nop_full() -{ - __asm__ __volatile__("mfence" : : : "memory"); -} - -#define AO_HAVE_nop_full - -#else - -/* We could use the cpuid instruction. But that seems to be slower */ -/* than the default implementation based on test_and_set_full. Thus */ -/* we omit that bit of misinformation here. */ - -#endif - -/* As far as we can tell, the lfence and sfence instructions are not */ -/* currently needed or useful for cached memory accesses. */ - -/* Really only works for 486 and later */ -AO_INLINE AO_t -AO_fetch_and_add_full (volatile AO_t *p, AO_t incr) -{ - AO_t result; - - __asm__ __volatile__ ("lock; xaddl %0, %1" : - "=r" (result), "=m" (*p) : "0" (incr), "m" (*p) - : "memory"); - return result; -} - -#define AO_HAVE_fetch_and_add_full - -AO_INLINE unsigned char -AO_char_fetch_and_add_full (volatile unsigned char *p, unsigned char incr) -{ - unsigned char result; - - __asm__ __volatile__ ("lock; xaddb %0, %1" : - "=q" (result), "=m" (*p) : "0" (incr), "m" (*p) - : "memory"); - return result; -} - -#define AO_HAVE_char_fetch_and_add_full - -AO_INLINE unsigned short -AO_short_fetch_and_add_full (volatile unsigned short *p, unsigned short incr) -{ - unsigned short result; - - __asm__ __volatile__ ("lock; xaddw %0, %1" : - "=r" (result), "=m" (*p) : "0" (incr), "m" (*p) - : "memory"); - return result; -} - -#define AO_HAVE_short_fetch_and_add_full - -/* Really only works for 486 and later */ -AO_INLINE void -AO_or_full (volatile AO_t *p, AO_t incr) -{ - __asm__ __volatile__ ("lock; orl %1, %0" : - "=m" (*p) : "r" (incr), "m" (*p) : "memory"); -} - -#define AO_HAVE_or_full - -AO_INLINE AO_TS_VAL_t -AO_test_and_set_full(volatile AO_TS_t *addr) -{ - unsigned char oldval; - /* Note: the "xchg" instruction does not need a "lock" prefix */ - __asm__ __volatile__("xchgb %0, %1" - : "=q"(oldval), "=m"(*addr) - : "0"(0xff), "m"(*addr) : "memory"); - return (AO_TS_VAL_t)oldval; -} - -#define AO_HAVE_test_and_set_full - -/* Returns nonzero if the comparison succeeded. */ -AO_INLINE int -AO_compare_and_swap_full(volatile AO_t *addr, - AO_t old, AO_t new_val) -{ - char result; - __asm__ __volatile__("lock; cmpxchgl %3, %0; setz %1" - : "=m"(*addr), "=q"(result) - : "m"(*addr), "r" (new_val), "a"(old) : "memory"); - return (int) result; -} - -#define AO_HAVE_compare_and_swap_full - -/* Returns nonzero if the comparison succeeded. */ -/* Really requires at least a Pentium. */ -AO_INLINE int -AO_compare_double_and_swap_double_full(volatile AO_double_t *addr, - AO_t old_val1, AO_t old_val2, - AO_t new_val1, AO_t new_val2) -{ - char result; - register AO_t nv1 asm("%ebx") = new_val1; - /* The above hack seems to avoid a gcc error complaining */ - /* that ebx is unavailable. */ - - __asm__ __volatile__("lock; cmpxchg8b %0; setz %1" - : "=m"(*addr), "=q"(result) - : "m"(*addr), "a" (old_val1), "d" (old_val2), - "b" (nv1), "c" (new_val2) : "memory"); - return (int) result; -} - -#define AO_HAVE_compare_double_and_swap_double_full - -#include "../ao_t_is_int.h" diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/x86_64.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/x86_64.h deleted file mode 100644 index 9da843287d..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/x86_64.h +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright (c) 1991-1994 by Xerox Corporation. All rights reserved. - * Copyright (c) 1996-1999 by Silicon Graphics. All rights reserved. - * Copyright (c) 1999-2003 by Hewlett-Packard Company. All rights reserved. - * - * - * 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. - * - * Some of the machine specific code was borrowed from our GC distribution. - */ - -/* The following really assume we have a 486 or better. Unfortunately */ -/* gcc doesn't define a suitable feature test macro based on command */ -/* line options. */ -/* We should perhaps test dynamically. */ - -#include "../all_aligned_atomic_load_store.h" - -/* Real X86 implementations, except for some old WinChips, appear */ -/* to enforce ordering between memory operations, EXCEPT that a later */ -/* read can pass earlier writes, presumably due to the visible */ -/* presence of store buffers. */ -/* We ignore both the WinChips, and the fact that the official specs */ -/* seem to be much weaker (and arguably too weak to be usable). */ - -#include "../ordered_except_wr.h" - -#include "../test_and_set_t_is_char.h" - -#include "../standard_ao_double_t.h" - -#if defined(AO_USE_PENTIUM4_INSTRS) -AO_INLINE void -AO_nop_full() -{ - __asm__ __volatile__("mfence" : : : "memory"); -} - -#define AO_HAVE_nop_full - -#else - -/* We could use the cpuid instruction. But that seems to be slower */ -/* than the default implementation based on test_and_set_full. Thus */ -/* we omit that bit of misinformation here. */ - -#endif - -/* As far as we can tell, the lfence and sfence instructions are not */ -/* currently needed or useful for cached memory accesses. */ - -/* Really only works for 486 and later */ -AO_INLINE AO_t -AO_fetch_and_add_full (volatile AO_t *p, AO_t incr) -{ - AO_t result; - - __asm__ __volatile__ ("lock; xaddq %0, %1" : - "=r" (result), "=m" (*p) : "0" (incr), "m" (*p) - : "memory"); - return result; -} - -#define AO_HAVE_fetch_and_add_full - -AO_INLINE unsigned char -AO_char_fetch_and_add_full (volatile unsigned char *p, unsigned char incr) -{ - unsigned char result; - - __asm__ __volatile__ ("lock; xaddb %0, %1" : - "=q" (result), "=m" (*p) : "0" (incr), "m" (*p) - : "memory"); - return result; -} - -#define AO_HAVE_char_fetch_and_add_full - -AO_INLINE unsigned short -AO_short_fetch_and_add_full (volatile unsigned short *p, unsigned short incr) -{ - unsigned short result; - - __asm__ __volatile__ ("lock; xaddw %0, %1" : - "=r" (result), "=m" (*p) : "0" (incr), "m" (*p) - : "memory"); - return result; -} - -#define AO_HAVE_short_fetch_and_add_full - -AO_INLINE unsigned short -AO_int_fetch_and_add_full (volatile unsigned int *p, unsigned int incr) -{ - unsigned int result; - - __asm__ __volatile__ ("lock; xaddl %0, %1" : - "=r" (result), "=m" (*p) : "0" (incr), "m" (*p) - : "memory"); - return result; -} - -#define AO_HAVE_int_fetch_and_add_full - -/* Really only works for 486 and later */ -AO_INLINE void -AO_or_full (volatile AO_t *p, AO_t incr) -{ - __asm__ __volatile__ ("lock; orq %1, %0" : - "=m" (*p) : "r" (incr), "m" (*p) : "memory"); -} - -#define AO_HAVE_or_full - -AO_INLINE AO_TS_VAL_t -AO_test_and_set_full(volatile AO_TS_t *addr) -{ - unsigned char oldval; - /* Note: the "xchg" instruction does not need a "lock" prefix */ - __asm__ __volatile__("xchgb %0, %1" - : "=q"(oldval), "=m"(*addr) - : "0"((AO_TS_t) 0xff), "m"(*addr) : "memory"); - return (AO_TS_VAL_t)oldval; -} - -#define AO_HAVE_test_and_set_full - -/* Returns nonzero if the comparison succeeded. */ -AO_INLINE int -AO_compare_and_swap_full(volatile AO_t *addr, - AO_t old, AO_t new_val) -{ - char result; - __asm__ __volatile__("lock; cmpxchgq %3, %0; setz %1" - : "=m"(*addr), "=q"(result) - : "m"(*addr), "r" (new_val), "a"(old) : "memory"); - return (int) result; -} - -#define AO_HAVE_compare_and_swap_full - -#ifdef AO_CMPXCHG16B_AVAILABLE -/* NEC LE-IT: older AMD Opterons are missing this instruction. - * On these machines SIGILL will be thrown. Define AO_CASDOUBLE_MISSING - * to have an emulated (lock based) version available */ -/* HB: Changed this to not define either by default. There are - * enough machines and tool chains around on which cmpxchg16b - * doesn't work. And the emulation is unsafe by our usual rules. - * Hoewever both are clearly useful in certain cases. - */ -AO_INLINE int -AO_compare_double_and_swap_double_full(volatile AO_double_t *addr, - AO_t old_val1, AO_t old_val2, - AO_t new_val1, AO_t new_val2) -{ - char result; - __asm__ __volatile__("lock; cmpxchg16b %0; setz %1" - : "=m"(*addr), "=q"(result) - : "m"(*addr), - "d" (old_val1), - "a" (old_val2), - "c" (new_val1), - "b" (new_val2) : "memory"); - return (int) result; -} -#define AO_HAVE_compare_double_and_swap_double_full -#else -/* this one provides spinlock based emulation of CAS implemented in */ -/* atomic_ops.c. We probably do not want to do this here, since it is */ -/* not attomic with respect to other kinds of updates of *addr. On the */ -/* other hand, this may be a useful facility on occasion. */ -#ifdef AO_WEAK_DOUBLE_CAS_EMULATION -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_INLINE int -AO_compare_double_and_swap_double_full(volatile AO_double_t *addr, - AO_t old_val1, AO_t old_val2, - AO_t new_val1, AO_t new_val2) -{ - return AO_compare_double_and_swap_double_emulation(addr, - old_val1, old_val2, - new_val1, new_val2); -} -#define AO_HAVE_compare_double_and_swap_double_full -#endif /* AO_WEAK_DOUBLE_CAS_EMULATION */ -#endif /* AO_CMPXCHG16B_AVAILABLE */ diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/generic_pthread.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/generic_pthread.h deleted file mode 100644 index 8d17c0a1f0..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/generic_pthread.h +++ /dev/null @@ -1,289 +0,0 @@ -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * 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. - */ - -/* The following is useful primarily for debugging and documentation. */ -/* We define various atomic operations by acquiring a global pthread */ -/* lock. The resulting implementation will perform poorly, but should */ -/* be correct unless it is used from signal handlers. */ -/* We assume that all pthread operations act like full memory barriers. */ -/* (We believe that is the intent of the specification.) */ - -#include - -#include "test_and_set_t_is_ao_t.h" - /* This is not necessarily compatible with the native */ - /* implementation. But those can't be safely mixed anyway. */ - -/* We define only the full barrier variants, and count on the */ -/* generalization section below to fill in the rest. */ -extern pthread_mutex_t AO_pt_lock; - -AO_INLINE void -AO_nop_full() -{ - pthread_mutex_lock(&AO_pt_lock); - pthread_mutex_unlock(&AO_pt_lock); -} - -#define AO_HAVE_nop_full - -AO_INLINE AO_t -AO_load_full(volatile AO_t *addr) -{ - AO_t result; - pthread_mutex_lock(&AO_pt_lock); - result = *addr; - pthread_mutex_unlock(&AO_pt_lock); - return result; -} - -#define AO_HAVE_load_full - -AO_INLINE void -AO_store_full(volatile AO_t *addr, AO_t val) -{ - pthread_mutex_lock(&AO_pt_lock); - *addr = val; - pthread_mutex_unlock(&AO_pt_lock); -} - -#define AO_HAVE_store_full - -AO_INLINE unsigned char -AO_char_load_full(volatile unsigned char *addr) -{ - unsigned char result; - pthread_mutex_lock(&AO_pt_lock); - result = *addr; - pthread_mutex_unlock(&AO_pt_lock); - return result; -} - -#define AO_HAVE_char_load_full - -AO_INLINE void -AO_char_store_full(volatile unsigned char *addr, unsigned char val) -{ - pthread_mutex_lock(&AO_pt_lock); - *addr = val; - pthread_mutex_unlock(&AO_pt_lock); -} - -#define AO_HAVE_char_store_full - -AO_INLINE unsigned short -AO_short_load_full(volatile unsigned short *addr) -{ - unsigned short result; - pthread_mutex_lock(&AO_pt_lock); - result = *addr; - pthread_mutex_unlock(&AO_pt_lock); - return result; -} - -#define AO_HAVE_short_load_full - -AO_INLINE void -AO_short_store_full(volatile unsigned short *addr, unsigned short val) -{ - pthread_mutex_lock(&AO_pt_lock); - *addr = val; - pthread_mutex_unlock(&AO_pt_lock); -} - -#define AO_HAVE_short_store_full - -AO_INLINE unsigned int -AO_int_load_full(volatile unsigned int *addr) -{ - unsigned int result; - pthread_mutex_lock(&AO_pt_lock); - result = *addr; - pthread_mutex_unlock(&AO_pt_lock); - return result; -} - -#define AO_HAVE_int_load_full - -AO_INLINE void -AO_int_store_full(volatile unsigned int *addr, unsigned int val) -{ - pthread_mutex_lock(&AO_pt_lock); - *addr = val; - pthread_mutex_unlock(&AO_pt_lock); -} - -#define AO_HAVE_int_store_full - -AO_INLINE AO_TS_VAL_t -AO_test_and_set_full(volatile AO_TS_t *addr) -{ - AO_TS_VAL_t result; - pthread_mutex_lock(&AO_pt_lock); - result = (AO_TS_VAL_t)(*addr); - *addr = AO_TS_SET; - pthread_mutex_unlock(&AO_pt_lock); - assert(result == AO_TS_SET || result == AO_TS_CLEAR); - return result; -} - -#define AO_HAVE_test_and_set_full - -AO_INLINE AO_t -AO_fetch_and_add_full(volatile AO_t *p, AO_t incr) -{ - AO_t tmp; - - pthread_mutex_lock(&AO_pt_lock); - tmp = *p; - *p = tmp + incr; - pthread_mutex_unlock(&AO_pt_lock); - return tmp; -} - -#define AO_HAVE_fetch_and_add_full - -AO_INLINE unsigned char -AO_char_fetch_and_add_full(volatile unsigned char *p, unsigned char incr) -{ - unsigned char tmp; - - pthread_mutex_lock(&AO_pt_lock); - tmp = *p; - *p = tmp + incr; - pthread_mutex_unlock(&AO_pt_lock); - return tmp; -} - -#define AO_HAVE_char_fetch_and_add_full - -AO_INLINE unsigned short -AO_short_fetch_and_add_full(volatile unsigned short *p, unsigned short incr) -{ - unsigned short tmp; - - pthread_mutex_lock(&AO_pt_lock); - tmp = *p; - *p = tmp + incr; - pthread_mutex_unlock(&AO_pt_lock); - return tmp; -} - -#define AO_HAVE_short_fetch_and_add_full - -AO_INLINE unsigned int -AO_int_fetch_and_add_full(volatile unsigned int *p, unsigned int incr) -{ - unsigned int tmp; - - pthread_mutex_lock(&AO_pt_lock); - tmp = *p; - *p = tmp + incr; - pthread_mutex_unlock(&AO_pt_lock); - return tmp; -} - -#define AO_HAVE_int_fetch_and_add_full - -AO_INLINE void -AO_or_full(volatile AO_t *p, AO_t incr) -{ - AO_t tmp; - - pthread_mutex_lock(&AO_pt_lock); - tmp = *p; - *p = (tmp | incr); - pthread_mutex_unlock(&AO_pt_lock); -} - -#define AO_HAVE_or_full - -AO_INLINE int -AO_compare_and_swap_full(volatile AO_t *addr, - AO_t old, AO_t new_val) -{ - pthread_mutex_lock(&AO_pt_lock); - if (*addr == old) - { - *addr = new_val; - pthread_mutex_unlock(&AO_pt_lock); - return 1; - } - else - pthread_mutex_unlock(&AO_pt_lock); - return 0; -} - -#define AO_HAVE_compare_and_swap_full - -/* Unlike real architectures, we define both double-width CAS variants. */ - -typedef struct { - AO_t AO_val1; - AO_t AO_val2; -} AO_double_t; - -#define AO_HAVE_double_t - -AO_INLINE int -AO_compare_double_and_swap_double_full(volatile AO_double_t *addr, - AO_t old1, AO_t old2, - AO_t new1, AO_t new2) -{ - pthread_mutex_lock(&AO_pt_lock); - if (addr -> AO_val1 == old1 && addr -> AO_val2 == old2) - { - addr -> AO_val1 = new1; - addr -> AO_val2 = new2; - pthread_mutex_unlock(&AO_pt_lock); - return 1; - } - else - pthread_mutex_unlock(&AO_pt_lock); - return 0; -} - -#define AO_HAVE_compare_double_and_swap_double_full - -AO_INLINE int -AO_compare_and_swap_double_full(volatile AO_double_t *addr, - AO_t old1, - AO_t new1, AO_t new2) -{ - pthread_mutex_lock(&AO_pt_lock); - if (addr -> AO_val1 == old1) - { - addr -> AO_val1 = new1; - addr -> AO_val2 = new2; - pthread_mutex_unlock(&AO_pt_lock); - return 1; - } - else - pthread_mutex_unlock(&AO_pt_lock); - return 0; -} - -#define AO_HAVE_compare_and_swap_double_full - -/* We can't use hardware loads and stores, since they don't */ -/* interact correctly with atomic updates. */ - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/hpc/hppa.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/hpc/hppa.h deleted file mode 100644 index 80bd94c427..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/hpc/hppa.h +++ /dev/null @@ -1,102 +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. - * - * Derived from the corresponsing header file for gcc. - * - */ - -#include "../atomic_load_store.h" - -/* Some architecture set descriptions include special "ordered" memory */ -/* operations. As far as we can tell, no existing processors actually */ -/* require those. Nor does it appear likely that future processors */ -/* will. */ -/* FIXME: */ -/* The PA emulator on Itanium may obey weaker restrictions. */ -/* There should be a mode in which we don't assume sequential */ -/* consistency here. */ -#include "../ordered.h" - -#include - -/* GCC will not guarantee the alignment we need, use four lock words */ -/* and select the correctly aligned datum. See the glibc 2.3.2 */ -/* linuxthread port for the original implementation. */ -struct AO_pa_clearable_loc { - int data[4]; -}; - -#undef AO_TS_INITIALIZER -#define AO_TS_t struct AO_pa_clearable_loc -#define AO_TS_INITIALIZER {1,1,1,1} -/* Switch meaning of set and clear, since we only have an atomic clear */ -/* instruction. */ -typedef enum {AO_PA_TS_set = 0, AO_PA_TS_clear = 1} AO_PA_TS_val; -#define AO_TS_VAL_t AO_PA_TS_val -#define AO_TS_CLEAR AO_PA_TS_clear -#define AO_TS_SET AO_PA_TS_set - -/* The hppa only has one atomic read and modify memory operation, */ -/* load and clear, so hppa spinlocks must use zero to signify that */ -/* someone is holding the lock. The address used for the ldcw */ -/* semaphore must be 16-byte aligned. */ - -#define __ldcw(a, ret) \ - _LDCWX(0 /* index */, 0 /* s */, a /* base */, ret); - -/* Because malloc only guarantees 8-byte alignment for malloc'd data, */ -/* and GCC only guarantees 8-byte alignment for stack locals, we can't */ -/* be assured of 16-byte alignment for atomic lock data even if we */ -/* specify "__attribute ((aligned(16)))" in the type declaration. So, */ -/* we use a struct containing an array of four ints for the atomic lock */ -/* type and dynamically select the 16-byte aligned int from the array */ -/* for the semaphore. */ -#define __PA_LDCW_ALIGNMENT 16 - -#define __ldcw_align(a, ret) { \ - ret = (unsigned long) a; \ - ret += __PA_LDCW_ALIGNMENT - 1; \ - ret &= ~(__PA_LDCW_ALIGNMENT - 1); \ -} - -/* Works on PA 1.1 and PA 2.0 systems */ -AO_INLINE AO_TS_VAL_t -AO_test_and_set_full(volatile AO_TS_t * addr) -{ - register unsigned int ret; - register unsigned long a; - __ldcw_align (addr, a); - __ldcw (a, ret); - return ret; -} - -AO_INLINE void -AO_pa_clear(volatile AO_TS_t * addr) -{ - unsigned long a; - __ldcw_align (addr,a); - AO_compiler_barrier(); - *(volatile unsigned int *)a = 1; -} -#define AO_CLEAR(addr) AO_pa_clear(addr) - -#define AO_HAVE_test_and_set_full - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/hpc/ia64.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/hpc/ia64.h deleted file mode 100644 index 99fdbb2634..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/hpc/ia64.h +++ /dev/null @@ -1,174 +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 specifies Itanimum primitives for use with the HP compiler - * unde HP/UX. We use intrinsics instead of the inline assembly code in the - * gcc file. - */ - -#include "../all_atomic_load_store.h" - -#include "../all_acquire_release_volatile.h" - -#include "../test_and_set_t_is_char.h" - -#include - -#ifdef __LP64__ -# define AO_T_FASIZE _FASZ_D -# define AO_T_SIZE _SZ_D -#else -# define AO_T_FASIZE _FASZ_W -# define AO_T_SIZE _SZ_W -#endif - -AO_INLINE void -AO_nop_full() -{ - _Asm_mf(); -} -#define AO_HAVE_nop_full - -AO_INLINE AO_t -AO_fetch_and_add1_acquire (volatile AO_t *p) -{ - return _Asm_fetchadd(AO_T_FASIZE, _SEM_ACQ, p, 1, - _LDHINT_NONE, _DOWN_MEM_FENCE); -} -#define AO_HAVE_fetch_and_add1_acquire - -AO_INLINE AO_t -AO_fetch_and_add1_release (volatile AO_t *p) -{ - return _Asm_fetchadd(AO_T_FASIZE, _SEM_REL, p, 1, - _LDHINT_NONE, _UP_MEM_FENCE); -} - -#define AO_HAVE_fetch_and_add1_release - -AO_INLINE AO_t -AO_fetch_and_sub1_acquire (volatile AO_t *p) -{ - return _Asm_fetchadd(AO_T_FASIZE, _SEM_ACQ, p, -1, - _LDHINT_NONE, _DOWN_MEM_FENCE); -} - -#define AO_HAVE_fetch_and_sub1_acquire - -AO_INLINE AO_t -AO_fetch_and_sub1_release (volatile AO_t *p) -{ - return _Asm_fetchadd(AO_T_FASIZE, _SEM_REL, p, -1, - _LDHINT_NONE, _UP_MEM_FENCE); -} - -#define AO_HAVE_fetch_and_sub1_release - -AO_INLINE int -AO_compare_and_swap_acquire(volatile AO_t *addr, - AO_t old, AO_t new_val) -{ - AO_t oldval; - - _Asm_mov_to_ar(_AREG_CCV, old, _DOWN_MEM_FENCE); - oldval = _Asm_cmpxchg(AO_T_SIZE, _SEM_ACQ, addr, - new_val, _LDHINT_NONE, _DOWN_MEM_FENCE); - return (oldval == old); -} - -#define AO_HAVE_compare_and_swap_acquire - -AO_INLINE int -AO_compare_and_swap_release(volatile AO_t *addr, - AO_t old, AO_t new_val) -{ - AO_t oldval; - _Asm_mov_to_ar(_AREG_CCV, old, _UP_MEM_FENCE); - oldval = _Asm_cmpxchg(AO_T_SIZE, _SEM_REL, addr, - new_val, _LDHINT_NONE, _UP_MEM_FENCE); - /* Hopefully the compiler knows not to reorder the above two? */ - return (oldval == old); -} - -#define AO_HAVE_compare_and_swap_release - -AO_INLINE int -AO_char_compare_and_swap_acquire(volatile unsigned char *addr, - unsigned char old, unsigned char new_val) -{ - unsigned char oldval; - - _Asm_mov_to_ar(_AREG_CCV, old, _DOWN_MEM_FENCE); - oldval = _Asm_cmpxchg(_SZ_B, _SEM_ACQ, addr, - new_val, _LDHINT_NONE, _DOWN_MEM_FENCE); - return (oldval == old); -} - -#define AO_HAVE_char_compare_and_swap_acquire - -AO_INLINE int -AO_char_compare_and_swap_release(volatile unsigned char *addr, - unsigned char old, unsigned char new_val) -{ - unsigned char oldval; - _Asm_mov_to_ar(_AREG_CCV, old, _UP_MEM_FENCE); - oldval = _Asm_cmpxchg(_SZ_B, _SEM_REL, addr, - new_val, _LDHINT_NONE, _UP_MEM_FENCE); - /* Hopefully the compiler knows not to reorder the above two? */ - return (oldval == old); -} - -#define AO_HAVE_char_compare_and_swap_release - -AO_INLINE int -AO_short_compare_and_swap_acquire(volatile unsigned short *addr, - unsigned short old, unsigned short new_val) -{ - unsigned short oldval; - - _Asm_mov_to_ar(_AREG_CCV, old, _DOWN_MEM_FENCE); - oldval = _Asm_cmpxchg(_SZ_B, _SEM_ACQ, addr, - new_val, _LDHINT_NONE, _DOWN_MEM_FENCE); - return (oldval == old); -} - -#define AO_HAVE_short_compare_and_swap_acquire - -AO_INLINE int -AO_short_compare_and_swap_release(volatile unsigned short *addr, - unsigned short old, unsigned short new_val) -{ - unsigned short oldval; - _Asm_mov_to_ar(_AREG_CCV, old, _UP_MEM_FENCE); - oldval = _Asm_cmpxchg(_SZ_B, _SEM_REL, addr, - new_val, _LDHINT_NONE, _UP_MEM_FENCE); - /* Hopefully the compiler knows not to reorder the above two? */ - return (oldval == old); -} - -#define AO_HAVE_short_compare_and_swap_release - -#ifndef __LP64__ -# include "../ao_t_is_int.h" -#endif - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/ibmc/powerpc.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/ibmc/powerpc.h deleted file mode 100644 index d1f9c50008..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/ibmc/powerpc.h +++ /dev/null @@ -1,126 +0,0 @@ -/* FIXME. This is only a placeholder for the AIX compiler. */ -/* It doesn't work. Please send a patch. */ -/* Memory model documented at http://www-106.ibm.com/developerworks/ */ -/* eserver/articles/archguide.html and (clearer) */ -/* http://www-106.ibm.com/developerworks/eserver/articles/powerpc.html. */ -/* There appears to be no implicit ordering between any kind of */ -/* independent memory references. */ -/* Architecture enforces some ordering based on control dependence. */ -/* I don't know if that could help. */ -/* Data-dependent loads are always ordered. */ -/* Based on the above references, eieio is intended for use on */ -/* uncached memory, which we don't support. It does not order loads */ -/* from cached memory. */ -/* Thanks to Maged Michael, Doug Lea, and Roger Hoover for helping to */ -/* track some of this down and correcting my misunderstandings. -HB */ - -#include "../all_aligned_atomic_load_store.h" - -void AO_sync(void); -#pragma mc_func AO_sync { "7c0004ac" } - -void AO_lwsync(void); -#pragma mc_func AO_lwsync { "7c2004ac" } - -#define AO_nop_write() AO_lwsync() -#define AO_HAVE_nop_write - -#define AO_nop_read() AO_lwsync() -#define AO_HAVE_nop_read - -/* We explicitly specify load_acquire and store_release, since these */ -/* rely on the fact that lwsync is also a LoadStore barrier. */ -AO_INLINE AO_t -AO_load_acquire(volatile AO_t *addr) -{ - AO_t result = *addr; - AO_lwsync(); - return result; -} - -#define AO_HAVE_load_acquire - -AO_INLINE void -AO_store_release(volatile AO_t *addr, AO_t value) -{ - AO_lwsync(); - *addr = value; -} - -#define AO_HAVE_load_acquire - -/* This is similar to the code in the garbage collector. Deleting */ -/* this and having it synthesized from compare_and_swap would probably */ -/* only cost us a load immediate instruction. */ -AO_INLINE AO_TS_VAL_t -AO_test_and_set(volatile AO_TS_t *addr) { -# error Implement me -} - -#define AO_have_test_and_set - -AO_INLINE AO_TS_VAL_t -AO_test_and_set_acquire(volatile AO_TS_t *addr) { - AO_TS_VAL_t result = AO_test_and_set(addr); - AO_lwsync(); - return result; -} - -#define AO_HAVE_test_and_set_acquire - -AO_INLINE AO_TS_VAL_t -AO_test_and_set_release(volatile AO_TS_t *addr) { - AO_lwsync(); - return AO_test_and_set(addr); -} - -#define AO_HAVE_test_and_set_release - -AO_INLINE AO_TS_VAL_t -AO_test_and_set_full(volatile AO_TS_t *addr) { - AO_TS_VAL_t result; - AO_lwsync(); - result = AO_test_and_set(addr); - AO_lwsync(); - return result; -} - -#define AO_HAVE_test_and_set_full - -AO_INLINE AO_t -AO_compare_and_swap(volatile AO_t *addr, AO_t old, AO_t new_val) { -# error Implement me -} - -#define AO_HAVE_compare_and_swap - -AO_INLINE AO_t -AO_compare_and_swap_acquire(volatile AO_t *addr, AO_t old, AO_t new_val) { - AO_t result = AO_compare_and_swap(addr, old, new_val); - AO_lwsync(); - return result; -} - -#define AO_HAVE_compare_and_swap_acquire - -AO_INLINE AO_t -AO_compare_and_swap_release(volatile AO_t *addr, AO_t old, AO_t new_val) { - AO_lwsync(); - return AO_compare_and_swap(addr, old, new_val); -} - -#define AO_HAVE_compare_and_swap_release - -AO_INLINE AO_t -AO_compare_and_swap_full(volatile AO_t *addr, AO_t old, AO_t new_val) { - AO_t result; - AO_lwsync(); - result = AO_compare_and_swap(addr, old, new_val); - AO_lwsync(); - return result; -} - -#define AO_HAVE_compare_and_swap_full - -/* FIXME: We should also implement fetch_and_add and or primitives */ -/* directly. */ diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/icc/ia64.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/icc/ia64.h deleted file mode 100644 index 358dddabcd..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/icc/ia64.h +++ /dev/null @@ -1,225 +0,0 @@ -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * 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 specifies Itanimum primitives for use with the Intel (ecc) - * compiler. We use intrinsics instead of the inline assembly code in the - * gcc file. - */ - -#include "../all_atomic_load_store.h" - -#include "../test_and_set_t_is_char.h" - -#include - -/* The acquire release semantics of volatile can be turned off. And volatile */ -/* operations in icc9 don't imply ordering with respect to other nonvolatile */ -/* operations. */ - -#define AO_INTEL_PTR_t void * - -AO_INLINE AO_t -AO_load_acquire(volatile AO_t *p) -{ - return (AO_t)(__ld8_acq((AO_INTEL_PTR_t)p)); -} -#define AO_HAVE_load_acquire - -AO_INLINE void -AO_store_release(volatile AO_t *p, AO_t val) -{ - __st8_rel((AO_INTEL_PTR_t)p, (__int64)val); -} -#define AO_HAVE_store_release - -AO_INLINE unsigned char -AO_char_load_acquire(volatile unsigned char *p) -{ - /* A normal volatile load generates an ld.acq */ - return (__ld1_acq((AO_INTEL_PTR_t)p)); -} -#define AO_HAVE_char_load_acquire - -AO_INLINE void -AO_char_store_release(volatile unsigned char *p, unsigned char val) -{ - __st1_rel((AO_INTEL_PTR_t)p, val); -} -#define AO_HAVE_char_store_release - -AO_INLINE unsigned short -AO_short_load_acquire(volatile unsigned short *p) -{ - /* A normal volatile load generates an ld.acq */ - return (__ld2_acq((AO_INTEL_PTR_t)p)); -} -#define AO_HAVE_short_load_acquire - -AO_INLINE void -AO_short_store_release(volatile unsigned short *p, unsigned short val) -{ - __st2_rel((AO_INTEL_PTR_t)p, val); -} -#define AO_HAVE_short_store_release - -AO_INLINE unsigned int -AO_int_load_acquire(volatile unsigned int *p) -{ - /* A normal volatile load generates an ld.acq */ - return (__ld4_acq((AO_INTEL_PTR_t)p)); -} -#define AO_HAVE_int_load_acquire - -AO_INLINE void -AO_int_store_release(volatile unsigned int *p, unsigned int val) -{ - __st4_rel((AO_INTEL_PTR_t)p, val); -} -#define AO_HAVE_int_store_release - -AO_INLINE void -AO_nop_full() -{ - __mf(); -} -#define AO_HAVE_nop_full - -AO_INLINE AO_t -AO_fetch_and_add1_acquire (volatile AO_t *p) -{ - return __fetchadd8_acq((unsigned __int64 *)p, 1); -} -#define AO_HAVE_fetch_and_add1_acquire - -AO_INLINE AO_t -AO_fetch_and_add1_release (volatile AO_t *p) -{ - return __fetchadd8_rel((unsigned __int64 *)p, 1); -} - -#define AO_HAVE_fetch_and_add1_release - -AO_INLINE AO_t -AO_fetch_and_sub1_acquire (volatile AO_t *p) -{ - return __fetchadd8_acq((unsigned __int64 *)p, -1); -} - -#define AO_HAVE_fetch_and_sub1_acquire - -AO_INLINE AO_t -AO_fetch_and_sub1_release (volatile AO_t *p) -{ - return __fetchadd8_rel((unsigned __int64 *)p, -1); -} - -#define AO_HAVE_fetch_and_sub1_release - -AO_INLINE int -AO_compare_and_swap_acquire(volatile AO_t *addr, - AO_t old, AO_t new_val) -{ - AO_t oldval; - oldval = _InterlockedCompareExchange64_acq(addr, new_val, old); - return (oldval == old); -} - -#define AO_HAVE_compare_and_swap_acquire - -AO_INLINE int -AO_compare_and_swap_release(volatile AO_t *addr, - AO_t old, AO_t new_val) -{ - AO_t oldval; - oldval = _InterlockedCompareExchange64_rel(addr, new_val, old); - return (oldval == old); -} - -#define AO_HAVE_compare_and_swap_release - -AO_INLINE int -AO_char_compare_and_swap_acquire(volatile unsigned char *addr, - unsigned char old, unsigned char new_val) -{ - unsigned char oldval; - oldval = _InterlockedCompareExchange8_acq(addr, new_val, old); - return (oldval == old); -} - -#define AO_HAVE_char_compare_and_swap_acquire - -AO_INLINE int -AO_char_compare_and_swap_release(volatile unsigned char *addr, - unsigned char old, unsigned char new_val) -{ - unsigned char oldval; - oldval = _InterlockedCompareExchange8_rel(addr, new_val, old); - return (oldval == old); -} - -#define AO_HAVE_char_compare_and_swap_release - -AO_INLINE int -AO_short_compare_and_swap_acquire(volatile unsigned short *addr, - unsigned short old, unsigned short new_val) -{ - unsigned short oldval; - oldval = _InterlockedCompareExchange16_acq(addr, new_val, old); - return (oldval == old); -} - -#define AO_HAVE_short_compare_and_swap_acquire - -AO_INLINE int -AO_short_compare_and_swap_release(volatile unsigned short *addr, - unsigned short old, unsigned short new_val) -{ - unsigned short oldval; - oldval = _InterlockedCompareExchange16_rel(addr, new_val, old); - return (oldval == old); -} - -#define AO_HAVE_short_compare_and_swap_release - -AO_INLINE int -AO_int_compare_and_swap_acquire(volatile unsigned int *addr, - unsigned int old, unsigned int new_val) -{ - unsigned int oldval; - oldval = _InterlockedCompareExchange_acq(addr, new_val, old); - return (oldval == old); -} - -#define AO_HAVE_int_compare_and_swap_acquire - -AO_INLINE int -AO_int_compare_and_swap_release(volatile unsigned int *addr, - unsigned int old, unsigned int new_val) -{ - unsigned int oldval; - oldval = _InterlockedCompareExchange_rel(addr, new_val, old); - return (oldval == old); -} - -#define AO_HAVE_int_compare_and_swap_release - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/int_acquire_release_volatile.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/int_acquire_release_volatile.h deleted file mode 100644 index e0a6ed0610..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/int_acquire_release_volatile.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2003-2004 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 unsigned - * int volatile load has acquire semantics, and an unsigned short volatile - * store has release semantics. This is true with the standard Itanium ABI. - */ -#if !defined(AO_GCC_BARRIER) -# if defined(__GNUC__) -# define AO_GCC_BARRIER() AO_compiler_barrier() -# else -# define AO_GCC_BARRIER() -# endif -#endif - -AO_INLINE unsigned int -AO_int_load_acquire(volatile unsigned int *p) -{ - unsigned int result = *p; - /* A normal volatile load generates an ld.acq */ - AO_GCC_BARRIER(); - return result; -} -#define AO_HAVE_int_load_acquire - -AO_INLINE void -AO_int_store_release(volatile unsigned int *p, unsigned int val) -{ - AO_GCC_BARRIER(); - /* A normal volatile store generates an st.rel */ - *p = val; -} -#define AO_HAVE_int_store_release - - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h deleted file mode 100644 index 62927d2e78..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2004 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. - */ - -/* - * Definitions for architecturs on which loads and stores of unsigned int are - * atomic fo all legal alignments. - */ - -AO_INLINE unsigned int -AO_int_load(volatile unsigned int *addr) -{ - assert(((size_t)addr & (sizeof(unsigned int) - 1)) == 0); - /* Cast away the volatile for architectures like IA64 where */ - /* volatile adds barrier semantics. */ - return (*(unsigned int *)addr); -} - -#define AO_HAVE_int_load - -AO_INLINE void -AO_int_store(volatile unsigned int *addr, unsigned int new_val) -{ - assert(((size_t)addr & (sizeof(unsigned int) - 1)) == 0); - (*(unsigned int *)addr) = new_val; -} - -#define AO_HAVE_int_store - - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/int_atomic_load_store.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/int_atomic_load_store.h deleted file mode 100644 index b2a4813df7..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/int_atomic_load_store.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * 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. - */ - -/* - * Definitions for architecturs on which loads and stores of unsigned int are - * atomic for all legal alignments. - */ - -AO_INLINE unsigned int -AO_int_load(volatile unsigned int *addr) -{ - /* Cast away the volatile for architectures like IA64 where */ - /* volatile adds barrier semantics. */ - return (*(unsigned int *)addr); -} - -#define AO_HAVE_int_load - -AO_INLINE void -AO_int_store(volatile unsigned int *addr, unsigned int new_val) -{ - (*(unsigned int *)addr) = new_val; -} - -#define AO_HAVE_int_store - - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/msftc/x86.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/msftc/x86.h deleted file mode 100644 index 81c67a1159..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/msftc/x86.h +++ /dev/null @@ -1,197 +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. - */ - -/* The following really assume we have a 486 or better. */ -/* If ASSUME_WINDOWS98 is defined, we assume Windows 98 or newer. */ -/* If ASSUME_VISTA is defined, we assume Windows Server 2003, Vista */ -/* or later. */ - -#include "../all_aligned_atomic_load_store.h" - -/* Real X86 implementations, except for some old WinChips, appear */ -/* to enforce ordering between memory operations, EXCEPT that a later */ -/* read can pass earlier writes, presumably due to the visible */ -/* presence of store buffers. */ -/* We ignore both the WinChips, and the fact that the official specs */ -/* seem to be much weaker (and arguably too weak to be usable). */ - -#include "../ordered_except_wr.h" - -#include "../test_and_set_t_is_char.h" - -#include - /* Seems like over-kill, but that's what MSDN recommends. */ - /* And apparently winbase.h is not always self-contained. */ - -#if _MSC_VER < 1310 - -#define _InterlockedIncrement InterlockedIncrement -#define _InterlockedDecrement InterlockedDecrement -#define _InterlockedExchange InterlockedExchange -#define _InterlockedExchangeAdd InterlockedExchangeAdd -#define _InterlockedCompareExchange InterlockedCompareExchange - -#else - -#if _MSC_VER >= 1400 -#include - -#pragma intrinsic (_ReadWriteBarrier) - -#else -#ifdef __cplusplus -extern "C" { -#endif - -LONG __cdecl _InterlockedIncrement(LONG volatile *Addend); -LONG __cdecl _InterlockedDecrement(LONG volatile *Addend); -LONG __cdecl _InterlockedExchangeAdd(LONG volatile* Target, LONG Addend); -LONG __cdecl _InterlockedExchange(LONG volatile* Target, LONG Value); -LONG __cdecl _InterlockedCompareExchange(LONG volatile* Dest, - LONG Exchange, LONG Comp); - -#ifdef __cplusplus -} -#endif -#endif /* _MSC_VER >= 1400 */ - -#pragma intrinsic (_InterlockedIncrement) -#pragma intrinsic (_InterlockedDecrement) -#pragma intrinsic (_InterlockedExchange) -#pragma intrinsic (_InterlockedExchangeAdd) -#pragma intrinsic (_InterlockedCompareExchange) - -#endif /* _MSC_VER < 1310 */ - -/* As far as we can tell, the lfence and sfence instructions are not */ -/* currently needed or useful for cached memory accesses. */ - -/* Unfortunately mfence doesn't exist everywhere. */ -/* IsProcessorFeaturePresent(PF_COMPARE_EXCHANGE128) is */ -/* probably a conservative test for it? */ - -#if defined(AO_USE_PENTIUM4_INSTRS) - -AO_INLINE void -AO_nop_full() -{ - __asm { mfence } -} - -#define AO_HAVE_nop_full - -#else - -/* We could use the cpuid instruction. But that seems to be slower */ -/* than the default implementation based on test_and_set_full. Thus */ -/* we omit that bit of misinformation here. */ - -#endif - -AO_INLINE AO_t -AO_fetch_and_add_full (volatile AO_t *p, AO_t incr) -{ - return _InterlockedExchangeAdd((LONG volatile*)p, (LONG)incr); -} - -#define AO_HAVE_fetch_and_add_full - -AO_INLINE AO_t -AO_fetch_and_add1_full (volatile AO_t *p) -{ - return _InterlockedIncrement((LONG volatile *)p) - 1; -} - -#define AO_HAVE_fetch_and_add1_full - -AO_INLINE AO_t -AO_fetch_and_sub1_full (volatile AO_t *p) -{ - return _InterlockedDecrement((LONG volatile *)p) + 1; -} - -#define AO_HAVE_fetch_and_sub1_full - -AO_INLINE AO_TS_VAL_t -AO_test_and_set_full(volatile AO_TS_t *addr) -{ - __asm - { - mov eax,AO_TS_SET ; - mov ebx,addr ; - xchg byte ptr [ebx],al ; - } -} - -#define AO_HAVE_test_and_set_full - -#ifdef AO_ASSUME_WINDOWS98 -/* Returns nonzero if the comparison succeeded. */ -AO_INLINE int -AO_compare_and_swap_full(volatile AO_t *addr, - AO_t old, AO_t new_val) -{ - return _InterlockedCompareExchange((LONG volatile *)addr, - (LONG)new_val, (LONG)old) - == (LONG)old; -} - -#define AO_HAVE_compare_and_swap_full -#endif /* ASSUME_WINDOWS98 */ - -#ifdef _WIN64 -# error wrong architecture -#endif - -#ifdef ASSUME_VISTA -/* NEC LE-IT: whenever we run on a pentium class machine we have that - * certain function */ - -#include "../standard_ao_double_t.h" -#pragma intrinsic (_InterlockedCompareExchange64) -/* Returns nonzero if the comparison succeeded. */ -AO_INLINE int -AO_compare_double_and_swap_double_full(volatile AO_double_t *addr, - AO_t old_val1, AO_t old_val2, - AO_t new_val1, AO_t new_val2) -{ - __int64 oldv = (__int64)old_val2 | ((__int64)old_val1 << 32); - __int64 newv = (__int64)new_val2 | ((__int64)new_val1 << 32); - return _InterlockedCompareExchange64((__int64 volatile *)addr, - newv, oldv) == oldv; -} -#define AO_HAVE_compare_double_and_swap_double_full - -#ifdef __cplusplus -AO_INLINE int -AO_compare_double_and_swap_double_full(volatile AO_double_t *addr, - AO_double_t old_val, - AO_double_t new_val) -{ - return _InterlockedCompareExchange64((__int64 volatile *)addr, - new_val.AO_whole, old_val.AO_whole) == old_val.AO_whole; -} -#define AO_HAVE_double_compare_and_swap_full -#endif // __cplusplus -#endif /* ASSUME_VISTA */ - -#include "../ao_t_is_int.h" diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/msftc/x86_64.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/msftc/x86_64.h deleted file mode 100644 index ca1a682e1e..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/msftc/x86_64.h +++ /dev/null @@ -1,186 +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. - */ - -/* The following really assume we have a 486 or better. */ -/* If ASSUME_WINDOWS98 is defined, we assume Windows 98 or newer. */ - -#include "../all_aligned_atomic_load_store.h" - -/* Real X86 implementations, except for some old WinChips, appear */ -/* to enforce ordering between memory operations, EXCEPT that a later */ -/* read can pass earlier writes, presumably due to the visible */ -/* presence of store buffers. */ -/* We ignore both the WinChips, and the fact that the official specs */ -/* seem to be much weaker (and arguably too weak to be usable). */ - -#include "../ordered_except_wr.h" - -#if 0 -FIXME: Need to reimplement testandset - -#include "../test_and_set_t_is_char.h" - -#else - -#include "../test_and_set_t_is_ao_t.h" - -#endif - -#include - /* Seems like over-kill, but that's what MSDN recommends. */ - /* And apparently winbase.h is not always self-contained. */ - - -#include - -#pragma intrinsic (_ReadWriteBarrier) - -#ifdef __cplusplus -extern "C" { -#endif - -LONGLONG __cdecl _InterlockedIncrement64(LONGLONG volatile *Addend); -LONGLONG __cdecl _InterlockedDecrement64(LONGLONG volatile *Addend); -LONGLONG __cdecl _InterlockedExchangeAdd64(LONGLONG volatile* Target, - LONGLONG Addend); -LONGLONG __cdecl _InterlockedExchange64(LONGLONG volatile* Target, - LONGLONG Value); -LONGLONG __cdecl _InterlockedCompareExchange64(LONGLONG volatile* Dest, - LONGLONG Exchange, - LONGLONG Comp); - -#ifdef __cplusplus -} -#endif - -#pragma intrinsic (_InterlockedIncrement64) -#pragma intrinsic (_InterlockedDecrement64) -#pragma intrinsic (_InterlockedExchange64) -#pragma intrinsic (_InterlockedExchangeAdd64) -#pragma intrinsic (_InterlockedCompareExchange64) - -/* As far as we can tell, the lfence and sfence instructions are not */ -/* currently needed or useful for cached memory accesses. */ - -/* Unfortunately mfence doesn't exist everywhere. */ -/* IsProcessorFeaturePresent(PF_COMPARE_EXCHANGE128) is */ -/* probably a conservative test for it? */ - -#if defined(AO_USE_PENTIUM4_INSTRS) - -AO_INLINE void -AO_nop_full() -{ - __asm { mfence } -} - -#define AO_HAVE_nop_full - -#else - -/* We could use the cpuid instruction. But that seems to be slower */ -/* than the default implementation based on test_and_set_full. Thus */ -/* we omit that bit of misinformation here. */ - -#endif - -AO_INLINE AO_t -AO_fetch_and_add_full (volatile AO_t *p, AO_t incr) -{ - return _InterlockedExchangeAdd64((LONGLONG volatile *)p, (LONGLONG)incr); -} - -#define AO_HAVE_fetch_and_add_full - -AO_INLINE AO_t -AO_fetch_and_add1_full (volatile AO_t *p) -{ - return _InterlockedIncrement64((LONGLONG volatile *)p) - 1; -} - -#define AO_HAVE_fetch_and_add1_full - -AO_INLINE AO_t -AO_fetch_and_sub1_full (volatile AO_t *p) -{ - return _InterlockedDecrement64((LONGLONG volatile *)p) + 1; -} - -#define AO_HAVE_fetch_and_sub1_full - -AO_INLINE int -AO_compare_and_swap_full(volatile AO_t *addr, - AO_t old, AO_t new_val) -{ - return _InterlockedCompareExchange64((LONGLONG volatile *)addr, - (LONGLONG)new_val, (LONGLONG)old) - == (LONGLONG)old; -} - -#define AO_HAVE_compare_and_swap_full - -#if 0 -FIXME: (__asm not supported) -AO_INLINE AO_TS_VAL_t -AO_test_and_set_full(volatile AO_TS_t *addr) -{ - __asm - { - mov eax,AO_TS_SET ; - mov ebx,addr ; - xchg byte ptr [ebx],al ; - } -} - -#define AO_HAVE_test_and_set_full - -FIXME: (__asm not supported) -NEC LE-IT: Don't have a working Win64 environment here at the moment. -AO_compare_double_and_swap_double_full needs implementation for Win64 -But there is no _InterlockedCompareExchange128 in the WinAPI, so we -need basically whats given below. -Also see gcc/x86_64.h for partial old opteron workaround: - -#ifndef AO_CASDOUBLE_MISSING - -AO_INLINE int -AO_compare_double_and_swap_double_full(volatile AO_double_t *addr, - AO_t old_val1, AO_t old_val2, - AO_t new_val1, AO_t new_val2) -{ - char result; - __asm - { - mov rdx,QWORD PTR [old_val] - mov rax,QWORD PTR [old_val + 8] - mov rcx,QWORD PTR [new_val] - mov rbx,QWORD PTR [new_val + 8] - lock cmpxchg16b [addr] - setz result; - } - return result; -} -#endif // AO_CASDOUBLE_MISSING -#define AO_HAVE_compare_double_and_swap_double_full - -#endif /* 0 */ - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/ordered.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/ordered.h deleted file mode 100644 index 2bcd8d8a14..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/ordered.h +++ /dev/null @@ -1,38 +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. - */ - -/* - * These are common definitions for architectures that provide processor - * ordered memory operations. - */ - -#include "ordered_except_wr.h" - -AO_INLINE void -AO_nop_full() -{ - AO_compiler_barrier(); -} - -#define AO_HAVE_nop_full - - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/ordered_except_wr.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/ordered_except_wr.h deleted file mode 100644 index 4f2930314b..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/ordered_except_wr.h +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * 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. - */ - -/* - * These are common definitions for architectures that provide processor - * ordered memory operations except that a later read may pass an - * earlier write. Real x86 implementations seem to be in this category, - * except apparently for some IDT WinChips, which we ignore. - */ - -#include "read_ordered.h" - -AO_INLINE void -AO_nop_write() -{ - AO_compiler_barrier(); - /* sfence according to Intel docs. Pentium 3 and up. */ - /* Unnecessary for cached accesses? */ -} - -#define AO_HAVE_NOP_WRITE - -#if defined(AO_HAVE_store) - -AO_INLINE void -AO_store_write(volatile AO_t *addr, AO_t val) -{ - AO_compiler_barrier(); - AO_store(addr, val); -} -# define AO_HAVE_store_write - -# define AO_store_release(addr, val) AO_store_write(addr, val) -# define AO_HAVE_store_release - -#endif /* AO_HAVE_store */ - -#if defined(AO_HAVE_char_store) - -AO_INLINE void -AO_char_store_write(volatile unsigned char *addr, unsigned char val) -{ - AO_compiler_barrier(); - AO_char_store(addr, val); -} -# define AO_HAVE_char_store_write - -# define AO_char_store_release(addr, val) AO_char_store_write(addr, val) -# define AO_HAVE_char_store_release - -#endif /* AO_HAVE_char_store */ - -#if defined(AO_HAVE_short_store) - -AO_INLINE void -AO_short_store_write(volatile unsigned short *addr, unsigned short val) -{ - AO_compiler_barrier(); - AO_short_store(addr, val); -} -# define AO_HAVE_short_store_write - -# define AO_short_store_release(addr, val) AO_short_store_write(addr, val) -# define AO_HAVE_short_store_release - -#endif /* AO_HAVE_short_store */ - -#if defined(AO_HAVE_int_store) - -AO_INLINE void -AO_int_store_write(volatile unsigned int *addr, unsigned int val) -{ - AO_compiler_barrier(); - AO_int_store(addr, val); -} -# define AO_HAVE_int_store_write - -# define AO_int_store_release(addr, val) AO_int_store_write(addr, val) -# define AO_HAVE_int_store_release - -#endif /* AO_HAVE_int_store */ - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/read_ordered.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/read_ordered.h deleted file mode 100644 index e928881ff0..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/read_ordered.h +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * 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. - */ - -/* - * These are common definitions for architectures that provide processor - * ordered memory operations except that a later read may pass an - * earlier write. Real x86 implementations seem to be in this category, - * except apparently for some IDT WinChips, which we ignore. - */ - -AO_INLINE void -AO_nop_read() -{ - AO_compiler_barrier(); -} - -#define AO_HAVE_NOP_READ - -#ifdef AO_HAVE_load - -AO_INLINE AO_t -AO_load_read(volatile AO_t *addr) -{ - AO_t result = AO_load(addr); - AO_compiler_barrier(); - return result; -} -#define AO_HAVE_load_read - -#define AO_load_acquire(addr) AO_load_read(addr) -#define AO_HAVE_load_acquire - -#endif /* AO_HAVE_load */ - -#ifdef AO_HAVE_char_load - -AO_INLINE AO_t -AO_char_load_read(volatile unsigned char *addr) -{ - AO_t result = AO_char_load(addr); - AO_compiler_barrier(); - return result; -} -#define AO_HAVE_char_load_read - -#define AO_char_load_acquire(addr) AO_char_load_read(addr) -#define AO_HAVE_char_load_acquire - -#endif /* AO_HAVE_char_load */ - -#ifdef AO_HAVE_short_load - -AO_INLINE AO_t -AO_short_load_read(volatile unsigned short *addr) -{ - AO_t result = AO_short_load(addr); - AO_compiler_barrier(); - return result; -} -#define AO_HAVE_short_load_read - -#define AO_short_load_acquire(addr) AO_short_load_read(addr) -#define AO_HAVE_short_load_acquire - -#endif /* AO_HAVE_short_load */ - -#ifdef AO_HAVE_int_load - -AO_INLINE AO_t -AO_int_load_read(volatile unsigned int *addr) -{ - AO_t result = AO_int_load(addr); - AO_compiler_barrier(); - return result; -} -#define AO_HAVE_int_load_read - -#define AO_int_load_acquire(addr) AO_int_load_read(addr) -#define AO_HAVE_int_load_acquire - -#endif /* AO_HAVE_int_load */ - - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/short_acquire_release_volatile.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/short_acquire_release_volatile.h deleted file mode 100644 index 035ada7d9c..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/short_acquire_release_volatile.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2003-2004 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 unsigned short - * volatile load has acquire semantics, and an unsigned short volatile store has release - * semantics. This is true with the standard Itanium ABI. - */ -#if !defined(AO_GCC_BARRIER) -# if defined(__GNUC__) -# define AO_GCC_BARRIER() AO_compiler_barrier() -# else -# define AO_GCC_BARRIER() -# endif -#endif - -AO_INLINE unsigned short -AO_short_load_acquire(volatile unsigned short *p) -{ - unsigned short result = *p; - /* A normal volatile load generates an ld.acq */ - AO_GCC_BARRIER(); - return result; -} -#define AO_HAVE_short_load_acquire - -AO_INLINE void -AO_short_store_release(volatile unsigned short *p, unsigned short val) -{ - AO_GCC_BARRIER(); - /* A normal volatile store generates an st.rel */ - *p = val; -} -#define AO_HAVE_short_store_release - - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h deleted file mode 100644 index 3b285b885b..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2004 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. - */ - -/* - * Definitions for architecturs on which loads and stores of unsigned short are - * atomic fo all legal alignments. - */ - -AO_INLINE unsigned short -AO_short_load(volatile unsigned short *addr) -{ - assert(((size_t)addr & (sizeof(unsigned short) - 1)) == 0); - /* Cast away the volatile for architectures like IA64 where */ - /* volatile adds barrier semantics. */ - return (*(unsigned short *)addr); -} - -#define AO_HAVE_short_load - -AO_INLINE void -AO_short_store(volatile unsigned short *addr, unsigned short new_val) -{ - assert(((size_t)addr & (sizeof(unsigned short) - 1)) == 0); - (*(unsigned short *)addr) = new_val; -} - -#define AO_HAVE_short_store - - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/short_atomic_load_store.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/short_atomic_load_store.h deleted file mode 100644 index f1b52818f1..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/short_atomic_load_store.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * 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. - */ - -/* - * Definitions for architecturs on which loads and stores of unsigned short are - * atomic for all legal alignments. - */ - -AO_INLINE unsigned short -AO_short_load(volatile unsigned short *addr) -{ - /* Cast away the volatile for architectures like IA64 where */ - /* volatile adds barrier semantics. */ - return (*(unsigned short *)addr); -} - -#define AO_HAVE_short_load - -AO_INLINE void -AO_short_store(volatile unsigned short *addr, unsigned short new_val) -{ - (*(unsigned short *)addr) = new_val; -} - -#define AO_HAVE_short_store - - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/standard_ao_double_t.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/standard_ao_double_t.h deleted file mode 100644 index 22e8160c86..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/standard_ao_double_t.h +++ /dev/null @@ -1,36 +0,0 @@ -/* NEC LE-IT: For 64Bit OS we extend the double type to hold two int64's -* -* x86-64: __m128 serves as placeholder which also requires the compiler -* to align it on 16 byte boundary (as required by cmpxchg16. -* Similar things could be done for PowerPC 64bit using a VMX data type... */ - -#if defined(__GNUC__) -# if defined(__x86_64__) -# include - typedef __m128 double_ptr_storage; -# define AO_HAVE_DOUBLE_PTR_STORAGE -# endif /* __x86_64__ */ -#endif - -#ifdef _MSC_VER -# ifdef _WIN64 - typedef __m128 double_ptr_storage; -# define AO_HAVE_DOUBLE_PTR_STORAGE -# elif _WIN32 - typedef unsigned __int64 double_ptr_storage; -# define AO_HAVE_DOUBLE_PTR_STORAGE -# endif -#endif - -#ifndef AO_HAVE_DOUBLE_PTR_STORAGE - typedef unsigned long long double_ptr_storage; -#endif - -typedef union { - double_ptr_storage AO_whole; - struct {AO_t AO_v1; AO_t AO_v2;} AO_parts; -} AO_double_t; - -#define AO_HAVE_double_t -#define AO_val1 AO_parts.AO_v1 -#define AO_val2 AO_parts.AO_v2 diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/sunc/sparc.S b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/sunc/sparc.S deleted file mode 100644 index 81f0ef0124..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/sunc/sparc.S +++ /dev/null @@ -1,5 +0,0 @@ - .seg "text" - .globl AO_test_and_set_full -AO_test_and_set_full: - retl - ldstub [%o0],%o0 diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/sunc/sparc.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/sunc/sparc.h deleted file mode 100644 index 3578722520..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/sunc/sparc.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2004 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. - */ - -#include "../all_atomic_load_store.h" - -/* Real SPARC code uses TSO: */ -#include "../ordered_except_wr.h" - -/* Test_and_set location is just a byte. */ -#include "../test_and_set_t_is_char.h" - -extern AO_TS_VAL_t -AO_test_and_set_full(volatile AO_TS_t *addr); -/* Implemented in separate .S file, for now. */ - -#define AO_HAVE_test_and_set_full - -/* FIXME: Like the gcc version, this needs to be extended for V8 */ -/* and V9. */ diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/test_and_set_t_is_ao_t.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/test_and_set_t_is_ao_t.h deleted file mode 100644 index 663bccfe0f..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/test_and_set_t_is_ao_t.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2004 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. - */ - -/* - * These are common definitions for architectures on which test_and_set - * operates on pointer-sized quantities, the "clear" value contains - * all zeroes, and the "set" value contains all ones. - * This can be used if test_and_set is synthesized from compare_and_swap. - */ -typedef enum {AO_TS_clear = 0, AO_TS_set = 1} AO_TS_val; -#define AO_TS_VAL_t AO_TS_val -#define AO_TS_CLEAR AO_TS_clear -#define AO_TS_SET AO_TS_set - -#define AO_TS_t AO_t - -#define AO_AO_TS_T 1 diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/test_and_set_t_is_char.h b/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/test_and_set_t_is_char.h deleted file mode 100644 index bde0f21bc6..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops/sysdeps/test_and_set_t_is_char.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2004 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. - */ - -/* - * These are common definitions for architectures on which test_and_set - * operates on byte sized quantities, the "clear" value contains - * all zeroes, and the "set" value contains all ones. - */ - -#define AO_TS_t unsigned char -typedef enum {AO_BYTE_TS_clear = 0, AO_BYTE_TS_set = 0xff} AO_BYTE_TS_val; -#define AO_TS_VAL_t AO_BYTE_TS_val -#define AO_TS_CLEAR AO_BYTE_TS_clear -#define AO_TS_SET AO_BYTE_TS_set - -#define AO_CHAR_TS_T 1 - - - diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops_malloc.c b/src/racket/gc/libatomic_ops/src/atomic_ops_malloc.c deleted file mode 100644 index dff4908fc7..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops_malloc.c +++ /dev/null @@ -1,288 +0,0 @@ -/* - * Copyright (c) 2005 Hewlett-Packard Development Company, L.P. - * Original Author: Hans Boehm - * - * This file may be redistributed and/or modified 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. - * - * It 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 in the - * file doc/COPYING for more details. - */ - -#if defined(HAVE_CONFIG_H) -# include "config.h" -#endif - -#define AO_REQUIRE_CAS -#include "atomic_ops_stack.h" -#include /* for ffs, which is assumed reentrant. */ -#include -#ifdef AO_TRACE_MALLOC -# include -# include -#endif - -/* - * We round up each allocation request to the next power of two - * minus one word. - * We keep one stack of free objects for each size. Each object - * has an initial word (offset -sizeof(AO_t) from the visible pointer) - * which contains either - * The binary log of the object size in bytes (small objects) - * The object size (a multiple of CHUNK_SIZE) for large objects. - * The second case only arises if mmap-based allocation is supported. - * We align the user-visible part of each object on a GRANULARITY - * byte boundary. That means that the actual (hidden) start of - * the object starts a word before this boundary. - */ - -#ifndef LOG_MAX_SIZE -# define LOG_MAX_SIZE 16 - /* We assume that 2**LOG_MAX_SIZE is a multiple of page size. */ -#endif - -#ifndef ALIGNMENT -# define ALIGNMENT 16 - /* Assumed to be at least sizeof(AO_t). */ -#endif - -#define CHUNK_SIZE (1 << LOG_MAX_SIZE) - -#ifndef AO_INITIAL_HEAP_SIZE -# define AO_INITIAL_HEAP_SIZE (2*(LOG_MAX_SIZE+1)*CHUNK_SIZE) -#endif - -char AO_initial_heap[AO_INITIAL_HEAP_SIZE]; - -static volatile AO_t initial_heap_ptr = (AO_t)AO_initial_heap; -static volatile char *initial_heap_lim = AO_initial_heap + AO_INITIAL_HEAP_SIZE; - -#if defined(HAVE_MMAP) - -#include -#include -#include -#include - -static volatile AO_t mmap_enabled = 0; - -void -AO_malloc_enable_mmap(void) -{ - AO_store(&mmap_enabled, 1); -} - -static char *get_mmaped(size_t sz) -{ - char * result; - - assert(!(sz & (CHUNK_SIZE - 1))); - if (!mmap_enabled) return 0; -# if defined(MAP_ANONYMOUS) - result = mmap(0, sz, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); -# elif defined(MAP_ANON) - result = mmap(0, sz, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_ANON, -1, 0); -# else - { - int zero_fd = open("/dev/zero", O_RDONLY); - result = mmap(0, sz, PROT_READ | PROT_WRITE, - MAP_PRIVATE, zero_fd, 0); - close(zero_fd); - } -# endif - if (result == MAP_FAILED) result = 0; - return result; -} - -/* Allocate an object of size (incl. header) of size > CHUNK_SIZE. */ -/* sz includes space for an AO_t-sized header. */ -static char * -AO_malloc_large(size_t sz) -{ - char * result; - /* The header will force us to waste ALIGNMENT bytes, incl. header. */ - sz += ALIGNMENT; - /* Round to multiple of CHUNK_SIZE. */ - sz = (sz + CHUNK_SIZE - 1) & ~(CHUNK_SIZE - 1); - result = get_mmaped(sz); - if (result == 0) return 0; - result += ALIGNMENT; - ((AO_t *)result)[-1] = (AO_t)sz; - return result; -} - -static void -AO_free_large(char * p) -{ - AO_t sz = ((AO_t *)p)[-1]; - if (munmap(p - ALIGNMENT, (size_t)sz) != 0) - abort(); /* Programmer error. Not really async-signal-safe, but ... */ -} - - -#else /* No MMAP */ - -void -AO_malloc_enable_mmap(void) -{ -} - -static char *get_mmaped(size_t sz) -{ - return 0; -} - -static char * -AO_malloc_large(size_t sz) -{ - return 0; -} - -static void -AO_free_large(char * p) -{ - abort(); /* Programmer error. Not really async-signal-safe, but ... */ -} - -#endif /* No MMAP */ - -static char * -get_chunk(void) -{ - char *initial_ptr; - char *my_chunk_ptr; - char * my_lim; - -retry: - initial_ptr = (char *)AO_load(&initial_heap_ptr); - my_chunk_ptr = (char *)(((AO_t)initial_ptr + (ALIGNMENT - 1)) - & ~(ALIGNMENT - 1)); - if (initial_ptr != my_chunk_ptr) - { - /* Align correctly. If this fails, someone else did it for us. */ - AO_compare_and_swap_acquire(&initial_heap_ptr, (AO_t)initial_ptr, - (AO_t)my_chunk_ptr); - } - my_lim = my_chunk_ptr + CHUNK_SIZE; - if (my_lim <= initial_heap_lim) - { - if (!AO_compare_and_swap(&initial_heap_ptr, (AO_t)my_chunk_ptr, - (AO_t)my_lim)) - goto retry; - return my_chunk_ptr; - } - /* We failed. The initial heap is used up. */ - my_chunk_ptr = get_mmaped(CHUNK_SIZE); - assert (!((AO_t)my_chunk_ptr & (ALIGNMENT-1))); - return my_chunk_ptr; -} - -/* Object free lists. Ith entry corresponds to objects */ -/* of total size 2**i bytes. */ -AO_stack_t AO_free_list[LOG_MAX_SIZE+1]; - -/* Chunk free list, linked through first word in chunks. */ -/* All entries of size CHUNK_SIZE. */ -AO_stack_t AO_chunk_free_list; - -/* Break up the chunk, and add it to the object free list for */ -/* the given size. Sz must be a power of two. */ -/* We have exclusive access to chunk. */ -static void -add_chunk_as(void * chunk, size_t sz, unsigned log_sz) -{ - char *first = (char *)chunk + ALIGNMENT - sizeof(AO_t); - char *limit = (char *)chunk + CHUNK_SIZE - sz; - char *next, *p; - - for (p = first; p <= limit; p = next) { - next = p + sz; - AO_stack_push(AO_free_list+log_sz, (AO_t *)p); - } -} - -static int msbs[16] = {0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4}; - -/* Return the position of the most significant set bit in the */ -/* argument. */ -/* We follow the conventions of ffs(), i.e. the least */ -/* significant bit is number one. */ -int msb(size_t s) -{ - int result = 0; - if ((s & 0xff) != s) { - /* The following shift often generates warnings on 32-bit arch's */ - /* That's OK, because it will never be executed there. */ - if (sizeof(size_t) > 4 && (s >> 32) != 0) - { - s >>= 32; - result += 32; - } - if ((s >> 16) != 0) - { - s >>= 16; - result += 16; - } - if ((s >> 8) != 0) - { - s >>= 8; - result += 8; - } - } - if (s > 15) - { - s >>= 4; - result += 4; - } - result += msbs[s]; - return result; -} - -void * -AO_malloc(size_t sz) -{ - AO_t *result; - size_t adj_sz = sz + sizeof(AO_t); - int log_sz; - if (sz > CHUNK_SIZE) - return AO_malloc_large(sz); - log_sz = msb(adj_sz-1); - result = AO_stack_pop(AO_free_list+log_sz); - while (0 == result) { - void * chunk = get_chunk(); - if (0 == chunk) return 0; - adj_sz = 1 << log_sz; - add_chunk_as(chunk, adj_sz, log_sz); - result = AO_stack_pop(AO_free_list+log_sz); - } - *result = log_sz; -# ifdef AO_TRACE_MALLOC - fprintf(stderr, "%x: AO_malloc(%lu) = %p\n", - (int)pthread_self(), (unsigned long)sz, result+1); -# endif - return result + 1; -} - -void -AO_free(void *p) -{ - char *base = (char *)p - sizeof(AO_t); - int log_sz; - - if (0 == p) return; - log_sz = *(AO_t *)base; -# ifdef AO_TRACE_MALLOC - fprintf(stderr, "%x: AO_free(%p sz:%lu)\n", (int)pthread_self(), p, - (unsigned long) - (log_sz > LOG_MAX_SIZE? log_sz : (1 << log_sz))); -# endif - if (log_sz > LOG_MAX_SIZE) - AO_free_large(p); - else - AO_stack_push(AO_free_list+log_sz, (AO_t *)base); -} diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops_malloc.h b/src/racket/gc/libatomic_ops/src/atomic_ops_malloc.h deleted file mode 100644 index c55d27c256..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops_malloc.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2005 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. - */ - -/* Almost lock-free malloc implementation based on stack implementation. */ -/* See README.malloc file for detailed usage rules. */ - -#ifndef AO_ATOMIC_H -#define AO_ATOMIC_H - -#include /* For size_t */ - -#include "atomic_ops_stack.h" - -#ifdef AO_STACK_IS_LOCK_FREE -# define AO_MALLOC_IS_LOCK_FREE -#endif - -void AO_free(void *); - -void * AO_malloc(size_t); - -/* Allow use of mmpa to grow the heap. No-op on some platforms. */ -void AO_malloc_enable_mmap(void); - -#endif /* !AO_ATOMIC_H */ diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops_stack.c b/src/racket/gc/libatomic_ops/src/atomic_ops_stack.c deleted file mode 100644 index c3df10124e..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops_stack.c +++ /dev/null @@ -1,302 +0,0 @@ -/* - * Copyright (c) 2005 Hewlett-Packard Development Company, L.P. - * Original Author: Hans Boehm - * - * This file may be redistributed and/or modified 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. - * - * It 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 in the - * file doc/COPYING for more details. - */ - -#if defined(HAVE_CONFIG_H) -# include "config.h" -#endif - -#include -#include -#include -#define AO_REQUIRE_CAS -#include "atomic_ops_stack.h" - -#if defined(_MSC_VER) \ - || defined(_WIN32) && !defined(__CYGWIN32__) && !defined(__CYGWIN__) - /* AO_pause not defined elsewhere */ - /* FIXME: At least AO_spin should be factored out. */ -#include - -AO_t dummy; - -/* Spin for 2**n units. */ -static 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 - { - DWORD msecs; - - /* Short async-signal-safe sleep. */ - msecs = (n > 18? 100 : (1 << (n - 12))); - Sleep(msecs); - } -} - -#else - -/* AO_pause is available elsewhere */ - -extern void AO_pause(int); - -#endif - -#ifdef AO_USE_ALMOST_LOCK_FREE - -/* LIFO linked lists based on compare-and-swap. We need to avoid */ -/* the case of a node deleton and reinsertion while I'm deleting */ -/* it, since that may cause my CAS to succeed eventhough the next */ -/* pointer is now wrong. Our solution is not fully lock-free, but it */ -/* is good enough for signal handlers, provided we have a suitably low */ -/* bound on the number of recursive signal handler reentries. */ -/* A list consists of a first pointer and a blacklist */ -/* of pointer values that are currently being removed. No list element */ -/* on the blacklist may be inserted. If we would otherwise do so, we */ -/* are allowed to insert a variant that differs only in the least */ -/* significant, ignored, bits. If the list is full, we wait. */ - -/* Crucial observation: A particular padded pointer x (i.e. pointer */ -/* plus arbitrary low order bits) can never be newly inserted into */ -/* a list while it's in the corresponding auxiliary data structure. */ - -/* The second argument is a pointer to the link field of the element */ -/* to be inserted. */ -/* Both list headers and link fields contain "perturbed" pointers, i.e. */ -/* pointers with extra bits "or"ed into the low order bits. */ -void -AO_stack_push_explicit_aux_release(volatile AO_t *list, AO_t *x, - AO_stack_aux *a) -{ - int i; - AO_t x_bits = (AO_t)x; - AO_t next; - - /* No deletions of x can start here, since x is not currently in the */ - /* list. */ - retry: -# if AO_BL_SIZE == 2 - { - /* Start all loads as close to concurrently as possible. */ - AO_t entry1 = AO_load(a -> AO_stack_bl); - AO_t entry2 = AO_load(a -> AO_stack_bl + 1); - if (entry1 == x_bits || entry2 == x_bits) - { - /* Entry is currently being removed. Change it a little. */ - ++x_bits; - if ((x_bits & AO_BIT_MASK) == 0) - /* Version count overflowed; */ - /* EXTREMELY unlikely, but possible. */ - x_bits = (AO_t)x; - goto retry; - } - } -# else - for (i = 0; i < AO_BL_SIZE; ++i) - { - if (AO_load(a -> AO_stack_bl + i) == x_bits) - { - /* Entry is currently being removed. Change it a little. */ - ++x_bits; - if ((x_bits & AO_BIT_MASK) == 0) - /* Version count overflowed; */ - /* EXTREMELY unlikely, but possible. */ - x_bits = (AO_t)x; - goto retry; - } - } -# endif - /* x_bits is not currently being deleted */ - do - { - next = AO_load(list); - *x = next; - } - while(!AO_compare_and_swap_release(list, next, x_bits)); -} - -/* - * I concluded experimentally that checking a value first before - * performing a compare-and-swap is usually beneficial on X86, but - * slows things down appreciably with contention on Itanium. - * ince the Itanium behavior makes more sense to me (more cache line - * movement unless we're mostly reading, but back-off should guard - * against that), we take Itanium as the default. Measurements on - * other multiprocessor architectures would be useful. (On a uniprocessor, - * the initial check is almost certainly a very small loss.) - HB - */ -#ifdef __i386__ -# define PRECHECK(a) (a) == 0 && -#else -# define PRECHECK(a) -#endif - -AO_t * -AO_stack_pop_explicit_aux_acquire(volatile AO_t *list, AO_stack_aux * a) -{ - unsigned i; - int j = 0; - AO_t first; - AO_t * first_ptr; - AO_t next; - - retry: - first = AO_load(list); - if (0 == first) return 0; - /* Insert first into aux black list. */ - /* This may spin if more than AO_BL_SIZE removals using auxiliary */ - /* structure a are currently in progress. */ - for (i = 0; ; ) - { - if (PRECHECK(a -> AO_stack_bl[i]) - AO_compare_and_swap_acquire(a->AO_stack_bl+i, 0, first)) - break; - ++i; - if ( i >= AO_BL_SIZE ) - { - i = 0; - AO_pause(++j); - } - } - assert(i >= 0 && i < AO_BL_SIZE); - assert(a -> AO_stack_bl[i] == first); - /* First is on the auxiliary black list. It may be removed by */ - /* another thread before we get to it, but a new insertion of x */ - /* cannot be started here. */ - /* Only we can remove it from the black list. */ - /* We need to make sure that first is still the first entry on the */ - /* list. Otherwise it's possible that a reinsertion of it was */ - /* already started before we added the black list entry. */ - if (first != AO_load(list)) { - AO_store_release(a->AO_stack_bl+i, 0); - goto retry; - } - first_ptr = AO_REAL_NEXT_PTR(first); - next = AO_load(first_ptr); - if (!AO_compare_and_swap_release(list, first, next)) { - AO_store_release(a->AO_stack_bl+i, 0); - goto retry; - } - assert(*list != first); - /* Since we never insert an entry on the black list, this cannot have */ - /* succeeded unless first remained on the list while we were running. */ - /* Thus its next link cannot have changed out from under us, and we */ - /* removed exactly one entry and preserved the rest of the list. */ - /* Note that it is quite possible that an additional entry was */ - /* inserted and removed while we were running; this is OK since the */ - /* part of the list following first must have remained unchanged, and */ - /* first must again have been at the head of the list when the */ - /* compare_and_swap succeeded. */ - AO_store_release(a->AO_stack_bl+i, 0); - return first_ptr; -} - -#else /* ! USE_ALMOST_LOCK_FREE */ - -/* Better names for fields in AO_stack_t */ -#define ptr AO_val2 -#define version AO_val1 - -#if defined(AO_HAVE_compare_double_and_swap_double) - -void AO_stack_push_release(AO_stack_t *list, AO_t *element) -{ - AO_t next; - - do { - next = AO_load(&(list -> ptr)); - *element = next; - } while (!AO_compare_and_swap_release - ( &(list -> ptr), next, (AO_t) element)); - /* This uses a narrow CAS here, an old optimization suggested */ - /* by Treiber. Pop is still safe, since we run into the ABA */ - /* problem only if there were both interveining "pop"s and "push"es.*/ - /* Inthat case we still see a change inthe version number. */ -} - -AO_t *AO_stack_pop_acquire(AO_stack_t *list) -{ - AO_t *cptr; - AO_t next; - AO_t cversion; - - do { - /* Version must be loaded first. */ - cversion = AO_load_acquire(&(list -> version)); - cptr = (AO_t *)AO_load(&(list -> ptr)); - if (cptr == 0) return 0; - next = *cptr; - } while (!AO_compare_double_and_swap_double_release - (list, cversion, (AO_t) cptr, cversion+1, (AO_t) next)); - return cptr; -} - - -#elif defined(AO_HAVE_compare_and_swap_double) - -/* Needed for future IA64 processors. No current clients? */ - -#error Untested! Probably doesnt work. - -/* We have a wide CAS, but only does an AO_t-wide comparison. */ -/* We can't use the Treiber optimization, since we only check */ -/* for an unchanged version number, not an unchanged pointer. */ -void AO_stack_push_release(AO_stack_t *list, AO_t *element) -{ - AO_t version; - AO_t next_ptr; - - do { - /* Again version must be loaded first, for different reason. */ - version = AO_load_acquire(&(list -> version)); - next_ptr = AO_load(&(list -> ptr)); - *element = next_ptr; - } while (!AO_compare_and_swap_double_release( - list, version, - version+1, (AO_t) element)); -} - -AO_t *AO_stack_pop_acquire(AO_stack_t *list) -{ - AO_t *cptr; - AO_t next; - AO_t cversion; - - do { - cversion = AO_load_acquire(&(list -> version)); - cptr = (AO_t *)AO_load(&(list -> ptr)); - if (cptr == 0) return 0; - next = *cptr; - } while (!AO_compare_double_and_swap_double_release - (list, cversion, (AO_t) cptr, cversion+1, next)); - return cptr; -} - - -#endif /* AO_HAVE_compare_and_swap_double */ - -#endif /* ! USE_ALMOST_LOCK_FREE */ diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops_stack.h b/src/racket/gc/libatomic_ops/src/atomic_ops_stack.h deleted file mode 100644 index f0c789bcd2..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops_stack.h +++ /dev/null @@ -1,188 +0,0 @@ -/* - * The implementation of the routines described here is covered by the GPL. - * This header file is covered by the following license: - */ - -/* - * Copyright (c) 2005 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. - */ - -/* Almost lock-free LIFO linked lists (linked stacks). */ -#ifndef AO_STACK_H -#define AO_STACK_H - -#include "atomic_ops.h" - -#if !defined(AO_HAVE_compare_double_and_swap_double) \ - && !defined(AO_HAVE_compare_double_and_swap) \ - && defined(AO_HAVE_compare_and_swap) -# define AO_USE_ALMOST_LOCK_FREE -#else - /* If we have no compare-and-swap operation defined, we assume */ - /* that we will actually be using CAS emulation. If we do that, */ - /* it's cheaper to use the version-based implementation. */ -# define AO_STACK_IS_LOCK_FREE -#endif - -/* - * These are not guaranteed to be completely lock-free. - * List insertion may spin under extremely unlikely conditions. - * It cannot deadlock due to recursive reentry unless AO_list_remove - * is called while at least AO_BL_SIZE activations of - * AO_list_remove are currently active in the same thread, i.e. - * we must have at least AO_BL_SIZE recursive signal handler - * invocations. - * - * All operations take an AO_list_aux argument. It is safe to - * share a single AO_list_aux structure among all lists, but that - * may increase contention. Any given list must always be accessed - * with the same AO_list_aux structure. - * - * We make some machine-dependent assumptions: - * - We have a compare-and-swap operation. - * - At least _AO_N_BITS low order bits in pointers are - * zero and normally unused. - * - size_t and pointers have the same size. - * - * We do use a fully lock-free implementation if double-width - * compare-and-swap operations are available. - */ - -#ifdef AO_USE_ALMOST_LOCK_FREE -/* The number of low order pointer bits we can use for a small */ -/* version number. */ -# if defined(__LP64__) || defined(_LP64) || defined(_WIN64) - /* WIN64 isn't really supported yet. */ -# define AO_N_BITS 3 -# else -# define AO_N_BITS 2 -# endif - -# define AO_BIT_MASK ((1 << AO_N_BITS) - 1) -/* - * AO_stack_aux should be treated as opaque. - * It is fully defined here, so it can be allocated, and to facilitate - * debugging. - */ -#ifndef AO_BL_SIZE -# define AO_BL_SIZE 2 -#endif - -#if AO_BL_SIZE > (1 << AO_N_BITS) -# error AO_BL_SIZE too big -#endif - -typedef struct AO__stack_aux { - volatile AO_t AO_stack_bl[AO_BL_SIZE]; -} AO_stack_aux; - -/* The stack implementation knows only about the lecation of */ -/* link fields in nodes, and nothing about the rest of the */ -/* stack elements. Link fields hold an AO_t, which is not */ -/* necessarily a real pointer. This converts the AO_t to a */ -/* real (AO_t *) which is either o, or points at the link */ -/* field in the next node. */ -#define AO_REAL_NEXT_PTR(x) (AO_t *)((x) & ~AO_BIT_MASK) - -/* The following two routines should not normally be used directly. */ -/* We make them visible here for the rare cases in which it makes sense */ -/* to share the an AO_stack_aux between stacks. */ -void -AO_stack_push_explicit_aux_release(volatile AO_t *list, AO_t *x, - AO_stack_aux *); - -AO_t * -AO_stack_pop_explicit_aux_acquire(volatile AO_t *list, AO_stack_aux *); - -/* And now AO_stack_t for the real interface: */ - -typedef struct AO__stack { - volatile AO_t AO_ptr; - AO_stack_aux AO_aux; -} AO_stack_t; - -#define AO_STACK_INITIALIZER {0} - -AO_INLINE void AO_stack_init(AO_stack_t *list) -{ -# if AO_BL_SIZE == 2 - list -> AO_aux.AO_stack_bl[0] = 0; - list -> AO_aux.AO_stack_bl[1] = 0; -# else - int i; - for (i = 0; i < AO_BL_SIZE; ++i) - list -> AO_aux.AO_stack_bl[i] = 0; -# endif - list -> AO_ptr = 0; -} - -/* Convert an AO_stack_t to a pointer to the link field in */ -/* the first element. */ -#define AO_REAL_HEAD_PTR(x) AO_REAL_NEXT_PTR((x).AO_ptr) - -#define AO_stack_push_release(l, e) \ - AO_stack_push_explicit_aux_release(&((l)->AO_ptr), e, &((l)->AO_aux)) -#define AO_HAVE_stack_push_release - -#define AO_stack_pop_acquire(l) \ - AO_stack_pop_explicit_aux_acquire(&((l)->AO_ptr), &((l)->AO_aux)) -#define AO_HAVE_stack_pop_acquire - -# else /* Use fully non-blocking data structure, wide CAS */ - -#ifndef AO_HAVE_double_t - /* Can happen if we're using CAS emulation, since we don't want to */ - /* force that here, in case other atomic_ops clients don't want it. */ -# include "atomic_ops/sysdeps/standard_ao_double_t.h" -#endif - -typedef volatile AO_double_t AO_stack_t; -/* AO_val1 is version, AO_val2 is pointer. */ - -#define AO_STACK_INITIALIZER {0} - -AO_INLINE void AO_stack_init(AO_stack_t *list) -{ - list -> AO_val1 = 0; - list -> AO_val2 = 0; -} - -#define AO_REAL_HEAD_PTR(x) (AO_t *)((x).AO_val2) -#define AO_REAL_NEXT_PTR(x) (AO_t *)(x) - -void AO_stack_push_release(AO_stack_t *list, AO_t *new_element); -#define AO_HAVE_stack_push_release -AO_t * AO_stack_pop_acquire(AO_stack_t *list); -#define AO_HAVE_stack_pop_acquire - -#endif /* Wide CAS case */ - -#if defined(AO_HAVE_stack_push_release) && !defined(AO_HAVE_stack_push) -# define AO_stack_push(l, e) AO_stack_push_release(l, e) -# define AO_HAVE_stack_push -#endif - -#if defined(AO_HAVE_stack_pop_acquire) && !defined(AO_HAVE_stack_pop) -# define AO_stack_pop(l) AO_stack_pop_acquire(l) -# define AO_HAVE_stack_pop -#endif - -#endif /* !AO_STACK_H */ diff --git a/src/racket/gc/libatomic_ops/src/atomic_ops_sysdeps.S b/src/racket/gc/libatomic_ops/src/atomic_ops_sysdeps.S deleted file mode 100644 index f586f23bae..0000000000 --- a/src/racket/gc/libatomic_ops/src/atomic_ops_sysdeps.S +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Include the appropriate system-dependent assembly file, if any. - * This is used only if the platform supports neither inline assembly - * code, nor appropriate compiler intrinsics. - */ - -#if !defined(__GNUC__) && (defined(sparc) || defined(__sparc)) -# include "atomic_ops/sysdeps/sunc/sparc.S" -#endif diff --git a/src/racket/gc/libatomic_ops/src/config.h.in b/src/racket/gc/libatomic_ops/src/config.h.in deleted file mode 100644 index 2f34c98b1d..0000000000 --- a/src/racket/gc/libatomic_ops/src/config.h.in +++ /dev/null @@ -1,61 +0,0 @@ -/* src/config.h.in. Generated from configure.ac by autoheader. */ - -/* Define to 1 if you have the `getpagesize' function. */ -#undef HAVE_GETPAGESIZE - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have a working `mmap' system call. */ -#undef HAVE_MMAP - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Name of package */ -#undef PACKAGE - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the home page for this package. */ -#undef PACKAGE_URL - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Version number of package */ -#undef VERSION diff --git a/src/racket/gc/libatomic_ops/tests/Makefile.am b/src/racket/gc/libatomic_ops/tests/Makefile.am deleted file mode 100644 index 0f186cc7cf..0000000000 --- a/src/racket/gc/libatomic_ops/tests/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -EXTRA_DIST=test_atomic.template list_atomic.template run_parallel.inc \ - test_atomic_include.h -# We distribute test_atomic_include.h, since it's hard to regenerate -# on Windows without sed. - -BUILT_SOURCES = test_atomic_include.h list_atomic.i -CLEANFILES = test_atomic_include.h list_atomic.c list_atomic.i - -AM_CPPFLAGS=-I$(srcdir)/../src - -TESTS=test_atomic test_atomic_pthreads test_stack test_malloc - -#create the test_atomic test program -check_PROGRAMS=test_atomic test_atomic_pthreads test_stack test_malloc - -test_atomic_SOURCES=test_atomic.c -test_atomic_LDADD=-lpthread ../src/libatomic_ops.a - -test_atomic_pthreads_SOURCES=test_atomic.c -test_atomic_pthreads_CPPFLAGS=-DAO_USE_PTHREAD_DEFS $(AM_CPPFLAGS) -test_atomic_pthreads_LDADD=-lpthread ../src/libatomic_ops.a - -test_stack_SOURCES=test_stack.c -test_stack_LDADD=-lpthread ../src/libatomic_ops_gpl.a ../src/libatomic_ops.a - -test_malloc_SOURCES=test_malloc.c -test_malloc_LDADD=-lpthread ../src/libatomic_ops_gpl.a ../src/libatomic_ops.a - -test_atomic_include.h: test_atomic.template - sed -e s/XX// $? > $@ - sed -e s/XX/_release/ $? >> $@ - sed -e s/XX/_acquire/ $? >> $@ - sed -e s/XX/_read/ $? >> $@ - sed -e s/XX/_write/ $? >> $@ - sed -e s/XX/_full/ $? >> $@ - sed -e s/XX/_release_write/ $? >> $@ - sed -e s/XX/_acquire_read/ $? >> $@ - -list_atomic.c: list_atomic.template - echo "#include \"atomic_ops.h\" " > $@ - sed -e s/XX// $? >> $@ - sed -e s/XX/_release/ $? >> $@ - sed -e s/XX/_acquire/ $? >> $@ - sed -e s/XX/_read/ $? >> $@ - sed -e s/XX/_write/ $? >> $@ - sed -e s/XX/_full/ $? >> $@ - sed -e s/XX/_release_write/ $? >> $@ - sed -e s/XX/_acquire_read/ $? >> $@ - -list_atomic.i: list_atomic.c - $(COMPILE) $? -E > list_atomic.i diff --git a/src/racket/gc/libatomic_ops/tests/Makefile.in b/src/racket/gc/libatomic_ops/tests/Makefile.in deleted file mode 100644 index ff78742861..0000000000 --- a/src/racket/gc/libatomic_ops/tests/Makefile.in +++ /dev/null @@ -1,548 +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 = $(test_atomic_SOURCES) $(test_atomic_pthreads_SOURCES) $(test_malloc_SOURCES) $(test_stack_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@ -check_PROGRAMS = test_atomic$(EXEEXT) test_atomic_pthreads$(EXEEXT) \ - test_stack$(EXEEXT) test_malloc$(EXEEXT) -subdir = tests -DIST_COMMON = $(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 = -am_test_atomic_OBJECTS = test_atomic.$(OBJEXT) -test_atomic_OBJECTS = $(am_test_atomic_OBJECTS) -test_atomic_DEPENDENCIES = ../src/libatomic_ops.a -am_test_atomic_pthreads_OBJECTS = \ - test_atomic_pthreads-test_atomic.$(OBJEXT) -test_atomic_pthreads_OBJECTS = $(am_test_atomic_pthreads_OBJECTS) -test_atomic_pthreads_DEPENDENCIES = ../src/libatomic_ops.a -am_test_malloc_OBJECTS = test_malloc.$(OBJEXT) -test_malloc_OBJECTS = $(am_test_malloc_OBJECTS) -test_malloc_DEPENDENCIES = ../src/libatomic_ops_gpl.a \ - ../src/libatomic_ops.a -am_test_stack_OBJECTS = test_stack.$(OBJEXT) -test_stack_OBJECTS = $(am_test_stack_OBJECTS) -test_stack_DEPENDENCIES = ../src/libatomic_ops_gpl.a \ - ../src/libatomic_ops.a -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/src -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = $(test_atomic_SOURCES) $(test_atomic_pthreads_SOURCES) \ - $(test_malloc_SOURCES) $(test_stack_SOURCES) -DIST_SOURCES = $(test_atomic_SOURCES) $(test_atomic_pthreads_SOURCES) \ - $(test_malloc_SOURCES) $(test_stack_SOURCES) -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@ -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@ -EXTRA_DIST = test_atomic.template list_atomic.template run_parallel.inc \ - test_atomic_include.h - -# We distribute test_atomic_include.h, since it's hard to regenerate -# on Windows without sed. -BUILT_SOURCES = test_atomic_include.h list_atomic.i -CLEANFILES = test_atomic_include.h list_atomic.c list_atomic.i -AM_CPPFLAGS = -I$(srcdir)/../src -TESTS = test_atomic test_atomic_pthreads test_stack test_malloc -test_atomic_SOURCES = test_atomic.c -test_atomic_LDADD = -lpthread ../src/libatomic_ops.a -test_atomic_pthreads_SOURCES = test_atomic.c -test_atomic_pthreads_CPPFLAGS = -DAO_USE_PTHREAD_DEFS $(AM_CPPFLAGS) -test_atomic_pthreads_LDADD = -lpthread ../src/libatomic_ops.a -test_stack_SOURCES = test_stack.c -test_stack_LDADD = -lpthread ../src/libatomic_ops_gpl.a ../src/libatomic_ops.a -test_malloc_SOURCES = test_malloc.c -test_malloc_LDADD = -lpthread ../src/libatomic_ops_gpl.a ../src/libatomic_ops.a -all: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) all-am - -.SUFFIXES: -.SUFFIXES: .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 tests/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu tests/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 - -clean-checkPROGRAMS: - -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) -test_atomic$(EXEEXT): $(test_atomic_OBJECTS) $(test_atomic_DEPENDENCIES) - @rm -f test_atomic$(EXEEXT) - $(LINK) $(test_atomic_LDFLAGS) $(test_atomic_OBJECTS) $(test_atomic_LDADD) $(LIBS) -test_atomic_pthreads$(EXEEXT): $(test_atomic_pthreads_OBJECTS) $(test_atomic_pthreads_DEPENDENCIES) - @rm -f test_atomic_pthreads$(EXEEXT) - $(LINK) $(test_atomic_pthreads_LDFLAGS) $(test_atomic_pthreads_OBJECTS) $(test_atomic_pthreads_LDADD) $(LIBS) -test_malloc$(EXEEXT): $(test_malloc_OBJECTS) $(test_malloc_DEPENDENCIES) - @rm -f test_malloc$(EXEEXT) - $(LINK) $(test_malloc_LDFLAGS) $(test_malloc_OBJECTS) $(test_malloc_LDADD) $(LIBS) -test_stack$(EXEEXT): $(test_stack_OBJECTS) $(test_stack_DEPENDENCIES) - @rm -f test_stack$(EXEEXT) - $(LINK) $(test_stack_LDFLAGS) $(test_stack_OBJECTS) $(test_stack_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_atomic.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_atomic_pthreads-test_atomic.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_malloc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_stack.Po@am__quote@ - -.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) '$<'` - -test_atomic_pthreads-test_atomic.o: test_atomic.c -@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_atomic_pthreads_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_atomic_pthreads-test_atomic.o -MD -MP -MF "$(DEPDIR)/test_atomic_pthreads-test_atomic.Tpo" -c -o test_atomic_pthreads-test_atomic.o `test -f 'test_atomic.c' || echo '$(srcdir)/'`test_atomic.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/test_atomic_pthreads-test_atomic.Tpo" "$(DEPDIR)/test_atomic_pthreads-test_atomic.Po"; else rm -f "$(DEPDIR)/test_atomic_pthreads-test_atomic.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test_atomic.c' object='test_atomic_pthreads-test_atomic.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_atomic_pthreads_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_atomic_pthreads-test_atomic.o `test -f 'test_atomic.c' || echo '$(srcdir)/'`test_atomic.c - -test_atomic_pthreads-test_atomic.obj: test_atomic.c -@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_atomic_pthreads_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_atomic_pthreads-test_atomic.obj -MD -MP -MF "$(DEPDIR)/test_atomic_pthreads-test_atomic.Tpo" -c -o test_atomic_pthreads-test_atomic.obj `if test -f 'test_atomic.c'; then $(CYGPATH_W) 'test_atomic.c'; else $(CYGPATH_W) '$(srcdir)/test_atomic.c'; fi`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/test_atomic_pthreads-test_atomic.Tpo" "$(DEPDIR)/test_atomic_pthreads-test_atomic.Po"; else rm -f "$(DEPDIR)/test_atomic_pthreads-test_atomic.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test_atomic.c' object='test_atomic_pthreads-test_atomic.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_atomic_pthreads_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_atomic_pthreads-test_atomic.obj `if test -f 'test_atomic.c'; then $(CYGPATH_W) 'test_atomic.c'; else $(CYGPATH_W) '$(srcdir)/test_atomic.c'; fi` -uninstall-info-am: - -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 - -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list='$(TESTS)'; \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *" $$tst "*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - echo "XPASS: $$tst"; \ - ;; \ - *) \ - echo "PASS: $$tst"; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *" $$tst "*) \ - xfail=`expr $$xfail + 1`; \ - echo "XFAIL: $$tst"; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - echo "SKIP: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all tests failed"; \ - else \ - banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ - fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - skipped="($$skip tests were not run)"; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - test -z "$$skipped" || echo "$$skipped"; \ - test -z "$$report" || echo "$$report"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0; \ - else :; fi - -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 - $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) - $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) check-am -all-am: Makefile -installdirs: -install: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) 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: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -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." - -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -clean: clean-am - -clean-am: clean-checkPROGRAMS clean-generic mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-info-am - -.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ - clean-checkPROGRAMS clean-generic ctags distclean \ - distclean-compile 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-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-info-am - - -test_atomic_include.h: test_atomic.template - sed -e s/XX// $? > $@ - sed -e s/XX/_release/ $? >> $@ - sed -e s/XX/_acquire/ $? >> $@ - sed -e s/XX/_read/ $? >> $@ - sed -e s/XX/_write/ $? >> $@ - sed -e s/XX/_full/ $? >> $@ - sed -e s/XX/_release_write/ $? >> $@ - sed -e s/XX/_acquire_read/ $? >> $@ - -list_atomic.c: list_atomic.template - echo "#include \"atomic_ops.h\" " > $@ - sed -e s/XX// $? >> $@ - sed -e s/XX/_release/ $? >> $@ - sed -e s/XX/_acquire/ $? >> $@ - sed -e s/XX/_read/ $? >> $@ - sed -e s/XX/_write/ $? >> $@ - sed -e s/XX/_full/ $? >> $@ - sed -e s/XX/_release_write/ $? >> $@ - sed -e s/XX/_acquire_read/ $? >> $@ - -list_atomic.i: list_atomic.c - $(COMPILE) $? -E > list_atomic.i -# 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: diff --git a/src/racket/gc/libatomic_ops/tests/list_atomic.c b/src/racket/gc/libatomic_ops/tests/list_atomic.c deleted file mode 100644 index 1faf5c4ac9..0000000000 --- a/src/racket/gc/libatomic_ops/tests/list_atomic.c +++ /dev/null @@ -1,569 +0,0 @@ -#include "atomic_ops.h" -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * This file is covered by the GNU general public license, version 2. - * see doc/COPYING for details. - */ - -/* This generates a compilable program. But it is really meant to be */ -/* be used only with cc -E, to inspect the expensions generated by */ -/* primitives. */ - -/* The result will not link or run. */ - -void list_atomic(void) -{ - AO_T *addr, val, newval, oldval; - AO_TS_T tsaddr; - long incr; - -# if defined(AO_HAVE_nop) - "AO_nop(): "; - AO_nop(); -# else - "No AO_nop"; -# endif -# if defined(AO_HAVE_load) - "AO_load(addr):"; - AO_load(addr); -# else - "No AO_load"; -# endif -# if defined(AO_HAVE_store) - "AO_store(addr, val):"; - AO_store(addr, val); -# else - "No AO_store"; -# endif -# if defined(AO_HAVE_test_and_set) - "AO_test_and_set(tsaddr):"; - AO_test_and_set(tsaddr); -# else - "No AO_test_and_set"; -# endif -# if defined(AO_HAVE_fetch_and_add1) - "AO_fetch_and_add1(addr):"; - AO_fetch_and_add1(addr); -# else - "No AO_fetch_and_add1"; -# endif -# if defined(AO_HAVE_fetch_and_sub1) - "AO_fetch_and_sub1(addr):"; - AO_fetch_and_sub1(addr); -# else - "No AO_fetch_and_sub1"; -# endif -# if defined(AO_HAVE_fetch_and_add) - "AO_fetch_and_add(addr, incr):"; - AO_fetch_and_add(addr, incr); -# else - "No AO_fetch_and_add"; -# endif -# if defined(AO_HAVE_compare_and_swap) - "AO_compare_and_swap(addr, oldval, newval):"; - AO_compare_and_swap(addr, oldval, newval); -# else - "No AO_compare_and_swap"; -# endif -} - - - -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * This file is covered by the GNU general public license, version 2. - * see doc/COPYING for details. - */ - -/* This generates a compilable program. But it is really meant to be */ -/* be used only with cc -E, to inspect the expensions generated by */ -/* primitives. */ - -/* The result will not link or run. */ - -void list_atomic_release(void) -{ - AO_T *addr, val, newval, oldval; - AO_TS_T tsaddr; - long incr; - -# if defined(AO_HAVE_nop_release) - "AO_nop_release(): "; - AO_nop_release(); -# else - "No AO_nop_release"; -# endif -# if defined(AO_HAVE_load_release) - "AO_load_release(addr):"; - AO_load_release(addr); -# else - "No AO_load_release"; -# endif -# if defined(AO_HAVE_store_release) - "AO_store_release(addr, val):"; - AO_store_release(addr, val); -# else - "No AO_store_release"; -# endif -# if defined(AO_HAVE_test_and_set_release) - "AO_test_and_set_release(tsaddr):"; - AO_test_and_set_release(tsaddr); -# else - "No AO_test_and_set_release"; -# endif -# if defined(AO_HAVE_fetch_and_add1_release) - "AO_fetch_and_add1_release(addr):"; - AO_fetch_and_add1_release(addr); -# else - "No AO_fetch_and_add1_release"; -# endif -# if defined(AO_HAVE_fetch_and_sub1_release) - "AO_fetch_and_sub1_release(addr):"; - AO_fetch_and_sub1_release(addr); -# else - "No AO_fetch_and_sub1_release"; -# endif -# if defined(AO_HAVE_fetch_and_add_release) - "AO_fetch_and_add_release(addr, incr):"; - AO_fetch_and_add_release(addr, incr); -# else - "No AO_fetch_and_add_release"; -# endif -# if defined(AO_HAVE_compare_and_swap_release) - "AO_compare_and_swap_release(addr, oldval, newval):"; - AO_compare_and_swap_release(addr, oldval, newval); -# else - "No AO_compare_and_swap_release"; -# endif -} - - - -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * This file is covered by the GNU general public license, version 2. - * see doc/COPYING for details. - */ - -/* This generates a compilable program. But it is really meant to be */ -/* be used only with cc -E, to inspect the expensions generated by */ -/* primitives. */ - -/* The result will not link or run. */ - -void list_atomic_acquire(void) -{ - AO_T *addr, val, newval, oldval; - AO_TS_T tsaddr; - long incr; - -# if defined(AO_HAVE_nop_acquire) - "AO_nop_acquire(): "; - AO_nop_acquire(); -# else - "No AO_nop_acquire"; -# endif -# if defined(AO_HAVE_load_acquire) - "AO_load_acquire(addr):"; - AO_load_acquire(addr); -# else - "No AO_load_acquire"; -# endif -# if defined(AO_HAVE_store_acquire) - "AO_store_acquire(addr, val):"; - AO_store_acquire(addr, val); -# else - "No AO_store_acquire"; -# endif -# if defined(AO_HAVE_test_and_set_acquire) - "AO_test_and_set_acquire(tsaddr):"; - AO_test_and_set_acquire(tsaddr); -# else - "No AO_test_and_set_acquire"; -# endif -# if defined(AO_HAVE_fetch_and_add1_acquire) - "AO_fetch_and_add1_acquire(addr):"; - AO_fetch_and_add1_acquire(addr); -# else - "No AO_fetch_and_add1_acquire"; -# endif -# if defined(AO_HAVE_fetch_and_sub1_acquire) - "AO_fetch_and_sub1_acquire(addr):"; - AO_fetch_and_sub1_acquire(addr); -# else - "No AO_fetch_and_sub1_acquire"; -# endif -# if defined(AO_HAVE_fetch_and_add_acquire) - "AO_fetch_and_add_acquire(addr, incr):"; - AO_fetch_and_add_acquire(addr, incr); -# else - "No AO_fetch_and_add_acquire"; -# endif -# if defined(AO_HAVE_compare_and_swap_acquire) - "AO_compare_and_swap_acquire(addr, oldval, newval):"; - AO_compare_and_swap_acquire(addr, oldval, newval); -# else - "No AO_compare_and_swap_acquire"; -# endif -} - - - -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * This file is covered by the GNU general public license, version 2. - * see doc/COPYING for details. - */ - -/* This generates a compilable program. But it is really meant to be */ -/* be used only with cc -E, to inspect the expensions generated by */ -/* primitives. */ - -/* The result will not link or run. */ - -void list_atomic_read(void) -{ - AO_T *addr, val, newval, oldval; - AO_TS_T tsaddr; - long incr; - -# if defined(AO_HAVE_nop_read) - "AO_nop_read(): "; - AO_nop_read(); -# else - "No AO_nop_read"; -# endif -# if defined(AO_HAVE_load_read) - "AO_load_read(addr):"; - AO_load_read(addr); -# else - "No AO_load_read"; -# endif -# if defined(AO_HAVE_store_read) - "AO_store_read(addr, val):"; - AO_store_read(addr, val); -# else - "No AO_store_read"; -# endif -# if defined(AO_HAVE_test_and_set_read) - "AO_test_and_set_read(tsaddr):"; - AO_test_and_set_read(tsaddr); -# else - "No AO_test_and_set_read"; -# endif -# if defined(AO_HAVE_fetch_and_add1_read) - "AO_fetch_and_add1_read(addr):"; - AO_fetch_and_add1_read(addr); -# else - "No AO_fetch_and_add1_read"; -# endif -# if defined(AO_HAVE_fetch_and_sub1_read) - "AO_fetch_and_sub1_read(addr):"; - AO_fetch_and_sub1_read(addr); -# else - "No AO_fetch_and_sub1_read"; -# endif -# if defined(AO_HAVE_fetch_and_add_read) - "AO_fetch_and_add_read(addr, incr):"; - AO_fetch_and_add_read(addr, incr); -# else - "No AO_fetch_and_add_read"; -# endif -# if defined(AO_HAVE_compare_and_swap_read) - "AO_compare_and_swap_read(addr, oldval, newval):"; - AO_compare_and_swap_read(addr, oldval, newval); -# else - "No AO_compare_and_swap_read"; -# endif -} - - - -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * This file is covered by the GNU general public license, version 2. - * see doc/COPYING for details. - */ - -/* This generates a compilable program. But it is really meant to be */ -/* be used only with cc -E, to inspect the expensions generated by */ -/* primitives. */ - -/* The result will not link or run. */ - -void list_atomic_write(void) -{ - AO_T *addr, val, newval, oldval; - AO_TS_T tsaddr; - long incr; - -# if defined(AO_HAVE_nop_write) - "AO_nop_write(): "; - AO_nop_write(); -# else - "No AO_nop_write"; -# endif -# if defined(AO_HAVE_load_write) - "AO_load_write(addr):"; - AO_load_write(addr); -# else - "No AO_load_write"; -# endif -# if defined(AO_HAVE_store_write) - "AO_store_write(addr, val):"; - AO_store_write(addr, val); -# else - "No AO_store_write"; -# endif -# if defined(AO_HAVE_test_and_set_write) - "AO_test_and_set_write(tsaddr):"; - AO_test_and_set_write(tsaddr); -# else - "No AO_test_and_set_write"; -# endif -# if defined(AO_HAVE_fetch_and_add1_write) - "AO_fetch_and_add1_write(addr):"; - AO_fetch_and_add1_write(addr); -# else - "No AO_fetch_and_add1_write"; -# endif -# if defined(AO_HAVE_fetch_and_sub1_write) - "AO_fetch_and_sub1_write(addr):"; - AO_fetch_and_sub1_write(addr); -# else - "No AO_fetch_and_sub1_write"; -# endif -# if defined(AO_HAVE_fetch_and_add_write) - "AO_fetch_and_add_write(addr, incr):"; - AO_fetch_and_add_write(addr, incr); -# else - "No AO_fetch_and_add_write"; -# endif -# if defined(AO_HAVE_compare_and_swap_write) - "AO_compare_and_swap_write(addr, oldval, newval):"; - AO_compare_and_swap_write(addr, oldval, newval); -# else - "No AO_compare_and_swap_write"; -# endif -} - - - -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * This file is covered by the GNU general public license, version 2. - * see doc/COPYING for details. - */ - -/* This generates a compilable program. But it is really meant to be */ -/* be used only with cc -E, to inspect the expensions generated by */ -/* primitives. */ - -/* The result will not link or run. */ - -void list_atomic_full(void) -{ - AO_T *addr, val, newval, oldval; - AO_TS_T tsaddr; - long incr; - -# if defined(AO_HAVE_nop_full) - "AO_nop_full(): "; - AO_nop_full(); -# else - "No AO_nop_full"; -# endif -# if defined(AO_HAVE_load_full) - "AO_load_full(addr):"; - AO_load_full(addr); -# else - "No AO_load_full"; -# endif -# if defined(AO_HAVE_store_full) - "AO_store_full(addr, val):"; - AO_store_full(addr, val); -# else - "No AO_store_full"; -# endif -# if defined(AO_HAVE_test_and_set_full) - "AO_test_and_set_full(tsaddr):"; - AO_test_and_set_full(tsaddr); -# else - "No AO_test_and_set_full"; -# endif -# if defined(AO_HAVE_fetch_and_add1_full) - "AO_fetch_and_add1_full(addr):"; - AO_fetch_and_add1_full(addr); -# else - "No AO_fetch_and_add1_full"; -# endif -# if defined(AO_HAVE_fetch_and_sub1_full) - "AO_fetch_and_sub1_full(addr):"; - AO_fetch_and_sub1_full(addr); -# else - "No AO_fetch_and_sub1_full"; -# endif -# if defined(AO_HAVE_fetch_and_add_full) - "AO_fetch_and_add_full(addr, incr):"; - AO_fetch_and_add_full(addr, incr); -# else - "No AO_fetch_and_add_full"; -# endif -# if defined(AO_HAVE_compare_and_swap_full) - "AO_compare_and_swap_full(addr, oldval, newval):"; - AO_compare_and_swap_full(addr, oldval, newval); -# else - "No AO_compare_and_swap_full"; -# endif -} - - - -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * This file is covered by the GNU general public license, version 2. - * see doc/COPYING for details. - */ - -/* This generates a compilable program. But it is really meant to be */ -/* be used only with cc -E, to inspect the expensions generated by */ -/* primitives. */ - -/* The result will not link or run. */ - -void list_atomic_release_write(void) -{ - AO_T *addr, val, newval, oldval; - AO_TS_T tsaddr; - long incr; - -# if defined(AO_HAVE_nop_release_write) - "AO_nop_release_write(): "; - AO_nop_release_write(); -# else - "No AO_nop_release_write"; -# endif -# if defined(AO_HAVE_load_release_write) - "AO_load_release_write(addr):"; - AO_load_release_write(addr); -# else - "No AO_load_release_write"; -# endif -# if defined(AO_HAVE_store_release_write) - "AO_store_release_write(addr, val):"; - AO_store_release_write(addr, val); -# else - "No AO_store_release_write"; -# endif -# if defined(AO_HAVE_test_and_set_release_write) - "AO_test_and_set_release_write(tsaddr):"; - AO_test_and_set_release_write(tsaddr); -# else - "No AO_test_and_set_release_write"; -# endif -# if defined(AO_HAVE_fetch_and_add1_release_write) - "AO_fetch_and_add1_release_write(addr):"; - AO_fetch_and_add1_release_write(addr); -# else - "No AO_fetch_and_add1_release_write"; -# endif -# if defined(AO_HAVE_fetch_and_sub1_release_write) - "AO_fetch_and_sub1_release_write(addr):"; - AO_fetch_and_sub1_release_write(addr); -# else - "No AO_fetch_and_sub1_release_write"; -# endif -# if defined(AO_HAVE_fetch_and_add_release_write) - "AO_fetch_and_add_release_write(addr, incr):"; - AO_fetch_and_add_release_write(addr, incr); -# else - "No AO_fetch_and_add_release_write"; -# endif -# if defined(AO_HAVE_compare_and_swap_release_write) - "AO_compare_and_swap_release_write(addr, oldval, newval):"; - AO_compare_and_swap_release_write(addr, oldval, newval); -# else - "No AO_compare_and_swap_release_write"; -# endif -} - - - -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * This file is covered by the GNU general public license, version 2. - * see doc/COPYING for details. - */ - -/* This generates a compilable program. But it is really meant to be */ -/* be used only with cc -E, to inspect the expensions generated by */ -/* primitives. */ - -/* The result will not link or run. */ - -void list_atomic_acquire_read(void) -{ - AO_T *addr, val, newval, oldval; - AO_TS_T tsaddr; - long incr; - -# if defined(AO_HAVE_nop_acquire_read) - "AO_nop_acquire_read(): "; - AO_nop_acquire_read(); -# else - "No AO_nop_acquire_read"; -# endif -# if defined(AO_HAVE_load_acquire_read) - "AO_load_acquire_read(addr):"; - AO_load_acquire_read(addr); -# else - "No AO_load_acquire_read"; -# endif -# if defined(AO_HAVE_store_acquire_read) - "AO_store_acquire_read(addr, val):"; - AO_store_acquire_read(addr, val); -# else - "No AO_store_acquire_read"; -# endif -# if defined(AO_HAVE_test_and_set_acquire_read) - "AO_test_and_set_acquire_read(tsaddr):"; - AO_test_and_set_acquire_read(tsaddr); -# else - "No AO_test_and_set_acquire_read"; -# endif -# if defined(AO_HAVE_fetch_and_add1_acquire_read) - "AO_fetch_and_add1_acquire_read(addr):"; - AO_fetch_and_add1_acquire_read(addr); -# else - "No AO_fetch_and_add1_acquire_read"; -# endif -# if defined(AO_HAVE_fetch_and_sub1_acquire_read) - "AO_fetch_and_sub1_acquire_read(addr):"; - AO_fetch_and_sub1_acquire_read(addr); -# else - "No AO_fetch_and_sub1_acquire_read"; -# endif -# if defined(AO_HAVE_fetch_and_add_acquire_read) - "AO_fetch_and_add_acquire_read(addr, incr):"; - AO_fetch_and_add_acquire_read(addr, incr); -# else - "No AO_fetch_and_add_acquire_read"; -# endif -# if defined(AO_HAVE_compare_and_swap_acquire_read) - "AO_compare_and_swap_acquire_read(addr, oldval, newval):"; - AO_compare_and_swap_acquire_read(addr, oldval, newval); -# else - "No AO_compare_and_swap_acquire_read"; -# endif -} - - - diff --git a/src/racket/gc/libatomic_ops/tests/list_atomic.template b/src/racket/gc/libatomic_ops/tests/list_atomic.template deleted file mode 100644 index a3d36e389c..0000000000 --- a/src/racket/gc/libatomic_ops/tests/list_atomic.template +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * This file is covered by the GNU general public license, version 2. - * see doc/COPYING for details. - */ - -/* This generates a compilable program. But it is really meant to be */ -/* be used only with cc -E, to inspect the expensions generated by */ -/* primitives. */ - -/* The result will not link or run. */ - -void list_atomicXX(void) -{ - AO_T *addr, val, newval, oldval; - AO_TS_T tsaddr; - long incr; - -# if defined(AO_HAVE_nopXX) - "AO_nopXX(): "; - AO_nopXX(); -# else - "No AO_nopXX"; -# endif -# if defined(AO_HAVE_loadXX) - "AO_loadXX(addr):"; - AO_loadXX(addr); -# else - "No AO_loadXX"; -# endif -# if defined(AO_HAVE_storeXX) - "AO_storeXX(addr, val):"; - AO_storeXX(addr, val); -# else - "No AO_storeXX"; -# endif -# if defined(AO_HAVE_test_and_setXX) - "AO_test_and_setXX(tsaddr):"; - AO_test_and_setXX(tsaddr); -# else - "No AO_test_and_setXX"; -# endif -# if defined(AO_HAVE_fetch_and_add1XX) - "AO_fetch_and_add1XX(addr):"; - AO_fetch_and_add1XX(addr); -# else - "No AO_fetch_and_add1XX"; -# endif -# if defined(AO_HAVE_fetch_and_sub1XX) - "AO_fetch_and_sub1XX(addr):"; - AO_fetch_and_sub1XX(addr); -# else - "No AO_fetch_and_sub1XX"; -# endif -# if defined(AO_HAVE_fetch_and_addXX) - "AO_fetch_and_addXX(addr, incr):"; - AO_fetch_and_addXX(addr, incr); -# else - "No AO_fetch_and_addXX"; -# endif -# if defined(AO_HAVE_compare_and_swapXX) - "AO_compare_and_swapXX(addr, oldval, newval):"; - AO_compare_and_swapXX(addr, oldval, newval); -# else - "No AO_compare_and_swapXX"; -# endif -} - - - diff --git a/src/racket/gc/libatomic_ops/tests/run_parallel.inc b/src/racket/gc/libatomic_ops/tests/run_parallel.inc deleted file mode 100644 index 1a87c8ba30..0000000000 --- a/src/racket/gc/libatomic_ops/tests/run_parallel.inc +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Copyright (c) 2003-2005 Hewlett-Packard Development Company, L.P. - * - * This file is covered by the GNU general public license, version 2. - * see doc/COPYING for details. - */ - -#if defined(_MSC_VER) || \ - defined(_WIN32) && !defined(__CYGWIN32__) && !defined(__CYGWIN__) || \ - defined(_WIN32_WINCE) -# define USE_WINTHREADS -#elif defined(__vxworks) -# define USE_VXTHREADS -#else -# define USE_PTHREADS -#endif - -#include -#include - -#ifdef USE_PTHREADS -# include -#endif - -#ifdef USE_VXTHREADS -# include -# include -#endif - -#ifdef USE_WINTHREADS -# include -#endif - -#include "atomic_ops.h" - -typedef void * (* thr_func)(void *); - -typedef int (* test_func)(void); /* Returns != 0 on success */ - -void * run_parallel(int nthreads, thr_func f1, test_func t, const char *name); - -#ifdef USE_PTHREADS -void * run_parallel(int nthreads, thr_func f1, test_func t, const char *name) -{ - pthread_attr_t attr; - pthread_t thr[100]; - int i; - int code; - - fprintf(stderr, "Testing %s\n", name); - if (nthreads > 100) - { - fprintf(stderr, "run_parallel: requested too many threads\n"); - abort(); - } - -# ifdef _HPUX_SOURCE - /* Default stack size is too small, especially with the 64 bit ABI */ - /* Increase it. */ - if (pthread_default_stacksize_np(1024*1024, 0) != 0) { - fprintf(stderr, "pthread_default_stacksize_np failed. " - "OK after first call.\n"); - } -# endif - - pthread_attr_init(&attr); - - for (i = 0; i < nthreads; ++i) - { - if ((code = pthread_create(thr + i, &attr, f1, (void *)(long)i)) != 0) - { - perror("Thread creation failed"); - fprintf(stderr, "Pthread_create returned %d, thread %d\n", code, i); - abort(); - } - } - for (i = 0; i < nthreads; ++i) - { - if ((code = pthread_join(thr[i], NULL)) != 0) - { - perror("Thread join failed"); - fprintf(stderr, "Pthread_join returned %d, thread %d\n", code, i); - abort(); - } - } - if (t()) - { - fprintf(stderr, "Succeeded\n"); - } - else - { - fprintf(stderr, "Failed\n"); - abort(); - } - return 0; -} -#endif /* USE_PTHREADS */ - -#ifdef USE_VXTHREADS -void * run_parallel(int nthreads, thr_func f1, test_func t, const char *name) -{ - int thr[100]; - int i; - - fprintf(stderr, "Testing %s\n", name); - if (nthreads > 100) - { - fprintf(stderr, "run_parallel: requested too many threads\n"); - taskSuspend(0); - } - - for (i = 0; i < nthreads; ++i) - { - thr[i] = taskSpawn((char*) name, 180, 0, 32768, (FUNCPTR) f1, i, - 1, 2, 3, 4, 5, 6, 7, 8, 9); - if (thr[i] == ERROR) - { - fprintf(stderr, "taskSpawn failed with %d, thread %d\n", - errno, i); - taskSuspend(0); - } - } - for (i = 0; i < nthreads; ++i) - { - while (taskIdVerify(thr[i]) == OK) - taskDelay(60); - } - if (t()) - { - fprintf(stderr, "Succeeded\n"); - } - else - { - fprintf(stderr, "Failed\n"); - taskSuspend(0); - } - return 0; -} -#endif /* USE_VXTHREADS */ - -#ifdef USE_WINTHREADS - -struct tramp_args { - thr_func fn; - long arg; -}; - -DWORD WINAPI tramp(LPVOID param) -{ - struct tramp_args *args = (struct tramp_args *)param; - - return (DWORD)(args -> fn)((LPVOID)(args -> arg)); -} - -void * run_parallel(int nthreads, thr_func f1, test_func t, const char *name) -{ - HANDLE thr[100]; - struct tramp_args args[100]; - int i; - DWORD code; - - fprintf(stderr, "Testing %s\n", name); - if (nthreads > 100) - { - fprintf(stderr, "run_parallel: requested too many threads\n"); - abort(); - } - - for (i = 0; i < nthreads; ++i) - { - args[i].fn = f1; - args[i].arg = i; - if ((thr[i] = CreateThread(NULL, 0, tramp, (LPVOID)(args+i), 0, NULL)) - == NULL) - { - perror("Thread creation failed"); - fprintf(stderr, "CreateThread failed with %d, thread %d\n", - GetLastError(), i); - abort(); - } - } - for (i = 0; i < nthreads; ++i) - { - if ((code = WaitForSingleObject(thr[i], INFINITE)) != WAIT_OBJECT_0) - { - perror("Thread join failed"); - fprintf(stderr, "WaitForSingleObject returned %d, thread %d\n", - code, i); - abort(); - } - } - if (t()) - { - fprintf(stderr, "Succeeded\n"); - } - else - { - fprintf(stderr, "Failed\n"); - abort(); - } - return 0; -} -#endif /* USE_WINTHREADS */ - diff --git a/src/racket/gc/libatomic_ops/tests/test_atomic.c b/src/racket/gc/libatomic_ops/tests/test_atomic.c deleted file mode 100644 index d31297da34..0000000000 --- a/src/racket/gc/libatomic_ops/tests/test_atomic.c +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Copyright (c) 2003-2005 Hewlett-Packard Development Company, L.P. - * Original Author: Hans Boehm - * - * This file may be redistributed and/or modified 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. - * - * It 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 in the - * file doc/COPYING for more details. - */ - -#if defined(HAVE_CONFIG_H) -# include "config.h" -#endif - - -#include "run_parallel.inc" - -#include "test_atomic_include.h" - -#ifdef AO_USE_PTHREAD_DEFS -# define NITERS 100000 -#else -# define NITERS 10000000 -#endif - -void * add1sub1_thr(void * id); -int add1sub1_test(void); -void * acqrel_thr(void *id); -int acqrel_test(void); -void * test_and_set_thr(void * id); -int test_and_set_test(void); - -#if defined(AO_HAVE_fetch_and_add1) && defined(AO_HAVE_fetch_and_sub1) - -AO_t counter = 0; - -void * add1sub1_thr(void * id) -{ - int me = (int)(long)id; - - int i; - - for (i = 0; i < NITERS; ++i) - if (me & 1) - AO_fetch_and_sub1(&counter); - else - AO_fetch_and_add1(&counter); - - return 0; -} - -int add1sub1_test(void) -{ - return counter == 0; -} - -#endif /* defined(AO_HAVE_fetch_and_add1) && defined(AO_HAVE_fetch_and_sub1) */ - -#if defined(AO_HAVE_store_release_write) && defined(AO_HAVE_load_acquire_read) - -/* Invariant: counter1 >= counter2 */ -AO_t counter1 = 0; -AO_t counter2 = 0; - -void * acqrel_thr(void *id) -{ - int me = (int)(long)id; - - int i; - - for (i = 0; i < NITERS; ++i) - if (me & 1) - { - AO_t my_counter1; - if (me != 1) - fprintf(stderr, "acqrel test: too many threads\n"); - my_counter1 = AO_load(&counter1); - AO_store(&counter1, my_counter1 + 1); - AO_store_release_write(&counter2, my_counter1 + 1); - } - else - { - AO_t my_counter1a, my_counter2a; - AO_t my_counter1b, my_counter2b; - - my_counter2a = AO_load_acquire_read(&counter2); - my_counter1a = AO_load(&counter1); - /* Redo this, to make sure that the second load of counter1 */ - /* is not viewed as a common subexpression. */ - my_counter2b = AO_load_acquire_read(&counter2); - my_counter1b = AO_load(&counter1); - if (my_counter1a < my_counter2a) - { - fprintf(stderr, "Saw release store out of order: %lu < %lu\n", - (unsigned long)my_counter1a, (unsigned long)my_counter2a); - abort(); - } - if (my_counter1b < my_counter2b) - { - fprintf(stderr, - "Saw release store out of order (bad CSE?): %lu < %lu\n", - (unsigned long)my_counter1b, (unsigned long)my_counter2b); - abort(); - } - } - - return 0; -} - -int acqrel_test(void) -{ - return counter1 == NITERS && counter2 == NITERS; -} - -#endif /* AO_HAVE_store_release_write && AO_HAVE_load_acquire_read */ - -#if defined(AO_HAVE_test_and_set_acquire) - -AO_TS_T lock = AO_TS_INITIALIZER; - -unsigned long locked_counter; -volatile unsigned long junk = 13; - -void * test_and_set_thr(void * id) -{ - unsigned long i; - - for (i = 0; i < NITERS/10; ++i) - { - while (AO_test_and_set_acquire(&lock) != AO_TS_CLEAR); - ++locked_counter; - if (locked_counter != 1) - { - fprintf(stderr, "Test and set failure 1, counter = %ld\n", - locked_counter); - abort(); - } - locked_counter *= 2; - locked_counter -= 1; - locked_counter *= 5; - locked_counter -= 4; - if (locked_counter != 1) - { - fprintf(stderr, "Test and set failure 2, counter = %ld\n", - locked_counter); - abort(); - } - --locked_counter; - AO_CLEAR(&lock); - /* Spend a bit of time outside the lock. */ - junk *= 17; - junk *= 17; - } - return 0; -} - -int test_and_set_test(void) -{ - return locked_counter == 0; -} - -#endif /* defined(AO_HAVE_test_and_set_acquire) */ - -int main() -{ - test_atomic(); - test_atomic_acquire(); - test_atomic_release(); - test_atomic_read(); - test_atomic_write(); - test_atomic_full(); - test_atomic_release_write(); - test_atomic_acquire_read(); -# if defined(AO_HAVE_fetch_and_add1) && defined(AO_HAVE_fetch_and_sub1) - run_parallel(4, add1sub1_thr, add1sub1_test, "add1/sub1"); -# endif -# if defined(AO_HAVE_store_release_write) && defined(AO_HAVE_load_acquire_read) - run_parallel(3, acqrel_thr, acqrel_test, - "store_release_write/load_acquire_read"); -# endif -# if defined(AO_HAVE_test_and_set_acquire) - run_parallel(5, test_and_set_thr, test_and_set_test, - "test_and_set"); -# endif - return 0; -} diff --git a/src/racket/gc/libatomic_ops/tests/test_atomic.template b/src/racket/gc/libatomic_ops/tests/test_atomic.template deleted file mode 100644 index f80eac83db..0000000000 --- a/src/racket/gc/libatomic_ops/tests/test_atomic.template +++ /dev/null @@ -1,203 +0,0 @@ -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * This file is covered by the GNU general public license, version 2. - * see doc/COPYING for details. - */ - -/* Some basic sanity tests. These do not test the barrier semantics. */ - -#undef TA_assert -#define TA_assert(e) \ - if (!(e)) { fprintf(stderr, "Assertion failed %s:%d (barrier: XX)\n", \ - __FILE__, __LINE__), exit(1); } - -#undef MISSING -#define MISSING(name) \ - fprintf(stderr, "Missing: %s\n", #name "XX") - -void test_atomicXX(void) -{ - AO_t x; - unsigned char b; - unsigned short s; - unsigned int zz; -# if defined(AO_HAVE_test_and_setXX) - AO_TS_t z = AO_TS_INITIALIZER; -# endif -# if defined(AO_HAVE_double_t) - AO_double_t w; - w.AO_val1 = 0; - w.AO_val2 = 0; -# endif - -# if defined(AO_HAVE_nopXX) - AO_nopXX(); -# else - MISSING(AO_nop); -# endif -# if defined(AO_HAVE_storeXX) - AO_storeXX(&x, 13); - TA_assert (x == 13); -# else - MISSING(AO_store); - x = 13; -# endif -# if defined(AO_HAVE_loadXX) - TA_assert(AO_loadXX(&x) == 13); -# else - MISSING(AO_load); -# endif -# if defined(AO_HAVE_test_and_setXX) - assert(AO_test_and_setXX(&z) == AO_TS_CLEAR); - assert(AO_test_and_setXX(&z) == AO_TS_SET); - assert(AO_test_and_setXX(&z) == AO_TS_SET); - AO_CLEAR(&z); -# else - MISSING(AO_test_and_set); -# endif -# if defined(AO_HAVE_fetch_and_addXX) - TA_assert(AO_fetch_and_addXX(&x, 42) == 13); - TA_assert(AO_fetch_and_addXX(&x, -42) == 55); -# else - MISSING(AO_fetch_and_add); -# endif -# if defined(AO_HAVE_fetch_and_add1XX) - TA_assert(AO_fetch_and_add1XX(&x) == 13); -# else - MISSING(AO_fetch_and_add1); - ++x; -# endif -# if defined(AO_HAVE_fetch_and_sub1XX) - TA_assert(AO_fetch_and_sub1XX(&x) == 14); -# else - MISSING(AO_fetch_and_sub1); - --x; -# endif -# if defined(AO_HAVE_short_storeXX) - AO_short_storeXX(&s, 13); -# else - MISSING(AO_short_store); - s = 13; -# endif -# if defined(AO_HAVE_short_loadXX) - TA_assert(AO_short_load(&s) == 13); -# else - MISSING(AO_short_load); -# endif -# if defined(AO_HAVE_short_fetch_and_addXX) - TA_assert(AO_short_fetch_and_addXX(&s, 42) == 13); - TA_assert(AO_short_fetch_and_addXX(&s, -42) == 55); -# else - MISSING(AO_short_fetch_and_add); -# endif -# if defined(AO_HAVE_short_fetch_and_add1XX) - TA_assert(AO_short_fetch_and_add1XX(&s) == 13); -# else - MISSING(AO_short_fetch_and_add1); - ++s; -# endif -# if defined(AO_HAVE_short_fetch_and_sub1XX) - TA_assert(AO_short_fetch_and_sub1XX(&s) == 14); -# else - MISSING(AO_short_fetch_and_sub1); - --s; -# endif -# if defined(AO_HAVE_char_storeXX) - AO_char_storeXX(&b, 13); -# else - MISSING(AO_char_store); - b = 13; -# endif -# if defined(AO_HAVE_char_loadXX) - TA_assert(AO_char_load(&b) == 13); -# else - MISSING(AO_char_load); -# endif -# if defined(AO_HAVE_char_fetch_and_addXX) - TA_assert(AO_char_fetch_and_addXX(&b, 42) == 13); - TA_assert(AO_char_fetch_and_addXX(&b, -42) == 55); -# else - MISSING(AO_char_fetch_and_add); -# endif -# if defined(AO_HAVE_char_fetch_and_add1XX) - TA_assert(AO_char_fetch_and_add1XX(&b) == 13); -# else - MISSING(AO_char_fetch_and_add1); - ++b; -# endif -# if defined(AO_HAVE_char_fetch_and_sub1XX) - TA_assert(AO_char_fetch_and_sub1XX(&b) == 14); -# else - MISSING(AO_char_fetch_and_sub1); - --b; -# endif -# if defined(AO_HAVE_int_storeXX) - AO_int_storeXX(&zz, 13); -# else - MISSING(AO_int_store); - zz = 13; -# endif -# if defined(AO_HAVE_int_loadXX) - TA_assert(AO_int_load(&zz) == 13); -# else - MISSING(AO_int_load); -# endif -# if defined(AO_HAVE_int_fetch_and_addXX) - TA_assert(AO_int_fetch_and_addXX(&zz, 42) == 13); - TA_assert(AO_int_fetch_and_addXX(&zz, -42) == 55); -# else - MISSING(AO_int_fetch_and_add); -# endif -# if defined(AO_HAVE_int_fetch_and_add1XX) - TA_assert(AO_int_fetch_and_add1XX(&zz) == 13); -# else - MISSING(AO_int_fetch_and_add1); - ++zz; -# endif -# if defined(AO_HAVE_int_fetch_and_sub1XX) - TA_assert(AO_int_fetch_and_sub1XX(&zz) == 14); -# else - MISSING(AO_int_fetch_and_sub1); - --zz; -# endif -# if defined(AO_HAVE_compare_and_swapXX) - TA_assert(!AO_compare_and_swapXX(&x, 14, 42)); - TA_assert(x == 13); - TA_assert(AO_compare_and_swapXX(&x, 13, 42)); - TA_assert(x == 42); -# else - MISSING(AO_compare_and_swap); -# endif -# if defined(AO_HAVE_orXX) - AO_orXX(&x, 66); - TA_assert(x == 106); -# else - MISSING(AO_or); - x |= 34; -# endif -# if defined(AO_HAVE_compare_double_and_swap_doubleXX) - TA_assert(!AO_compare_double_and_swap_doubleXX(&w, 17, 42, 12, 13)); - TA_assert(w.AO_val1 == 0 && w.AO_val2 == 0); - TA_assert(AO_compare_double_and_swap_doubleXX(&w, 0, 0, 12, 13)); - TA_assert(w.AO_val1 == 12 && w.AO_val2 == 13); - TA_assert(AO_compare_double_and_swap_doubleXX(&w, 12, 13, 17, 42)); - TA_assert(w.AO_val1 == 17 && w.AO_val2 == 42); - w.AO_val1 = 0; w.AO_val2 = 0; -# else - MISSING(AO_compare_double_and_swap_double); -# endif -# if defined(AO_HAVE_compare_and_swap_doubleXX) - TA_assert(!AO_compare_and_swap_doubleXX(&w, 17, 12, 13)); - TA_assert(w.AO_val1 == 0 && w.AO_val2 == 0); - TA_assert(AO_compare_and_swap_doubleXX(&w, 0, 12, 13)); - TA_assert(w.AO_val1 == 12 && w.AO_val2 == 13); - TA_assert(AO_compare_and_swap_doubleXX(&w, 12, 17, 42)); - TA_assert(w.AO_val1 == 17 && w.AO_val2 == 42); -# else - MISSING(AO_compare_and_swap_double); -# endif -} - - - diff --git a/src/racket/gc/libatomic_ops/tests/test_atomic_include.h b/src/racket/gc/libatomic_ops/tests/test_atomic_include.h deleted file mode 100644 index bc280ebd2a..0000000000 --- a/src/racket/gc/libatomic_ops/tests/test_atomic_include.h +++ /dev/null @@ -1,1633 +0,0 @@ -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * This file is covered by the GNU general public license, version 2. - * see doc/COPYING for details. - */ - -void test_atomic(void); -void test_atomic_release(void); -void test_atomic_acquire(void); -void test_atomic_read(void); -void test_atomic_write(void); -void test_atomic_full(void); -void test_atomic_release_write(void); -void test_atomic_acquire_read(void); - -/* Some basic sanity tests. These do not test the barrier semantics. */ - -#undef TA_assert -#define TA_assert(e) \ - if (!(e)) { fprintf(stderr, "Assertion failed %s:%d (barrier: )\n", \ - __FILE__, __LINE__), exit(1); } - -#undef MISSING -#define MISSING(name) \ - fprintf(stderr, "Missing: %s\n", #name "") - -void test_atomic(void) -{ - AO_t x; - unsigned char b; - unsigned short s; - unsigned int zz; -# if defined(AO_HAVE_test_and_set) - AO_TS_t z = AO_TS_INITIALIZER; -# endif -# if defined(AO_HAVE_double_t) - AO_double_t w; - w.AO_val1 = 0; - w.AO_val2 = 0; -# endif - -# if defined(AO_HAVE_nop) - AO_nop(); -# else - MISSING(AO_nop); -# endif -# if defined(AO_HAVE_store) - AO_store(&x, 13); - TA_assert (x == 13); -# else - MISSING(AO_store); - x = 13; -# endif -# if defined(AO_HAVE_load) - TA_assert(AO_load(&x) == 13); -# else - MISSING(AO_load); -# endif -# if defined(AO_HAVE_test_and_set) - assert(AO_test_and_set(&z) == AO_TS_CLEAR); - assert(AO_test_and_set(&z) == AO_TS_SET); - assert(AO_test_and_set(&z) == AO_TS_SET); - AO_CLEAR(&z); -# else - MISSING(AO_test_and_set); -# endif -# if defined(AO_HAVE_fetch_and_add) - TA_assert(AO_fetch_and_add(&x, 42) == 13); - TA_assert(AO_fetch_and_add(&x, -42) == 55); -# else - MISSING(AO_fetch_and_add); -# endif -# if defined(AO_HAVE_fetch_and_add1) - TA_assert(AO_fetch_and_add1(&x) == 13); -# else - MISSING(AO_fetch_and_add1); - ++x; -# endif -# if defined(AO_HAVE_fetch_and_sub1) - TA_assert(AO_fetch_and_sub1(&x) == 14); -# else - MISSING(AO_fetch_and_sub1); - --x; -# endif -# if defined(AO_HAVE_short_store) - AO_short_store(&s, 13); -# else - MISSING(AO_short_store); - s = 13; -# endif -# if defined(AO_HAVE_short_load) - TA_assert(AO_short_load(&s) == 13); -# else - MISSING(AO_short_load); -# endif -# if defined(AO_HAVE_short_fetch_and_add) - TA_assert(AO_short_fetch_and_add(&s, 42) == 13); - TA_assert(AO_short_fetch_and_add(&s, -42) == 55); -# else - MISSING(AO_short_fetch_and_add); -# endif -# if defined(AO_HAVE_short_fetch_and_add1) - TA_assert(AO_short_fetch_and_add1(&s) == 13); -# else - MISSING(AO_short_fetch_and_add1); - ++s; -# endif -# if defined(AO_HAVE_short_fetch_and_sub1) - TA_assert(AO_short_fetch_and_sub1(&s) == 14); -# else - MISSING(AO_short_fetch_and_sub1); - --s; -# endif -# if defined(AO_HAVE_char_store) - AO_char_store(&b, 13); -# else - MISSING(AO_char_store); - b = 13; -# endif -# if defined(AO_HAVE_char_load) - TA_assert(AO_char_load(&b) == 13); -# else - MISSING(AO_char_load); -# endif -# if defined(AO_HAVE_char_fetch_and_add) - TA_assert(AO_char_fetch_and_add(&b, 42) == 13); - TA_assert(AO_char_fetch_and_add(&b, -42) == 55); -# else - MISSING(AO_char_fetch_and_add); -# endif -# if defined(AO_HAVE_char_fetch_and_add1) - TA_assert(AO_char_fetch_and_add1(&b) == 13); -# else - MISSING(AO_char_fetch_and_add1); - ++b; -# endif -# if defined(AO_HAVE_char_fetch_and_sub1) - TA_assert(AO_char_fetch_and_sub1(&b) == 14); -# else - MISSING(AO_char_fetch_and_sub1); - --b; -# endif -# if defined(AO_HAVE_int_store) - AO_int_store(&zz, 13); -# else - MISSING(AO_int_store); - zz = 13; -# endif -# if defined(AO_HAVE_int_load) - TA_assert(AO_int_load(&zz) == 13); -# else - MISSING(AO_int_load); -# endif -# if defined(AO_HAVE_int_fetch_and_add) - TA_assert(AO_int_fetch_and_add(&zz, 42) == 13); - TA_assert(AO_int_fetch_and_add(&zz, -42) == 55); -# else - MISSING(AO_int_fetch_and_add); -# endif -# if defined(AO_HAVE_int_fetch_and_add1) - TA_assert(AO_int_fetch_and_add1(&zz) == 13); -# else - MISSING(AO_int_fetch_and_add1); - ++zz; -# endif -# if defined(AO_HAVE_int_fetch_and_sub1) - TA_assert(AO_int_fetch_and_sub1(&zz) == 14); -# else - MISSING(AO_int_fetch_and_sub1); - --zz; -# endif -# if defined(AO_HAVE_compare_and_swap) - TA_assert(!AO_compare_and_swap(&x, 14, 42)); - TA_assert(x == 13); - TA_assert(AO_compare_and_swap(&x, 13, 42)); - TA_assert(x == 42); -# else - MISSING(AO_compare_and_swap); -# endif -# if defined(AO_HAVE_or) - AO_or(&x, 66); - TA_assert(x == 106); -# else - MISSING(AO_or); - x |= 34; -# endif -# if defined(AO_HAVE_compare_double_and_swap_double) - TA_assert(!AO_compare_double_and_swap_double(&w, 17, 42, 12, 13)); - TA_assert(w.AO_val1 == 0 && w.AO_val2 == 0); - TA_assert(AO_compare_double_and_swap_double(&w, 0, 0, 12, 13)); - TA_assert(w.AO_val1 == 12 && w.AO_val2 == 13); - TA_assert(AO_compare_double_and_swap_double(&w, 12, 13, 17, 42)); - TA_assert(w.AO_val1 == 17 && w.AO_val2 == 42); - w.AO_val1 = 0; w.AO_val2 = 0; -# else - MISSING(AO_compare_double_and_swap_double); -# endif -# if defined(AO_HAVE_compare_and_swap_double) - TA_assert(!AO_compare_and_swap_double(&w, 17, 12, 13)); - TA_assert(w.AO_val1 == 0 && w.AO_val2 == 0); - TA_assert(AO_compare_and_swap_double(&w, 0, 12, 13)); - TA_assert(w.AO_val1 == 12 && w.AO_val2 == 13); - TA_assert(AO_compare_and_swap_double(&w, 12, 17, 42)); - TA_assert(w.AO_val1 == 17 && w.AO_val2 == 42); -# else - MISSING(AO_compare_and_swap_double); -# endif -} - - - -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * This file is covered by the GNU general public license, version 2. - * see doc/COPYING for details. - */ - -/* Some basic sanity tests. These do not test the barrier semantics. */ - -#undef TA_assert -#define TA_assert(e) \ - if (!(e)) { fprintf(stderr, "Assertion failed %s:%d (barrier: _release)\n", \ - __FILE__, __LINE__), exit(1); } - -#undef MISSING -#define MISSING(name) \ - fprintf(stderr, "Missing: %s\n", #name "_release") - -void test_atomic_release(void) -{ - AO_t x; - unsigned char b; - unsigned short s; - unsigned int zz; -# if defined(AO_HAVE_test_and_set_release) - AO_TS_t z = AO_TS_INITIALIZER; -# endif -# if defined(AO_HAVE_double_t) - AO_double_t w; - w.AO_val1 = 0; - w.AO_val2 = 0; -# endif - -# if defined(AO_HAVE_nop_release) - AO_nop_release(); -# else - MISSING(AO_nop); -# endif -# if defined(AO_HAVE_store_release) - AO_store_release(&x, 13); - TA_assert (x == 13); -# else - MISSING(AO_store); - x = 13; -# endif -# if defined(AO_HAVE_load_release) - TA_assert(AO_load_release(&x) == 13); -# else - MISSING(AO_load); -# endif -# if defined(AO_HAVE_test_and_set_release) - assert(AO_test_and_set_release(&z) == AO_TS_CLEAR); - assert(AO_test_and_set_release(&z) == AO_TS_SET); - assert(AO_test_and_set_release(&z) == AO_TS_SET); - AO_CLEAR(&z); -# else - MISSING(AO_test_and_set); -# endif -# if defined(AO_HAVE_fetch_and_add_release) - TA_assert(AO_fetch_and_add_release(&x, 42) == 13); - TA_assert(AO_fetch_and_add_release(&x, -42) == 55); -# else - MISSING(AO_fetch_and_add); -# endif -# if defined(AO_HAVE_fetch_and_add1_release) - TA_assert(AO_fetch_and_add1_release(&x) == 13); -# else - MISSING(AO_fetch_and_add1); - ++x; -# endif -# if defined(AO_HAVE_fetch_and_sub1_release) - TA_assert(AO_fetch_and_sub1_release(&x) == 14); -# else - MISSING(AO_fetch_and_sub1); - --x; -# endif -# if defined(AO_HAVE_short_store_release) - AO_short_store_release(&s, 13); -# else - MISSING(AO_short_store); - s = 13; -# endif -# if defined(AO_HAVE_short_load_release) - TA_assert(AO_short_load(&s) == 13); -# else - MISSING(AO_short_load); -# endif -# if defined(AO_HAVE_short_fetch_and_add_release) - TA_assert(AO_short_fetch_and_add_release(&s, 42) == 13); - TA_assert(AO_short_fetch_and_add_release(&s, -42) == 55); -# else - MISSING(AO_short_fetch_and_add); -# endif -# if defined(AO_HAVE_short_fetch_and_add1_release) - TA_assert(AO_short_fetch_and_add1_release(&s) == 13); -# else - MISSING(AO_short_fetch_and_add1); - ++s; -# endif -# if defined(AO_HAVE_short_fetch_and_sub1_release) - TA_assert(AO_short_fetch_and_sub1_release(&s) == 14); -# else - MISSING(AO_short_fetch_and_sub1); - --s; -# endif -# if defined(AO_HAVE_char_store_release) - AO_char_store_release(&b, 13); -# else - MISSING(AO_char_store); - b = 13; -# endif -# if defined(AO_HAVE_char_load_release) - TA_assert(AO_char_load(&b) == 13); -# else - MISSING(AO_char_load); -# endif -# if defined(AO_HAVE_char_fetch_and_add_release) - TA_assert(AO_char_fetch_and_add_release(&b, 42) == 13); - TA_assert(AO_char_fetch_and_add_release(&b, -42) == 55); -# else - MISSING(AO_char_fetch_and_add); -# endif -# if defined(AO_HAVE_char_fetch_and_add1_release) - TA_assert(AO_char_fetch_and_add1_release(&b) == 13); -# else - MISSING(AO_char_fetch_and_add1); - ++b; -# endif -# if defined(AO_HAVE_char_fetch_and_sub1_release) - TA_assert(AO_char_fetch_and_sub1_release(&b) == 14); -# else - MISSING(AO_char_fetch_and_sub1); - --b; -# endif -# if defined(AO_HAVE_int_store_release) - AO_int_store_release(&zz, 13); -# else - MISSING(AO_int_store); - zz = 13; -# endif -# if defined(AO_HAVE_int_load_release) - TA_assert(AO_int_load(&zz) == 13); -# else - MISSING(AO_int_load); -# endif -# if defined(AO_HAVE_int_fetch_and_add_release) - TA_assert(AO_int_fetch_and_add_release(&zz, 42) == 13); - TA_assert(AO_int_fetch_and_add_release(&zz, -42) == 55); -# else - MISSING(AO_int_fetch_and_add); -# endif -# if defined(AO_HAVE_int_fetch_and_add1_release) - TA_assert(AO_int_fetch_and_add1_release(&zz) == 13); -# else - MISSING(AO_int_fetch_and_add1); - ++zz; -# endif -# if defined(AO_HAVE_int_fetch_and_sub1_release) - TA_assert(AO_int_fetch_and_sub1_release(&zz) == 14); -# else - MISSING(AO_int_fetch_and_sub1); - --zz; -# endif -# if defined(AO_HAVE_compare_and_swap_release) - TA_assert(!AO_compare_and_swap_release(&x, 14, 42)); - TA_assert(x == 13); - TA_assert(AO_compare_and_swap_release(&x, 13, 42)); - TA_assert(x == 42); -# else - MISSING(AO_compare_and_swap); -# endif -# if defined(AO_HAVE_or_release) - AO_or_release(&x, 66); - TA_assert(x == 106); -# else - MISSING(AO_or); - x |= 34; -# endif -# if defined(AO_HAVE_compare_double_and_swap_double_release) - TA_assert(!AO_compare_double_and_swap_double_release(&w, 17, 42, 12, 13)); - TA_assert(w.AO_val1 == 0 && w.AO_val2 == 0); - TA_assert(AO_compare_double_and_swap_double_release(&w, 0, 0, 12, 13)); - TA_assert(w.AO_val1 == 12 && w.AO_val2 == 13); - TA_assert(AO_compare_double_and_swap_double_release(&w, 12, 13, 17, 42)); - TA_assert(w.AO_val1 == 17 && w.AO_val2 == 42); - w.AO_val1 = 0; w.AO_val2 = 0; -# else - MISSING(AO_compare_double_and_swap_double); -# endif -# if defined(AO_HAVE_compare_and_swap_double_release) - TA_assert(!AO_compare_and_swap_double_release(&w, 17, 12, 13)); - TA_assert(w.AO_val1 == 0 && w.AO_val2 == 0); - TA_assert(AO_compare_and_swap_double_release(&w, 0, 12, 13)); - TA_assert(w.AO_val1 == 12 && w.AO_val2 == 13); - TA_assert(AO_compare_and_swap_double_release(&w, 12, 17, 42)); - TA_assert(w.AO_val1 == 17 && w.AO_val2 == 42); -# else - MISSING(AO_compare_and_swap_double); -# endif -} - - - -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * This file is covered by the GNU general public license, version 2. - * see doc/COPYING for details. - */ - -/* Some basic sanity tests. These do not test the barrier semantics. */ - -#undef TA_assert -#define TA_assert(e) \ - if (!(e)) { fprintf(stderr, "Assertion failed %s:%d (barrier: _acquire)\n", \ - __FILE__, __LINE__), exit(1); } - -#undef MISSING -#define MISSING(name) \ - fprintf(stderr, "Missing: %s\n", #name "_acquire") - -void test_atomic_acquire(void) -{ - AO_t x; - unsigned char b; - unsigned short s; - unsigned int zz; -# if defined(AO_HAVE_test_and_set_acquire) - AO_TS_t z = AO_TS_INITIALIZER; -# endif -# if defined(AO_HAVE_double_t) - AO_double_t w; - w.AO_val1 = 0; - w.AO_val2 = 0; -# endif - -# if defined(AO_HAVE_nop_acquire) - AO_nop_acquire(); -# else - MISSING(AO_nop); -# endif -# if defined(AO_HAVE_store_acquire) - AO_store_acquire(&x, 13); - TA_assert (x == 13); -# else - MISSING(AO_store); - x = 13; -# endif -# if defined(AO_HAVE_load_acquire) - TA_assert(AO_load_acquire(&x) == 13); -# else - MISSING(AO_load); -# endif -# if defined(AO_HAVE_test_and_set_acquire) - assert(AO_test_and_set_acquire(&z) == AO_TS_CLEAR); - assert(AO_test_and_set_acquire(&z) == AO_TS_SET); - assert(AO_test_and_set_acquire(&z) == AO_TS_SET); - AO_CLEAR(&z); -# else - MISSING(AO_test_and_set); -# endif -# if defined(AO_HAVE_fetch_and_add_acquire) - TA_assert(AO_fetch_and_add_acquire(&x, 42) == 13); - TA_assert(AO_fetch_and_add_acquire(&x, -42) == 55); -# else - MISSING(AO_fetch_and_add); -# endif -# if defined(AO_HAVE_fetch_and_add1_acquire) - TA_assert(AO_fetch_and_add1_acquire(&x) == 13); -# else - MISSING(AO_fetch_and_add1); - ++x; -# endif -# if defined(AO_HAVE_fetch_and_sub1_acquire) - TA_assert(AO_fetch_and_sub1_acquire(&x) == 14); -# else - MISSING(AO_fetch_and_sub1); - --x; -# endif -# if defined(AO_HAVE_short_store_acquire) - AO_short_store_acquire(&s, 13); -# else - MISSING(AO_short_store); - s = 13; -# endif -# if defined(AO_HAVE_short_load_acquire) - TA_assert(AO_short_load(&s) == 13); -# else - MISSING(AO_short_load); -# endif -# if defined(AO_HAVE_short_fetch_and_add_acquire) - TA_assert(AO_short_fetch_and_add_acquire(&s, 42) == 13); - TA_assert(AO_short_fetch_and_add_acquire(&s, -42) == 55); -# else - MISSING(AO_short_fetch_and_add); -# endif -# if defined(AO_HAVE_short_fetch_and_add1_acquire) - TA_assert(AO_short_fetch_and_add1_acquire(&s) == 13); -# else - MISSING(AO_short_fetch_and_add1); - ++s; -# endif -# if defined(AO_HAVE_short_fetch_and_sub1_acquire) - TA_assert(AO_short_fetch_and_sub1_acquire(&s) == 14); -# else - MISSING(AO_short_fetch_and_sub1); - --s; -# endif -# if defined(AO_HAVE_char_store_acquire) - AO_char_store_acquire(&b, 13); -# else - MISSING(AO_char_store); - b = 13; -# endif -# if defined(AO_HAVE_char_load_acquire) - TA_assert(AO_char_load(&b) == 13); -# else - MISSING(AO_char_load); -# endif -# if defined(AO_HAVE_char_fetch_and_add_acquire) - TA_assert(AO_char_fetch_and_add_acquire(&b, 42) == 13); - TA_assert(AO_char_fetch_and_add_acquire(&b, -42) == 55); -# else - MISSING(AO_char_fetch_and_add); -# endif -# if defined(AO_HAVE_char_fetch_and_add1_acquire) - TA_assert(AO_char_fetch_and_add1_acquire(&b) == 13); -# else - MISSING(AO_char_fetch_and_add1); - ++b; -# endif -# if defined(AO_HAVE_char_fetch_and_sub1_acquire) - TA_assert(AO_char_fetch_and_sub1_acquire(&b) == 14); -# else - MISSING(AO_char_fetch_and_sub1); - --b; -# endif -# if defined(AO_HAVE_int_store_acquire) - AO_int_store_acquire(&zz, 13); -# else - MISSING(AO_int_store); - zz = 13; -# endif -# if defined(AO_HAVE_int_load_acquire) - TA_assert(AO_int_load(&zz) == 13); -# else - MISSING(AO_int_load); -# endif -# if defined(AO_HAVE_int_fetch_and_add_acquire) - TA_assert(AO_int_fetch_and_add_acquire(&zz, 42) == 13); - TA_assert(AO_int_fetch_and_add_acquire(&zz, -42) == 55); -# else - MISSING(AO_int_fetch_and_add); -# endif -# if defined(AO_HAVE_int_fetch_and_add1_acquire) - TA_assert(AO_int_fetch_and_add1_acquire(&zz) == 13); -# else - MISSING(AO_int_fetch_and_add1); - ++zz; -# endif -# if defined(AO_HAVE_int_fetch_and_sub1_acquire) - TA_assert(AO_int_fetch_and_sub1_acquire(&zz) == 14); -# else - MISSING(AO_int_fetch_and_sub1); - --zz; -# endif -# if defined(AO_HAVE_compare_and_swap_acquire) - TA_assert(!AO_compare_and_swap_acquire(&x, 14, 42)); - TA_assert(x == 13); - TA_assert(AO_compare_and_swap_acquire(&x, 13, 42)); - TA_assert(x == 42); -# else - MISSING(AO_compare_and_swap); -# endif -# if defined(AO_HAVE_or_acquire) - AO_or_acquire(&x, 66); - TA_assert(x == 106); -# else - MISSING(AO_or); - x |= 34; -# endif -# if defined(AO_HAVE_compare_double_and_swap_double_acquire) - TA_assert(!AO_compare_double_and_swap_double_acquire(&w, 17, 42, 12, 13)); - TA_assert(w.AO_val1 == 0 && w.AO_val2 == 0); - TA_assert(AO_compare_double_and_swap_double_acquire(&w, 0, 0, 12, 13)); - TA_assert(w.AO_val1 == 12 && w.AO_val2 == 13); - TA_assert(AO_compare_double_and_swap_double_acquire(&w, 12, 13, 17, 42)); - TA_assert(w.AO_val1 == 17 && w.AO_val2 == 42); - w.AO_val1 = 0; w.AO_val2 = 0; -# else - MISSING(AO_compare_double_and_swap_double); -# endif -# if defined(AO_HAVE_compare_and_swap_double_acquire) - TA_assert(!AO_compare_and_swap_double_acquire(&w, 17, 12, 13)); - TA_assert(w.AO_val1 == 0 && w.AO_val2 == 0); - TA_assert(AO_compare_and_swap_double_acquire(&w, 0, 12, 13)); - TA_assert(w.AO_val1 == 12 && w.AO_val2 == 13); - TA_assert(AO_compare_and_swap_double_acquire(&w, 12, 17, 42)); - TA_assert(w.AO_val1 == 17 && w.AO_val2 == 42); -# else - MISSING(AO_compare_and_swap_double); -# endif -} - - - -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * This file is covered by the GNU general public license, version 2. - * see doc/COPYING for details. - */ - -/* Some basic sanity tests. These do not test the barrier semantics. */ - -#undef TA_assert -#define TA_assert(e) \ - if (!(e)) { fprintf(stderr, "Assertion failed %s:%d (barrier: _read)\n", \ - __FILE__, __LINE__), exit(1); } - -#undef MISSING -#define MISSING(name) \ - fprintf(stderr, "Missing: %s\n", #name "_read") - -void test_atomic_read(void) -{ - AO_t x; - unsigned char b; - unsigned short s; - unsigned int zz; -# if defined(AO_HAVE_test_and_set_read) - AO_TS_t z = AO_TS_INITIALIZER; -# endif -# if defined(AO_HAVE_double_t) - AO_double_t w; - w.AO_val1 = 0; - w.AO_val2 = 0; -# endif - -# if defined(AO_HAVE_nop_read) - AO_nop_read(); -# else - MISSING(AO_nop); -# endif -# if defined(AO_HAVE_store_read) - AO_store_read(&x, 13); - TA_assert (x == 13); -# else - MISSING(AO_store); - x = 13; -# endif -# if defined(AO_HAVE_load_read) - TA_assert(AO_load_read(&x) == 13); -# else - MISSING(AO_load); -# endif -# if defined(AO_HAVE_test_and_set_read) - assert(AO_test_and_set_read(&z) == AO_TS_CLEAR); - assert(AO_test_and_set_read(&z) == AO_TS_SET); - assert(AO_test_and_set_read(&z) == AO_TS_SET); - AO_CLEAR(&z); -# else - MISSING(AO_test_and_set); -# endif -# if defined(AO_HAVE_fetch_and_add_read) - TA_assert(AO_fetch_and_add_read(&x, 42) == 13); - TA_assert(AO_fetch_and_add_read(&x, -42) == 55); -# else - MISSING(AO_fetch_and_add); -# endif -# if defined(AO_HAVE_fetch_and_add1_read) - TA_assert(AO_fetch_and_add1_read(&x) == 13); -# else - MISSING(AO_fetch_and_add1); - ++x; -# endif -# if defined(AO_HAVE_fetch_and_sub1_read) - TA_assert(AO_fetch_and_sub1_read(&x) == 14); -# else - MISSING(AO_fetch_and_sub1); - --x; -# endif -# if defined(AO_HAVE_short_store_read) - AO_short_store_read(&s, 13); -# else - MISSING(AO_short_store); - s = 13; -# endif -# if defined(AO_HAVE_short_load_read) - TA_assert(AO_short_load(&s) == 13); -# else - MISSING(AO_short_load); -# endif -# if defined(AO_HAVE_short_fetch_and_add_read) - TA_assert(AO_short_fetch_and_add_read(&s, 42) == 13); - TA_assert(AO_short_fetch_and_add_read(&s, -42) == 55); -# else - MISSING(AO_short_fetch_and_add); -# endif -# if defined(AO_HAVE_short_fetch_and_add1_read) - TA_assert(AO_short_fetch_and_add1_read(&s) == 13); -# else - MISSING(AO_short_fetch_and_add1); - ++s; -# endif -# if defined(AO_HAVE_short_fetch_and_sub1_read) - TA_assert(AO_short_fetch_and_sub1_read(&s) == 14); -# else - MISSING(AO_short_fetch_and_sub1); - --s; -# endif -# if defined(AO_HAVE_char_store_read) - AO_char_store_read(&b, 13); -# else - MISSING(AO_char_store); - b = 13; -# endif -# if defined(AO_HAVE_char_load_read) - TA_assert(AO_char_load(&b) == 13); -# else - MISSING(AO_char_load); -# endif -# if defined(AO_HAVE_char_fetch_and_add_read) - TA_assert(AO_char_fetch_and_add_read(&b, 42) == 13); - TA_assert(AO_char_fetch_and_add_read(&b, -42) == 55); -# else - MISSING(AO_char_fetch_and_add); -# endif -# if defined(AO_HAVE_char_fetch_and_add1_read) - TA_assert(AO_char_fetch_and_add1_read(&b) == 13); -# else - MISSING(AO_char_fetch_and_add1); - ++b; -# endif -# if defined(AO_HAVE_char_fetch_and_sub1_read) - TA_assert(AO_char_fetch_and_sub1_read(&b) == 14); -# else - MISSING(AO_char_fetch_and_sub1); - --b; -# endif -# if defined(AO_HAVE_int_store_read) - AO_int_store_read(&zz, 13); -# else - MISSING(AO_int_store); - zz = 13; -# endif -# if defined(AO_HAVE_int_load_read) - TA_assert(AO_int_load(&zz) == 13); -# else - MISSING(AO_int_load); -# endif -# if defined(AO_HAVE_int_fetch_and_add_read) - TA_assert(AO_int_fetch_and_add_read(&zz, 42) == 13); - TA_assert(AO_int_fetch_and_add_read(&zz, -42) == 55); -# else - MISSING(AO_int_fetch_and_add); -# endif -# if defined(AO_HAVE_int_fetch_and_add1_read) - TA_assert(AO_int_fetch_and_add1_read(&zz) == 13); -# else - MISSING(AO_int_fetch_and_add1); - ++zz; -# endif -# if defined(AO_HAVE_int_fetch_and_sub1_read) - TA_assert(AO_int_fetch_and_sub1_read(&zz) == 14); -# else - MISSING(AO_int_fetch_and_sub1); - --zz; -# endif -# if defined(AO_HAVE_compare_and_swap_read) - TA_assert(!AO_compare_and_swap_read(&x, 14, 42)); - TA_assert(x == 13); - TA_assert(AO_compare_and_swap_read(&x, 13, 42)); - TA_assert(x == 42); -# else - MISSING(AO_compare_and_swap); -# endif -# if defined(AO_HAVE_or_read) - AO_or_read(&x, 66); - TA_assert(x == 106); -# else - MISSING(AO_or); - x |= 34; -# endif -# if defined(AO_HAVE_compare_double_and_swap_double_read) - TA_assert(!AO_compare_double_and_swap_double_read(&w, 17, 42, 12, 13)); - TA_assert(w.AO_val1 == 0 && w.AO_val2 == 0); - TA_assert(AO_compare_double_and_swap_double_read(&w, 0, 0, 12, 13)); - TA_assert(w.AO_val1 == 12 && w.AO_val2 == 13); - TA_assert(AO_compare_double_and_swap_double_read(&w, 12, 13, 17, 42)); - TA_assert(w.AO_val1 == 17 && w.AO_val2 == 42); - w.AO_val1 = 0; w.AO_val2 = 0; -# else - MISSING(AO_compare_double_and_swap_double); -# endif -# if defined(AO_HAVE_compare_and_swap_double_read) - TA_assert(!AO_compare_and_swap_double_read(&w, 17, 12, 13)); - TA_assert(w.AO_val1 == 0 && w.AO_val2 == 0); - TA_assert(AO_compare_and_swap_double_read(&w, 0, 12, 13)); - TA_assert(w.AO_val1 == 12 && w.AO_val2 == 13); - TA_assert(AO_compare_and_swap_double_read(&w, 12, 17, 42)); - TA_assert(w.AO_val1 == 17 && w.AO_val2 == 42); -# else - MISSING(AO_compare_and_swap_double); -# endif -} - - - -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * This file is covered by the GNU general public license, version 2. - * see doc/COPYING for details. - */ - -/* Some basic sanity tests. These do not test the barrier semantics. */ - -#undef TA_assert -#define TA_assert(e) \ - if (!(e)) { fprintf(stderr, "Assertion failed %s:%d (barrier: _write)\n", \ - __FILE__, __LINE__), exit(1); } - -#undef MISSING -#define MISSING(name) \ - fprintf(stderr, "Missing: %s\n", #name "_write") - -void test_atomic_write(void) -{ - AO_t x; - unsigned char b; - unsigned short s; - unsigned int zz; -# if defined(AO_HAVE_test_and_set_write) - AO_TS_t z = AO_TS_INITIALIZER; -# endif -# if defined(AO_HAVE_double_t) - AO_double_t w; - w.AO_val1 = 0; - w.AO_val2 = 0; -# endif - -# if defined(AO_HAVE_nop_write) - AO_nop_write(); -# else - MISSING(AO_nop); -# endif -# if defined(AO_HAVE_store_write) - AO_store_write(&x, 13); - TA_assert (x == 13); -# else - MISSING(AO_store); - x = 13; -# endif -# if defined(AO_HAVE_load_write) - TA_assert(AO_load_write(&x) == 13); -# else - MISSING(AO_load); -# endif -# if defined(AO_HAVE_test_and_set_write) - assert(AO_test_and_set_write(&z) == AO_TS_CLEAR); - assert(AO_test_and_set_write(&z) == AO_TS_SET); - assert(AO_test_and_set_write(&z) == AO_TS_SET); - AO_CLEAR(&z); -# else - MISSING(AO_test_and_set); -# endif -# if defined(AO_HAVE_fetch_and_add_write) - TA_assert(AO_fetch_and_add_write(&x, 42) == 13); - TA_assert(AO_fetch_and_add_write(&x, -42) == 55); -# else - MISSING(AO_fetch_and_add); -# endif -# if defined(AO_HAVE_fetch_and_add1_write) - TA_assert(AO_fetch_and_add1_write(&x) == 13); -# else - MISSING(AO_fetch_and_add1); - ++x; -# endif -# if defined(AO_HAVE_fetch_and_sub1_write) - TA_assert(AO_fetch_and_sub1_write(&x) == 14); -# else - MISSING(AO_fetch_and_sub1); - --x; -# endif -# if defined(AO_HAVE_short_store_write) - AO_short_store_write(&s, 13); -# else - MISSING(AO_short_store); - s = 13; -# endif -# if defined(AO_HAVE_short_load_write) - TA_assert(AO_short_load(&s) == 13); -# else - MISSING(AO_short_load); -# endif -# if defined(AO_HAVE_short_fetch_and_add_write) - TA_assert(AO_short_fetch_and_add_write(&s, 42) == 13); - TA_assert(AO_short_fetch_and_add_write(&s, -42) == 55); -# else - MISSING(AO_short_fetch_and_add); -# endif -# if defined(AO_HAVE_short_fetch_and_add1_write) - TA_assert(AO_short_fetch_and_add1_write(&s) == 13); -# else - MISSING(AO_short_fetch_and_add1); - ++s; -# endif -# if defined(AO_HAVE_short_fetch_and_sub1_write) - TA_assert(AO_short_fetch_and_sub1_write(&s) == 14); -# else - MISSING(AO_short_fetch_and_sub1); - --s; -# endif -# if defined(AO_HAVE_char_store_write) - AO_char_store_write(&b, 13); -# else - MISSING(AO_char_store); - b = 13; -# endif -# if defined(AO_HAVE_char_load_write) - TA_assert(AO_char_load(&b) == 13); -# else - MISSING(AO_char_load); -# endif -# if defined(AO_HAVE_char_fetch_and_add_write) - TA_assert(AO_char_fetch_and_add_write(&b, 42) == 13); - TA_assert(AO_char_fetch_and_add_write(&b, -42) == 55); -# else - MISSING(AO_char_fetch_and_add); -# endif -# if defined(AO_HAVE_char_fetch_and_add1_write) - TA_assert(AO_char_fetch_and_add1_write(&b) == 13); -# else - MISSING(AO_char_fetch_and_add1); - ++b; -# endif -# if defined(AO_HAVE_char_fetch_and_sub1_write) - TA_assert(AO_char_fetch_and_sub1_write(&b) == 14); -# else - MISSING(AO_char_fetch_and_sub1); - --b; -# endif -# if defined(AO_HAVE_int_store_write) - AO_int_store_write(&zz, 13); -# else - MISSING(AO_int_store); - zz = 13; -# endif -# if defined(AO_HAVE_int_load_write) - TA_assert(AO_int_load(&zz) == 13); -# else - MISSING(AO_int_load); -# endif -# if defined(AO_HAVE_int_fetch_and_add_write) - TA_assert(AO_int_fetch_and_add_write(&zz, 42) == 13); - TA_assert(AO_int_fetch_and_add_write(&zz, -42) == 55); -# else - MISSING(AO_int_fetch_and_add); -# endif -# if defined(AO_HAVE_int_fetch_and_add1_write) - TA_assert(AO_int_fetch_and_add1_write(&zz) == 13); -# else - MISSING(AO_int_fetch_and_add1); - ++zz; -# endif -# if defined(AO_HAVE_int_fetch_and_sub1_write) - TA_assert(AO_int_fetch_and_sub1_write(&zz) == 14); -# else - MISSING(AO_int_fetch_and_sub1); - --zz; -# endif -# if defined(AO_HAVE_compare_and_swap_write) - TA_assert(!AO_compare_and_swap_write(&x, 14, 42)); - TA_assert(x == 13); - TA_assert(AO_compare_and_swap_write(&x, 13, 42)); - TA_assert(x == 42); -# else - MISSING(AO_compare_and_swap); -# endif -# if defined(AO_HAVE_or_write) - AO_or_write(&x, 66); - TA_assert(x == 106); -# else - MISSING(AO_or); - x |= 34; -# endif -# if defined(AO_HAVE_compare_double_and_swap_double_write) - TA_assert(!AO_compare_double_and_swap_double_write(&w, 17, 42, 12, 13)); - TA_assert(w.AO_val1 == 0 && w.AO_val2 == 0); - TA_assert(AO_compare_double_and_swap_double_write(&w, 0, 0, 12, 13)); - TA_assert(w.AO_val1 == 12 && w.AO_val2 == 13); - TA_assert(AO_compare_double_and_swap_double_write(&w, 12, 13, 17, 42)); - TA_assert(w.AO_val1 == 17 && w.AO_val2 == 42); - w.AO_val1 = 0; w.AO_val2 = 0; -# else - MISSING(AO_compare_double_and_swap_double); -# endif -# if defined(AO_HAVE_compare_and_swap_double_write) - TA_assert(!AO_compare_and_swap_double_write(&w, 17, 12, 13)); - TA_assert(w.AO_val1 == 0 && w.AO_val2 == 0); - TA_assert(AO_compare_and_swap_double_write(&w, 0, 12, 13)); - TA_assert(w.AO_val1 == 12 && w.AO_val2 == 13); - TA_assert(AO_compare_and_swap_double_write(&w, 12, 17, 42)); - TA_assert(w.AO_val1 == 17 && w.AO_val2 == 42); -# else - MISSING(AO_compare_and_swap_double); -# endif -} - - - -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * This file is covered by the GNU general public license, version 2. - * see doc/COPYING for details. - */ - -/* Some basic sanity tests. These do not test the barrier semantics. */ - -#undef TA_assert -#define TA_assert(e) \ - if (!(e)) { fprintf(stderr, "Assertion failed %s:%d (barrier: _full)\n", \ - __FILE__, __LINE__), exit(1); } - -#undef MISSING -#define MISSING(name) \ - fprintf(stderr, "Missing: %s\n", #name "_full") - -void test_atomic_full(void) -{ - AO_t x; - unsigned char b; - unsigned short s; - unsigned int zz; -# if defined(AO_HAVE_test_and_set_full) - AO_TS_t z = AO_TS_INITIALIZER; -# endif -# if defined(AO_HAVE_double_t) - AO_double_t w; - w.AO_val1 = 0; - w.AO_val2 = 0; -# endif - -# if defined(AO_HAVE_nop_full) - AO_nop_full(); -# else - MISSING(AO_nop); -# endif -# if defined(AO_HAVE_store_full) - AO_store_full(&x, 13); - TA_assert (x == 13); -# else - MISSING(AO_store); - x = 13; -# endif -# if defined(AO_HAVE_load_full) - TA_assert(AO_load_full(&x) == 13); -# else - MISSING(AO_load); -# endif -# if defined(AO_HAVE_test_and_set_full) - assert(AO_test_and_set_full(&z) == AO_TS_CLEAR); - assert(AO_test_and_set_full(&z) == AO_TS_SET); - assert(AO_test_and_set_full(&z) == AO_TS_SET); - AO_CLEAR(&z); -# else - MISSING(AO_test_and_set); -# endif -# if defined(AO_HAVE_fetch_and_add_full) - TA_assert(AO_fetch_and_add_full(&x, 42) == 13); - TA_assert(AO_fetch_and_add_full(&x, -42) == 55); -# else - MISSING(AO_fetch_and_add); -# endif -# if defined(AO_HAVE_fetch_and_add1_full) - TA_assert(AO_fetch_and_add1_full(&x) == 13); -# else - MISSING(AO_fetch_and_add1); - ++x; -# endif -# if defined(AO_HAVE_fetch_and_sub1_full) - TA_assert(AO_fetch_and_sub1_full(&x) == 14); -# else - MISSING(AO_fetch_and_sub1); - --x; -# endif -# if defined(AO_HAVE_short_store_full) - AO_short_store_full(&s, 13); -# else - MISSING(AO_short_store); - s = 13; -# endif -# if defined(AO_HAVE_short_load_full) - TA_assert(AO_short_load(&s) == 13); -# else - MISSING(AO_short_load); -# endif -# if defined(AO_HAVE_short_fetch_and_add_full) - TA_assert(AO_short_fetch_and_add_full(&s, 42) == 13); - TA_assert(AO_short_fetch_and_add_full(&s, -42) == 55); -# else - MISSING(AO_short_fetch_and_add); -# endif -# if defined(AO_HAVE_short_fetch_and_add1_full) - TA_assert(AO_short_fetch_and_add1_full(&s) == 13); -# else - MISSING(AO_short_fetch_and_add1); - ++s; -# endif -# if defined(AO_HAVE_short_fetch_and_sub1_full) - TA_assert(AO_short_fetch_and_sub1_full(&s) == 14); -# else - MISSING(AO_short_fetch_and_sub1); - --s; -# endif -# if defined(AO_HAVE_char_store_full) - AO_char_store_full(&b, 13); -# else - MISSING(AO_char_store); - b = 13; -# endif -# if defined(AO_HAVE_char_load_full) - TA_assert(AO_char_load(&b) == 13); -# else - MISSING(AO_char_load); -# endif -# if defined(AO_HAVE_char_fetch_and_add_full) - TA_assert(AO_char_fetch_and_add_full(&b, 42) == 13); - TA_assert(AO_char_fetch_and_add_full(&b, -42) == 55); -# else - MISSING(AO_char_fetch_and_add); -# endif -# if defined(AO_HAVE_char_fetch_and_add1_full) - TA_assert(AO_char_fetch_and_add1_full(&b) == 13); -# else - MISSING(AO_char_fetch_and_add1); - ++b; -# endif -# if defined(AO_HAVE_char_fetch_and_sub1_full) - TA_assert(AO_char_fetch_and_sub1_full(&b) == 14); -# else - MISSING(AO_char_fetch_and_sub1); - --b; -# endif -# if defined(AO_HAVE_int_store_full) - AO_int_store_full(&zz, 13); -# else - MISSING(AO_int_store); - zz = 13; -# endif -# if defined(AO_HAVE_int_load_full) - TA_assert(AO_int_load(&zz) == 13); -# else - MISSING(AO_int_load); -# endif -# if defined(AO_HAVE_int_fetch_and_add_full) - TA_assert(AO_int_fetch_and_add_full(&zz, 42) == 13); - TA_assert(AO_int_fetch_and_add_full(&zz, -42) == 55); -# else - MISSING(AO_int_fetch_and_add); -# endif -# if defined(AO_HAVE_int_fetch_and_add1_full) - TA_assert(AO_int_fetch_and_add1_full(&zz) == 13); -# else - MISSING(AO_int_fetch_and_add1); - ++zz; -# endif -# if defined(AO_HAVE_int_fetch_and_sub1_full) - TA_assert(AO_int_fetch_and_sub1_full(&zz) == 14); -# else - MISSING(AO_int_fetch_and_sub1); - --zz; -# endif -# if defined(AO_HAVE_compare_and_swap_full) - TA_assert(!AO_compare_and_swap_full(&x, 14, 42)); - TA_assert(x == 13); - TA_assert(AO_compare_and_swap_full(&x, 13, 42)); - TA_assert(x == 42); -# else - MISSING(AO_compare_and_swap); -# endif -# if defined(AO_HAVE_or_full) - AO_or_full(&x, 66); - TA_assert(x == 106); -# else - MISSING(AO_or); - x |= 34; -# endif -# if defined(AO_HAVE_compare_double_and_swap_double_full) - TA_assert(!AO_compare_double_and_swap_double_full(&w, 17, 42, 12, 13)); - TA_assert(w.AO_val1 == 0 && w.AO_val2 == 0); - TA_assert(AO_compare_double_and_swap_double_full(&w, 0, 0, 12, 13)); - TA_assert(w.AO_val1 == 12 && w.AO_val2 == 13); - TA_assert(AO_compare_double_and_swap_double_full(&w, 12, 13, 17, 42)); - TA_assert(w.AO_val1 == 17 && w.AO_val2 == 42); - w.AO_val1 = 0; w.AO_val2 = 0; -# else - MISSING(AO_compare_double_and_swap_double); -# endif -# if defined(AO_HAVE_compare_and_swap_double_full) - TA_assert(!AO_compare_and_swap_double_full(&w, 17, 12, 13)); - TA_assert(w.AO_val1 == 0 && w.AO_val2 == 0); - TA_assert(AO_compare_and_swap_double_full(&w, 0, 12, 13)); - TA_assert(w.AO_val1 == 12 && w.AO_val2 == 13); - TA_assert(AO_compare_and_swap_double_full(&w, 12, 17, 42)); - TA_assert(w.AO_val1 == 17 && w.AO_val2 == 42); -# else - MISSING(AO_compare_and_swap_double); -# endif -} - - - -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * This file is covered by the GNU general public license, version 2. - * see doc/COPYING for details. - */ - -/* Some basic sanity tests. These do not test the barrier semantics. */ - -#undef TA_assert -#define TA_assert(e) \ - if (!(e)) { fprintf(stderr, "Assertion failed %s:%d (barrier: _release_write)\n", \ - __FILE__, __LINE__), exit(1); } - -#undef MISSING -#define MISSING(name) \ - fprintf(stderr, "Missing: %s\n", #name "_release_write") - -void test_atomic_release_write(void) -{ - AO_t x; - unsigned char b; - unsigned short s; - unsigned int zz; -# if defined(AO_HAVE_test_and_set_release_write) - AO_TS_t z = AO_TS_INITIALIZER; -# endif -# if defined(AO_HAVE_double_t) - AO_double_t w; - w.AO_val1 = 0; - w.AO_val2 = 0; -# endif - -# if defined(AO_HAVE_nop_release_write) - AO_nop_release_write(); -# else - MISSING(AO_nop); -# endif -# if defined(AO_HAVE_store_release_write) - AO_store_release_write(&x, 13); - TA_assert (x == 13); -# else - MISSING(AO_store); - x = 13; -# endif -# if defined(AO_HAVE_load_release_write) - TA_assert(AO_load_release_write(&x) == 13); -# else - MISSING(AO_load); -# endif -# if defined(AO_HAVE_test_and_set_release_write) - assert(AO_test_and_set_release_write(&z) == AO_TS_CLEAR); - assert(AO_test_and_set_release_write(&z) == AO_TS_SET); - assert(AO_test_and_set_release_write(&z) == AO_TS_SET); - AO_CLEAR(&z); -# else - MISSING(AO_test_and_set); -# endif -# if defined(AO_HAVE_fetch_and_add_release_write) - TA_assert(AO_fetch_and_add_release_write(&x, 42) == 13); - TA_assert(AO_fetch_and_add_release_write(&x, -42) == 55); -# else - MISSING(AO_fetch_and_add); -# endif -# if defined(AO_HAVE_fetch_and_add1_release_write) - TA_assert(AO_fetch_and_add1_release_write(&x) == 13); -# else - MISSING(AO_fetch_and_add1); - ++x; -# endif -# if defined(AO_HAVE_fetch_and_sub1_release_write) - TA_assert(AO_fetch_and_sub1_release_write(&x) == 14); -# else - MISSING(AO_fetch_and_sub1); - --x; -# endif -# if defined(AO_HAVE_short_store_release_write) - AO_short_store_release_write(&s, 13); -# else - MISSING(AO_short_store); - s = 13; -# endif -# if defined(AO_HAVE_short_load_release_write) - TA_assert(AO_short_load(&s) == 13); -# else - MISSING(AO_short_load); -# endif -# if defined(AO_HAVE_short_fetch_and_add_release_write) - TA_assert(AO_short_fetch_and_add_release_write(&s, 42) == 13); - TA_assert(AO_short_fetch_and_add_release_write(&s, -42) == 55); -# else - MISSING(AO_short_fetch_and_add); -# endif -# if defined(AO_HAVE_short_fetch_and_add1_release_write) - TA_assert(AO_short_fetch_and_add1_release_write(&s) == 13); -# else - MISSING(AO_short_fetch_and_add1); - ++s; -# endif -# if defined(AO_HAVE_short_fetch_and_sub1_release_write) - TA_assert(AO_short_fetch_and_sub1_release_write(&s) == 14); -# else - MISSING(AO_short_fetch_and_sub1); - --s; -# endif -# if defined(AO_HAVE_char_store_release_write) - AO_char_store_release_write(&b, 13); -# else - MISSING(AO_char_store); - b = 13; -# endif -# if defined(AO_HAVE_char_load_release_write) - TA_assert(AO_char_load(&b) == 13); -# else - MISSING(AO_char_load); -# endif -# if defined(AO_HAVE_char_fetch_and_add_release_write) - TA_assert(AO_char_fetch_and_add_release_write(&b, 42) == 13); - TA_assert(AO_char_fetch_and_add_release_write(&b, -42) == 55); -# else - MISSING(AO_char_fetch_and_add); -# endif -# if defined(AO_HAVE_char_fetch_and_add1_release_write) - TA_assert(AO_char_fetch_and_add1_release_write(&b) == 13); -# else - MISSING(AO_char_fetch_and_add1); - ++b; -# endif -# if defined(AO_HAVE_char_fetch_and_sub1_release_write) - TA_assert(AO_char_fetch_and_sub1_release_write(&b) == 14); -# else - MISSING(AO_char_fetch_and_sub1); - --b; -# endif -# if defined(AO_HAVE_int_store_release_write) - AO_int_store_release_write(&zz, 13); -# else - MISSING(AO_int_store); - zz = 13; -# endif -# if defined(AO_HAVE_int_load_release_write) - TA_assert(AO_int_load(&zz) == 13); -# else - MISSING(AO_int_load); -# endif -# if defined(AO_HAVE_int_fetch_and_add_release_write) - TA_assert(AO_int_fetch_and_add_release_write(&zz, 42) == 13); - TA_assert(AO_int_fetch_and_add_release_write(&zz, -42) == 55); -# else - MISSING(AO_int_fetch_and_add); -# endif -# if defined(AO_HAVE_int_fetch_and_add1_release_write) - TA_assert(AO_int_fetch_and_add1_release_write(&zz) == 13); -# else - MISSING(AO_int_fetch_and_add1); - ++zz; -# endif -# if defined(AO_HAVE_int_fetch_and_sub1_release_write) - TA_assert(AO_int_fetch_and_sub1_release_write(&zz) == 14); -# else - MISSING(AO_int_fetch_and_sub1); - --zz; -# endif -# if defined(AO_HAVE_compare_and_swap_release_write) - TA_assert(!AO_compare_and_swap_release_write(&x, 14, 42)); - TA_assert(x == 13); - TA_assert(AO_compare_and_swap_release_write(&x, 13, 42)); - TA_assert(x == 42); -# else - MISSING(AO_compare_and_swap); -# endif -# if defined(AO_HAVE_or_release_write) - AO_or_release_write(&x, 66); - TA_assert(x == 106); -# else - MISSING(AO_or); - x |= 34; -# endif -# if defined(AO_HAVE_compare_double_and_swap_double_release_write) - TA_assert(!AO_compare_double_and_swap_double_release_write(&w, 17, 42, 12, 13)); - TA_assert(w.AO_val1 == 0 && w.AO_val2 == 0); - TA_assert(AO_compare_double_and_swap_double_release_write(&w, 0, 0, 12, 13)); - TA_assert(w.AO_val1 == 12 && w.AO_val2 == 13); - TA_assert(AO_compare_double_and_swap_double_release_write(&w, 12, 13, 17, 42)); - TA_assert(w.AO_val1 == 17 && w.AO_val2 == 42); - w.AO_val1 = 0; w.AO_val2 = 0; -# else - MISSING(AO_compare_double_and_swap_double); -# endif -# if defined(AO_HAVE_compare_and_swap_double_release_write) - TA_assert(!AO_compare_and_swap_double_release_write(&w, 17, 12, 13)); - TA_assert(w.AO_val1 == 0 && w.AO_val2 == 0); - TA_assert(AO_compare_and_swap_double_release_write(&w, 0, 12, 13)); - TA_assert(w.AO_val1 == 12 && w.AO_val2 == 13); - TA_assert(AO_compare_and_swap_double_release_write(&w, 12, 17, 42)); - TA_assert(w.AO_val1 == 17 && w.AO_val2 == 42); -# else - MISSING(AO_compare_and_swap_double); -# endif -} - - - -/* - * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved. - * - * This file is covered by the GNU general public license, version 2. - * see doc/COPYING for details. - */ - -/* Some basic sanity tests. These do not test the barrier semantics. */ - -#undef TA_assert -#define TA_assert(e) \ - if (!(e)) { fprintf(stderr, "Assertion failed %s:%d (barrier: _acquire_read)\n", \ - __FILE__, __LINE__), exit(1); } - -#undef MISSING -#define MISSING(name) \ - fprintf(stderr, "Missing: %s\n", #name "_acquire_read") - -void test_atomic_acquire_read(void) -{ - AO_t x; - unsigned char b; - unsigned short s; - unsigned int zz; -# if defined(AO_HAVE_test_and_set_acquire_read) - AO_TS_t z = AO_TS_INITIALIZER; -# endif -# if defined(AO_HAVE_double_t) - AO_double_t w; - w.AO_val1 = 0; - w.AO_val2 = 0; -# endif - -# if defined(AO_HAVE_nop_acquire_read) - AO_nop_acquire_read(); -# else - MISSING(AO_nop); -# endif -# if defined(AO_HAVE_store_acquire_read) - AO_store_acquire_read(&x, 13); - TA_assert (x == 13); -# else - MISSING(AO_store); - x = 13; -# endif -# if defined(AO_HAVE_load_acquire_read) - TA_assert(AO_load_acquire_read(&x) == 13); -# else - MISSING(AO_load); -# endif -# if defined(AO_HAVE_test_and_set_acquire_read) - assert(AO_test_and_set_acquire_read(&z) == AO_TS_CLEAR); - assert(AO_test_and_set_acquire_read(&z) == AO_TS_SET); - assert(AO_test_and_set_acquire_read(&z) == AO_TS_SET); - AO_CLEAR(&z); -# else - MISSING(AO_test_and_set); -# endif -# if defined(AO_HAVE_fetch_and_add_acquire_read) - TA_assert(AO_fetch_and_add_acquire_read(&x, 42) == 13); - TA_assert(AO_fetch_and_add_acquire_read(&x, -42) == 55); -# else - MISSING(AO_fetch_and_add); -# endif -# if defined(AO_HAVE_fetch_and_add1_acquire_read) - TA_assert(AO_fetch_and_add1_acquire_read(&x) == 13); -# else - MISSING(AO_fetch_and_add1); - ++x; -# endif -# if defined(AO_HAVE_fetch_and_sub1_acquire_read) - TA_assert(AO_fetch_and_sub1_acquire_read(&x) == 14); -# else - MISSING(AO_fetch_and_sub1); - --x; -# endif -# if defined(AO_HAVE_short_store_acquire_read) - AO_short_store_acquire_read(&s, 13); -# else - MISSING(AO_short_store); - s = 13; -# endif -# if defined(AO_HAVE_short_load_acquire_read) - TA_assert(AO_short_load(&s) == 13); -# else - MISSING(AO_short_load); -# endif -# if defined(AO_HAVE_short_fetch_and_add_acquire_read) - TA_assert(AO_short_fetch_and_add_acquire_read(&s, 42) == 13); - TA_assert(AO_short_fetch_and_add_acquire_read(&s, -42) == 55); -# else - MISSING(AO_short_fetch_and_add); -# endif -# if defined(AO_HAVE_short_fetch_and_add1_acquire_read) - TA_assert(AO_short_fetch_and_add1_acquire_read(&s) == 13); -# else - MISSING(AO_short_fetch_and_add1); - ++s; -# endif -# if defined(AO_HAVE_short_fetch_and_sub1_acquire_read) - TA_assert(AO_short_fetch_and_sub1_acquire_read(&s) == 14); -# else - MISSING(AO_short_fetch_and_sub1); - --s; -# endif -# if defined(AO_HAVE_char_store_acquire_read) - AO_char_store_acquire_read(&b, 13); -# else - MISSING(AO_char_store); - b = 13; -# endif -# if defined(AO_HAVE_char_load_acquire_read) - TA_assert(AO_char_load(&b) == 13); -# else - MISSING(AO_char_load); -# endif -# if defined(AO_HAVE_char_fetch_and_add_acquire_read) - TA_assert(AO_char_fetch_and_add_acquire_read(&b, 42) == 13); - TA_assert(AO_char_fetch_and_add_acquire_read(&b, -42) == 55); -# else - MISSING(AO_char_fetch_and_add); -# endif -# if defined(AO_HAVE_char_fetch_and_add1_acquire_read) - TA_assert(AO_char_fetch_and_add1_acquire_read(&b) == 13); -# else - MISSING(AO_char_fetch_and_add1); - ++b; -# endif -# if defined(AO_HAVE_char_fetch_and_sub1_acquire_read) - TA_assert(AO_char_fetch_and_sub1_acquire_read(&b) == 14); -# else - MISSING(AO_char_fetch_and_sub1); - --b; -# endif -# if defined(AO_HAVE_int_store_acquire_read) - AO_int_store_acquire_read(&zz, 13); -# else - MISSING(AO_int_store); - zz = 13; -# endif -# if defined(AO_HAVE_int_load_acquire_read) - TA_assert(AO_int_load(&zz) == 13); -# else - MISSING(AO_int_load); -# endif -# if defined(AO_HAVE_int_fetch_and_add_acquire_read) - TA_assert(AO_int_fetch_and_add_acquire_read(&zz, 42) == 13); - TA_assert(AO_int_fetch_and_add_acquire_read(&zz, -42) == 55); -# else - MISSING(AO_int_fetch_and_add); -# endif -# if defined(AO_HAVE_int_fetch_and_add1_acquire_read) - TA_assert(AO_int_fetch_and_add1_acquire_read(&zz) == 13); -# else - MISSING(AO_int_fetch_and_add1); - ++zz; -# endif -# if defined(AO_HAVE_int_fetch_and_sub1_acquire_read) - TA_assert(AO_int_fetch_and_sub1_acquire_read(&zz) == 14); -# else - MISSING(AO_int_fetch_and_sub1); - --zz; -# endif -# if defined(AO_HAVE_compare_and_swap_acquire_read) - TA_assert(!AO_compare_and_swap_acquire_read(&x, 14, 42)); - TA_assert(x == 13); - TA_assert(AO_compare_and_swap_acquire_read(&x, 13, 42)); - TA_assert(x == 42); -# else - MISSING(AO_compare_and_swap); -# endif -# if defined(AO_HAVE_or_acquire_read) - AO_or_acquire_read(&x, 66); - TA_assert(x == 106); -# else - MISSING(AO_or); - x |= 34; -# endif -# if defined(AO_HAVE_compare_double_and_swap_double_acquire_read) - TA_assert(!AO_compare_double_and_swap_double_acquire_read(&w, 17, 42, 12, 13)); - TA_assert(w.AO_val1 == 0 && w.AO_val2 == 0); - TA_assert(AO_compare_double_and_swap_double_acquire_read(&w, 0, 0, 12, 13)); - TA_assert(w.AO_val1 == 12 && w.AO_val2 == 13); - TA_assert(AO_compare_double_and_swap_double_acquire_read(&w, 12, 13, 17, 42)); - TA_assert(w.AO_val1 == 17 && w.AO_val2 == 42); - w.AO_val1 = 0; w.AO_val2 = 0; -# else - MISSING(AO_compare_double_and_swap_double); -# endif -# if defined(AO_HAVE_compare_and_swap_double_acquire_read) - TA_assert(!AO_compare_and_swap_double_acquire_read(&w, 17, 12, 13)); - TA_assert(w.AO_val1 == 0 && w.AO_val2 == 0); - TA_assert(AO_compare_and_swap_double_acquire_read(&w, 0, 12, 13)); - TA_assert(w.AO_val1 == 12 && w.AO_val2 == 13); - TA_assert(AO_compare_and_swap_double_acquire_read(&w, 12, 17, 42)); - TA_assert(w.AO_val1 == 17 && w.AO_val2 == 42); -# else - MISSING(AO_compare_and_swap_double); -# endif -} - - - diff --git a/src/racket/gc/libatomic_ops/tests/test_malloc.c b/src/racket/gc/libatomic_ops/tests/test_malloc.c deleted file mode 100644 index 4026e624b2..0000000000 --- a/src/racket/gc/libatomic_ops/tests/test_malloc.c +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright (c) 2005 Hewlett-Packard Development Company, L.P. - * Original Author: Hans Boehm - * - * This file may be redistributed and/or modified 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. - * - * It 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 in the - * file doc/COPYING for more details. - */ - -#if defined(HAVE_CONFIG_H) -# include "config.h" -#endif - -#include "run_parallel.inc" - -#include -#include -#include "atomic_ops_malloc.h" -#define MAX_NTHREADS 100 -#define N_REVERSALS 1000 /* must be even */ -#define LENGTH 1000 - -#ifdef USE_STANDARD_MALLOC -# define AO_malloc(n) malloc(n) -# define AO_free(p) free(p) -# define AO_malloc_enable_mmap() -#endif - -typedef struct list_node { - struct list_node *next; - int data; -} ln; - -ln *cons(int d, ln *tail) -{ - static size_t extra = 0; - size_t my_extra = extra; - ln *result; - int * extras; - int i; - - if (my_extra > 100) - extra = my_extra = 0; - else - ++extra; - result = AO_malloc(sizeof(ln) + sizeof(int)*my_extra); - if (result == 0) - { - fprintf(stderr, "Out of memory\n"); - /* Normal for more than about 10 threads without mmap? */ - abort(); - } - - result -> data = d; - result -> next = tail; - extras = (int *)(result+1); - for (i = 0; i < my_extra; ++i) extras[i] = 42; - return result; -} - -void print_list(ln *l) -{ - ln *p; - - for (p = l; p != 0; p = p -> next) - { - fprintf(stderr, "%d, ", p -> data); - } - fprintf(stderr, "\n"); -} - -/* Check that l contains numbers from m to n inclusive in ascending order */ -void check_list(ln *l, int m, int n) -{ - ln *p; - int i; - - for (p = l, i = m; p != 0; p = p -> next, ++i) - { - if (i != p -> data) - { - fprintf(stderr, "Found %d, expected %d\n", p -> data, i); - abort(); - } - } -} - -/* Create a list of integers from m to n */ -ln * -make_list(int m, int n) -{ - if (m > n) return 0; - return cons(m, make_list(m+1, n)); -} - -/* Reverse list x, and concatenate it to y, deallocating no longer needed */ -/* nodes in x. */ -ln * -reverse(ln *x, ln *y) -{ - ln * result; - - if (x == 0) return y; - result = reverse(x -> next, cons(x -> data, y)); - AO_free(x); - return result; -} - -int dummy_test(void) { return 1; } - -#define LARGE 200000 - -void * run_one_test(void * arg) { - ln * x = make_list(1, LENGTH); - int i; - char *p = AO_malloc(LARGE); - char *q; - - if (0 == p) { - fprintf(stderr, "AO_malloc(%d) failed: This is normal without mmap\n", - LARGE); - AO_free(p); - } else { - p[0] = p[LARGE/2] = p[LARGE-1] = 'a'; - q = AO_malloc(LARGE); - q[0] = q[LARGE/2] = q[LARGE-1] = 'b'; - if (p[0] != 'a' || p[LARGE/2] != 'a' || p[LARGE-1] != 'a') { - fprintf(stderr, "First large allocation smashed\n"); - abort(); - } - AO_free(p); - if (q[0] != 'b' || q[LARGE/2] != 'b' || q[LARGE-1] != 'b') { - fprintf(stderr, "Second large allocation smashed\n"); - abort(); - } - AO_free(q); - } -# if 0 /* enable for debugging */ - x = reverse(x, 0); - print_list(x); - x = reverse(x, 0); - print_list(x); -# endif - for (i = 0; i < N_REVERSALS; ++i) { - x = reverse(x, 0); - } - check_list(x, 1, LENGTH); - return 0; -} - -int main(int argc, char **argv) { - int nthreads; - int exper_n; - - if (1 == argc) { -# if !defined(HAVE_MMAP) - nthreads = 3; -# else - nthreads = 10; -# endif - } else if (2 == argc) { - nthreads = atoi(argv[1]); - if (nthreads < 1 || nthreads > MAX_NTHREADS) { - fprintf(stderr, "Invalid # of threads argument\n"); - exit(1); - } - } else { - fprintf(stderr, "Usage: %s [# of threads]\n", argv[0]); - exit(1); - } - printf("Performing %d reversals of %d element lists in %d threads\n", - N_REVERSALS, LENGTH, nthreads); - AO_malloc_enable_mmap(); - run_parallel(nthreads, run_one_test, dummy_test, "AO_malloc/AO_free"); - return 0; -} - diff --git a/src/racket/gc/libatomic_ops/tests/test_stack.c b/src/racket/gc/libatomic_ops/tests/test_stack.c deleted file mode 100644 index 8a8ba50d03..0000000000 --- a/src/racket/gc/libatomic_ops/tests/test_stack.c +++ /dev/null @@ -1,232 +0,0 @@ -/* - * Copyright (c) 2005 Hewlett-Packard Development Company, L.P. - * Original Author: Hans Boehm - * - * This file may be redistributed and/or modified 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. - * - * It 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 in the - * file doc/COPYING for more details. - */ - -#if defined(HAVE_CONFIG_H) -# include "config.h" -#endif - -#include -#include -#include -#include "atomic_ops.h" -#include "atomic_ops_stack.h" -#define MAX_NTHREADS 100 - -#ifndef NO_TIMES -#include -#include -/* Need 64-bit long long support */ -long long -get_msecs(void) -{ - struct timeval tv; - - gettimeofday(&tv, 0); - return (long long)tv.tv_sec * 1000 + tv.tv_usec/1000; -} -#else -# define get_msecs() 0 -#endif - -typedef struct le { - AO_t next; - int data; -} list_element; - -AO_stack_t the_list = AO_STACK_INITIALIZER; - -void add_elements(int n) -{ - list_element * le; - if (n == 0) return; - add_elements(n-1); - le = malloc(sizeof(list_element)); - le -> data = n; - AO_stack_push(&the_list, (AO_t *)le); -} - -void print_list() -{ - list_element *p; - - for (p = (list_element *)AO_REAL_HEAD_PTR(the_list); - p != 0; - p = (list_element *)AO_REAL_NEXT_PTR(p -> next)) - printf("%d\n", p -> data); -} - -static char marks[MAX_NTHREADS * MAX_NTHREADS]; - -void check_list(int n) -{ - list_element *p; - int i; - - for (i = 1; i <= n; ++i) marks[i] = 0; - for (p = (list_element *)AO_REAL_HEAD_PTR(the_list); - p != 0; - p = (list_element *)AO_REAL_NEXT_PTR(p -> next)) - { - if (p -> data > n || p -> data <= 0) - fprintf(stderr, "Found erroneous list element %d\n", p -> data); - if (marks[p -> data] != 0) - fprintf(stderr, "Found duplicate list element %d\n", p -> data); - marks[p -> data] = 1; - } - for (i = 1; i <= n; ++i) - if (marks[i] != 1) - fprintf(stderr, "Missing list element %d\n", i); -} - -volatile AO_t ops_performed = 0; - -#define LIMIT 1000000 - /* Total number of push/pop ops in all threads per test. */ - -#ifdef AO_HAVE_fetch_and_add -# define fetch_and_add(addr, val) AO_fetch_and_add(addr, val) -#else - /* Fake it. This is really quite unacceptable for timing */ - /* purposes. But as a correctness test, it should be OK. */ - AO_INLINE AO_t fetch_and_add(volatile AO_t * addr, AO_t val) - { - AO_t result = AO_load(addr); - AO_store(addr, result + val); - return result; - } -#endif - -void * run_one_test(void * arg) -{ - list_element * t[MAX_NTHREADS + 1]; - list_element * aux; - long index = (long)arg; - int i; - int j = 0; - -# ifdef VERBOSE - printf("starting thread %d\n", index); -# endif - while (fetch_and_add(&ops_performed, index + 1) + index + 1 < LIMIT) - { - for (i = 0; i < index + 1; ++i) - { - t[i] = (list_element *)AO_stack_pop(&the_list); - if (0 == t[i]) - { - fprintf(stderr, "FAILED\n"); - abort(); - } - } - for (i = 0; i < index + 1; ++i) - { - AO_stack_push(&the_list, (AO_t *)t[i]); - } - j += (index + 1); - } -# ifdef VERBOSE - printf("finished thread %d: %d total ops\n", index, j); -# endif - return 0; -} - -#define N_EXPERIMENTS 1 - -unsigned long times[MAX_NTHREADS + 1][N_EXPERIMENTS]; - -int main(int argc, char **argv) -{ - int nthreads; - int max_nthreads; - int exper_n; - - if (1 == argc) - max_nthreads = 4; - else if (2 == argc) - { - max_nthreads = atoi(argv[1]); - if (max_nthreads < 1 || max_nthreads > MAX_NTHREADS) - { - fprintf(stderr, "Invalid max # of threads argument\n"); - exit(1); - } - } - else - { - fprintf(stderr, "Usage: %s [max # of threads]\n", argv[0]); - exit(1); - } - for (exper_n = 0; exper_n < N_EXPERIMENTS; ++ exper_n) - for (nthreads = 1; nthreads <= max_nthreads; ++nthreads) - { - int i; - pthread_t thread[MAX_NTHREADS]; - int list_length = nthreads*(nthreads+1)/2; - long long start_time; - - add_elements(list_length); - # ifdef VERBOSE - printf("Initial list (nthreads = %d):\n", nthreads); - print_list(); - # endif - ops_performed = 0; - start_time = get_msecs(); - for (i = 1; i < nthreads; ++i) { - int code; - - if ((code = pthread_create(thread+i, 0, run_one_test, - (void *)(long)i)) != 0) { - fprintf(stderr, "Thread creation failed %u\n", code); - exit(1); - } - } - /* We use the main thread to run one test. This allows gprof */ - /* profiling to work, for example. */ - run_one_test(0); - for (i = 1; i < nthreads; ++i) { - int code; - if ((code = pthread_join(thread[i], 0)) != 0) { - fprintf(stderr, "Thread join failed %u\n", code); - } - } - times[nthreads][exper_n] = (unsigned long)(get_msecs() - start_time); - # ifdef VERBOSE - printf("%d %lu\n", nthreads, - (unsigned long)(get_msecs() - start_time)); - printf("final list (should be reordered initial list):\n"); - print_list(); - # endif - check_list(list_length); - while ((list_element *)AO_stack_pop(&the_list)); - } -# ifndef NO_TIMES - for (nthreads = 1; nthreads <= max_nthreads; ++nthreads) - { - unsigned long sum = 0; - - printf("About %d pushes + %d pops in %d threads:", - LIMIT, LIMIT, nthreads); - for (exper_n = 0; exper_n < N_EXPERIMENTS; ++exper_n) - { -# if defined(VERBOSE) - printf("[%lu] ", times[nthreads][exper_n]); -# endif - sum += times[nthreads][exper_n]; - } - printf(" %lu msecs\n", (sum + N_EXPERIMENTS/2)/N_EXPERIMENTS); - } -# endif /* NO_TIMES */ - return 0; -} - diff --git a/src/racket/gc2/gc2.h b/src/racket/gc2/gc2.h index 0d3448ecf3..ae46bc3e58 100644 --- a/src/racket/gc2/gc2.h +++ b/src/racket/gc2/gc2.h @@ -137,6 +137,10 @@ GC2_EXTERN intptr_t GC_get_memory_use(void *c); Returns the number of currently-allocated bytes (speficilly for custodian c, as much as the GC's accounting makes possible). */ +GC2_EXTERN int GC_accouting_enabled(); +/* + Reports whether memory accounting is enabled. */ + #define MZACCT_REQUIRE 0 #define MZACCT_LIMIT 1 GC2_EXTERN int GC_set_account_hook(int type, void *c1, uintptr_t b, void *c2); diff --git a/src/racket/gc2/newgc.c b/src/racket/gc2/newgc.c index 4090bb9ebe..26b145160c 100644 --- a/src/racket/gc2/newgc.c +++ b/src/racket/gc2/newgc.c @@ -214,8 +214,7 @@ MAYBE_UNUSED static void GCVERBOSEprintf(NewGC *gc, const char *fmt, ...) { /*****************************************************************************/ /* This turns on automatic memory accounting */ -/* #define NEWGC_BTC_ACCOUNT */ -/* #undef NEWGC_BTC_ACCOUNT */ +#define NEWGC_BTC_ACCOUNT /* This turns on memory tracing */ /* #define NEWGC_MEMORY_TRACE */ @@ -235,6 +234,12 @@ MAYBE_UNUSED static void GCVERBOSEprintf(NewGC *gc, const char *fmt, ...) { #define GEN0_MAX_SIZE (32 * 1024 * 1024) #define GEN0_PAGE_SIZE (1 * 1024 * 1024) +/* Conservatively force a major GC after a certain number + of minor GCs. It should be ok to set this value + arbitraily high. An earlier value of 100, meanwhile, + seems to have been excessively conservative. */ +#define FORCE_MAJOR_AFTER_COUNT 1000 + #define GEN0_ALLOC_SIZE(page) ((page)->previous_size) /* This is the log base 2 of the size of one word, given in bytes */ @@ -2174,6 +2179,15 @@ void GC_register_root_custodian(void *c) #endif } +int GC_accouting_enabled() +{ +#ifdef NEWGC_BTC_ACCOUNT + return 1; +#else + return 0; +#endif +} + int GC_set_account_hook(int type, void *c1, uintptr_t b, void *c2) { #ifdef NEWGC_BTC_ACCOUNT @@ -4182,11 +4196,11 @@ static void garbage_collect(NewGC *gc, int force_full, int switching_master, Log /* determine if this should be a full collection or not */ gc->gc_full = force_full || !gc->generations_available - || (gc->since_last_full > 100) || (gc->memory_in_use > (2 * gc->last_full_mem_use)); + || (gc->since_last_full > FORCE_MAJOR_AFTER_COUNT) || (gc->memory_in_use > (2 * gc->last_full_mem_use)); #if 0 printf("Collection %li (full = %i): %i / %i / %i / %i %ld\n", number_of_gc_runs, gc->gc_full, force_full, !generations_available, - (gc->since_last_full > 100), (gc->memory_in_use > (2 * gc->last_full_mem_use)), + (gc->since_last_full > FORCE_MAJOR_AFTER_COUNT), (gc->memory_in_use > (2 * gc->last_full_mem_use)), gc->last_full_mem_use); #endif diff --git a/src/racket/include/schthread.h b/src/racket/include/schthread.h index c0f5614e22..e27d86a24e 100644 --- a/src/racket/include/schthread.h +++ b/src/racket/include/schthread.h @@ -302,6 +302,7 @@ typedef struct Thread_Local_Variables { struct mzrt_mutex *jit_lock_; struct free_list_entry *free_list_; int free_list_bucket_count_; + void *code_allocation_page_list_; struct Scheme_Bucket_Table *prefab_table_; struct Scheme_Hash_Table *place_local_symbol_table_; struct Scheme_Hash_Table *place_local_keyword_table_; @@ -622,6 +623,7 @@ XFORM_GC_VARIABLE_STACK_THROUGH_THREAD_LOCAL; #define jit_lock XOA (scheme_get_thread_local_variables()->jit_lock_) #define free_list XOA (scheme_get_thread_local_variables()->free_list_) #define free_list_bucket_count XOA (scheme_get_thread_local_variables()->free_list_bucket_count_) +#define code_allocation_page_list XOA (scheme_get_thread_local_variables()->code_allocation_page_list_) #define prefab_table XOA (scheme_get_thread_local_variables()->prefab_table_) #define place_local_symbol_table XOA (scheme_get_thread_local_variables()->place_local_symbol_table_) #define place_local_keyword_table XOA (scheme_get_thread_local_variables()->place_local_keyword_table_) diff --git a/src/racket/make-configure b/src/racket/make-configure index 528597df72..eed6ffd568 100755 --- a/src/racket/make-configure +++ b/src/racket/make-configure @@ -17,6 +17,9 @@ exit 0 ;; options that do not apply to PLT software. We want to ;; get rid of them, so that `configure --help' produces ;; valid information. +;; In addition, we want none of the feature-selection flags +;; (such as --enable-mac64) to be passed to sub-configures, +;; so we adjust the script to strip them away. (define skip-rxs (map (lambda (s) @@ -27,17 +30,40 @@ exit 0 sharedstatedir localstatedir oldincludedir - infodir))) + infodir + htmldir + dvidir + pdfdir + psdir + localedir))) -(let loop () +(let loop ([in-subconfig? #f]) (let ([l (read-line)]) (unless (eof-object? l) - (if (ormap (lambda (rx) - (regexp-match rx l)) - skip-rxs) - ;; Skip - (loop) - ;; Copy - (begin - (printf "~a\n" l) - (loop)))))) + (cond + [(ormap (lambda (rx) + (regexp-match rx l)) + skip-rxs) + ;; Skip + (loop in-subconfig?)] + [(regexp-match #rx"CONFIG_SUBDIRS section[.]" l) + ;; Copy; now in code to call sub-configures + (displayln l) + (loop #t)] + [(and in-subconfig? + (regexp-match #rx"--prefix=[*].*[)]" l)) + ;; Found where --prefix is stripped from subconfigure args; + ;; add a case to remove all --enable and --disable flags + (displayln l) + (let ([l2 (read-line)] + [indent (car (regexp-match #rx" *" l))]) + (displayln l2) + (printf "~a# Strip away all feature choices\n" indent) + (printf "~a-enable* | --enable* | -disable* | --disable*)\n" + indent) + (displayln l2)) + (loop #f)] + [else + ;; Copy + (displayln l) + (loop in-subconfig?)])))) diff --git a/src/racket/mzconfig.h.in b/src/racket/mzconfig.h.in index b4f8d3a250..4ccbb6877c 100644 --- a/src/racket/mzconfig.h.in +++ b/src/racket/mzconfig.h.in @@ -56,18 +56,17 @@ typedef unsigned long uintptr_t; /* Whether pthread_rwlock is available. */ #undef HAVE_PTHREAD_RWLOCK -/* Enable futures and/or places (but not with sgc): */ -#if !defined(USE_SENORA_GC) || defined(NEWGC_BTC_ACCOUNT) +/* Enable futures: */ #undef MZ_USE_FUTURES + +/* Enable places --- 3m only: */ +#ifdef MZ_PRECISE_GC #undef MZ_USE_PLACES #endif /* Configure use of pthreads for the user-thread timer. */ #undef USE_PTHREAD_INSTEAD_OF_ITIMER -/* Enable GC2 Places Testing. */ -#undef GC2_PLACES_TESTING - /* Enable single-precision floats [as default]: */ #undef USE_SINGLE_FLOATS #undef USE_SINGLE_FLOATS_AS_DEFAULT diff --git a/src/racket/sgc/sgc.c b/src/racket/sgc/sgc.c index dbf1d794ce..73eefdfc9f 100644 --- a/src/racket/sgc/sgc.c +++ b/src/racket/sgc/sgc.c @@ -1884,7 +1884,7 @@ static void dump_sector_map(char *prefix) if ((was_kind != kind) || (was_sec != pagetable[j].start)) same_sec = diff_sec; - FPRINTF(STDERR, same_sec); + FPRINTF(STDERR, "%s", same_sec); was_kind = kind; was_sec = pagetable[j].start; diff --git a/src/racket/src/Makefile.in b/src/racket/src/Makefile.in index 445d5d5b4a..c90dc37421 100644 --- a/src/racket/src/Makefile.in +++ b/src/racket/src/Makefile.in @@ -6,7 +6,6 @@ srcdir = @srcdir@ builddir = @builddir@ CC = @CC@ -PERL = @PERL@ MZSRC = $(srcdir) @@ -116,7 +115,6 @@ wrong: echo Make from the directory above this one all: - $(MAKE) mzheaders $(MAKE) mzobjects mzheaders: $(srcdir)/schemex.h $(srcdir)/schemexm.h $(srcdir)/schemex.inc $(srcdir)/schexn.h schsys.h \ @@ -125,32 +123,29 @@ mzheaders: $(srcdir)/schemex.h $(srcdir)/schemexm.h $(srcdir)/schemex.inc $(srcd mzobjects: $(OBJS) -$(srcdir)/startup.inc : $(srcdir)/startup.rktl $(srcdir)/sstoinc - if [ "$(PERL)" = '' ] ; then touch $(srcdir)/startup.inc ; else $(PERL) $(srcdir)/sstoinc < $(srcdir)/startup.rktl > $(srcdir)/startup.inc ; fi +$(srcdir)/schemex.h : $(srcdir)/schemef.h $(srcdir)/makex.rkt + racket $(srcdir)/makex.rkt < $(srcdir)/schemef.h > $(srcdir)/schemex.h -$(srcdir)/schemex.h : $(srcdir)/schemef.h $(srcdir)/makex - if [ "$(PERL)" = '' ] ; then touch $(srcdir)/schemex.h ; else $(PERL) $(srcdir)/makex < $(srcdir)/schemef.h > $(srcdir)/schemex.h ; fi +$(srcdir)/schemexm.h : $(srcdir)/schemef.h $(srcdir)/makex.rkt + racket $(srcdir)/makex.rkt --list < $(srcdir)/schemef.h > $(srcdir)/schemexm.h -$(srcdir)/schemexm.h : $(srcdir)/schemef.h $(srcdir)/makex - if [ "$(PERL)" = '' ] ; then touch $(srcdir)/schemexm.h ; else $(PERL) -s -- $(srcdir)/makex -list < $(srcdir)/schemef.h > $(srcdir)/schemexm.h ; fi +$(srcdir)/schemex.inc : $(srcdir)/schemef.h $(srcdir)/makex.rkt + racket $(srcdir)/makex.rkt --assign < $(srcdir)/schemef.h > $(srcdir)/schemex.inc -$(srcdir)/schemex.inc : $(srcdir)/schemef.h $(srcdir)/makex - if [ "$(PERL)" = '' ] ; then touch $(srcdir)/schemex.inc ; else $(PERL) -s -- $(srcdir)/makex -assign < $(srcdir)/schemef.h > $(srcdir)/schemex.inc ; fi +$(srcdir)/../include/racket.exp : $(srcdir)/schemef.h $(srcdir)/makex.rkt + racket $(srcdir)/makex.rkt --exports < $(srcdir)/schemef.h > $(srcdir)/../include/racket.exp -$(srcdir)/../include/racket.exp : $(srcdir)/schemef.h $(srcdir)/makex - if [ "$(PERL)" = '' ] ; then touch $(srcdir)/../include/racket.exp ; else $(PERL) -s -- $(srcdir)/makex -exports < $(srcdir)/schemef.h > $(srcdir)/../include/racket.exp ; fi +$(srcdir)/../include/racket3m.exp : $(srcdir)/schemef.h $(srcdir)/makex.rkt + racket $(srcdir)/makex.rkt --exports --precisegc < $(srcdir)/schemef.h > $(srcdir)/../include/racket3m.exp -$(srcdir)/../include/racket3m.exp : $(srcdir)/schemef.h $(srcdir)/makex - if [ "$(PERL)" = '' ] ; then touch $(srcdir)/../include/racket3m.exp ; else $(PERL) -s -- $(srcdir)/makex -exports -precisegc < $(srcdir)/schemef.h > $(srcdir)/../include/racket3m.exp ; fi +$(srcdir)/../include/mzwin.def : $(srcdir)/schemef.h $(srcdir)/makex.rkt + racket $(srcdir)/makex.rkt --winex < $(srcdir)/schemef.h > $(srcdir)/../include/mzwin.def -$(srcdir)/../include/mzwin.def : $(srcdir)/schemef.h $(srcdir)/makex - if [ "$(PERL)" = '' ] ; then touch $(srcdir)/../include/mzwin.def ; else $(PERL) -s -- $(srcdir)/makex -winex < $(srcdir)/schemef.h > $(srcdir)/../include/mzwin.def ; fi +$(srcdir)/../include/mzwin3m.def : $(srcdir)/schemef.h $(srcdir)/makex.rkt + racket $(srcdir)/makex.rkt --winex --gwinex --precisegc < $(srcdir)/schemef.h > $(srcdir)/../include/mzwin3m.def -$(srcdir)/../include/mzwin3m.def : $(srcdir)/schemef.h $(srcdir)/makex - if [ "$(PERL)" = '' ] ; then touch $(srcdir)/../include/mzwin3m.def ; else $(PERL) -s -- $(srcdir)/makex -winex -gwinex -precisegc < $(srcdir)/schemef.h > $(srcdir)/../include/mzwin3m.def ; fi - -$(srcdir)/../include/gmzwin.def : $(srcdir)/schemef.h $(srcdir)/makex - if [ "$(PERL)" = '' ] ; then touch $(srcdir)/../include/gmzwin.def ; else $(PERL) -s -- $(srcdir)/makex -gwinex < $(srcdir)/schemef.h > $(srcdir)/../include/gmzwin.def ; fi +$(srcdir)/../include/gmzwin.def : $(srcdir)/schemef.h $(srcdir)/makex.rkt + racket $(srcdir)/makex.rkt --gwinex < $(srcdir)/schemef.h > $(srcdir)/../include/gmzwin.def schsys.h : $(srcdir)/sysname echo -n "#define SCHEME_PLATFORM_LIBRARY_SUBPATH " > schsys.h diff --git a/src/racket/src/env.c b/src/racket/src/env.c index 0403d0c36b..3e02c68353 100644 --- a/src/racket/src/env.c +++ b/src/racket/src/env.c @@ -593,6 +593,7 @@ void scheme_place_instance_destroy() { #if defined(MZ_PRECISE_GC) && defined(MZ_USE_PLACES) GC_destruct_child_gc(); #endif + scheme_free_all_code(); } static void make_kernel_env(void) diff --git a/src/racket/src/eval.c b/src/racket/src/eval.c index 8ca6d3e318..f0a367160a 100644 --- a/src/racket/src/eval.c +++ b/src/racket/src/eval.c @@ -12491,7 +12491,7 @@ void scheme_validate_expr(Mz_CPort *port, Scheme_Object *expr, } } - if (procs && !proc_with_refs_ok) { + if (procs && !proc_with_refs_ok && !result_ignored) { if (scheme_hash_tree_get(procs, scheme_make_integer(p))) scheme_ill_formed_code(port); } diff --git a/src/racket/src/fun.c b/src/racket/src/fun.c index ece98933be..087d754626 100644 --- a/src/racket/src/fun.c +++ b/src/racket/src/fun.c @@ -168,7 +168,6 @@ static Scheme_Object *seconds_to_date(int argc, Scheme_Object **argv); static Scheme_Object *object_name(int argc, Scheme_Object *argv[]); static Scheme_Object *procedure_arity(int argc, Scheme_Object *argv[]); static Scheme_Object *procedure_arity_p(int argc, Scheme_Object *argv[]); -static Scheme_Object *procedure_arity_includes(int argc, Scheme_Object *argv[]); static Scheme_Object *procedure_reduce_arity(int argc, Scheme_Object *argv[]); static Scheme_Object *procedure_rename(int argc, Scheme_Object *argv[]); static Scheme_Object *procedure_to_method(int argc, Scheme_Object *argv[]); @@ -502,12 +501,12 @@ scheme_init_fun (Scheme_Env *env) 1, 1, 1), env); - scheme_procedure_arity_includes_proc = scheme_make_folding_prim(procedure_arity_includes, - "procedure-arity-includes?", - 2, 2, 1); - scheme_add_global_constant("procedure-arity-includes?", - scheme_procedure_arity_includes_proc, - env); + o = scheme_make_folding_prim(scheme_procedure_arity_includes, + "procedure-arity-includes?", + 2, 2, 1); + SCHEME_PRIM_PROC_FLAGS(o) |= SCHEME_PRIM_IS_BINARY_INLINED; + scheme_procedure_arity_includes_proc = o; + scheme_add_global_constant("procedure-arity-includes?", o, env); scheme_add_global_constant("procedure-reduce-arity", scheme_make_prim_w_arity(procedure_reduce_arity, @@ -3758,7 +3757,7 @@ static Scheme_Object *procedure_arity_p(int argc, Scheme_Object *argv[]) return scheme_false; } -static Scheme_Object *procedure_arity_includes(int argc, Scheme_Object *argv[]) +Scheme_Object *scheme_procedure_arity_includes(int argc, Scheme_Object *argv[]) { intptr_t n; diff --git a/src/racket/src/jit.h b/src/racket/src/jit.h index 0ea56010f5..3360f3019d 100644 --- a/src/racket/src/jit.h +++ b/src/racket/src/jit.h @@ -245,6 +245,7 @@ struct scheme_jit_common_record { void *wcm_code, *wcm_nontail_code; void *apply_to_list_tail_code, *apply_to_list_code, *apply_to_list_multi_ok_code; void *eqv_code, *eqv_branch_code; + void *proc_arity_includes_code; #ifdef CAN_INLINE_ALLOC void *make_list_code, *make_list_star_code; @@ -1005,6 +1006,22 @@ static void emit_indentation(mz_jit_state *jitter) mz_patch_ucbranch(refcont); \ __END_TINY_JUMPS__(1); \ } +# define mz_finish_prim_lwe(prim, refr) \ + { \ + GC_CAN_IGNORE jit_insn *refdirect, *refdone; \ + int argstate; \ + __START_TINY_JUMPS__(1); \ + jit_save_argstate(argstate); \ + mz_tl_ldi_i(JIT_R0, tl_scheme_use_rtcall); \ + refdirect = jit_beqi_i(jit_forward(), JIT_R0, 0); \ + (void)mz_finish_lwe(prim, refr); \ + refdone = jit_jmpi(jit_forward()); \ + jit_restore_argstate(argstate); \ + mz_patch_branch(refdirect); \ + (void)mz_finish(prim); \ + mz_patch_ucbranch(refdone); \ + __END_TINY_JUMPS__(1); \ + } #else /* futures not enabled */ # define mz_prepare_direct_prim(n) mz_prepare(n) @@ -1015,6 +1032,7 @@ static void emit_indentation(mz_jit_state *jitter) # define ts_make_fsemaphore scheme_make_fsemaphore # define mz_generate_direct_prim(direct_only, first_arg, reg, prim_indirect) \ (mz_direct_only(direct_only), first_arg, mz_finishr_direct_prim(reg, prim_indirect)) +# define mz_finish_prim_lwe(prim, refr) (void)mz_finish_lwe(prim, refr) #endif /**********************************************************************/ diff --git a/src/racket/src/jit_ts.c b/src/racket/src/jit_ts.c index d37a4a375f..4cfcf89c73 100644 --- a/src/racket/src/jit_ts.c +++ b/src/racket/src/jit_ts.c @@ -82,6 +82,7 @@ define_ts_s_s(scheme_unbox, FSRC_MARKS) define_ts_si_s(scheme_struct_ref, FSRC_MARKS) define_ts_sis_v(scheme_struct_set, FSRC_MARKS) define_ts_iS_s(scheme_extract_checked_procedure, FSRC_MARKS) +define_ts_iS_s(scheme_procedure_arity_includes, FSRC_MARKS) #endif #ifdef JITCALL_TS_PROCS @@ -190,6 +191,7 @@ define_ts_s_s(scheme_box, FSRC_OTHER) # define ts_scheme_checked_fxvector_set scheme_checked_fxvector_set # define ts_scheme_checked_syntax_e scheme_checked_syntax_e # define ts_scheme_extract_checked_procedure scheme_extract_checked_procedure +# define ts_scheme_procedure_arity_includes scheme_procedure_arity_includes # define ts_apply_checked_fail apply_checked_fail # define ts_scheme_build_list_offset scheme_build_list_offset # define ts_wrong_argument_count wrong_argument_count diff --git a/src/racket/src/jitcommon.c b/src/racket/src/jitcommon.c index f99ea4e108..317b5adaad 100644 --- a/src/racket/src/jitcommon.c +++ b/src/racket/src/jitcommon.c @@ -2073,6 +2073,119 @@ static int common9(mz_jit_state *jitter, void *_data) return 1; } +static int common10(mz_jit_state *jitter, void *_data) +{ + /* proc_arity_includes_code */ + /* R0 has proc, R1 has arity */ + { + GC_CAN_IGNORE jit_insn *ref, *refslow, *refr ,*ref_nc, *ref_prim, *refno; + + sjc.proc_arity_includes_code = jit_get_ip().ptr; + + mz_prolog(JIT_R2); + + __START_SHORT_JUMPS__(1); + + ref = jit_bmsi_l(jit_forward(), JIT_R1, 0x1); + + refslow = _jit.x.pc; + + jit_subi_p(JIT_RUNSTACK, JIT_RUNSTACK, WORDS_TO_BYTES(2)); + JIT_UPDATE_THREAD_RSPTR(); + jit_stxi_p(WORDS_TO_BYTES(1), JIT_RUNSTACK, JIT_R1); + jit_str_p(JIT_RUNSTACK, JIT_R0); + CHECK_LIMIT(); + jit_movi_i(JIT_R0, 2); + mz_prepare(2); + jit_pusharg_p(JIT_RUNSTACK); + jit_pusharg_i(JIT_R0); + __END_SHORT_JUMPS__(1); + mz_finish_prim_lwe(ts_scheme_procedure_arity_includes, refr); + __START_SHORT_JUMPS__(1); + jit_retval(JIT_R0); + jit_addi_p(JIT_RUNSTACK, JIT_RUNSTACK, WORDS_TO_BYTES(2)); + JIT_UPDATE_THREAD_RSPTR(); + CHECK_LIMIT(); + + mz_epilog(JIT_R2); + + refno = _jit.x.pc; + jit_movi_p(JIT_R0, scheme_false); + mz_epilog(JIT_R2); + + /* R1 has fixnum ... check non-negative and them proc type */ + mz_patch_branch(ref); + (void)jit_blti_l(refslow, JIT_R1, 0); + + jit_ldxi_s(JIT_R2, JIT_R0, &((Scheme_Object *)0x0)->type); + ref_nc = jit_beqi_i(jit_forward(), JIT_R2, scheme_native_closure_type); + ref_prim = jit_beqi_i(jit_forward(), JIT_R2, scheme_prim_type); + + (void)jit_jmpi(refslow); + CHECK_LIMIT(); + + /* native: */ + mz_patch_branch(ref_nc); + jit_ldxi_p(JIT_V1, JIT_R0, &((Scheme_Native_Closure *)0x0)->code); + jit_ldxi_i(JIT_R2, JIT_V1, &((Scheme_Native_Closure_Data *)0x0)->closure_size); + (void)jit_blti_i(refslow, JIT_R2, 0); /* case lambda */ + jit_ldxi_p(JIT_R2, JIT_V1, &((Scheme_Native_Closure_Data *)0x0)->code); + ref_nc = jit_beqi_p(jit_forward(), JIT_R2, scheme_on_demand_jit_code); /* not yet JITted */ + jit_rshi_l(JIT_V1, JIT_R1, 1); + jit_addi_l(JIT_V1, JIT_V1, 1); + CHECK_LIMIT(); + mz_prepare(3); + jit_pusharg_i(JIT_V1); /* anything */ + jit_pusharg_i(JIT_V1); + jit_pusharg_p(JIT_R0); + (void)jit_finish(sjc.check_arity_code); + jit_retval(JIT_R0); + (void)jit_beqi_i(refno, JIT_R0, 0); + jit_movi_p(JIT_R0, scheme_true); + mz_epilog(JIT_R2); + CHECK_LIMIT(); + + /* not-yet-JITted native: */ + mz_patch_branch(ref_nc); + jit_ldxi_p(JIT_R0, JIT_V1, &((Scheme_Native_Closure_Data *)0x0)->u2.orig_code); + jit_rshi_l(JIT_V1, JIT_R1, 1); + jit_ldxi_i(JIT_R2, JIT_R0, &((Scheme_Closure_Data *)0x0)->num_params); + jit_ldxi_s(JIT_R0, JIT_R0, &SCHEME_CLOSURE_DATA_FLAGS(((Scheme_Closure_Data *)0x0))); + ref_nc = jit_bmsi_i(jit_forward(), JIT_R0, CLOS_HAS_REST); + (void)jit_bner_i(refno, JIT_V1, JIT_R2); + jit_movi_p(JIT_R0, scheme_true); + mz_epilog(JIT_R2); + CHECK_LIMIT(); + /* has rest arg: */ + mz_patch_branch(ref_nc); + jit_subi_i(JIT_R2, JIT_R2, 1); + (void)jit_bltr_i(refno, JIT_V1, JIT_R2); + jit_movi_p(JIT_R0, scheme_true); + mz_epilog(JIT_R2); + CHECK_LIMIT(); + + /* primitive: */ + mz_patch_branch(ref_prim); + jit_ldxi_i(JIT_R2, JIT_R0, &((Scheme_Primitive_Proc *)0x0)->mina); + (void)jit_blti_i(refslow, JIT_R2, 0); /* case lambda */ + jit_rshi_l(JIT_V1, JIT_R1, 1); + (void)jit_bltr_i(refno, JIT_V1, JIT_R2); + jit_ldxi_i(JIT_R2, JIT_R0, &((Scheme_Primitive_Proc *)0x0)->mu.maxa); + (void)jit_bgtr_i(refno, JIT_V1, JIT_R2); + CHECK_LIMIT(); + + jit_movi_p(JIT_R0, scheme_true); + mz_epilog(JIT_R2); + + __END_SHORT_JUMPS__(1); + + scheme_jit_register_sub_func(jitter, sjc.proc_arity_includes_code, scheme_false); + CHECK_LIMIT(); + } + + return 1; +} + int scheme_do_generate_common(mz_jit_state *jitter, void *_data) { if (!common0(jitter, _data)) return 0; @@ -2086,6 +2199,7 @@ int scheme_do_generate_common(mz_jit_state *jitter, void *_data) if (!common7(jitter, _data)) return 0; if (!common8(jitter, _data)) return 0; if (!common9(jitter, _data)) return 0; + if (!common10(jitter, _data)) return 0; return 1; } diff --git a/src/racket/src/jitinline.c b/src/racket/src/jitinline.c index 755a0cb059..fc9f4e0de6 100644 --- a/src/racket/src/jitinline.c +++ b/src/racket/src/jitinline.c @@ -1716,27 +1716,7 @@ int scheme_generate_inlined_binary(mz_jit_state *jitter, Scheme_App3_Rec *app, i jit_prepare(2); jit_pusharg_p(JIT_R0); jit_pusharg_p(JIT_R1); -#ifdef MZ_USE_FUTURES - { - /* inline in-future check, just like other direct prim calls */ - GC_CAN_IGNORE jit_insn *refdirect, *refdone; - int argstate; - - __START_TINY_JUMPS__(1); - jit_save_argstate(argstate); - mz_tl_ldi_i(JIT_R0, tl_scheme_use_rtcall); - refdirect = jit_beqi_i(jit_forward(), JIT_R0, 0); - (void)mz_finish_lwe(ts_scheme_equal, refr); - refdone = jit_jmpi(jit_forward()); - jit_restore_argstate(argstate); - mz_patch_branch(refdirect); - (void)mz_finish(scheme_equal); - mz_patch_ucbranch(refdone); - __END_TINY_JUMPS__(1); - } -#else - (void)mz_finish_lwe(ts_scheme_equal, refr); -#endif + mz_finish_prim_lwe(ts_scheme_equal, refr); jit_retval(JIT_R0); CHECK_LIMIT(); @@ -2561,6 +2541,16 @@ int scheme_generate_inlined_binary(mz_jit_state *jitter, Scheme_App3_Rec *app, i allocate_rectangular(jitter); + return 1; + } else if (IS_NAMED_PRIM(rator, "procedure-arity-includes?")) { + LOG_IT(("inlined procedure-arity-includes?\n")); + + generate_two_args(app->rand1, app->rand2, jitter, 1, 2); + CHECK_LIMIT(); + + mz_rs_sync(); + (void)jit_calli(sjc.proc_arity_includes_code); + return 1; } else if (IS_NAMED_PRIM(rator, "values")) { Scheme_Object *args[3]; diff --git a/src/racket/src/makex b/src/racket/src/makex deleted file mode 100755 index 61a3c84236..0000000000 --- a/src/racket/src/makex +++ /dev/null @@ -1,201 +0,0 @@ -#!/usr/local/bin/perl -s - -$gcalert = 1 if ($list); - -$list = 1 if ($assign); -$list = 1 if ($setupassign); -$list = 1 if ($exports); -$list = 1 if ($winex); -$list = 1 if ($gwinex); - -while (<>) { - chop; - if ($_ eq '/* START */') { - @exported = (); - - print "typedef struct {\n" unless $list; - - while (<>) { - if (substr($_, 0, 2) eq '/*' || substr($_, 0, 1) eq '#') { - print $_ unless $list; - if (substr($_, 0, 1) eq '#') { - @exported = (@exported, $_); - } - } else { - chop; - if (!($_ =~ /^ *$/)) { - if ($_ =~ /^extern /) { - $_ = substr($_, 7); - } - if ($_ =~ /^XFORM_NONGCING /) { - $_ = substr($_, 15); - } - if ($_ =~ /^MZ_EXTERN /) { - $_ = substr($_, 10); - } - if ($_ =~ /^THREAD_LOCAL /) { - $_ = substr($_, 13); - } - - if ($_ =~ /^volatile /) { - $_ = substr($_, 9); - $volatile = 'volatile '; - } else { - $volatile = ''; - } - - if ($_ =~ /^const /) { - $_ = substr($_, 6); - $const = 'const '; - } elsif ($_ =~ /^struct /) { - $_ = substr($_, 7); - $const = 'struct '; - } else { - $const = ''; - } - - if ($_ =~ /^unsigned /) { - $_ = substr($_, 9); - $unsigned = 'unsigned '; - } else { - $unsigned = ''; - } - - if ($_ =~ /\[1?\];$/) { - $star = '*'; - } else { - $star = ''; - } - - $_ =~ /([a-zA-Z0-9_]*) ([*]*)([a-zA-Z0-9_]*)(.*)/; - if (substr($4, 0, 1) eq '(') { - print "$const$unsigned$1 $2(*$3)$4\n" unless $list; - } else { - print "$const$volatile$unsigned$1 $star$2$3;\n" unless $list; - } - @exported = (@exported, $3); - - if (&Unbalanced($4)) { - do { - $_ = <>; - print $_ unless $list; - } while (!($_ =~ /\);/)); - } - } - } - } - - print "#ifndef SCHEME_EX_INLINE\n} Scheme_Extension_Table;\n#endif\n" unless $list; - } else { - print "$_\n" unless $list; - } -} - -$elsesuspend = 0; -$suspend = 0; - -%nonprocs = (); - -print "#!..\n" if $exports; -print "EXPORTS\n" if ($winex || $gwinex); - -if ($list) { - foreach $f (@exported) { - if (substr($f, 0, 1) eq '#') { - if ($exports || $winex || $gwinex) { - if ($f =~ /#ifdef MZ_REAL_THREADS/) { - $suspend = 1; - } - if ($f =~ /#ifndef MZ_REAL_THREADS/) { - $elsesuspend = 1; - } - if ($f =~ /#ifdef MACINTOSH_EVENTS/) { - $suspend = 1; - } - if ($f =~ /#ifdef USE_MAC_FILE_TOOLBOX/) { - $suspend = 1; - } - if ($f =~ /#ifdef USE_MAC_CARBON_FILE_TOOLBOX/) { - $suspend = 1; - } - if ($f =~ /#ifdef MZ_USE_SINGLE_FLOATS/) { - $suspend = 1; - } - if ($exports && $f =~ /#ifdef USE_MZ_SETJMP/) { - $suspend = 1; - } - if ($f =~ /#\s*ifdef MZ_PRECISE_GC/) { - if ($precisegc) { - $elsesuspend = 1; - } else { - $suspend = 1; - } - } - if ($f =~ /#ifndef LINK_EXTENSIONS_BY_TABLE/) { - $elsesuspend = 1; - } - if ($f =~ /#\s*else/) { - $suspend = 0; - $suspend = 1 if $elsesuspend; - $elsesuspend = 0; - } - if ($f =~ /#\s*endif/) { - $suspend = $elsesuspend = 0; - } - } else { - print $f; - } - } else { - if ($assign) { - print " scheme_extension_table->$f = $f;\n"; - } elsif ($setupassign) { - print " $f = table->$f;\n"; - } elsif ($exports) { - print "$f\n" unless $suspend; - } elsif ($winex || $gwinex) { - $data = ""; - if (($f =~ /scheme_current_thread/) - || ($f =~ /scheme_fuel_counter/) - || ($f =~ /scheme_eof/) - || ($f =~ /scheme_null/) - || ($f =~ /scheme_true/) - || ($f =~ /scheme_false/) - || ($f =~ /scheme_void/) - || ($f =~ /scheme_undefined/) - || ($f =~ /scheme_null/)) { - $data = " DATA"; - } - if ($winex && ($f =~ /^scheme_/)) { - print " $f$data\n" unless $suspend; - } elsif ($gwinex && ($f =~ /^GC_/)) { - print " $f$data\n" unless $suspend; - } - } else { - print "#define $f (scheme_extension_table->$f)\n"; - } - } - } -} - -if ($gcalert) { - print "#ifdef MZ_PRECISE_GC\n"; - print "#pragma GC_VARIABLE_STACK_THOUGH_TABLE\n"; - print "#endif\n"; -} - -sub Unbalanced { - local ($s) = @_; - - $balance = 0; - while ($s ne '') { - $char = substr($s, 0, 1); - if ($char eq '(') { - $balance += 1; - } elsif ($char eq ')') { - $balance -= 1; - } - $s = substr($s, 1); - } - - return $balance; -} diff --git a/src/racket/src/makex.rkt b/src/racket/src/makex.rkt new file mode 100644 index 0000000000..ae3bcecce7 --- /dev/null +++ b/src/racket/src/makex.rkt @@ -0,0 +1,180 @@ +#lang racket/base +(require racket/cmdline) + +(define list-mode (make-parameter #f)) +(define assign-mode (make-parameter #f)) +(define exports-mode (make-parameter #f)) +(define winex-mode (make-parameter #f)) +(define gwinex-mode (make-parameter #f)) +(define gcalert-mode (make-parameter #f)) +(define precisegc-mode (make-parameter #f)) + +(command-line + #:once-each + [("--list") "list mode" (list-mode #t)] + [("--assign") "assign mode" (assign-mode #t)] + [("--exports") "export mode" (exports-mode #t)] + [("--winex") "windows export mode" (winex-mode #t)] + [("--gwinex") "windows GC exports mode " (gwinex-mode #t)] + [("--precisegc") "precise GC mode" (precisegc-mode #t)]) + +(when (list-mode) + (gcalert-mode #t)) + +(when (or (assign-mode) + (exports-mode) + (winex-mode) + (gwinex-mode)) + (list-mode #t)) + +(define (balance s) + (for/fold ([parens 0]) ([c (in-string s)]) + (case c + [(#\() (+ parens 1)] + [(#\)) (- parens 1)] + [else parens]))) + +(define exported + (let loop () + (let ([l (read-line)]) + (cond + [(equal? l "/* SKIP */") + (let loop () + (let ([l (read-line)]) + (unless (equal? l "/* START */") + (loop)))) + (unless (list-mode) + (printf "typedef struct {\n")) + (let loop ([exported null]) + (let ([l (read-line)]) + (cond + [(eof-object? l) (reverse exported)] + [(regexp-match #rx"^/[*]" l) + (unless (list-mode) (displayln l)) + (loop exported)] + [(regexp-match #rx"^#" l) + (unless (list-mode) (displayln l)) + (loop (cons l exported))] + [(regexp-match? #rx"^ *$" l) + (loop exported)] + [else + (let* ([l (regexp-replace #rx"^extern " l "")] + [l (regexp-replace #rx"^XFORM_NONGCING " l "")] + [l (regexp-replace #rx"^MZ_EXTERN " l "")] + [l (regexp-replace #rx"^THREAD_LOCAL " l "")] + [l2 (regexp-replace #rx"^volatile " l "")] + [volatile (if (equal? l l2) "" "volatile ")] + [l l2] + [l2 (regexp-replace #rx"^const " l "")] + [const (if (equal? l l2) "" "const ")] + [l l2] + [l2 (regexp-replace #rx"^struct " l "")] + [const (if (equal? l l2) const "struct ")] + [l l2] + [l2 (regexp-replace #rx"^unsigned " l "")] + [unsigned (if (equal? l l2) "" "unsigned ")] + [l l2] + [star (if (regexp-match? #rx"\\[1?\\];$" l) + "*" + "")] + [m (regexp-match "([a-zA-Z0-9_]*) ([*]*)([a-zA-Z0-9_]*)(.*)" l)]) + (unless (list-mode) + (if (equal? "(" (substring (list-ref m 4) 0 1)) + (apply printf "~a~a~a ~a(*~a)~a\n" + const unsigned (cdr m)) + (printf "~a~a~a~a ~a~a~a;\n" + const volatile unsigned (cadr m) star (caddr m) (cadddr m)))) + (when (positive? (balance (list-ref m 4))) + (let loop () + (let ([l (read-line)]) + (unless (list-mode) + (displayln l)) + (unless (regexp-match #rx"[)];" l) + (loop))))) + (loop (cons (list-ref m 3) exported)))])))] + [else + (unless (list-mode) + (displayln l)) + (loop)])))) + +(unless (list-mode) + (printf "#ifndef SCHEME_EX_INLINE\n} Scheme_Extension_Table;\n#endif\n")) + +(when (exports-mode) + (printf "#!..\n")) +(when (or (winex-mode) + (gwinex-mode)) + (printf "EXPORTS\n")) + +(when (list-mode) + (for/fold ([suspend? #f] [else-suspend? #f]) ([l (in-list exported)]) + (cond + [(equal? "#" (substring l 0 1)) + (if (or (exports-mode) + (winex-mode) + (gwinex-mode)) + (cond + [(regexp-match? #rx"#ifdef MZ_REAL_THREADS" l) + (values #t #f)] + [(regexp-match? #rx"#ifndef MZ_REAL_THREADS" l) + (values #f #t)] + [(regexp-match? #rx"#ifdef MACINTOSH_EVENTS" l) + (values #t #f)] + [(regexp-match? #rx"#ifdef USE_MAC_FILE_TOOLBOX" l) + (values #t #f)] + [(regexp-match? #rx"#ifdef USE_MAC_CARBON_FILE_TOOLBOX" l) + (values #t #f)] + [(regexp-match? #rx"#ifdef MZ_USE_SINGLE_FLOATS" l) + (values #t #f)] + [(and (exports-mode) + (regexp-match? #rx"#ifdef USE_MZ_SETJMP" l)) + (values #t #f)] + [(regexp-match? #px"#\\s*ifdef MZ_PRECISE_GC" l) + (if (precisegc-mode) + (values #f #t) + (values #t #f))] + [(regexp-match? #rx"#ifndef LINK_EXTENSIONS_BY_TABLE" l) + (values #f #t)] + [(regexp-match? #px"#\\s*else" l) + (values else-suspend? #f)] + [(regexp-match? #px"#\\s*endif" l) + (values #f #f)] + [else + (values suspend? else-suspend?)]) + (begin + (displayln l) + (values suspend? else-suspend?)))] + [else + (cond + [(assign-mode) + (printf " scheme_extension_table->~a = ~a;\n" l l)] + [(exports-mode) + (unless suspend? (printf "~a\n" l))] + [(or (winex-mode) (gwinex-mode)) + (unless suspend? + (when (or + (and (winex-mode) (regexp-match #rx"^scheme_" l)) + (and (gwinex-mode) (regexp-match #rx"^GC_" l))) + (printf " ~a" l) + (when (ormap (lambda (rx) + (regexp-match? rx l)) + '(#rx"scheme_current_thread" + #rx"scheme_fuel_counter" + #rx"scheme_eof" + #rx"scheme_null" + #rx"scheme_true" + #rx"scheme_false" + #rx"scheme_void" + #rx"scheme_undefined" + #rx"scheme_null")) + (printf " DATA")) + (printf "\n")))] + [else + (printf "#define ~a (scheme_extension_table->~a)\n" l l)]) + (values suspend? else-suspend?)])) + (void)) + +(when (gcalert-mode) + (printf "#ifdef MZ_PRECISE_GC\n"); + (printf "#pragma GC_VARIABLE_STACK_THOUGH_TABLE\n") + (printf "#endif\n")) diff --git a/src/racket/src/mzrt.c b/src/racket/src/mzrt.c index 9962b7269b..fac733ae0e 100644 --- a/src/racket/src/mzrt.c +++ b/src/racket/src/mzrt.c @@ -36,7 +36,13 @@ START_XFORM_SUSPEND; # endif #endif -#if !defined(MZ_PRECISE_GC) && !defined(WIN32) +/* Define this is we need CGC support for threads. This was needed + when we tried to make places work with the Boehm GC, but since that has + other problems (notably disappearing links), we have given up on + having threads cooperate with CGC. */ +/* #define NEED_GC_THREAD_OPS */ + +#ifdef NEED_GC_THREAD_OPS int GC_pthread_join(pthread_t thread, void **retval); int GC_pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void * arg); int GC_pthread_detach(pthread_t thread); @@ -238,10 +244,10 @@ mz_proc_thread* mz_proc_thread_create_w_stacksize(mz_proc_thread_start start_pro # ifdef WIN32 thread->threadid = (HANDLE)_beginthreadex(NULL, stacksize, mzrt_win_thread_stub, stub_data, 0, NULL); # else -# ifdef MZ_PRECISE_GC - pthread_create(&thread->threadid, attr, mzrt_thread_stub, stub_data); -# else +# ifdef NEED_GC_THREAD_OPS GC_pthread_create(&thread->threadid, attr, mzrt_thread_stub, stub_data); +# else + pthread_create(&thread->threadid, attr, mzrt_thread_stub, stub_data); # endif # endif @@ -269,7 +275,7 @@ void * mz_proc_thread_wait(mz_proc_thread *thread) { rc = (void *)rcw; CloseHandle(thread->threadid); #else -# ifndef MZ_PRECISE_GC +# ifdef NEED_GC_THREAD_OPS GC_pthread_join(thread->threadid, &rc); # else pthread_join(thread->threadid, &rc); @@ -287,7 +293,7 @@ int mz_proc_thread_detach(mz_proc_thread *thread) { #ifdef WIN32 rc = CloseHandle(thread->threadid); #else -# ifndef MZ_PRECISE_GC +# ifdef NEED_GC_THREAD_OPS rc = GC_pthread_detach(thread->threadid); # else rc = pthread_detach(thread->threadid); diff --git a/src/racket/src/places.c b/src/racket/src/places.c index 692183aaac..08eea0c62e 100644 --- a/src/racket/src/places.c +++ b/src/racket/src/places.c @@ -24,6 +24,7 @@ THREAD_LOCAL_DECL(void *place_object); static Scheme_Object *scheme_place(int argc, Scheme_Object *args[]); static Scheme_Object *scheme_place_wait(int argc, Scheme_Object *args[]); static Scheme_Object *scheme_place_kill(int argc, Scheme_Object *args[]); +static Scheme_Object *scheme_place_break(int argc, Scheme_Object *args[]); static Scheme_Object *scheme_place_sleep(int argc, Scheme_Object *args[]); static Scheme_Object *scheme_place_p(int argc, Scheme_Object *args[]); static Scheme_Object *scheme_place_send(int argc, Scheme_Object *args[]); @@ -92,6 +93,7 @@ void scheme_init_place(Scheme_Env *env) PLACE_PRIM_W_ARITY("place-sleep", scheme_place_sleep, 1, 1, plenv); PLACE_PRIM_W_ARITY("place-wait", scheme_place_wait, 1, 1, plenv); PLACE_PRIM_W_ARITY("place-kill", scheme_place_kill, 1, 1, plenv); + PLACE_PRIM_W_ARITY("place-break", scheme_place_break, 1, 1, plenv); PLACE_PRIM_W_ARITY("place?", scheme_place_p, 1, 1, plenv); PLACE_PRIM_W_ARITY("place-channel", scheme_place_channel, 0, 0, plenv); PLACE_PRIM_W_ARITY("place-channel-send", scheme_place_send, 1, 2, plenv); @@ -176,7 +178,10 @@ Scheme_Object *scheme_place_sleep(int argc, Scheme_Object *args[]) { * it is shared acrosss place boundaries and * must be allocated with malloc and free*/ typedef struct Scheme_Place_Object { - int die; + mzrt_mutex *lock; + char die; + char pbreak; + char ref; mz_jmp_buf *exit_buf; void *signal_handle; /*Thread_Local_Variables *tlvs; */ @@ -194,8 +199,11 @@ Scheme_Object *scheme_place(int argc, Scheme_Object *args[]) { place = MALLOC_ONE_TAGGED(Scheme_Place); place->so.type = scheme_place_type; place_obj = malloc(sizeof(Scheme_Place_Object)); + mzrt_mutex_create(&place_obj->lock); place->place_obj = place_obj; place_obj->die = 0; + place_obj->pbreak = 0; + place_obj->ref= 1; mzrt_sema_create(&ready, 0); @@ -265,10 +273,39 @@ Scheme_Object *scheme_place(int argc, Scheme_Object *args[]) { static int place_kill(Scheme_Place *place) { Scheme_Place_Object *place_obj; + int ref = 0; place_obj = (Scheme_Place_Object*) place->place_obj; - place_obj->die = 1; - scheme_signal_received_at(place_obj->signal_handle); + + { + mzrt_mutex_lock(place_obj->lock); + + ref = --place_obj->ref; + place_obj->die = 1; + + mzrt_mutex_unlock(place_obj->lock); + } + + if (ref == 0) { free(place->place_obj); } + else { scheme_signal_received_at(place_obj->signal_handle); } + scheme_remove_managed(place->mref, (Scheme_Object *)place); + place->place_obj = NULL; + return 0; +} + +static int place_break(Scheme_Place *place) { + Scheme_Place_Object *place_obj; + place_obj = (Scheme_Place_Object*) place->place_obj; + + { + mzrt_mutex_lock(place_obj->lock); + + place_obj->pbreak = 1; + + mzrt_mutex_unlock(place_obj->lock); + } + + scheme_signal_received_at(place_obj->signal_handle); return 0; } @@ -289,6 +326,19 @@ static Scheme_Object *scheme_place_kill(int argc, Scheme_Object *args[]) { return scheme_make_integer(place_kill(place)); } +static Scheme_Object *scheme_place_break(int argc, Scheme_Object *args[]) { + Scheme_Place *place; + place = (Scheme_Place *) args[0]; + + if (argc != 1) { + scheme_wrong_count_m("place-break", 1, 1, argc, args, 0); + } + if (!SAME_TYPE(SCHEME_TYPE(args[0]), scheme_place_type)) { + scheme_wrong_type("place-break", "place", 0, argc, args); + } + return scheme_make_integer(place_break(place)); +} + # if defined(MZ_PLACES_WAITPID) /*============= SIGCHLD SIGNAL HANDLING =============*/ @@ -925,6 +975,7 @@ Scheme_Object *scheme_places_deep_copy_worker(Scheme_Object *so, Scheme_Hash_Tab if (copy) { SCHEME_CAR(pair) = car; SCHEME_CDR(pair) = cdr; + SCHEME_PAIR_COPY_FLAGS(pair, so); new_so = pair; } } @@ -1115,11 +1166,28 @@ static void *place_start_proc(void *data_arg) { return rc; } -void scheme_place_check_for_killed() { +void scheme_place_check_for_interruption() { Scheme_Place_Object *place_obj; + char local_die; + char local_break; + place_obj = (Scheme_Place_Object *) place_object; - if (place_obj && place_obj->die) { - scheme_longjmp(*place_obj->exit_buf, 1); + if (place_obj) { + { + mzrt_mutex_lock(place_obj->lock); + + local_die = place_obj->die; + local_break = place_obj->pbreak; + place_obj->pbreak = 0; + + mzrt_mutex_unlock(place_obj->lock); + } + + if (local_die) { + scheme_longjmp(*place_obj->exit_buf, 1); + } + if (local_break) + scheme_break_thread(NULL); } } @@ -1161,6 +1229,7 @@ static void *place_start_proc_after_stack(void *data_arg, void *stack_base) { } place_obj = (Scheme_Place_Object*) place_data->place_obj; place_object = place_obj; + place_obj->ref++; { void *signal_handle; @@ -1212,8 +1281,20 @@ static void *place_start_proc_after_stack(void *data_arg, void *stack_base) { /*printf("Leavin place: proc thread id%u\n", ptid);*/ scheme_place_instance_destroy(); - free(place_object); - place_object = NULL; + + { + int ref = 0; + place_obj = (Scheme_Place_Object *) place_object; + if (place_obj) { + mzrt_mutex_lock(place_obj->lock); + ref = --place_obj->ref; + place_obj->die = 1; + mzrt_mutex_unlock(place_obj->lock); + + if (ref == 0) { free(place_object); } + place_object = NULL; + } + } return (void*) rc; } diff --git a/src/racket/src/salloc.c b/src/racket/src/salloc.c index 8992d86b09..77b5361e97 100644 --- a/src/racket/src/salloc.c +++ b/src/racket/src/salloc.c @@ -806,9 +806,18 @@ void *scheme_malloc_uncollectable_tagged(size_t s) START_XFORM_SKIP; #endif -/* Max of desired alignment and 2 * sizeof(intptr_t): */ -#define CODE_HEADER_SIZE 16 +/* Max of desired alignment and 4 * sizeof(intptr_t): */ +#ifdef SIXTY_FOUR_BIT_INTEGERS +# define CODE_HEADER_SIZE 32 +#else +# define CODE_HEADER_SIZE 16 +#endif +/* First two `intptr_t's of a code page are the element + size and allocation count. The next two are "prev" and + "next" pointers in a doubly-linked list of all pages. */ + +THREAD_LOCAL_DECL(static void *code_allocation_page_list); THREAD_LOCAL_DECL(intptr_t scheme_code_page_total); @@ -940,6 +949,26 @@ static void free_page(void *p, intptr_t size) #endif } +static void chain_page(void *pg) +{ + if (code_allocation_page_list) + ((void **)code_allocation_page_list)[2] = pg; + ((void **)pg)[2] = NULL; + ((void **)pg)[3] = code_allocation_page_list; + code_allocation_page_list = pg; +} + +static void unchain_page(void *pg) +{ + if (!((void **)pg)[2]) + code_allocation_page_list = ((void **)pg)[3]; + else + ((void **)(((void **)pg)[2]))[3] = ((void **)pg)[3]; + + if (((void **)pg)[3]) + ((void **)(((void **)pg)[3]))[2] = ((void **)pg)[2]; +} + static void init_free_list() { intptr_t page_size = get_page_size(); @@ -1017,11 +1046,11 @@ void *scheme_malloc_code(intptr_t size) pg = malloc_page(sz); scheme_code_page_total += sz; *(intptr_t *)pg = sz; + chain_page(pg); LOG_CODE_MALLOC(1, printf("allocated large %p (%ld) [now %ld]\n", pg, size + CODE_HEADER_SIZE, scheme_code_page_total)); p = ((char *)pg) + CODE_HEADER_SIZE; - } - else { + } else { bucket = free_list_find_bucket(size); size2 = free_list[bucket].size; @@ -1031,7 +1060,7 @@ void *scheme_malloc_code(intptr_t size) pg = malloc_page(page_size); scheme_code_page_total += page_size; LOG_CODE_MALLOC(2, printf("new page for %ld / %ld at %p [now %ld]\n", - size2, bucket, pg, scheme_code_page_total)); + size2, bucket, pg, scheme_code_page_total)); sz = page_size - size2; for (i = CODE_HEADER_SIZE; i <= sz; i += size2) { p = ((char *)pg) + i; @@ -1046,6 +1075,7 @@ void *scheme_malloc_code(intptr_t size) ((intptr_t *)pg)[0] = bucket; /* first intptr_t of page indicates bucket */ ((intptr_t *)pg)[1] = 0; /* second intptr_t indicates number of allocated on page */ free_list[bucket].count = count; + chain_page(pg); } p = free_list[bucket].elems; @@ -1080,10 +1110,10 @@ void scheme_free_code(void *p) /* it was a large object on its own page(s) */ scheme_code_page_total -= size; LOG_CODE_MALLOC(1, printf("freeing large %p (%ld) [%ld left]\n", - p, size, scheme_code_page_total)); + p, size, scheme_code_page_total)); + unchain_page((char *)p - CODE_HEADER_SIZE); free_page((char *)p - CODE_HEADER_SIZE, size); - } - else { + } else { bucket = size; if ((bucket < 0) || (bucket >= free_list_bucket_count)) { @@ -1140,7 +1170,8 @@ void scheme_free_code(void *p) scheme_code_page_total -= page_size; LOG_CODE_MALLOC(2, printf("freeing page at %p [%ld left]\n", - CODE_PAGE_OF(p), scheme_code_page_total)); + CODE_PAGE_OF(p), scheme_code_page_total)); + unchain_page(CODE_PAGE_OF(p)); free_page(CODE_PAGE_OF(p), page_size); } } @@ -1150,6 +1181,27 @@ void scheme_free_code(void *p) #endif } +void scheme_free_all_code(void) +{ +#if defined(MZ_JIT_USE_MPROTECT) || defined(MZ_JIT_USE_WINDOWS_VIRTUAL_ALLOC) + void *p, *next; + intptr_t page_size; + + page_size = get_page_size(); + + for (p = code_allocation_page_list; p; p = next) { + next = ((void **)p)[3]; + if (((intptr_t*)p)[0] > page_size) + free_page(p, ((intptr_t*)p)[0]); + else + free_page(p, page_size); + } + code_allocation_page_list = NULL; + + free_page(free_list, page_size); +#endif +} + #ifndef MZ_PRECISE_GC /* When using the CGC allocator, we know how GCable memory is diff --git a/src/racket/src/schemef.h b/src/racket/src/schemef.h index b9dfc2c73d..66aa634730 100644 --- a/src/racket/src/schemef.h +++ b/src/racket/src/schemef.h @@ -12,6 +12,13 @@ All rights reserved. */ +/* SKIP */ + +/* After modifying this file, `make exports' (you must have `racket' + in your path) to recreated derived files. */ + +/* Do no remove the SKIP tag above or the START tag below. */ + /* Racket function prototypes */ /* Macros generally shouldn't go in this file; it is used both to prototype functions, and as a parsing source for diff --git a/src/racket/src/schemex.h b/src/racket/src/schemex.h index a534cafc36..c7760e7aad 100644 --- a/src/racket/src/schemex.h +++ b/src/racket/src/schemex.h @@ -12,16 +12,6 @@ All rights reserved. */ -/* Racket function prototypes */ -/* Macros generally shouldn't go in this file; it is used both to - prototype functions, and as a parsing source for - declaring scheme_extension_table */ - -/* The scheme_extension_table "parser" is picky; don't leave a space - between a function name and it's opening parameter parenthesis. */ - -/* After this START tag, all comments should start & end on same line */ - typedef struct { /*========================================================================*/ /* setjmpup (continuations) */ diff --git a/src/racket/src/schpriv.h b/src/racket/src/schpriv.h index c43b7b275b..60858d084f 100644 --- a/src/racket/src/schpriv.h +++ b/src/racket/src/schpriv.h @@ -165,6 +165,9 @@ void scheme_clear_ephemerons(void); #define PAIR_IS_NON_LIST 0x2 #define PAIR_FLAG_MASK 0x3 +#define SCHEME_PAIR_COPY_FLAGS(dest, src) (SCHEME_PAIR_FLAGS((dest)) |= (SCHEME_PAIR_FLAGS((src)) & PAIR_FLAG_MASK)) + + /*========================================================================*/ /* initialization */ /*========================================================================*/ @@ -273,6 +276,7 @@ void scheme_init_logger_config(void); void register_network_evts(); void scheme_free_dynamic_extensions(void); +void scheme_free_all_code(void); /* Type readers & writers for compiled code data */ typedef Scheme_Object *(*Scheme_Type_Reader)(Scheme_Object *list); @@ -3564,6 +3568,7 @@ Scheme_Object *scheme_checked_make_rectangular (int argc, Scheme_Object *argv[]) Scheme_Object *scheme_checked_flreal_part (int argc, Scheme_Object *argv[]); Scheme_Object *scheme_checked_flimag_part (int argc, Scheme_Object *argv[]); Scheme_Object *scheme_checked_make_flrectangular (int argc, Scheme_Object *argv[]); +Scheme_Object *scheme_procedure_arity_includes(int argc, Scheme_Object *argv[]); Scheme_Object *scheme_chaperone_vector_copy(Scheme_Object *obj); Scheme_Object *scheme_chaperone_hash_table_copy(Scheme_Object *obj); @@ -3672,7 +3677,7 @@ typedef struct Scheme_Place { Scheme_Env *scheme_place_instance_init(); void scheme_place_instance_destroy(); void scheme_kill_green_thread_timer(); -void scheme_place_check_for_killed(); +void scheme_place_check_for_interruption(); /*========================================================================*/ /* engine */ /*========================================================================*/ diff --git a/src/racket/src/sstoinc b/src/racket/src/sstoinc deleted file mode 100755 index 334fc2c5ea..0000000000 --- a/src/racket/src/sstoinc +++ /dev/null @@ -1,88 +0,0 @@ -#!/usr/local/bin/perl - -$ready = 0; -$parens = 0; - -while (<>) -{ - chop; - - if ($_ =~ /^ *$/) { - # Just spaces; do nothing - } elsif ($_ =~ /^\s*;/) { - # comment; do nothing - } else { - - if (!$ready) { - print ' EVAL_ONE_STR('; - print "\n"; - $ready = 1; - } - - if ($_ =~ /\"[^"]*\[[^"]*\"/) { - } else { - $_ =~ tr/\[/\(/; - $_ =~ tr/\]/\)/; - } - - $_ =~ s/\\/\\\\/g; - $_ =~ s/\"/\\\"/g; - - $_ =~ s/\t/ /g; - $_ =~ s/ */ /g; - - if ($_ =~ /\"/) { - # Has a string - can't safely delete more spaces - } else { - $_ =~ s/ \(/\(/g; - } - - # Check for comments: - if ($_ =~ /[\"\\]/) { - # If there's a comment char, add a newline, - # just in case: - if ($_ =~ /;/) { - $_ = $_ . "\\n"; - } - } else { - if ($_ =~ /^([^;]*);/) { - $_ = $1; - } - } - - - print '"' . $_ . '"'; - print "\n"; - - # Remove strings before counting parens: - $_ =~ s/\\\"//g; # first remove escaped quotes - $_ =~ s/\"[^\"]*\"//g; # then remove matching quotes - - # Convert sq brackets to parens and remove escaped - $_ =~ s/\[/\(/g; - $_ =~ s/\]/\)/g; - $_ =~ s/\\[()]//g; # remove escaped parens - - # Now count parens: - $save = $_; - while ($_ =~ /\((.*)/) { - $parens = $parens + 1; - $_ = $1; - } - $_ = $save; - while ($_ =~ /\)(.*)/) { - $parens = $parens - 1; - $_ = $1; - } - - if ($parens == 0) { - $ready = 0; - print ");\n"; - } - } -} - -if ($ready) { - print ');'; - print "\n"; -} diff --git a/src/racket/src/sstoinct.rkt b/src/racket/src/sstoinct.rkt new file mode 100644 index 0000000000..251b1f6375 --- /dev/null +++ b/src/racket/src/sstoinct.rkt @@ -0,0 +1,65 @@ +#lang racket/base + +(define (brackets->parens l) + (regexp-replace* #rx"\\[" + (regexp-replace* #rx"\\]" l ")") + "(")) + +(let loop ([ready? #f] [parens 0]) + (let ([l (read-line)]) + (cond + [(eof-object? l) + (when ready? + (printf ");\n"))] + [(regexp-match? #px"^\\s*$" l) + ;; just spaces; do nothing + (loop ready? parens)] + [(regexp-match #px"^\\s*;" l) + ;; comment; do nothing + (loop ready? parens)] + [else + (unless ready? + (printf " EVAL_ONE_STR(\n")) + (let* ([l (if (regexp-match? #rx"\"[^\"]*\\[[^\"]*\"" l) + l + (brackets->parens l))] + [l (regexp-replace* #rx"\\\\" l "\\\\\\\\")] + [l (regexp-replace* #rx"\"" l "\\\\\"")] + [l (regexp-replace* #rx"\t" l " ")] + [l (regexp-replace* #rx" +" l " ")] + [l (if (regexp-match? #rx"\"" l) + ;; Has a string - can't safely delete more spaces + l + (regexp-replace* #rx" \\(" l "("))] + [l + ;; Check for comments: + (if (regexp-match? #rx"[\"\\]" l) + ;; If there's a comment char, add a newline, + ;; just in case: + (if (regexp-match? #rx";" l) + (string-append l "\\n") + l) + (regexp-replace #rx";.*$" l ""))]) + (printf "\"~a\"\n" l) + (let* ([l + ;; Remove strings before counting parens: + (regexp-replace* + #rx"\"[^\"]*\"" + (regexp-replace* + #rx"\\\"" l "") + "")] + [l + ;; Convert sq brackets to parens and remove escaped + (regexp-replace* #rx"\\[()]" + (brackets->parens l) + "")]) + (let ([parens (for/fold ([parens parens]) ([c (in-string l)]) + (case c + [(#\() (+ parens 1)] + [(#\)) (- parens 1)] + [else parens]))]) + (if (zero? parens) + (begin + (printf ");\n") + (loop #f 0)) + (loop #t parens)))))]))) diff --git a/src/racket/src/startup.rktl b/src/racket/src/startup.rktl index bbdbd4958a..0f744b8ab8 100644 --- a/src/racket/src/startup.rktl +++ b/src/racket/src/startup.rktl @@ -12,21 +12,20 @@ ;; of initial module definitions and parameter values. ;; When using makefiles, `make startup' in [the build directory for] -;; plt/src/mzscheme creates plt/src/mzscheme/src/cstartup.inc. Note -;; that `make startup' requires a working Racket executable; see -;; schminc.h for information about avoiding cstartup.inc, and using -;; startup.inc (requires perl), instead. In fact, the recommend -;; build strategy for cstartup.inc is -;; * Run configure in with --enable-perl +;; "plt/src/racket" creates "plt/src/racket/src/cstartup.inc", and +;; `make cstartup' creates plt/src/racket/src/cstartup.inc. Both +;; require a working Racket executable. + +;; The recommend build strategy for cstartup.inc is ;; * Set USE_COMPILED_STARTUP in schminc.h to 0 ;; * Modify startup.rkt to taste -;; * Run make in /mzscheme -;; * Run make startup in /mzscheme +;; * Run make startup in /racket +;; * Run make in /racket ;; * Set USE_COMPILED_STARTUP in schminc.h to 1 -;; * Run make in /mzscheme +;; * Run make in /racket ;; Do not use block comments (with #| and |#) in this file. The -;; pre-processing script to build startup.inc can't handle them. +;; script to build startup.inc can't handle them. ;; ------------------------------------------------------ ;; Minimal syntax (no error checks!) needed for the rest diff --git a/src/racket/src/thread.c b/src/racket/src/thread.c index 0ad917154e..3c3371d4dd 100644 --- a/src/racket/src/thread.c +++ b/src/racket/src/thread.c @@ -740,7 +740,7 @@ static Scheme_Object *custodian_require_mem(int argc, Scheme_Object *args[]) "custodian-require-memory: second custodian is not a sub-custodian of the first custodian"); } -#ifdef NEWGC_BTC_ACCOUNT +#ifdef MZ_PRECISE_GC if (GC_set_account_hook(MZACCT_REQUIRE, c1, lim, c2)) return scheme_void; #endif @@ -782,7 +782,7 @@ static Scheme_Object *custodian_limit_mem(int argc, Scheme_Object *args[]) adjust_limit_table((Scheme_Custodian *)args[2]); } -#ifdef NEWGC_BTC_ACCOUNT +#ifdef MZ_PRECISE_GC if (GC_set_account_hook(MZACCT_LIMIT, args[0], lim, (argc > 2) ? args[2] : args[0])) return scheme_void; #endif @@ -794,8 +794,8 @@ static Scheme_Object *custodian_limit_mem(int argc, Scheme_Object *args[]) static Scheme_Object *custodian_can_mem(int argc, Scheme_Object *args[]) { -#ifdef NEWGC_BTC_ACCOUNT - return scheme_true; +#ifdef MZ_PRECISE_GC + return (GC_accouting_enabled() ? scheme_true : scheme_false); #else return scheme_false; #endif @@ -4164,7 +4164,7 @@ void scheme_thread_block(float sleep_time) #endif #if defined(MZ_USE_PLACES) if (!do_atomic) - scheme_place_check_for_killed(); + scheme_place_check_for_interruption(); #endif if (sleep_end > 0) { diff --git a/src/worksp/gc2/make.rkt b/src/worksp/gc2/make.rkt index 411d0cca74..a914a749d4 100644 --- a/src/worksp/gc2/make.rkt +++ b/src/worksp/gc2/make.rkt @@ -9,7 +9,6 @@ (fprintf (current-error-port) "~a\n" s) (system s)) -(define accounting-gc? #t) (define backtrace-gc? #f) (define opt-flags "/O2 /Oy-") (define re:only #f) @@ -187,9 +186,6 @@ "xsrc/precomp.h" "" (string-append "/D LIBMZ_EXPORTS " - (if accounting-gc? - "/D NEWGC_BTC_ACCOUNT " - "") (if backtrace-gc? "/D MZ_GC_BACKTRACE " "")) @@ -244,7 +240,6 @@ "gc2_obj.h"))) (string-append "/D GC2_AS_EXPORT " - "/D NEWGC_BTC_ACCOUNT " (if backtrace-gc? "/D MZ_GC_BACKTRACE " "") diff --git a/src/worksp/mzconfig.h b/src/worksp/mzconfig.h index 72e7c048b4..d7b2dd8f76 100644 --- a/src/worksp/mzconfig.h +++ b/src/worksp/mzconfig.h @@ -41,8 +41,10 @@ /* Enable futures: */ #define MZ_USE_FUTURES -/* Enable places: */ -#define MZ_USE_PLACES +/* Enable places --- 3m only: */ +#ifdef MZ_PRECISE_GC +# define MZ_USE_PLACES +#endif /* Enable single-precision floats: */ #define USE_SINGLE_FLOATS