From 20f31824619606210e0b1261e9aaea57184f8f36 Mon Sep 17 00:00:00 2001 From: David Oswald Date: Thu, 14 Aug 2014 15:06:38 -0600 Subject: [PATCH] Overcome deficiency in EU::CG where clang++ should be compiler for FreeBSD v10+ --- inc/ILCPPConfig/CompilerGuess.pm | 35 ++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/inc/ILCPPConfig/CompilerGuess.pm b/inc/ILCPPConfig/CompilerGuess.pm index b5ae311..ce5f4df 100644 --- a/inc/ILCPPConfig/CompilerGuess.pm +++ b/inc/ILCPPConfig/CompilerGuess.pm @@ -13,23 +13,32 @@ our $VERSION = '0.01'; # to Inline::CPP's Makefile.PL. sub guess_compiler { + my( $cc_guess, $libs_guess, $guesser, %configuration ); - $guesser = ExtUtils::CppGuess->new; - %configuration = $guesser->module_build_options; - if( $guesser->is_gcc ) { - $cc_guess = 'g++'; + if( $Config::Config{osname} eq 'freebsd' + && $Config::Config{osvers} =~ /^(\d+)/ + && $1 >= 10 + ){ + $cc_guess = 'clang++'; + $libs_guess = '-lc++'; } - elsif ( $guesser->is_msvc ) { - $cc_guess = 'cl'; + else { + $guesser = ExtUtils::CppGuess->new; + %configuration = $guesser->module_build_options; + if( $guesser->is_gcc ) { + $cc_guess = 'g++'; + } + elsif ( $guesser->is_msvc ) { + $cc_guess = 'cl'; + } + + $cc_guess .= $configuration{extra_compiler_flags}; + $libs_guess = $configuration{extra_linker_flags}; + + ( $cc_guess, $libs_guess ) + = map { _trim_whitespace($_) } ( $cc_guess, $libs_guess ); } - - $cc_guess .= $configuration{extra_compiler_flags}; - $libs_guess = $configuration{extra_linker_flags}; - - ( $cc_guess, $libs_guess ) - = map { _trim_whitespace($_) } ( $cc_guess, $libs_guess ); - return ( $cc_guess, $libs_guess ); }