File: MacOSX_wx_config.pm

package info (click to toggle)
libalien-wxwidgets-perl 0.69%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 1,220 kB
  • sloc: perl: 5,365; makefile: 19
file content (131 lines) | stat: -rw-r--r-- 3,940 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package My::Build::MacOSX_wx_config;

use strict;
use base qw(My::Build::Any_wx_config);

use Config;

sub awx_wx_config_data {
    my $self = shift;
    return $self->{awx_data} if $self->{awx_data};
    my %data = ( linkflags => '', %{$self->SUPER::awx_wx_config_data} );

    # MakeMaker does not like some options
    $data{libs} =~ s{-framework\s+\w+}{}g;
    $data{libs} =~ s{-isysroot\s+\S+}{}g;
    $data{libs} =~ s{-L/usr/local/lib\s}{}g;

    $data{libs} =~ s{\s(-arch\s+\w+)}
                    {$data{linkflags} .= " $1 ";
                     $data{cxxflags} .= " $1 ";
                     ' '}eg;

    $data{cxx} =~ s{-isysroot\s+\S+}{}g;
    $data{ld} = $data{cxx};
    $data{cxxflags} .= ' -UWX_PRECOMP ';

    $self->{awx_data} = \%data;
}

sub awx_configure {
    my $self = shift;
    my %config = $self->SUPER::awx_configure;

    $config{link_flags} .= $self->wx_config( 'linkflags' );

    return %config;
}

sub wxwidgets_configure_extra_flags {
    my( $self ) = @_;
    my $extra_flags = $self->notes( 'extraflags' );
    
    if($extra_flags) {
	# user has given overrides
    	if( $self->notes( 'graphicscontext' ) ) {
			$extra_flags .= ' --enable-graphics_ctx';
    	}
        return $extra_flags;
    }

    my $darwinver = 100;
    if(`uname -r` =~ /^(\d+)\./) {
        $darwinver = $1;
    }
    
    # we are determining extra flags
    $extra_flags = '';
    
    # Simplified build
    
    if(  $darwinver <= 9  ) {  # Tiger && Leopard    
        print "Forcing wxWidgets build to 32 bit\n";
		        $extra_flags .= ' ' . join ' ', map { qq{$_="-arch i386"} }
		                                     qw(CFLAGS CXXFLAGS LDFLAGS
                                        OBJCFLAGS OBJCXXFLAGS);
    } elsif(  $darwinver == 10  ) { # Snow Leopard
        # just find the right SDK and accept users arch flags
        my $sdk1 = qq(/Developer/SDKs/MacOSX10.6.sdk);
		my $sdk2 = qq(/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk);
        my $macossdk = ( -d $sdk2 ) ? $sdk2 : $sdk1;
    	if( -d $macossdk ) {
            $extra_flags .= qq( --with-macosx-version-min=10.6 --with-macosx-sdk=${macossdk});
        }
    } else {
        # Lion and later - accept default SDK and set min version 10.7
        $extra_flags .= qq( --with-macosx-version-min=10.7);
    }

    
    $extra_flags .= ' --enable-graphics_ctx';
    
    # now check for flags needed for different xcode versions
    {
        my $xcodestring = qx(xcodebuild -version) || '';
	    if ($xcodestring =~ /Xcode\s+(\d+)\.(\d+)/ ) {
	        my $majorxcodever = $1;
	        my $minorxcodever = $2;
            
            if (( $majorxcodever > 4 ) || ( $majorxcodever == 4 && $minorxcodever > 3 )) {
                $extra_flags .= q( CC=clang CXX=clang++ CXXFLAGS="-stdlib=libc++ -std=c++11" OBJCXXFLAGS="-stdlib=libc++ -std=c++11" LDFLAGS=-stdlib=libc++);
            }
        }
    }
    
    return $extra_flags;
}

sub awx_build_toolkit {
    my $self = shift;
    # use Cocoa for OS X wxWidgets >= 2.9
    # we don't support lower than 2.8 anymore
    if( $self->awx_version_type == 2) {
    	return 'mac';
    } else {
        return 'osx_cocoa';
    }
}

sub awx_dlext { 'dylib' }

sub build_wxwidgets {
    my( $self ) = @_;

    # can't build wxWidgets 2.8.x with 64 bit Perl
    if(    $Config{ptrsize} == 8
        && $self->awx_version_type == 2 ) {
        print <<EOT;
=======================================================================
The 2.8.x wxWidgets for OS X does not support 64-bit. In order to build
wxPerl you will need to either recompile Perl as a 32-bit binary or (if
using the Apple-provided Perl) force it to run in 32-bit mode (see "man
perl").  Alpha 64-bit wx for OS X is in 2.9.x, but untested in wxPerl.
=======================================================================
EOT
        exit 1;
    }

    $self->SUPER::build_wxwidgets;
}

1;