[Beignet] [PATCH] Use the default clang build options defined in the CMakeList.txt.
Zhigang Gong
zhigang.gong at linux.intel.com
Mon Jul 29 20:55:53 PDT 2013
Ping for comments especially to test it with LLVM 3.2/3.1.
Thanks.
On Wed, Jul 24, 2013 at 02:46:24PM +0800, Zhigang Gong wrote:
> Thus we can make sure that the default clang build options we use
> to create the pch file at build time are the same as we build user
> kernels.
>
> Signed-off-by: Zhigang Gong <zhigang.gong at linux.intel.com>
> ---
> backend/src/CMakeLists.txt | 16 ++++++++++------
> backend/src/GBEConfig.h.in | 1 +
> backend/src/backend/program.cpp | 18 +-----------------
> 3 files changed, 12 insertions(+), 23 deletions(-)
>
> diff --git a/backend/src/CMakeLists.txt b/backend/src/CMakeLists.txt
> index b7b47ae..757c3bf 100644
> --- a/backend/src/CMakeLists.txt
> +++ b/backend/src/CMakeLists.txt
> @@ -34,24 +34,28 @@ add_custom_command(
> COMMAND ${ocl_gen_blob_cmd} ${ocl_stdlib_tmpl_file} ${ocl_blob_file}
> DEPENDS ${ocl_gen_blob_cmd} ${ocl_stdlib_tmpl_file} ${ocl_vector_file} ${ocl_as_file} ${ocl_convert_file})
>
> -
> set (pch_object ${ocl_blob_file}.pch)
> +
> +set (clang_default_opt -cc1 -x cl -fno-builtin)
> +
> # generate pch object
> if (LLVM_VERSION_NODOT VERSION_GREATER 32)
> - set (clang_cmd -cc1 -x cl -triple spir -ffp-contract=off -emit-pch)
> + set (clang_default_opt ${clang_default_opt} -triple spir -ffp-contract=off)
> else (LLVM_VERSION_NODOT VERSION_GREATER 32)
> if (LLVM_VERSION_NODOT VERSION_GREATER 31)
> - set (clang_cmd -cc1 -x cl -triple nvptx -ffp-contract=off -emit-pch)
> + set (clang_default_opt ${clang_default_opt} -triple nvptx -ffp-contract=off)
> else (LLVM_VERSION_NODOT VERSION_GREATER 31)
> - set (clang_cmd -cc1 -x cl -triple ptx32 -emit-pch)
> + set (clang_default_opt ${clang_default_opt} -triple ptx32)
> endif (LLVM_VERSION_NODOT VERSION_GREATER 31)
> endif (LLVM_VERSION_NODOT VERSION_GREATER 32)
> -set (clang_cmd ${clang_cmd} -fno-builtin)
> +
> +string (REPLACE ";" " " CLANG_DEFAULT_OPT " ${clang_default_opt} ")
> +set (clang_pch_opt ${clang_default_opt} -emit-pch)
>
> add_custom_command(
> OUTPUT ${pch_object}
> COMMAND rm -f ${pch_object}
> - COMMAND clang ${clang_cmd} ${ocl_blob_file} -o ${pch_object}
> + COMMAND clang ${clang_pch_opt} ${ocl_blob_file} -o ${pch_object}
> DEPENDS ${ocl_blob_file}
> )
>
> diff --git a/backend/src/GBEConfig.h.in b/backend/src/GBEConfig.h.in
> index 74bef3f..de36474 100644
> --- a/backend/src/GBEConfig.h.in
> +++ b/backend/src/GBEConfig.h.in
> @@ -2,3 +2,4 @@
> #define LIBGBE_VERSION_MAJOR @LIBGBE_VERSION_MAJOR@
> #define LIBGBE_VERSION_MINOR @LIBGBE_VERSION_MINOR@
> #define PCH_OBJECT_DIR "@PCH_OBJECT_DIR@"
> +#define CLANG_DEFAULT_OPT "@CLANG_DEFAULT_OPT@"
> diff --git a/backend/src/backend/program.cpp b/backend/src/backend/program.cpp
> index 20bdcec..7880096 100644
> --- a/backend/src/backend/program.cpp
> +++ b/backend/src/backend/program.cpp
> @@ -141,6 +141,7 @@ namespace gbe {
> all support options, refer to clang/include/clang/Driver/Options.inc
> Maybe can filter these options to avoid warning
> */
> + options += CLANG_DEFAULT_OPT;
> while (end != std::string::npos) {
> end = options.find(' ', start);
> std::string str = options.substr(start, end - start);
> @@ -153,33 +154,16 @@ namespace gbe {
> }
>
> args.push_back("-emit-llvm");
> - // XXX we haven't implement those builtin functions,
> - // so disable it currently.
> - args.push_back("-fno-builtin");
> if(bOpt) args.push_back("-O3");
> -#if LLVM_VERSION_MINOR <= 2
> - args.push_back("-triple");
> - args.push_back("nvptx");
> -#else
> - args.push_back("-x");
> - args.push_back("cl");
> - args.push_back("-triple");
> - args.push_back("spir");
> -#endif /* LLVM_VERSION_MINOR <= 2 */
> args.push_back(input);
>
> // The compiler invocation needs a DiagnosticsEngine so it can report problems
> #if LLVM_VERSION_MINOR <= 1
> - args.push_back("-triple");
> - args.push_back("ptx32");
> -
> clang::TextDiagnosticPrinter *DiagClient =
> new clang::TextDiagnosticPrinter(llvm::errs(), clang::DiagnosticOptions());
> llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs> DiagID(new clang::DiagnosticIDs());
> clang::DiagnosticsEngine Diags(DiagID, DiagClient);
> #else
> - args.push_back("-ffp-contract=off");
> -
> llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions> DiagOpts = new clang::DiagnosticOptions();
> clang::TextDiagnosticPrinter *DiagClient =
> new clang::TextDiagnosticPrinter(llvm::errs(), &*DiagOpts);
> --
> 1.7.9.5
>
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet
More information about the Beignet
mailing list