1 ###############################################################################
3 ###############################################################################
4 OPTIM_SPEED = -O3 -march=native -mtune=native -mfpmath=sse ;
7 OPTIM_SIZE = -Os -march=native -mtune=native ;
10 OPTIM_STANDARD = -O2 -march=native -mtune=native ;
11 LINKFLAGS_STANDARD = -s ;
13 OPTIM_DEBUG = -O0 -g ;
14 LINKFLAGS_DEBUG = -g ;
16 OPTIM_NOALIAS = -fno-strict-aliasing ;
20 ## if $(OS) != "LINUX" {
21 ## DETECTED_CPU = "i486" ;
22 ## OPTIM_SPEED = -O3 -march=i486 -mtune=i486 ;
24 ## DETECTED_CPU = native ;
25 ## OPTIM_SPEED = -O3 -march=native -mtune=native ;
30 K8JAM-KNOWN-PROFILES =
31 none default # don't change
32 empty # remove optimisation flags
33 speed # optimise for speed
34 size # optimise for size
35 debug # don't optimize, add debug info
40 ### rule --CheckGCC47Plus-- {
43 ### t = [ Match "(gcc)" : "$(CC)" ] ;
44 ### if ( "gcc" in $(t) ) {
45 ### gccv = [ Command "gcc --version | line 1" ] ;
46 ### t = [ Match "[\t\r\n ]+([0-9]+\\.[0-9]+)\\." : "$(gccv)" ] ;
47 ### if $(t) == "4.7" {
58 rule --k8jam-set-standards-- {
59 if ! $(CC.standard) { CC.standard = -std=gnu99 ; }
60 if ! $(C++.standard) { C++.standard = -std=gnu++98 ; }
64 rule --k8jam-profile-none-- {
65 Echo "MSG: default profile" ;
70 rule --k8jam-profile-default-- {
71 --k8jam-profile-none-- ;
75 rule --k8jam-profile-empty-- {
76 Echo "MSG: empty profile" ;
77 SLACK_PKG_ARCH = "i486" ;
81 rule --k8jam-profile-speed-- {
82 Echo "MSG: 'speed' profile" ;
83 SLACK_PKG_ARCH = "i686" ;
84 CFLAGS.all += $(OPTIM_SPEED) ;
85 LINKFLAGS.all += $(LINKFLAGS_SPEED) ;
86 --k8jam-set-standards-- ;
89 rule --k8jam-profile-size-- {
90 Echo "MSG: 'size' profile" ;
91 SLACK_PKG_ARCH = "i686" ;
92 CFLAGS.all += $(OPTIM_SIZE) ;
93 LINKFLAGS.all += $(LINKFLAGS_SIZE) ;
94 --k8jam-set-standards-- ;
97 rule --k8jam-profile-debug-- {
98 Echo "MSG: 'debug' profile" ;
99 SLACK_PKG_ARCH = "i486" ;
100 CFLAGS.all += $(OPTIM_DEBUG) ;
101 LINKFLAGS.all += $(LINKFLAGS_DEBUG) ;
102 --k8jam-set-standards-- ;
105 rule --k8jam-profile-standard-- {
106 Echo "MSG: 'standard' profile" ;
107 SLACK_PKG_ARCH = "i486" ;
108 CFLAGS.all += $(OPTIM_STANDARD) ;
109 LINKFLAGS.all += $(LINKFLAGS_STANDARD) ;
110 --k8jam-set-standards-- ;
115 # set compile flags for profile; works only for gcc/g++
116 # available profiles:
117 # none, default: don't change
118 # empty: remove optimisation flags
119 # speed: optimise for speed and pIII
120 # size: optimise for size
121 # debug: don't optimize, add debug info
124 if ! $(1) in $(K8JAM-KNOWN-PROFILES) {
125 Echo "known profiles: $(K8JAM-KNOWN-PROFILES)" ;
126 Exit "unknown profile: $(1)" ;
129 remove-opt-flags-for-all-compilers ;
130 LINKFLAGS -= "-g" "-s" ;
131 C++LINKFLAGS -= "-g" "-s" ;
132 OBJCLINKFLAGS -= "-g" "-s" ;
133 LINKFLAGS.all -= "-g" "-s" ;
136 --k8jam-profile-$(OPT_PROFILE)-- ;
138 #SLACK_PKG_ARCH ?= "i486" ;
141 # selects 'debug', 'standard', 'speed' or 'size' profile according to vars:
143 # OPT_SIZE = 1 : size
144 # OPT_SPEED = 1 : speed
145 # OPT=SIZE or OPT=SPEED
150 if $(OPT) = "size" { otp = "size" ; }
151 else if $(OPT) = "SIZE" { otp = "size" ; }
152 if $(OPT) = "speed" { otp = "speed" ; }
153 else if $(OPT) = "SPEED" { otp = "speed" ; }
154 else if $(OPT_SIZE) { otp = "size" ; }
155 else if $(OPT_SPEED) { otp = "speed" ; }
166 } else if $(otp) = "size" {
168 } else if $(otp) = "speed" {
174 CFLAGS.all -= "-g" "-s" ;
175 LINKFLAGS.all -= "-g" "-s" ;
177 LINKFLAGS.all += -g ;
179 if ! $(NO_WARNINGS) {
180 CFLAGS.all += -Wall ;