fixes for latest windoze mingw
[k8jam.git] / defaults / Jambase.vars
blob53a946354d0c01e1d140f2260895a07c4411377a
2 # OS specific variable settings
5 ###############################################################################
6 # Windoze
7 ###############################################################################
8 if $(NT) {
9   PATH_SEPARATOR = "\\" ;
10   local SUPPORTED_TOOLSETS =
11     MINGW
12     LCC
13     PELLESC
14   ;
16   # if the JAM_TOOLSET environment variable is defined, check that it is
17   # one of our supported values
18   #
19   if $(JAM_TOOLSET) {
20     if ! $(JAM_TOOLSET) in $(SUPPORTED_TOOLSETS) {
21       Echo "The JAM_TOOLSET environment variable is defined but its value" ;
22       Echo "is invalid, please use one of the following:" ;
23       Echo ;
24       for t in $(SUPPORTED_TOOLSETS) { Echo "  " $(t) ; }
25       Exit ;
26     }
27   }
29   if ! $(JAM_TOOLSET) {
30     Echo "The JAM_TOOLSET environment variable is not defined, defaults to MINGW" ;
31     JAM_TOOLSET = MINGW ;
32     MINGW ?= "c:\\mingw\\bin\\" ;
33   }
35   MV        ?= move /y ;
36   CP        ?= copy ;
37   RM        ?= del /f/q ;
38   RMDIR     ?= rmdir /s/q ;
39   SLASH     ?= \\ ;
40   SUFLIB    ?= .lib ;
41   SUFOBJ    ?= .obj ;
42   SUFEXE    ?= .exe ;
43   SUFLIBSHR ?= .dll ;
45   if $(JAM_TOOLSET) = MINGW {
46     Echo "Compiler is GCC with MinGW" ;
47     AR           ?= ar -ru ;
48     RANLIB       ?= ranlib ;
49     CC           ?= mingw32-gcc ;
50     CCFLAGS      ?= "" ;
51     C++          ?= mingw32-g++ ;
52     C++FLAGS     ?= $(CCFLAGS) ;
53     LINK         ?= $(CC) ;
54     LINKFLAGS    ?= "" ;
55     LINKLIBS     ?= -lkernel32 ;
56     OPTIM        ?= ;
57     SUFOBJ        = .o ;
58     SUFLIB        = .a ;
59     SLASH         = / ;
60     # MinGW-specific thingy
61     MINGW_GUI     = "-Wl,-subsystem,windows" ;
62     MINGW_THREADS = "-mthreads" ;
63     # k8
64     C++OPTIM     ?= $(OPTIM) ;
65     C++LINK      ?= $(C++) ;
66     C++LINKFLAGS ?= $(LINKFLAGS) ;
67     C++LINKLIBS  ?= $(LINKLIBS) ;
68     #NOARSCAN     ?= true ;
69     # set path if any
70     if $(MINGW) {
71       CC = "$(MINGW)$(CC:J= )" ;
72       C++ = "$(MINGW)$(C++:J= )" ;
73       LINK = "$(MINGW)$(LINK:J= )" ;
74       C++LINK = "$(MINGW)$(C++LINK:J= )" ;
75       AR = "$(MINGW)$(AR:J= )" ;
76       RANLIB = "$(MINGW)$(RANLIB:J= )" ;
77     }
78   } else if $(JAM_TOOLSET) = LCC {
79     Echo "Compiler is Win32-LCC" ;
80     AR        ?= lcclib ;
81     CC        ?= lcc ;
82     CCFLAGS   ?= "" ;
83     C++       ?= "error" ;
84     LINK      ?= lcclnk ;
85     LINKFLAGS ?= "" ;
86     LINKLIBS  ?= "" ;
87     OPTIM     ?= ;
88     NOARSCAN   = true ;
89     # k8
90     C++LINK    = "error" ;
91   } else if $(JAM_TOOLSET) = PELLESC {
92     Echo "Compiler is PellesC" ;
93     AR        ?= polib ;
94     CC        ?= pocc ;
95     CCFLAGS   ?= "" ;
96     C++       ?= "error" ;
97     LINK      ?= polink ;
98     LINKFLAGS ?= ;
99     LINKLIBS  ?= ;
100     OPTIM     ?= ;
101     NOARSCAN   = true ;
102     LINKLIBS  ?= crt.lib oldnames.lib Win\\kernel32.lib ;
103     # k8
104     C++LINK    = "error" ;
105   } else {
106     # XXX: We need better comments here !!
107     Exit "On NT, set MINGW to the root of the MinGW dir (but it won't help you anyway)" ;
108   }
109   STDHRS ?= "" ;
110   PICFLAGS = ;
112 ###############################################################################
113 # UNIX
114 ###############################################################################
115 else if $(UNIX) {
116   PATH_SEPARATOR = "/" ;
117   switch $(OS) {
118     case CYGWIN :
119       CC       ?= gcc ;
120       CCFLAGS  += -D__cygwin__ ;
121       LEX      ?= flex ;
122       JAMSHELL ?= sh -c ;
123       RANLIB   ?= "" ;
124       SUFEXE   ?= .exe ;
125       YACC     ?= bison -y ;
126     }
128     # UNIX defaults
129     CC        ?= gcc ;
130     C++       ?= g++ ;
131     OBJCC     ?= gcc ;
132     CCFLAGS   ?= ;
133     OBJCFLAGS ?= $(CCFLAGS) ;
134     C++FLAGS  ?= $(CCFLAGS) ;
135     CHMOD     ?= chmod ;
136     CHGRP     ?= chgrp ;
137     CHOWN     ?= chown ;
138     LEX       ?= flex ;
139     LINKFLAGS ?= $(CCFLAGS) ;
140     LINKLIBS  ?= ;
141     OPTIM     ?= ;
142     RANLIB    ?= ranlib ;
143     YACC      ?= bison ;
144     YACCGEN   ?= .c ;
145     YACCFILES ?= y.tab ;
146     YACCFLAGS ?= -ld ;
147 #!LIBTOOL!#    if $(K8_USE_LIBTOOL) {
148 #!LIBTOOL!#      SUFOBJSHR ?= .lo ;
149 #!LIBTOOL!#      SUFLIBSHR ?= .la ;
150 #!LIBTOOL!#    } else {
151 #!LIBTOOL!#      SUFOBJSHR ?= .o ;
152 #!LIBTOOL!#      SUFLIBSHR ?= .so ;
153 #!LIBTOOL!#    }
154     SUFOBJSHR ?= .o ;
155     SUFLIBSHR ?= .so ;
156 #!LIBTOOL!#
157     PICFLAGS  ?= -fpic ;
158     STDHDRS   ?= /usr/include ;
161 # shared library object file suffix. We assume that it is identical
162 # than the normal one
163 SUFOBJSHR ?= $(SUFOBJ) ;
164 SUFLIBSHR ?= $(SUFLIB) ;
167 # the D compiler
168 #DC ?= dmd ;
171 # General defaults; a lot like UNIX
173 PATH_SEPARATOR ?= "/" ;
174 AR          ?= ar ru ;
175 AS          ?= as ;
176 ASFLAGS     ?= ;
177 AWK         ?= awk ;
178 BINDIR      ?= /usr/local/bin ;
179 C++         ?= g++ ;  # k8: was cc
180 C++FLAGS    ?= ;
181 CC          ?= gcc ;  # k8: was cc
182 CCFLAGS     ?= ;
183 CP          ?= cp -f ;
184 CRELIB      ?= ;
185 DOT         ?= . ;
186 DOTDOT      ?= .. ;
187 EXEMODE     ?= 755 ;
188 FILEMODE    ?= 644 ;
189 HDRS        ?= ;
190 INSTALLGRIST    ?= installed ;
191 JAMFILE     ?= Jamfile ;
192 JAMRULES    ?= Jamrules ;
193 LEX         ?= ;
194 LIBDIR      ?= /usr/local/lib ;
195 LINK        ?= $(CC) ;
196 LINKFLAGS   ?= ;
197 LINKLIBS    ?= ;
198 LN          ?= ln ;
199 MANDIR      ?= /usr/local/man ;
200 MKDIR       ?= mkdir ;
201 MV          ?= mv -f ;
202 OPTIM       ?= ;
203 RCP         ?= rcp ;
204 RM          ?= rm -f ;
205 RMDIR       ?= $(RM) ;
206 RSH         ?= rsh ;
207 SED         ?= sed ;
208 SHELLHEADER ?= "#!/bin/sh" ;
209 SHELLMODE   ?= 755 ;
210 SLASH       ?= / ;
211 SUBDIRRULES ?= ;
212 SUBDIRRESET ?= ASFLAGS HDRS C++FLAGS CCFLAGS HDRS DEFINES ;
213 SUFEXE      ?= "" ;
214 SUFLIB      ?= .a ;
215 SUFOBJ      ?= .o ;
216 UNDEFFLAG   ?= "-u _" ;
217 YACC        ?= ;
218 YACCGEN     ?= ;
219 YACCFILES   ?= ;
220 YACCFLAGS   ?= ;
222 HDRPATTERN = "^[[:space:]]*#[[:space:]]*include[[:space:]]*[<\"]([^\">]*)[\">].*$" ;
224 OSFULL = $(OS)$(OSVER)$(OSPLAT) $(OS)$(OSPLAT) $(OS)$(OSVER) $(OS) ;
226 # k8
227 C++OPTIM     ?= $(OPTIM) ;
228 C++LINK      ?= $(C++) ;
229 C++LINKFLAGS ?= $(LINKFLAGS) ;
230 C++LINKLIBS  ?= $(LINKLIBS) ;
232 OBJCOPTIM     ?= $(OPTIM) ;
233 OBJCLINK      ?= $(CC) ;
234 OBJCLINKFLAGS ?= $(LINKFLAGS) ;
235 OBJCLINKLIBS  ?= $(LINKLIBS) ;
236 OBJCLINKLIBS  += -lobjc ;
238 if $(OS) = "LINUX" {
239   if ( "gcc" in $(CC) ) && ! ( "-pipe" in $(CC) ) { CC += -pipe ; }
240   if ( "g++" in $(C++) ) && ! ( "-pipe" in $(C++) ) { C++ += -pipe ; }
243 #Echo "OS:" $(OS) ;
244 #Echo "OSFULL:" $(OSFULL) ;
245 #Echo "UNIX:" $(UNIX) ;