man sample extended a little
[k8jam.git] / defaults / Jambase.vars
blob1b507b74e77275895d4d7c258ca3764b48b3d39b
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 ;
169     HDRPATH_IGNORE ?= /usr ; # no regexp yet
172 # shared library object file suffix. We assume that it is identical
173 # than the normal one
174 SUFOBJSHR ?= $(SUFOBJ) ;
175 SUFLIBSHR ?= $(SUFLIB) ;
178 # the D compiler
179 #DC ?= dmd ;
182 # General defaults; a lot like UNIX
184 PATH_SEPARATOR ?= '/' ;
185 if $(OS) != 'LINUX' { AR ?= ar ru ; } else { AR ?= ar sru ; }
186 AS          ?= as ;
187 ASFLAGS     ?= ;
188 AWK         ?= awk ;
189 BINDIR      ?= /usr/local/bin ;
190 C++         ?= g++ ;  # k8: was cc
191 C++FLAGS    ?= ;
192 CC          ?= gcc ;  # k8: was cc
193 CCFLAGS     ?= ;
194 CP          ?= cp -f ;
195 #CRELIB      ?= ;
196 EXEMODE     ?= 755 ;
197 FILEMODE    ?= 644 ;
198 HDRS        ?= ;
199 JAMFILE     ?= Jamfile ;
200 JAMRULES    ?= Jamrules ;
201 LEX         ?= ;
202 LIBDIR      ?= /usr/local/lib ;
203 LINK        ?= $(CC) ;
204 LINKFLAGS   ?= ;
205 LINKLIBS    ?= ;
206 LN          ?= ln ;
207 MANDIR      ?= /usr/local/man ;
208 MKDIR       ?= mkdir ;
209 MV          ?= mv -f ;
210 OPTIM       ?= ;
211 C++OPTIM    ?= ;
212 CC.standard ?= ;
213 C++.standard ?= ;
214 RCP         ?= rcp ;
215 RM          ?= rm -f ;
216 RMDIR       ?= $(RM) ;
217 RSH         ?= rsh ;
218 SED         ?= sed ;
219 SHELLHEADER ?= '#!/bin/sh' ;
220 SHELLMODE   ?= 755 ;
221 SLASH       ?= / ;
222 SUBDIRRULES ?= ;
223 SUBDIRRESET ?= ASFLAGS HDRS C++FLAGS CCFLAGS HDRS DEFINES ;
224 SUFEXE      ?= "" ;
225 SUFLIB      ?= .a ;
226 SUFOBJ      ?= .o ;
227 UNDEFFLAG   ?= '-u _' ;
228 YACC        ?= ;
229 YACCGEN     ?= ;
230 YACCFILES   ?= ;
231 YACCFLAGS   ?= ;
232 if $(USE_DMD) {
233   GDC       ?= kdmd ;
234   GDCLINK   ?= kdmd ;
235 } else {
236   GDC       ?= gdc -pipe ;
237   GDCLINK   ?= gdc -pipe ;
239 HDRPATTERN = '^\s*#\s*include\s+[<"]([^">]+)[">].*$' ;
242 OSFULL = $(OS)$(OSVER)$(OSPLAT) $(OS)$(OSPLAT) $(OS)$(OSVER) $(OS) ;
244 # k8
245 #C++OPTIM     ?= $(OPTIM) ;
246 C++LINK      ?= $(C++) ;
247 #C++LINKFLAGS ?= $(LINKFLAGS) ;
248 #C++LINKLIBS  ?= $(LINKLIBS) ;
250 OBJCOPTIM     ?= $(OPTIM) ;
251 OBJCLINK      ?= $(CC) ;
252 OBJCLINKFLAGS ?= $(LINKFLAGS) ;
253 OBJCLINKLIBS  ?= $(LINKLIBS) ;
254 OBJCLINKLIBS  += -lobjc ;
256 if $(OS) = 'LINUX' {
257   if ( 'gcc' in $(CC) ) && ! ( '-pipe' in $(CC) ) { CC += -pipe ; }
258   if ( 'g++' in $(C++) ) && ! ( '-pipe' in $(C++) ) { C++ += -pipe ; }
261 #Echo 'OS:' $(OS) ;
262 #Echo 'OSFULL:' $(OSFULL) ;
263 #Echo 'UNIX:' $(UNIX) ;