USE_DMD now uses separate object dir
[k8jam.git] / defaults / Jambase.vars
blob3bf7d3b0ea86d53d5edfbc19f4c0adf17143816b
1 # This program is free software: you can redistribute it and/or modify
2 # it under the terms of the GNU General Public License as published by
3 # the Free Software Foundation, either version 3 of the License, or
4 # (at your option) any later version.
6 # This program is distributed in the hope that it will be useful,
7 # but WITHOUT ANY WARRANTY; without even the implied warranty of
8 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9 # GNU General Public License for more details.
11 # You should have received a copy of the GNU General Public License
12 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
15 # OS specific variable settings
18 ###############################################################################
19 # Windoze
20 ###############################################################################
21 if $(NT) {
22   PATH_SEPARATOR = '\' ;
23   local SUPPORTED_TOOLSETS =
24     MINGW
25     LCC
26     PELLESC
27   ;
29   # if the JAM_TOOLSET environment variable is defined, check that it is
30   # one of our supported values
31   #
32   if $(JAM_TOOLSET) {
33     if ! $(JAM_TOOLSET) in $(SUPPORTED_TOOLSETS) {
34       Echo 'The JAM_TOOLSET environment variable is defined but its value' ;
35       Echo 'is invalid, please use one of the following:' ;
36       Echo ;
37       for t in $(SUPPORTED_TOOLSETS) { Echo '  ' $(t) ; }
38       Exit ;
39     }
40   }
42   if ! $(JAM_TOOLSET) {
43     Echo 'The JAM_TOOLSET environment variable is not defined, defaults to MINGW' ;
44     JAM_TOOLSET = MINGW ;
45     MINGW ?= 'c:\mingw\bin\' ;
46   }
48   MV        ?= move /y ;
49   CP        ?= copy ;
50   RM        ?= del /f/q ;
51   RMDIR     ?= rmdir /s/q ;
52   SLASH     ?= '\' ;
53   SUFLIB    ?= .lib ;
54   SUFOBJ    ?= .obj ;
55   SUFEXE    ?= .exe ;
56   SUFLIBSHR ?= .dll ;
58   if $(JAM_TOOLSET) = MINGW {
59     Echo 'Compiler is GCC with MinGW' ;
60     AR           ?= ar -sru ;
61     #RANLIB       ?= ranlib ;
62     CC           ?= mingw32-gcc ;
63     CCFLAGS      ?= "" ;
64     C++          ?= mingw32-g++ ;
65     C++FLAGS     ?= $(CCFLAGS) ;
66     LINK         ?= $(CC) ;
67     LINKFLAGS    ?= "" ;
68     LINKLIBS     ?= -lkernel32 ;
69     OPTIM        ?= ;
70     CC.standard  ?= -std=gnu11 ;
71     SUFOBJ        = .o ;
72     SUFLIB        = .a ;
73     SLASH         = / ;
74     # MinGW-specific thingy
75     MINGW_GUI     = '-Wl,-subsystem,windows' ;
76     MINGW_THREADS = '-mthreads' ;
77     # k8
78     C++OPTIM     ?= ;
79     C++.standard ?= ;
80     C++LINK      ?= $(C++) ;
81     C++LINKFLAGS ?= ;
82     C++LINKLIBS  ?= ;
83     #NOARSCAN     ?= true ;
84     # set path if any
85     if $(MINGW) {
86       CC = "$(MINGW)$(CC:J= )" ;
87       C++ = "$(MINGW)$(C++:J= )" ;
88       LINK = "$(MINGW)$(LINK:J= )" ;
89       C++LINK = "$(MINGW)$(C++LINK:J= )" ;
90       AR = "$(MINGW)$(AR:J= )" ;
91       if $(RANLIB) { RANLIB = "$(MINGW)$(RANLIB:J= )" ; }
92     }
93   } else if $(JAM_TOOLSET) = LCC {
94     Echo 'Compiler is Win32-LCC' ;
95     AR        ?= lcclib ;
96     CC        ?= lcc ;
97     CCFLAGS   ?= "" ;
98     C++       ?= 'error' ;
99     LINK      ?= lcclnk ;
100     LINKFLAGS ?= "" ;
101     LINKLIBS  ?= "" ;
102     OPTIM     ?= ;
103     NOARSCAN   = true ;
104     # k8
105     C++LINK    = 'error' ;
106   } else if $(JAM_TOOLSET) = PELLESC {
107     Echo 'Compiler is PellesC' ;
108     AR        ?= polib ;
109     CC        ?= pocc ;
110     CCFLAGS   ?= "" ;
111     C++       ?= 'error' ;
112     LINK      ?= polink ;
113     LINKFLAGS ?= ;
114     LINKLIBS  ?= ;
115     OPTIM     ?= ;
116     NOARSCAN   = true ;
117     LINKLIBS  ?= crt.lib oldnames.lib 'Win\kernel32.lib' ;
118     # k8
119     C++LINK    = 'error' ;
120   } else {
121     # XXX: We need better comments here !!
122     Exit "On NT, set MINGW to the root of the MinGW dir (but it won't help you anyway)" ;
123   }
124   STDHRS ?= "" ;
125   PICFLAGS = ;
127 ###############################################################################
128 # UNIX
129 ###############################################################################
130 else if $(UNIX) {
131   PATH_SEPARATOR = '/' ;
132   switch $(OS) {
133     case CYGWIN :
134       CC       ?= gcc ;
135       CCFLAGS  += -D__cygwin__ ;
136       LEX      ?= flex ;
137       JAMSHELL ?= sh -c ;
138       RANLIB   ?= "" ;
139       SUFEXE   ?= .exe ;
140       YACC     ?= bison -y ;
141     }
143     # UNIX defaults
144     CC        ?= gcc ;
145     C++       ?= g++ ;
146     OBJCC     ?= gcc ;
147     CCFLAGS   ?= ;
148     OBJCFLAGS ?= $(CCFLAGS) ;
149     C++FLAGS  ?= $(CCFLAGS) ;
150     CHMOD     ?= chmod ;
151     CHGRP     ?= chgrp ;
152     CHOWN     ?= chown ;
153     LEX       ?= flex ;
154     LINKFLAGS ?= $(CCFLAGS) ;
155     LINKLIBS  ?= ;
156     OPTIM     ?= ;
157     CC.standard  ?= -std=gnu11 ;
158     C++OPTIM     ?= ;
159     C++.standard ?= ;
160     if $(OS) != 'LINUX' { RANLIB ?= ranlib ; }
161     YACC      ?= bison ;
162     YACCGEN   ?= .c ;
163     YACCFILES ?= y.tab ;
164     YACCFLAGS ?= -ld ;
165     SUFOBJSHR ?= .o ;
166     SUFLIBSHR ?= .so ;
167     PICFLAGS  ?= -fpic ;
168     STDHDRS   ?= /usr/include ;
171 # shared library object file suffix. We assume that it is identical
172 # than the normal one
173 SUFOBJSHR ?= $(SUFOBJ) ;
174 SUFLIBSHR ?= $(SUFLIB) ;
177 # the D compiler
178 #DC ?= dmd ;
181 # General defaults; a lot like UNIX
183 PATH_SEPARATOR ?= '/' ;
184 if $(OS) != 'LINUX' { AR ?= ar ru ; } else { AR ?= ar sru ; }
185 AS          ?= as ;
186 ASFLAGS     ?= ;
187 AWK         ?= awk ;
188 BINDIR      ?= /usr/local/bin ;
189 C++         ?= g++ ;  # k8: was cc
190 C++FLAGS    ?= ;
191 CC          ?= gcc ;  # k8: was cc
192 CCFLAGS     ?= ;
193 CP          ?= cp -f ;
194 #CRELIB      ?= ;
195 EXEMODE     ?= 755 ;
196 FILEMODE    ?= 644 ;
197 HDRS        ?= ;
198 JAMFILE     ?= Jamfile ;
199 JAMRULES    ?= Jamrules ;
200 LEX         ?= ;
201 LIBDIR      ?= /usr/local/lib ;
202 LINK        ?= $(CC) ;
203 LINKFLAGS   ?= ;
204 LINKLIBS    ?= ;
205 LN          ?= ln ;
206 MANDIR      ?= /usr/local/man ;
207 MKDIR       ?= mkdir ;
208 MV          ?= mv -f ;
209 OPTIM       ?= ;
210 C++OPTIM    ?= ;
211 CC.standard ?= ;
212 C++.standard ?= ;
213 RCP         ?= rcp ;
214 RM          ?= rm -f ;
215 RMDIR       ?= $(RM) ;
216 RSH         ?= rsh ;
217 SED         ?= sed ;
218 SHELLHEADER ?= '#!/bin/sh' ;
219 SHELLMODE   ?= 755 ;
220 SLASH       ?= / ;
221 SUBDIRRULES ?= ;
222 SUBDIRRESET ?= ASFLAGS HDRS C++FLAGS CCFLAGS HDRS DEFINES ;
223 SUFEXE      ?= "" ;
224 SUFLIB      ?= .a ;
225 SUFOBJ      ?= .o ;
226 UNDEFFLAG   ?= '-u _' ;
227 YACC        ?= ;
228 YACCGEN     ?= ;
229 YACCFILES   ?= ;
230 YACCFLAGS   ?= ;
231 if $(USE_DMD) {
232   GDC       ?= kdmd ;
233   GDCLINK   ?= kdmd ;
234 } else {
235   GDC       ?= gdc -pipe ;
236   GDCLINK   ?= gdc -pipe ;
238 HDRPATTERN = '^\s*#\s*include\s+[<"]([^">]+)[">].*$' ;
241 OSFULL = $(OS)$(OSVER)$(OSPLAT) $(OS)$(OSPLAT) $(OS)$(OSVER) $(OS) ;
243 # k8
244 #C++OPTIM     ?= $(OPTIM) ;
245 C++LINK      ?= $(C++) ;
246 #C++LINKFLAGS ?= $(LINKFLAGS) ;
247 #C++LINKLIBS  ?= $(LINKLIBS) ;
249 OBJCOPTIM     ?= $(OPTIM) ;
250 OBJCLINK      ?= $(CC) ;
251 OBJCLINKFLAGS ?= $(LINKFLAGS) ;
252 OBJCLINKLIBS  ?= $(LINKLIBS) ;
253 OBJCLINKLIBS  += -lobjc ;
255 if $(OS) = 'LINUX' {
256   if ( 'gcc' in $(CC) ) && ! ( '-pipe' in $(CC) ) { CC += -pipe ; }
257   if ( 'g++' in $(C++) ) && ! ( '-pipe' in $(C++) ) { C++ += -pipe ; }
260 #Echo 'OS:' $(OS) ;
261 #Echo 'OSFULL:' $(OSFULL) ;
262 #Echo 'UNIX:' $(UNIX) ;