diff -r f01a2d800d05 -r 08ddf71e42b2 ParserFlags.st --- a/ParserFlags.st Thu Jun 11 22:58:23 2015 +0200 +++ b/ParserFlags.st Mon Jun 15 10:07:13 2015 +0200 @@ -96,7 +96,8 @@ DefineForBorlandC DefineForVisualC DefineForMSC DefineForGNUC PerMethodFlags AllowSTXDelimiterComments DefineForMINGW32 DefineForMINGW64 DefineForMINGW WarnAssignmentToBlockArgument - WarnAssignmentToPoolVariable WarnAssignmentToMethodArgument' + WarnAssignmentToPoolVariable WarnAssignmentToMethodArgument + DefineForCLANG' poolDictionaries:'' category:'System-Compiler' ! @@ -515,6 +516,12 @@ "Created: / 15-03-2007 / 13:33:32 / cg" ! +useClang + "true if clang compiler should be used" + + ^ self usedCompilerDefine = DefineForCLANG +! + useCompilerDefine: aCompilerDefine "enforce a particular compiler to be used (independent from what the system was compiled with)" @@ -1579,21 +1586,22 @@ DefineForMINGW := '__MINGW__'. DefineForMINGW32 := '__MINGW32__'. DefineForMINGW64 := '__MINGW64__'. + DefineForCLANG := '__clang__'. (executablePath := OperatingSystem pathOfSTXExecutable) notNil ifTrue:[ - executablePath := executablePath asFilename directory. - (((executablePath / 'include') exists and:[(executablePath / 'stc') exists]) - or:[ - executablePath := executablePath directory. - ((executablePath / 'include') exists and:[(executablePath / 'stc') exists]) - or:[ - executablePath := executablePath directory. - ((executablePath / 'include') exists and:[(executablePath / 'stc') exists]) - ] - ] - ) ifTrue:[ - self initializeSTCFlagsForTopDirectory: executablePath. - ] + executablePath := executablePath asFilename directory. + (((executablePath / 'include') exists and:[(executablePath / 'stc') exists]) + or:[ + executablePath := executablePath directory. + ((executablePath / 'include') exists and:[(executablePath / 'stc') exists]) + or:[ + executablePath := executablePath directory. + ((executablePath / 'include') exists and:[(executablePath / 'stc') exists]) + ] + ] + ) ifTrue:[ + self initializeSTCFlagsForTopDirectory: executablePath. + ] ]. " @@ -1613,127 +1621,131 @@ topDir := topDirArg. OperatingSystem isMSWINDOWSlike ifTrue:[ - topDirArg isString ifTrue:[ - topDir := topDirArg copyReplaceAll:$/ with:$\ ifNone:topDirArg. - ] + topDirArg isString ifTrue:[ + topDir := topDirArg copyReplaceAll:$/ with:$\ ifNone:topDirArg. + ] ]. topDir := topDir asFilename. topDirName := topDir name. "/ if in the development directory, use ./modules Smalltalk isSmalltalkDevelopmentSystem ifTrue:[ - STCModulePath := 'modules'. + STCModulePath := 'modules'. ] ifFalse:[ - STCModulePath := Filename tempDirectory constructString:'modules'. + STCModulePath := Filename tempDirectory constructString:'modules'. ]. (topDir construct:'stc') exists ifFalse:[ - ('ParserFlags [warning]: stc not found in "',topDirName,'"') infoPrintCR. - 'ParserFlags [warning]: stc-compiling (primitive code) will not work in the browser' infoPrintCR. - STCCompilation := #never. + ('ParserFlags [warning]: stc not found in "',topDirName,'"') infoPrintCR. + 'ParserFlags [warning]: stc-compiling (primitive code) will not work in the browser' infoPrintCR. + STCCompilation := #never. ]. OperatingSystem isMSWINDOWSlike ifTrue:[ - useBorlandC := useVisualC := useMingw := false. - programFiles := OperatingSystem getEnvironment:'ProgramFiles'. - programFiles isEmptyOrNil ifTrue:[ programFiles := 'C:\Program Files' ]. - - STCCompilationIncludes := '-I',topDirName,'\include -I',topDirName,'\libopengl'. - (bccTop := BCCTop) isNil ifTrue:[ - borlandDir := OperatingSystem getEnvironment:'BCCDIR'. - borlandDir isEmptyOrNil ifTrue:[ borlandDir := 'C:\Borland\bcc55' ]. - bccTop := { - (borlandDir) . - (programFiles , '\Borland\bcc55') . - (programFiles , '\bcc55') . - } detect:[:path | path asFilename exists and:[(path asFilename construct:'include') exists]] - ifNone:nil. - ]. - - (bccTop notNil and:[bccTop asFilename exists]) ifTrue:[ - STCCompilationIncludes := STCCompilationIncludes,' -I',bccTop,'\Include'. - LibDirectory := topDirName,'\lib\bc'. - LinkArgs := '-L',topDirName,'\lib\bc'. - LinkArgs := LinkArgs,' -L',bccTop,'\Lib -r -c -ap -Tpd -Gi -w-dup'. - CCPath := 'bcc32'. - MakeCommand := 'bmake'. - LinkCommand := 'ilink32'. - CCCompilationOptions := '-w-'. - useBorlandC := true. - ] ifFalse:[ - (vcTop := VCTop) isNil ifTrue:[ - vcTop := { - (programFiles,'\Microsoft Visual Studio 12.0\VC') . - (programFiles,'\Microsoft Visual Studio 11.0\VC') . - (programFiles,'\Microsoft Visual Studio 10.0\VC') . - (programFiles,'\Microsoft Visual Studio 9.0\VC' ) . - } detect:[:path | path asFilename exists and:[(path asFilename construct:'bin/cl.exe') exists]] - ifNone:nil. - ]. - (vcTop notNil and:[vcTop asFilename exists]) ifTrue:[ - useVisualC := true. - STCCompilationIncludes := STCCompilationIncludes,' -I',vcTop,'include'. - - (sdkTop := SDKTop) isNil ifTrue:[ - sdkTop := { - (programFiles,'\Microsoft SDKs\Windows\v8.0A') . - (programFiles,'\Microsoft SDKs\Windows\v7.0A') . - (programFiles,'\Microsoft SDKs\Windows\v6.0A') . - } detect:[:path | path asFilename exists and:[(path asFilename construct:'include') exists]] ifNone:nil. - ]. - (sdkTop notNil and:[sdkTop asFilename exists]) ifTrue:[ - STCCompilationIncludes := STCCompilationIncludes,' -I',sdkTop,'\include'. - ]. - LibDirectory := topDirName,'\lib\vc'. - LinkArgs := '-L',topDirName,'\lib\vc'. - LinkArgs := LinkArgs,' -r -c -ap -Tpd -Gi -w-dup'. - CCPath := vcTop,'\bin\cl.exe'. - LinkCommand := 'ilink32'. - MakeCommand := 'vcmake'. - CCCompilationOptions := '/nologo /ZI /w /GF /EHsc /FR.\objvc\'. - ] ifFalse:[ - "/ add definitions for lcc, mingc etc. - STCCompilationIncludes := STCCompilationIncludes,' -IC:\xxxxx\Include'. - LibDirectory := topDirName,'\lib\vc'. - LinkArgs := '-L',topDirName,'\lib\vc'. - LinkArgs := LinkArgs,' -r -c -ap -Tpd -Gi -w-dup'. - ]. - ]. - STCCompilationDefines := '-DWIN32'. - STCCompilationOptions := '+optinline +inlineNew'. - (topDirName,'\stc\stc.exe') asFilename exists ifTrue:[ - STCPath := (topDirName,'\stc\stc.exe'). - ] ifFalse:[ - STCPath := 'stc.exe'. - ]. - LibPath := ''. - SearchedLibraries := #('import32.lib'). - "/ SearchedLibraries := #('import32.lib' 'glu32.lib' 'opengl32.lib'). + useBorlandC := useVisualC := useMingw := false. + programFiles := OperatingSystem getEnvironment:'ProgramFiles'. + programFiles isEmptyOrNil ifTrue:[ programFiles := 'C:\Program Files' ]. + + STCCompilationIncludes := '-I',topDirName,'\include -I',topDirName,'\libopengl'. + (bccTop := BCCTop) isNil ifTrue:[ + borlandDir := OperatingSystem getEnvironment:'BCCDIR'. + borlandDir isEmptyOrNil ifTrue:[ borlandDir := 'C:\Borland\bcc55' ]. + bccTop := { + (borlandDir) . + (programFiles , '\Borland\bcc55') . + (programFiles , '\bcc55') . + } detect:[:path | path asFilename exists and:[(path asFilename construct:'include') exists]] + ifNone:nil. + ]. + + (bccTop notNil and:[bccTop asFilename exists]) ifTrue:[ + STCCompilationIncludes := STCCompilationIncludes,' -I',bccTop,'\Include'. + LibDirectory := topDirName,'\lib\bc'. + LinkArgs := '-L',topDirName,'\lib\bc'. + LinkArgs := LinkArgs,' -L',bccTop,'\Lib -r -c -ap -Tpd -Gi -w-dup'. + CCPath := 'bcc32'. + MakeCommand := 'bmake'. + LinkCommand := 'ilink32'. + CCCompilationOptions := '-w-'. + useBorlandC := true. + ] ifFalse:[ + (vcTop := VCTop) isNil ifTrue:[ + vcTop := { + (programFiles,'\Microsoft Visual Studio 12.0\VC') . + (programFiles,'\Microsoft Visual Studio 11.0\VC') . + (programFiles,'\Microsoft Visual Studio 10.0\VC') . + (programFiles,'\Microsoft Visual Studio 9.0\VC' ) . + } detect:[:path | path asFilename exists and:[(path asFilename construct:'bin/cl.exe') exists]] + ifNone:nil. + ]. + (vcTop notNil and:[vcTop asFilename exists]) ifTrue:[ + useVisualC := true. + STCCompilationIncludes := STCCompilationIncludes,' -I',vcTop,'include'. + + (sdkTop := SDKTop) isNil ifTrue:[ + sdkTop := { + (programFiles,'\Microsoft SDKs\Windows\v8.0A') . + (programFiles,'\Microsoft SDKs\Windows\v7.0A') . + (programFiles,'\Microsoft SDKs\Windows\v6.0A') . + } detect:[:path | path asFilename exists and:[(path asFilename construct:'include') exists]] ifNone:nil. + ]. + (sdkTop notNil and:[sdkTop asFilename exists]) ifTrue:[ + STCCompilationIncludes := STCCompilationIncludes,' -I',sdkTop,'\include'. + ]. + LibDirectory := topDirName,'\lib\vc'. + LinkArgs := '-L',topDirName,'\lib\vc'. + LinkArgs := LinkArgs,' -r -c -ap -Tpd -Gi -w-dup'. + CCPath := vcTop,'\bin\cl.exe'. + LinkCommand := 'ilink32'. + MakeCommand := 'vcmake'. + CCCompilationOptions := '/nologo /ZI /w /GF /EHsc /FR.\objvc\'. + ] ifFalse:[ + "/ add definitions for lcc, mingc etc. + STCCompilationIncludes := STCCompilationIncludes,' -IC:\xxxxx\Include'. + LibDirectory := topDirName,'\lib\vc'. + LinkArgs := '-L',topDirName,'\lib\vc'. + LinkArgs := LinkArgs,' -r -c -ap -Tpd -Gi -w-dup'. + ]. + ]. + STCCompilationDefines := '-DWIN32'. + STCCompilationOptions := '+optinline +inlineNew'. + (topDirName,'\stc\stc.exe') asFilename exists ifTrue:[ + STCPath := (topDirName,'\stc\stc.exe'). + ] ifFalse:[ + STCPath := 'stc.exe'. + ]. + LibPath := ''. + SearchedLibraries := #('import32.lib'). + "/ SearchedLibraries := #('import32.lib' 'glu32.lib' 'opengl32.lib'). ] ifFalse:[ - STCCompilationIncludes := '-I',topDirName,'/include'. - STCCompilationDefines := ''. - STCCompilationOptions := '+optinline +inlineNew'. - STCPath := topDirName,'/stc/stc'. - - m32 := ''. - (ExternalAddress pointerSize == 4) ifTrue:[ - m32 := ' -m32' - ]. - CCCompilationOptions := OperatingSystem getCPUDefine, - ' -D', self usedCompilerDefine, - ' ', OperatingSystem getOSDefine, - ' ', '-O', m32. - ParserFlags useGnuC ifTrue:[ - CCPath := 'gcc' - ] ifFalse:[ - CCPath := 'cc' - ]. - LinkArgs := m32. - LinkSharedArgs := '-shared', m32. - LinkCommand := CCPath. - LibPath := ''. - SearchedLibraries := #(). - MakeCommand := 'make'. + STCCompilationIncludes := '-I',topDirName,'/include'. + STCCompilationDefines := ''. + STCCompilationOptions := '+optinline +inlineNew'. + STCPath := topDirName,'/stc/stc'. + + m32 := ''. + (ExternalAddress pointerSize == 4) ifTrue:[ + m32 := ' -m32' + ]. + CCCompilationOptions := OperatingSystem getCPUDefine, + ' -D', self usedCompilerDefine, + ' ', OperatingSystem getOSDefine, + ' ', '-O', m32. + ParserFlags useClang ifTrue:[ + CCPath := 'clang' + ] ifFalse:[ + ParserFlags useGnuC ifTrue:[ + CCPath := 'gcc' + ] ifFalse:[ + CCPath := 'cc' + ]. + ]. + LinkArgs := m32. + LinkSharedArgs := '-shared', m32. + LinkCommand := CCPath. + LibPath := ''. + SearchedLibraries := #(). + MakeCommand := 'make'. ]. " @@ -2661,11 +2673,11 @@ !ParserFlags class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libcomp/ParserFlags.st,v 1.124 2015-02-07 11:32:37 cg Exp $' + ^ '$Header$' ! version_CVS - ^ '$Header: /cvs/stx/stx/libcomp/ParserFlags.st,v 1.124 2015-02-07 11:32:37 cg Exp $' + ^ '$Header$' ! !