Bypass Perl modules in build system

This change fixes the bug: https://llvm.org/bugs/show_bug.cgi?id=25975
by bypassing the perl module files which try to deduce system information.
These perl modules files don't offer useful information and are from the 
original build system. They can be removed after this change.

llvm-svn: 258843
This commit is contained in:
Jonathan Peyton 2016-01-26 19:44:31 +00:00
parent b46d0f9a71
commit 4c91ad1be7
7 changed files with 33 additions and 17 deletions

View File

@ -150,8 +150,8 @@ add_custom_target(libomp-test-execstack DEPENDS test-execstack/.success)
add_custom_command( add_custom_command(
OUTPUT test-execstack/.success OUTPUT test-execstack/.success
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/test-execstack COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/test-execstack
COMMAND ${PERL_EXECUTABLE} ${LIBOMP_TOOLS_DIR}/check-execstack.pl --os=${LIBOMP_PERL_SCRIPT_OS} COMMAND ${PERL_EXECUTABLE} ${LIBOMP_TOOLS_DIR}/check-execstack.pl
--arch=${LIBOMP_ARCH} ${LIBOMP_OUTPUT_DIRECTORY}/${LIBOMP_LIB_FILE} --arch=${LIBOMP_PERL_SCRIPT_ARCH} ${LIBOMP_OUTPUT_DIRECTORY}/${LIBOMP_LIB_FILE}
COMMAND ${CMAKE_COMMAND} -E touch test-execstack/.success COMMAND ${CMAKE_COMMAND} -E touch test-execstack/.success
DEPENDS omp DEPENDS omp
) )
@ -162,7 +162,7 @@ add_custom_command(
OUTPUT test-instr/.success OUTPUT test-instr/.success
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/test-instr COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/test-instr
COMMAND ${PERL_EXECUTABLE} ${LIBOMP_TOOLS_DIR}/check-instruction-set.pl --os=${LIBOMP_PERL_SCRIPT_OS} COMMAND ${PERL_EXECUTABLE} ${LIBOMP_TOOLS_DIR}/check-instruction-set.pl --os=${LIBOMP_PERL_SCRIPT_OS}
--arch=${LIBOMP_ARCH} --show --mic-arch=${LIBOMP_MIC_ARCH} ${LIBOMP_OUTPUT_DIRECTORY}/${LIBOMP_LIB_FILE} --arch=${LIBOMP_PERL_SCRIPT_ARCH} --show --mic-arch=${LIBOMP_MIC_ARCH} ${LIBOMP_OUTPUT_DIRECTORY}/${LIBOMP_LIB_FILE}
COMMAND ${CMAKE_COMMAND} -E touch test-instr/.success COMMAND ${CMAKE_COMMAND} -E touch test-instr/.success
DEPENDS omp ${LIBOMP_TOOLS_DIR}/check-instruction-set.pl DEPENDS omp ${LIBOMP_TOOLS_DIR}/check-instruction-set.pl
) )
@ -219,7 +219,7 @@ add_custom_command(
OUTPUT test-deps/.success OUTPUT test-deps/.success
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/test-deps COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/test-deps
COMMAND ${PERL_EXECUTABLE} ${LIBOMP_TOOLS_DIR}/check-depends.pl --os=${LIBOMP_PERL_SCRIPT_OS} COMMAND ${PERL_EXECUTABLE} ${LIBOMP_TOOLS_DIR}/check-depends.pl --os=${LIBOMP_PERL_SCRIPT_OS}
--arch=${LIBOMP_ARCH} --expected="${libomp_expected_library_deps}" ${LIBOMP_OUTPUT_DIRECTORY}/${LIBOMP_LIB_FILE} --arch=${LIBOMP_PERL_SCRIPT_ARCH} --expected="${libomp_expected_library_deps}" ${LIBOMP_OUTPUT_DIRECTORY}/${LIBOMP_LIB_FILE}
COMMAND ${CMAKE_COMMAND} -E touch test-deps/.success COMMAND ${CMAKE_COMMAND} -E touch test-deps/.success
DEPENDS omp ${LIBOMP_TOOLS_DIR}/check-depends.pl DEPENDS omp ${LIBOMP_TOOLS_DIR}/check-depends.pl
) )

View File

