You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by nw...@apache.org on 2013/02/04 01:15:01 UTC
[lucy-commits] [2/2] git commit: refs/heads/master - Use charmonizer to provide
extra cflags in CFC
Updated Branches:
refs/heads/master 58726a9df -> 78715e114
Use charmonizer to provide extra cflags in CFC
Project: http://git-wip-us.apache.org/repos/asf/lucy/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/dca4a998
Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/dca4a998
Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/dca4a998
Branch: refs/heads/master
Commit: dca4a9985a720bc6992077f6b11171448d133415
Parents: 58726a9
Author: Nick Wellnhofer <we...@aevum.de>
Authored: Fri Jan 4 23:06:30 2013 +0100
Committer: Nick Wellnhofer <we...@aevum.de>
Committed: Mon Feb 4 01:03:35 2013 +0100
----------------------------------------------------------------------
clownfish/compiler/common/charmonizer.main | 31 +++++++++
.../compiler/perl/buildlib/Clownfish/CFC/Build.pm | 50 ++-------------
devel/bin/regen_charmonizer.pl | 2 +-
3 files changed, 39 insertions(+), 44 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucy/blob/dca4a998/clownfish/compiler/common/charmonizer.main
----------------------------------------------------------------------
diff --git a/clownfish/compiler/common/charmonizer.main b/clownfish/compiler/common/charmonizer.main
index 4bafac6..d083f57 100644
--- a/clownfish/compiler/common/charmonizer.main
+++ b/clownfish/compiler/common/charmonizer.main
@@ -23,6 +23,35 @@
#include "Charmonizer/Probe.h"
#include "Charmonizer/Probe/Integers.h"
+static void
+S_add_compiler_flags(struct chaz_CLIArgs *args) {
+ if (chaz_Probe_gcc_version_num()) {
+ if (getenv("LUCY_VALGRIND")) {
+ chaz_CC_add_extra_cflags("-fno-inline-functions");
+ }
+ else if (getenv("LUCY_DEBUG")) {
+ chaz_CC_add_extra_cflags(
+ "-DLUCY_DEBUG -pedantic -Wall -Wextra "
+ "-Wno-variadic-macros "
+ );
+ }
+
+ /* Tell GCC explicitly to run with maximum options. */
+ chaz_CC_add_extra_cflags("-std=gnu99 -D_GNU_SOURCE");
+ }
+ else if (chaz_Probe_compiler_is_msvc()) {
+ /* Compile as C++ under MSVC. */
+ chaz_CC_add_extra_cflags("-TP");
+
+ /* Thwart stupid warnings. */
+ chaz_CC_add_extra_cflags("-D_CRT_SECURE_NO_WARNINGS");
+ chaz_CC_add_extra_cflags("-D_SCL_SECURE_NO_WARNINGS");
+
+ /* Redefine 'for' to fix broken 'for' scoping under MSVC6. */
+ chaz_CC_add_extra_cflags("-Dfor=\"if(0);else for\"");
+ }
+}
+
int main(int argc, const char **argv) {
/* Initialize. */
{
@@ -32,9 +61,11 @@ int main(int argc, const char **argv) {
chaz_Probe_die_usage();
}
chaz_Probe_init(&args);
+ S_add_compiler_flags(&args);
}
/* Run probe modules. */
+ chaz_BuildEnv_run();
chaz_DirManip_run();
chaz_Headers_run();
chaz_Integers_run();
http://git-wip-us.apache.org/repos/asf/lucy/blob/dca4a998/clownfish/compiler/perl/buildlib/Clownfish/CFC/Build.pm
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/buildlib/Clownfish/CFC/Build.pm b/clownfish/compiler/perl/buildlib/Clownfish/CFC/Build.pm
index 7e2d3ce..a3381af 100644
--- a/clownfish/compiler/perl/buildlib/Clownfish/CFC/Build.pm
+++ b/clownfish/compiler/perl/buildlib/Clownfish/CFC/Build.pm
@@ -37,54 +37,11 @@ my $LEMON_DIR = catdir( $base_dir, 'lemon' );
my $LEMON_EXE_PATH = catfile( $LEMON_DIR, "lemon$Config{_exe}" );
my $CFC_SOURCE_DIR = catdir( updir(), 'src' );
-sub extra_ccflags {
- my $self = shift;
- my @extra_ccflags = qw( -DCFCPERL );
-
- my $gcc_version
- = $ENV{REAL_GCC_VERSION}
- || $self->config('gccversion')
- || undef;
- if ( defined $gcc_version ) {
- $gcc_version =~ /^(\d+(\.\d+))/
- or die "Invalid GCC version: $gcc_version";
- $gcc_version = $1;
-
- # Tell GCC explicitly to run with maximum options.
- push @extra_ccflags, qw( -std=gnu99 -D_GNU_SOURCE );
-
- if ( defined $ENV{LUCY_DEBUG} ) {
- push @extra_ccflags, qw(
- -DLUCY_DEBUG -DPERL_GCC_PEDANTIC -pedantic -Wall
- );
- push @extra_ccflags, qw( -Wextra )
- if $gcc_version >= 3.4; # correct
- push @extra_ccflags, qw( -Wno-variadic-macros )
- if $gcc_version > 3.4; # at least not on gcc 3.4
- }
-
- if ( $ENV{LUCY_VALGRIND} ) {
- push @extra_ccflags, qw( -fno-inline-functions );
- }
- }
-
- # Compile as C++ under MSVC.
- # Turn off stupid warnings, too.
- # Redefine 'for' to fix broken 'for' scoping under MSVC6.
- if ( $self->config('cc') =~ /^cl\b/ ) {
- push @extra_ccflags, qw( -TP -D_CRT_SECURE_NO_WARNINGS );
- push @extra_ccflags, '-Dfor="if(0);else for"';
- }
-
- return \@extra_ccflags;
-}
-
sub new {
my ( $class, %args ) = @_;
return $class->SUPER::new(
%args,
recursive_test_files => 1,
- extra_compiler_flags => __PACKAGE__->extra_ccflags,
charmonizer_params => {
charmonizer_c => $CHARMONIZER_C,
},
@@ -175,9 +132,16 @@ sub ACTION_lexers {
sub ACTION_code {
my $self = shift;
+
$self->dispatch('charmony');
$self->dispatch('ppport');
$self->dispatch('parsers');
+
+ $self->extra_compiler_flags( join ' ',
+ '-DCFCPERL',
+ $self->charmony("EXTRA_CFLAGS")
+ );
+
$self->SUPER::ACTION_code;
}
http://git-wip-us.apache.org/repos/asf/lucy/blob/dca4a998/devel/bin/regen_charmonizer.pl
----------------------------------------------------------------------
diff --git a/devel/bin/regen_charmonizer.pl b/devel/bin/regen_charmonizer.pl
index 9e76ec7..a8c76ad 100755
--- a/devel/bin/regen_charmonizer.pl
+++ b/devel/bin/regen_charmonizer.pl
@@ -29,7 +29,7 @@ my $MELD_EXE = catfile( $CHAZ_DIR, 'buildbin', 'meld.pl' );
# Clownfish compiler.
{
- my $probes = "DirManip,Headers,Integers,Strings";
+ my $probes = "BuildEnv,DirManip,Headers,Integers,Strings";
my $main = catfile(qw( clownfish compiler common charmonizer.main ));
my $out = $main;
$out =~ s/\.main/.c/ or die "no match";