File tree 5 files changed +15
-14
lines changed 5 files changed +15
-14
lines changed Original file line number Diff line number Diff line change 35
35
(c-compiler-candidates compilers))))
36
36
37
37
(define c-compile : (->* (Path-String Path-String)
38
- (#:standard (Option CC-Standard-Version) #:cpp? Boolean #:verbose? Boolean #:debug? Boolean
39
- #:includes (Listof C-Toolchain-Path-String) #:macros (Listof C-Compiler-Macro)
40
- #:compilers (Option (Listof Symbol) ))
38
+ (#:standard (Option CC-Standard-Version) #:compilers (Option (Listof Symbol))
39
+ #:cpp? Boolean #:verbose? Boolean #:debug? Boolean #:optimize? Boolean
40
+ #:includes (Listof C-Toolchain-Path-String) #:macros (Listof C-Compiler-Macro ))
41
41
Void)
42
- (lambda [#:standard [std #false ] #:cpp? [cpp? #false ] #:verbose? [verbose? #false ] #:debug? [debug? #false ]
43
- #:includes [includes null] #:macros [macros null] #:compilers [compilers #false ]
42
+ (lambda [#:standard [std #false ] #:compilers [compilers #false ] #:cpp? [cpp? #false ]
43
+ #:verbose? [verbose? #false ] #:debug? [debug? #false ] #:optimize? [optimize? #true ]
44
+ #:includes [includes null] #:macros [macros null]
44
45
infile outfile]
45
46
(define compiler : (Option CC) (c-pick-compiler compilers))
46
47
64
65
[else (or (force cc++) cc)])))
65
66
(for/list : (Listof (Listof String)) ([layout (in-list (toolchain-option-layout compiler))])
66
67
(case layout
67
- [(flags) ((cc-flags compiler) digimon-system cpp? std verbose? debug?)]
68
+ [(flags) ((cc-flags compiler) digimon-system cpp? std verbose? debug? optimize? )]
68
69
[(macros) ((cc-macros compiler) (cc-default-macros digimon-system cpp? debug?) digimon-system cpp? all-Ds)]
69
70
[(includes) (remove-duplicates ((cc-includes compiler) (c-path-flatten includes) digimon-system cpp?))]
70
71
[(infile) ((cc-infile compiler) infile digimon-system cpp?)]
Original file line number Diff line number Diff line change 21
21
extra-macros))))
22
22
23
23
(define clang-compile-flags : CC-Flags
24
- (lambda [system cpp? std verbose? debug?]
24
+ (lambda [system cpp? std verbose? debug? optimize? ]
25
25
(append (list "-c " "-fPIC " "-Wall " )
26
- (if (not debug?) (list "-O2 " ) (list "-Og " "-g " ))
26
+ (if (not debug?) (if (not optimize?) null ( list "-O2 " ) ) (list "-Og " "-g " ))
27
27
(cond [(not cpp?) (list "-x " "c " (clang-stdc->string std))]
28
28
[else (list "-x " "c++ " (clang-stdcpp->string std))])
29
29
(case system
Original file line number Diff line number Diff line change 9
9
10
10
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
11
11
(define gcc-compile-flags : CC-Flags
12
- (lambda [system cpp? std verbose? debug?]
13
- (cond [(eq? system 'macosx ) (clang-compile-flags system cpp? std verbose? debug?)]
12
+ (lambda [system cpp? std verbose? debug? optimize? ]
13
+ (cond [(eq? system 'macosx ) (clang-compile-flags system cpp? std verbose? debug? optimize? )]
14
14
[else (append (list "-c " "-fPIC " "-Wall " )
15
15
16
16
; doesn't work...
17
17
(list "-finput-charset=UTF-8 " "-fextended-identifiers " "-fexec-charset=UTF-8 " )
18
18
19
- (if (not debug?) (list "-O2 " ) (list "-Og " "-g " ))
19
+ (if (not debug?) (if (not optimize?) null ( list "-O2 " ) ) (list "-Og " "-g " ))
20
20
(cond [(not cpp?) (list "-x " "c " (clang-stdc->string std))]
21
21
[else (list "-x " "c++ " (clang-stdcpp->string std))])
22
22
(case system
Original file line number Diff line number Diff line change 26
26
extra-macros))))
27
27
28
28
(define msvc-compile-flags : CC-Flags
29
- (lambda [system cpp? std verbose? debug?]
29
+ (lambda [system cpp? std verbose? debug? optimize? ]
30
30
(append (list "/nologo " "/FC " "/c " ; compiling only, no link
31
31
#; "/constexpr "
32
32
"/EHsc " "/W3 " "/sdl " ; security features and warnings
33
33
"/utf-8 " )
34
- (if (not debug?) (list "/O2 " ) (list "/Od " "/ZI " "/JMC " ))
34
+ (if (not debug?) (if (not optimize?) null ( list "/O2 " ) ) (list "/Od " "/ZI " "/JMC " ))
35
35
(if (not cpp?) (list "/TC " (msvc-stdc->string std)) (list "/TP " (msvc-stdcpp->string std)))
36
36
(if (not verbose?) null (list "/showIncludes " )))))
37
37
Original file line number Diff line number Diff line change 15
15
(define-type CC-Options (U 'flags 'macros 'includes 'infile 'outfile ))
16
16
17
17
(define-type CC-CPP-Macros (-> CC-Macros Symbol Boolean CC-Macros (Listof String)))
18
- (define-type CC-Flags (-> Symbol Boolean (Option CC-Standard-Version) Boolean Boolean (Listof String)))
18
+ (define-type CC-Flags (-> Symbol Boolean (Option CC-Standard-Version) Boolean Boolean Boolean (Listof String)))
19
19
(define-type CC-Includes (-> (Listof Path) Symbol Boolean (Listof String)))
20
20
21
21
(define-type CC-IO-File-Flag (-> Path-String Symbol Boolean (Listof String)))
You can’t perform that action at this time.
0 commit comments