diff options
Diffstat (limited to 'source4/build')
-rw-r--r-- | source4/build/m4/check_cc.m4 | 32 | ||||
-rw-r--r-- | source4/build/smb_build/TODO | 7 | ||||
-rwxr-xr-x | source4/build/smb_build/cflags.pm | 1 | ||||
-rw-r--r-- | source4/build/smb_build/config_mk.pm | 6 | ||||
-rw-r--r-- | source4/build/smb_build/input.pm | 8 | ||||
-rw-r--r-- | source4/build/smb_build/main.pl | 2 | ||||
-rw-r--r-- | source4/build/smb_build/output.pm | 9 |
7 files changed, 35 insertions, 30 deletions
diff --git a/source4/build/m4/check_cc.m4 b/source4/build/m4/check_cc.m4 index 219dc6ad37..33bb7050af 100644 --- a/source4/build/m4/check_cc.m4 +++ b/source4/build/m4/check_cc.m4 @@ -39,15 +39,11 @@ AC_CACHE_CHECK([that the C compiler can precompile header files],samba_cv_precom dnl Check whether the compiler can generate precompiled headers touch conftest.h if ${CC-cc} conftest.h 2> /dev/null && test -f conftest.h.gch; then - samba_cv_precompiled_headers=yes + precompiled_headers=yes else - samba_cv_precompiled_headers=no + precompiled_headers=no fi]) -PCH_AVAILABLE="#" -if test x"$samba_cv_precompiled_headers" = x"yes"; then - PCH_AVAILABLE="" -fi -AC_SUBST(PCH_AVAILABLE) +AC_SUBST(precompiled_headers) dnl Check if the C compiler understands volatile (it should, being ANSI). @@ -119,23 +115,19 @@ AC_TRY_RUN([#include "${srcdir-.}/build/tests/trivial.c"], # # Check if the compiler support ELF visibility for symbols # -if test x"$GCC" = x"yes" ; then - AX_CFLAGS_GCC_OPTION([-fvisibility=hidden], VISIBILITY_CFLAGS) -fi -if test -n "$VISIBILITY_CFLAGS"; then - OLD_CFLAGS="${CFLAGS}" - CFLAGS="${CFLAGS} ${VISIBILITY_CFLAGS}" - AC_MSG_CHECKING([whether the C compiler supports the visibility attribute]) - AC_TRY_RUN([ +visibility_attribute=no +AC_MSG_CHECKING([whether the C compiler supports the visibility attribute]) +AC_TRY_RUN([ #pragma GCC visibility push(hidden) void vis_foo1(void) {} __attribute__((visibility("default"))) void vis_foo2(void) {} #include "${srcdir-.}/build/tests/trivial.c" -], [AC_MSG_RESULT(yes); -AC_DEFINE(HAVE_VISIBILITY_ATTR,1,[Whether the C compiler supports the visibility attribute])], -[AC_MSG_RESULT(no);VISIBILITY_CFLAGS=""]) - CFLAGS="${OLD_CFLAGS}" -fi +], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_VISIBILITY_ATTR,1,[Whether the C compiler supports the visibility attribute]) + visibility_attribute=yes +], [AC_MSG_RESULT(no);]) +AC_SUBST(visibility_attribute) # # Check if the compiler can handle the options we selected by diff --git a/source4/build/smb_build/TODO b/source4/build/smb_build/TODO index 0657eb2bc8..ca057cd543 100644 --- a/source4/build/smb_build/TODO +++ b/source4/build/smb_build/TODO @@ -1,11 +1,6 @@ -- split up proto.h into headers with public or private prototypes. - Public prototypes can be marked with _PUBLIC_ in the source - - get rid of include/structs.h -- install Samba-specific headers in $INCLUDEDIR/samba-4.0. talloc.h, tdb.h and - ldb.h belong in $INCLUDEDIR +- get rid of include/structs.h - add register function to smbtorture - install shared modules - improve (un)install scripts (rewrite in perl?) - proper #include dependencies - determine dependencies from #include lines ? -- clean up include/smb.h diff --git a/source4/build/smb_build/cflags.pm b/source4/build/smb_build/cflags.pm index a19c0efa7b..2cf6453841 100755 --- a/source4/build/smb_build/cflags.pm +++ b/source4/build/smb_build/cflags.pm @@ -15,6 +15,7 @@ sub create_cflags($$) foreach my $key (values %{$CTX}) { next unless defined ($key->{OBJ_LIST}); next unless defined ($key->{EXTRA_CFLAGS}); + next if ($key->{EXTRA_CFLAGS} eq ""); foreach (@{$key->{OBJ_LIST}}) { print CFLAGS_TXT "$_: $key->{EXTRA_CFLAGS}\n"; diff --git a/source4/build/smb_build/config_mk.pm b/source4/build/smb_build/config_mk.pm index 56960f044c..d9e2cd31b7 100644 --- a/source4/build/smb_build/config_mk.pm +++ b/source4/build/smb_build/config_mk.pm @@ -35,6 +35,8 @@ my $section_types = { "PUBLIC_HEADERS" => "list", "EXTRA_CFLAGS" => "string", + + "DEFAULT_VISIBILITY" => "string" }, "MODULE" => { "SUBSYSTEM" => "string", @@ -92,7 +94,9 @@ my $section_types = { "PUBLIC_PROTO_HEADER" => "string", "PRIVATE_PROTO_HEADER" => "string", - "EXTRA_CFLAGS" => "string" + "EXTRA_CFLAGS" => "string", + + "DEFAULT_VISIBILITY" => "string" } }; diff --git a/source4/build/smb_build/input.pm b/source4/build/smb_build/input.pm index fbeeddcda1..0499d62565 100644 --- a/source4/build/smb_build/input.pm +++ b/source4/build/smb_build/input.pm @@ -154,6 +154,14 @@ sub check($$$$$) if (defined($part->{PRIVATE_PROTO_HEADER})) { $part->{NOPROTO} = "YES"; } + + unless (defined($part->{DEFAULT_VISIBILITY})) { + $part->{DEFAULT_VISIBILITY} = "default"; + } + + unless (defined($part->{EXTRA_CFLAGS})) { + $part->{EXTRA_CFLAGS} = ""; + } if (defined($part->{PUBLIC_PROTO_HEADER})) { $part->{NOPROTO} = "YES"; diff --git a/source4/build/smb_build/main.pl b/source4/build/smb_build/main.pl index a47899a3a5..83befe7c67 100644 --- a/source4/build/smb_build/main.pl +++ b/source4/build/smb_build/main.pl @@ -57,7 +57,7 @@ if (defined($ENV{"MODULE_OUTPUT_TYPE"})) { my $DEPEND = smb_build::input::check($INPUT, \%config::enabled, $subsystem_output_type, $library_output_type, $module_output_type); -my $OUTPUT = output::create_output($DEPEND); +my $OUTPUT = output::create_output($DEPEND, \%config::config); $config::config{SUBSYSTEM_OUTPUT_TYPE} = $subsystem_output_type; $config::config{LIBRARY_OUTPUT_TYPE} = $library_output_type; $config::config{MODULE_OUTPUT_TYPE} = $module_output_type; diff --git a/source4/build/smb_build/output.pm b/source4/build/smb_build/output.pm index 2fa8e0207a..6b3753aa9f 100644 --- a/source4/build/smb_build/output.pm +++ b/source4/build/smb_build/output.pm @@ -92,9 +92,9 @@ sub generate_binary($) $bin->{BINARY} = $bin->{NAME}; } -sub create_output($) +sub create_output($$) { - my $depend = shift; + my ($depend, $config) = @_; my $part; foreach $part (values %{$depend}) { @@ -111,6 +111,11 @@ sub create_output($) $part->{OUTPUT_TYPE} = "OBJLIST"; } + if ($part->{DEFAULT_VISIBILITY} ne "default" and + $config->{visibility_attribute} eq "yes") { + $part->{EXTRA_CFLAGS} .= " -fvisibility=$part->{DEFAULT_VISIBILITY}"; + } + generate_binary($part) if $part->{OUTPUT_TYPE} eq "BINARY"; generate_mergedobj($part) if $part->{OUTPUT_TYPE} eq "MERGEDOBJ"; generate_objlist($part) if $part->{OUTPUT_TYPE} eq "OBJLIST"; |