@ -144,8 +144,8 @@ endif()
# Find perl executable # Find perl executable
# Perl is used to create omp.h (and other headers) along with kmp_i18n_id.inc and kmp_i18n_default.inc # Perl is used to create omp.h (and other headers) along with kmp_i18n_id.inc and kmp_i18n_default.inc
find_package(Perl REQUIRED) find_package(Perl REQUIRED)
# The perl scripts take the --os= flag which expects a certain format for operating systems. Until the # The perl scripts take the --os=/--arch= flags which expect a certain format for operating systems and arch's.
# perl scripts are removed, the most portable way to handle this is to have all operating systems that # Until the perl scripts are removed, the most portable way to handle this is to have all operating systems that
# are neither Windows nor Mac (Most Unix flavors) be considered lin to the perl scripts. This is rooted # are neither Windows nor Mac (Most Unix flavors) be considered lin to the perl scripts. This is rooted
# in that all the Perl scripts check the operating system and will fail if it isn't "valid". This # in that all the Perl scripts check the operating system and will fail if it isn't "valid". This
# temporary solution lets us avoid trying to enumerate all the possible OS values inside the Perl modules. # temporary solution lets us avoid trying to enumerate all the possible OS values inside the Perl modules.
@ -156,6 +156,15 @@ elseif(APPLE)
else() else()
set(LIBOMP_PERL_SCRIPT_OS lin) set(LIBOMP_PERL_SCRIPT_OS lin)
endif() endif()
if(IA32)
set(LIBOMP_PERL_SCRIPT_ARCH 32)
elseif(MIC)
set(LIBOMP_PERL_SCRIPT_ARCH mic)
elseif(INTEL64)
set(LIBOMP_PERL_SCRIPT_ARCH 32e)
else()
set(LIBOMP_PERL_SCRIPT_ARCH ${LIBOMP_ARCH})
endif()
# Checking features # Checking features
# Check if version symbol assembler directives are supported # Check if version symbol assembler directives are supported

View File

@ -20,13 +20,13 @@ endif()
add_custom_command( add_custom_command(
OUTPUT kmp_i18n_id.inc OUTPUT kmp_i18n_id.inc
COMMAND ${PERL_EXECUTABLE} ${LIBOMP_TOOLS_DIR}/message-converter.pl --os=${LIBOMP_PERL_SCRIPT_OS} COMMAND ${PERL_EXECUTABLE} ${LIBOMP_TOOLS_DIR}/message-converter.pl --os=${LIBOMP_PERL_SCRIPT_OS}
--arch=${LIBOMP_ARCH} --prefix=kmp_i18n --enum=kmp_i18n_id.inc ${LIBOMP_SRC_DIR}/i18n/en_US.txt --prefix=kmp_i18n --enum=kmp_i18n_id.inc ${LIBOMP_SRC_DIR}/i18n/en_US.txt
DEPENDS ${LIBOMP_SRC_DIR}/i18n/en_US.txt ${LIBOMP_TOOLS_DIR}/message-converter.pl DEPENDS ${LIBOMP_SRC_DIR}/i18n/en_US.txt ${LIBOMP_TOOLS_DIR}/message-converter.pl
) )
add_custom_command( add_custom_command(
OUTPUT kmp_i18n_default.inc OUTPUT kmp_i18n_default.inc
COMMAND ${PERL_EXECUTABLE} ${LIBOMP_TOOLS_DIR}/message-converter.pl --os=${LIBOMP_PERL_SCRIPT_OS} COMMAND ${PERL_EXECUTABLE} ${LIBOMP_TOOLS_DIR}/message-converter.pl --os=${LIBOMP_PERL_SCRIPT_OS}
--arch=${LIBOMP_ARCH} --prefix=kmp_i18n --default=kmp_i18n_default.inc ${LIBOMP_SRC_DIR}/i18n/en_US.txt --prefix=kmp_i18n --default=kmp_i18n_default.inc ${LIBOMP_SRC_DIR}/i18n/en_US.txt
DEPENDS ${LIBOMP_SRC_DIR}/i18n/en_US.txt ${LIBOMP_TOOLS_DIR}/message-converter.pl DEPENDS ${LIBOMP_SRC_DIR}/i18n/en_US.txt ${LIBOMP_TOOLS_DIR}/message-converter.pl
) )

View File

