added 'USE_CLANG' flag to set-profile
[k8jam.git] / defaults / Jambase.profile
blob9c486410764fca99922485f0a6331be7e145181a
1 ###############################################################################
2 # special values
3 ###############################################################################
4 OPTIM_SPEED = -O3 -march=native -mtune=native -mfpmath=sse ;
5 LINKFLAGS_SPEED = -s ;
7 OPTIM_SIZE = -Os -march=native -mtune=native ;
8 LINKFLAGS_SIZE = -s ;
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 ;
19 ##rule SetCPUFlags {
20 ##  if $(OS) != "LINUX" {
21 ##    DETECTED_CPU = "i486" ;
22 ##    OPTIM_SPEED = -O3 -march=i486 -mtune=i486 ;
23 ##  } else {
24 ##    DETECTED_CPU = native ;
25 ##    OPTIM_SPEED = -O3 -march=native -mtune=native ;
26 ##  }
27 ##}
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
36   standard      # -O2
40 rule --k8jam-profile-none-- {
41   Echo "MSG: default profile" ;
42   OPT_PROFILE = ;
46 rule --k8jam-profile-default-- {
47   --k8jam-profile-none-- ;
51 rule --k8jam-profile-empty-- {
52   Echo "MSG: empty profile" ;
53   SLACK_PKG_ARCH = "i486" ;
54   LINKFLAGS.all += -s ;
57 rule --k8jam-profile-speed-- {
58   Echo "MSG: 'speed' profile" ;
59   SLACK_PKG_ARCH = "i686" ;
60   CFLAGS.all += $(OPTIM_SPEED) ;
61   LINKFLAGS.all += $(LINKFLAGS_SPEED) ;
62   OPTIM += -std=gnu99 ;
65 rule --k8jam-profile-size-- {
66   Echo "MSG: 'size' profile" ;
67   SLACK_PKG_ARCH = "i686" ;
68   CFLAGS.all += $(OPTIM_SIZE) ;
69   LINKFLAGS.all += $(LINKFLAGS_SIZE) ;
70   OPTIM += -std=gnu99 ;
73 rule --k8jam-profile-debug-- {
74   Echo "MSG: 'debug' profile" ;
75   SLACK_PKG_ARCH = "i486" ;
76   CFLAGS.all += $(OPTIM_DEBUG) ;
77   LINKFLAGS.all += $(LINKFLAGS_DEBUG) ;
78   OPTIM += -std=gnu99 ;
81 rule --k8jam-profile-standard-- {
82   Echo "MSG: 'standard' profile" ;
83   SLACK_PKG_ARCH = "i486" ;
84   CFLAGS.all += $(OPTIM_STANDARD) ;
85   LINKFLAGS.all += $(LINKFLAGS_STANDARD) ;
86   OPTIM += -std=gnu99 ;
90 # profile "name" ;
91 # set compile flags for profile; works only for gcc/g++
92 # available profiles:
93 #  none, default: don't change
94 #  empty: remove optimisation flags
95 #  speed: optimise for speed and pIII
96 #  size: optimise for size
97 #  debug: don't optimize, add debug info
98 #  standard: -O2
99 rule profile {
100   if ! $(1) in $(K8JAM-KNOWN-PROFILES) {
101     Echo "known profiles: $(K8JAM-KNOWN-PROFILES)" ;
102     Exit "unknown profile: $(1)" ;
103   }
105   remove-opt-flags-for-all-compilers ;
106   LINKFLAGS -= "-g" "-s" ;
107   C++LINKFLAGS -= "-g" "-s" ;
108   OBJCLINKFLAGS -= "-g" "-s" ;
109   LINKFLAGS.all -= "-g" "-s" ;
111   OPT_PROFILE = $(1) ;
112   --k8jam-profile-$(OPT_PROFILE)-- ;
114 #SLACK_PKG_ARCH ?= "i486" ;
117 # selects 'debug', 'standard', 'speed' or 'size' profile according to vars:
118 #  DEBUG = 1 : debug
119 #  OPT_SIZE = 1 : size
120 #  OPT_SPEED = 1 : speed
121 #  OPT=SIZE or OPT=SPEED
122 #  default: standard
123 rule set-profile {
124   local otp ;
126   if $(OPT) = "size" { otp = "size" ; }
127   else if $(OPT) = "SIZE" { otp = "size" ; }
128   if $(OPT) = "speed" { otp = "speed" ; }
129   else if $(OPT) = "SPEED" { otp = "speed" ; }
130   else if $(OPT_SIZE) { otp = "size" ; }
131   else if $(OPT_SPEED) { otp = "speed" ; }
133   if $(USE_CLANG) {
134     CC = clang ;
135     LINK = clang ;
136     C++ = clang++ ;
137     C++LINK = clang++ ;
138   }
140   if $(DEBUG) {
141     profile "debug" ;
142   } else if $(otp) = "size" {
143     profile "size" ;
144   } else if $(otp) = "speed" {
145     profile "speed" ;
146   } else {
147     profile "standard" ;
148   }
149   if $(VALGRIND) {
150     CFLAGS.all -= "-g" "-s" ;
151     LINKFLAGS.all -= "-g" "-s" ;
152     CFLAGS.all += -g ;
153     LINKFLAGS.all += -g ;
154   }
155   if ! $(NO_WARNINGS) {
156     CFLAGS.all += -Wall ;
157   }
158   gcc-suggest-attrs ;