use 5.001; use ExtUtils::MakeMaker; # # WARNING: Do not try to "make dist" under Windows; it destroys the Upper/lower CaSe of some files. # # See lib/ExtUtils/MakeMaker.pm for details of how to influence # the contents of the Makefile that is written. # # Many thanks to Randy Kobes for helping me figure out how to make this work on multiple platforms # use Config; my $os_src = ($^O =~ /Win32/) ? 'win/win' : 'linux/linux'; my $o = $Config{obj_ext}; my $c='.c'; my($libdir)= ($^O =~ /Win32/) ? '' : 'linux-labjack/liblabjack'; my($drvdir)= ($^O =~ /Win32/) ? '' : 'linux-labjack/driver'; my($tstdir)= ($^O =~ /Win32/) ? '' : 'linux-labjack/test'; # my $libs = ($^O =~ /Win32/) ? 'ljackuw.lib' : '-L./linux-labjack/liblabjack -llabjack -lm'; my $libs = ($^O =~ /Win32/) ? 'ljackuw.lib' : "-L$libdir -llabjack -lm"; my $def = ($^O =~ /Win32/) ? '-DLJWIN' : '-DLJLIN'; # See LabJack.pm - controls which header: linux-labjack/liblabjack/ljackul.h my $inc = ($^O =~ /Win32/) ? '-I.' : "-I. -I$libdir"; my $obj = ($^O =~ /Win32/) ? '' : "$libdir/liblabjack.so"; my $lver = ($Config{osvers} =~/^2\.4/) ? 'linux-2.4' : 'linux-2.6'; sub MY::postamble { if($^O =~ /Win32/) { return ''; } else { return " $obj: $libdir/Makefile cd $drvdir/$lver && \$(MAKE) && echo `insmod labjack.o` && tail /var/log/messages cd $libdir && \$(MAKE) "; } } # MY::postamble WriteMakefile( NAME => 'Device::LabJack', VERSION_FROM => 'LabJack.pm', # finds $VERSION PREREQ_PM => {}, # e.g., Module::Name => 1.1 ($] >= 5.005 ? ## Add these new keywords supported since 5.005 (ABSTRACT_FROM => 'LabJack.pm', # retrieve abstract from module AUTHOR => 'Chris Drake ') : ()), LIBS => [$libs], # e.g., '-lm' DEFINE => $def, # e.g., '-DHAVE_SOMETHING' INC => $inc, # e.g., '-I. -I/usr/include/other' # Un-comment this if you add C files to link with later: # OBJECT => $obj, # link all the C files too 'depend' => {'LabJack.c' => $obj}, 'clean' => {FILES => "$obj $libdir/ljackul.o $drvdir/$lver/labjack.o $tstdir/list-all $tstdir/firmware-revision $tstdir/analog-outs"}, ); if (eval {require ExtUtils::Constant; 1}) { # If you edit these definitions to change the constants used by this module, # you will need to use the generated const-c.inc and const-xs.inc # files to replace their "fallback" counterparts before distributing your # changes. my @names = (qw()); ExtUtils::Constant::WriteConstants( NAME => 'Device::LabJack', NAMES => \@names, DEFAULT_TYPE => 'IV', C_FILE => 'const-c.inc', XS_FILE => 'const-xs.inc', ); } else { use File::Copy; use File::Spec; foreach my $file ('const-c.inc', 'const-xs.inc') { my $fallback = File::Spec->catfile('fallback', $file); copy ($fallback, $file) or die "Can't copy $fallback to $file: $!"; } } package MY; sub c_o { my $inherited = shift->SUPER::c_o(@_); if($^O =~ /darwin/) { # Mac # cc -Os -DLINUX -DOSX -isystem -I/usr/include -c -o sslv3.o sslv3.c $inherited =~ s{\$\*.c\n}{\$\*.c -DOSX -isystem -I/usr/include -o\$\*.o\n}mg; } elsif($^O =~ /Win32/) { # Microsoft $inherited =~ s{\$\*.c\n}{\$\*.c -Fo\$\*.obj\n}mg; } else { # linux/other unicies: Tell the Makefile to put the .o files with the .c ones $inherited =~ s{\$\*.c\n}{\$\*.c -o\$\*.o\n}mg; } return $inherited; }