@ -18,9 +18,10 @@ use FindBin;
use lib "$FindBin::Bin/lib"; use lib "$FindBin::Bin/lib";
use tools; use tools;
use Platform ":vars";
our $VERSION = "0.005"; our $VERSION = "0.005";
my $target_os;
my $target_arch;
# -------------------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------------------
# Ouput parse error. # Ouput parse error.
@ -331,7 +332,8 @@ my $expected;
my $bare; my $bare;
Getopt::Long::Configure( "permute" ); Getopt::Long::Configure( "permute" );
get_options( get_options(
Platform::target_options(), "os=s" => \$target_os,
"arch=s" => \$target_arch,
"bare" => \$bare, "bare" => \$bare,
"expected=s" => \$expected, "expected=s" => \$expected,
); );

View File

@ -18,9 +18,9 @@ use FindBin;
use lib "$FindBin::Bin/lib"; use lib "$FindBin::Bin/lib";
use tools; use tools;
use Platform ":vars";
our $VERSION = "0.002"; our $VERSION = "0.002";
my $target_arch;
sub execstack($) { sub execstack($) {
my ( $file ) = @_; my ( $file ) = @_;
@ -56,7 +56,7 @@ sub execstack($) {
}; # sub execstack }; # sub execstack
get_options( get_options(
Platform::target_options(), "arch=s" => \$target_arch,
); );
foreach my $file ( @ARGV ) { foreach my $file ( @ARGV ) {

View File

@ -17,10 +17,12 @@ use warnings;
use FindBin; use FindBin;
use lib "$FindBin::Bin/lib"; use lib "$FindBin::Bin/lib";
use Platform ":vars";
use tools; use tools;
our $VERSION = "0.004"; our $VERSION = "0.004";
my $target_os;
my $target_arch;
my $target_mic_arch;
my $hex = qr{[0-9a-f]}i; # hex digit. my $hex = qr{[0-9a-f]}i; # hex digit.
@ -182,17 +184,20 @@ sub check_file($;$$) {
my $max_instructions; my $max_instructions;
my $show_instructions; my $show_instructions;
get_options( get_options(
"os=s" => \$target_os,
"arch=s" => \$target_arch,
"mic-arch=s" => \$target_mic_arch,
"max-instructions=i" => \$max_instructions, "max-instructions=i" => \$max_instructions,
"show-instructions!" => \$show_instructions, "show-instructions!" => \$show_instructions,
Platform::target_options(),
); );
my $target_platform = $target_os . "_" . $target_arch;
if ( "$target_os" eq "lin" and "$target_mic_arch" eq "knf" ) { if ( "$target_os" eq "lin" and "$target_mic_arch" eq "knf" ) {
$mic_bad_re = qr{^(?:pause|[slm]fence|scatter|gather|cmpxchg16b|clevict[12])}i; $mic_bad_re = qr{^(?:pause|[slm]fence|scatter|gather|cmpxchg16b|clevict[12])}i;
} else { } else {
$mic_bad_re = qr{^(?:pause|[slm]fence|scatter|gather|cmov|cmpxchg16b|clevict[12])}i; $mic_bad_re = qr{^(?:pause|[slm]fence|scatter|gather|cmov|cmpxchg16b|clevict[12])}i;
}; };
if ( 0 ) { if ( 0 ) {
} elsif ( $target_os eq "lin" and $target_arch eq "mic" ) { } elsif ( $target_platform eq "lin_mic" ) {
*bad_instr = \*bad_mic_instr; *bad_instr = \*bad_mic_instr;
*bad_fmt = \*bad_mic_fmt; *bad_fmt = \*bad_mic_fmt;
} elsif ( $target_platform eq "lin_32" ) { } elsif ( $target_platform eq "lin_32" ) {

View File

@ -21,11 +21,11 @@ use FindBin;
use lib "$FindBin::Bin/lib"; use lib "$FindBin::Bin/lib";
use tools; use tools;
use Platform ":vars";
our $VERSION = "0.04"; our $VERSION = "0.04";
my $escape = qr{%}; my $escape = qr{%};
my $placeholder = qr{(\d)\$(s|l?[du])}; my $placeholder = qr{(\d)\$(s|l?[du])};
my $target_os;
my $sections = my $sections =
{ {
@ -467,7 +467,7 @@ my $message_file;
my $id; my $id;
my $prefix = ""; my $prefix = "";
get_options( get_options(
Platform::target_options(), "os=s" => \$target_os,
"enum-file=s" => \$enum_file, "enum-file=s" => \$enum_file,
"signature-file=s" => \$signature_file, "signature-file=s" => \$signature_file,
"default-file=s" => \$default_file, "default-file=s" => \$default_file,