From f6457b3d5408d5afe9a4de96d7623f1aa9ec39c4 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 6 Mar 2006 15:34:29 +0000 Subject: r13867: Wrap the cflags.sh hack in the build system. You can now simply set subsystem-specific compiler flags in the .mk files. (This used to be commit d512b147e8dda39016faf74a50a9d85bfc23a2eb) --- source4/build/smb_build/README.txt | 3 ++- source4/build/smb_build/cflags.pm | 27 +++++++++++++++++++++++++++ source4/build/smb_build/config_mk.pm | 14 +++++++++++--- source4/build/smb_build/main.pl | 3 +++ source4/build/smb_build/makefile.pm | 4 ++-- source4/extra_cflags.txt | 4 ---- source4/heimdal_build/config.mk | 17 +++++++++++++++++ source4/script/cflags.pl | 26 ++++++++++++++++++++++++++ source4/script/cflags.sh | 28 ---------------------------- 9 files changed, 88 insertions(+), 38 deletions(-) create mode 100755 source4/build/smb_build/cflags.pm delete mode 100644 source4/extra_cflags.txt create mode 100755 source4/script/cflags.pl delete mode 100755 source4/script/cflags.sh (limited to 'source4') diff --git a/source4/build/smb_build/README.txt b/source4/build/smb_build/README.txt index 44aeffdad2..a5e4db99e0 100644 --- a/source4/build/smb_build/README.txt +++ b/source4/build/smb_build/README.txt @@ -50,7 +50,8 @@ input.pm - Input validation main.pm - Main makefile.pm - Makefile generation output.pm - Dependency calculation -smb_build_h.pm - smb_build.h generation +header.pm - build.h generation +cflags.pm - Generates cflags.txt for file-specific cflags Layout ------- diff --git a/source4/build/smb_build/cflags.pm b/source4/build/smb_build/cflags.pm new file mode 100755 index 0000000000..a19c0efa7b --- /dev/null +++ b/source4/build/smb_build/cflags.pm @@ -0,0 +1,27 @@ +# SMB Build System +# +# Copyright (C) Jelmer Vernooij 2006 +# Released under the GNU GPL + +package cflags; +use strict; + +sub create_cflags($$) +{ + my ($CTX, $file) = @_; + + open(CFLAGS_TXT,">$file") || die ("Can't open `$file'\n"); + + foreach my $key (values %{$CTX}) { + next unless defined ($key->{OBJ_LIST}); + next unless defined ($key->{EXTRA_CFLAGS}); + + foreach (@{$key->{OBJ_LIST}}) { + print CFLAGS_TXT "$_: $key->{EXTRA_CFLAGS}\n"; + } + } + close(CFLAGS_TXT); + + print __FILE__.": creating $file\n"; +} +1; diff --git a/source4/build/smb_build/config_mk.pm b/source4/build/smb_build/config_mk.pm index c7ff8648eb..56960f044c 100644 --- a/source4/build/smb_build/config_mk.pm +++ b/source4/build/smb_build/config_mk.pm @@ -33,6 +33,8 @@ my $section_types = { "PRIVATE_PROTO_HEADER" => "string", "PUBLIC_HEADERS" => "list", + + "EXTRA_CFLAGS" => "string", }, "MODULE" => { "SUBSYSTEM" => "string", @@ -48,7 +50,9 @@ my $section_types = { "OUTPUT_TYPE" => "string", "MANPAGE" => "string", - "PRIVATE_PROTO_HEADER" => "string" + "PRIVATE_PROTO_HEADER" => "string", + + "EXTRA_CFLAGS" => "string" }, "BINARY" => { "OBJ_FILES" => "list", @@ -61,7 +65,9 @@ my $section_types = { "MANPAGE" => "string", "INSTALLDIR" => "string", "PRIVATE_PROTO_HEADER" => "string", - "PUBLIC_HEADERS" => "string" + "PUBLIC_HEADERS" => "string", + + "EXTRA_CFLAGS" => "string" }, "LIBRARY" => { "MAJOR_VERSION" => "string", @@ -84,7 +90,9 @@ my $section_types = { "PUBLIC_HEADERS" => "list", "PUBLIC_PROTO_HEADER" => "string", - "PRIVATE_PROTO_HEADER" => "string" + "PRIVATE_PROTO_HEADER" => "string", + + "EXTRA_CFLAGS" => "string" } }; diff --git a/source4/build/smb_build/main.pl b/source4/build/smb_build/main.pl index bec1be791c..a47899a3a5 100644 --- a/source4/build/smb_build/main.pl +++ b/source4/build/smb_build/main.pl @@ -11,6 +11,7 @@ use smb_build::input; use smb_build::config_mk; use smb_build::output; use smb_build::env; +use smb_build::cflags; use config; use strict; @@ -81,4 +82,6 @@ foreach my $key (values %$OUTPUT) { $mkenv->write("Makefile"); header::create_smb_build_h($OUTPUT, "include/build.h"); +cflags::create_cflags($OUTPUT, "extra_cflags.txt"); + 1; diff --git a/source4/build/smb_build/makefile.pm b/source4/build/smb_build/makefile.pm index 4280efa949..b7c3a27383 100644 --- a/source4/build/smb_build/makefile.pm +++ b/source4/build/smb_build/makefile.pm @@ -186,7 +186,7 @@ sub _prepare_std_CC_rule($$$$$$) # $comment .$src.$dst: \@echo $message \$\*.$src - \@\$(CC) `script/cflags.sh \$\@` \$(CFLAGS) $flags -c \$\*.$src -o \$\@ + \@\$(CC) `script/cflags.pl \$\@` \$(CFLAGS) $flags -c \$\*.$src -o \$\@ __EOD__ ); if ($self->{config}->{BROKEN_CC} eq "yes") { @@ -204,7 +204,7 @@ sub _prepare_hostcc_rule($) $self->output(<< "__EOD__" .c.ho: \@echo Compiling \$\*.c with host compiler - \@\$(HOSTCC) `script/cflags.sh \$\@` \$(CFLAGS) -c \$\*.c -o \$\@ + \@\$(HOSTCC) `script/cflags.pl \$\@` \$(CFLAGS) -c \$\*.c -o \$\@ __EOD__ ); if ($self->{config}->{BROKEN_CC} eq "yes") { diff --git a/source4/extra_cflags.txt b/source4/extra_cflags.txt deleted file mode 100644 index 16b33b556d..0000000000 --- a/source4/extra_cflags.txt +++ /dev/null @@ -1,4 +0,0 @@ -heimdal -Iheimdal_build -Iheimdal/kdc -Iheimdal/lib/des -Iheimdal/lib/roken -DNO_PRINTF_ATTRIBUTE -heimdal/lib/com_err -Iheimdal_build -Iheimdal/lib/com_err -Iheimdal/kdc -Iheimdal/lib/des -Iheimdal/lib/roken -DNO_PRINTF_ATTRIBUTE -heimdal/lib/asn1 -Iheimdal_build -Iheimdal/lib/asn1 -Iheimdal/kdc -Iheimdal/lib/des -Iheimdal/lib/roken -DNO_PRINTF_ATTRIBUTE -heimdal_build/replace.o -Iheimdal_build -Iheimdal/lib/roken diff --git a/source4/heimdal_build/config.mk b/source4/heimdal_build/config.mk index a9d49f6082..9c7b593b47 100644 --- a/source4/heimdal_build/config.mk +++ b/source4/heimdal_build/config.mk @@ -186,6 +186,9 @@ NOPROTO = YES ####################### # Start SUBSYSTEM HEIMDAL_ASN1 [SUBSYSTEM::HEIMDAL_ASN1] +EXTRA_CFLAGS = -Iheimdal_build -Iheimdal/lib/asn1 \ + -Iheimdal/kdc -Iheimdal/lib/des \ + -Iheimdal/lib/roken -DNO_PRINTF_ATTRIBUTE OBJ_FILES = \ ../heimdal/lib/asn1/der_get.o \ ../heimdal/lib/asn1/der_put.o \ @@ -261,6 +264,9 @@ NOPROTO = YES ####################### # Start SUBSYSTEM HEIMDAL_DES [SUBSYSTEM::HEIMDAL_DES] +EXTRA_CFLAGS = -Iheimdal_build -Iheimdal/kdc \ + -Iheimdal/lib/des -Iheimdal/lib/roken \ + -DNO_PRINTF_ATTRIBUTE OBJ_FILES = \ ../heimdal/lib/des/aes.o \ ../heimdal/lib/des/des.o \ @@ -304,6 +310,8 @@ NOPROTO = YES ####################### # Start SUBSYSTEM HEIMDAL_ROKEN [SUBSYSTEM::HEIMDAL_ROKEN] +EXTRA_CFLAGS = -Iheimdal_build -Iheimdal/kdc \ + -Iheimdal/lib/des -Iheimdal/lib/roken -DNO_PRINTF_ATTRIBUTE OBJ_FILES = \ ../heimdal/lib/roken/base64.o \ ../heimdal/lib/roken/bswap.o \ @@ -336,6 +344,9 @@ NOPROTO = YES ####################### # Start SUBSYSTEM HEIMDAL_VERS [SUBSYSTEM::HEIMDAL_VERS] +EXTRA_CFLAGS = -Iheimdal_build -Iheimdal/kdc \ + -Iheimdal/lib/des -Iheimdal/lib/roken \ + -DNO_PRINTF_ATTRIBUTE OBJ_FILES = ../heimdal/lib/vers/print_version.o NOPROTO = YES # End SUBSYSTEM HEIMDAL_VERS @@ -352,6 +363,9 @@ REQUIRED_SUBSYSTEMS = LIBNETIF ####################### # Start SUBSYSTEM HEIMDAL_COM_ERR [SUBSYSTEM::HEIMDAL_COM_ERR] +EXTRA_CFLAGS = -Iheimdal_build -Iheimdal/lib/com_err \ + -Iheimdal/kdc -Iheimdal/lib/des \ + -Iheimdal/lib/roken -DNO_PRINTF_ATTRIBUTE OBJ_FILES = \ ../heimdal/lib/com_err/com_err.o \ ../heimdal/lib/com_err/error.o @@ -362,6 +376,9 @@ NOPROTO = YES ####################### # Start BINARY asn1_compile [BINARY::asn1_compile] +EXTRA_CFLAGS = -Iheimdal_build -Iheimdal/lib/asn1 \ + -Iheimdal/kdc -Iheimdal/lib/des \ + -Iheimdal/lib/roken -DNO_PRINTF_ATTRIBUTE NOPROTO = YES OBJ_FILES = \ ../heimdal/lib/asn1/main.ho \ diff --git a/source4/script/cflags.pl b/source4/script/cflags.pl new file mode 100755 index 0000000000..6dfaa83c0b --- /dev/null +++ b/source4/script/cflags.pl @@ -0,0 +1,26 @@ +#!/usr/bin/perl + +# This is a hack to allow per target cflags. It isn't very elegant, but it +# is the most portable idea we have come up with yet +# tridge@samba.org, July 2005 +# jelmer@samba.org, March 2006 +use strict; +use warnings; + +my $target = shift; + +sub check_flags($) +{ + my ($name)=@_; + open (IN, "extra_cflags.txt"); + while ( =~ /^([^:]+): (.*)$/) { + next unless ($1 eq $target); + print "$2 "; + } + close(IN); + print "\n"; +} + +check_flags($target); + +exit 0; diff --git a/source4/script/cflags.sh b/source4/script/cflags.sh deleted file mode 100755 index dc7bd794c6..0000000000 --- a/source4/script/cflags.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh - -# This is a hack to allow per target cflags. It isn't very elegant, but it -# is the most portable idea we have come up with yet -# tridge@samba.org, July 2005 - -TARGET=$1 - -check_flags() -{ - NAME=$1 - ( - while read tag flags; do - if [ "$tag" = "$NAME" ] || [ "./$tag" = "$NAME" ]; then - echo "$flags" - exit 0; - fi - done - ) < extra_cflags.txt -} - - -NAME=$TARGET -while [ "$NAME" != "." ]; do - check_flags "$NAME" - NAME=`dirname $NAME` -done -exit 0; -- cgit