1 # A buildsystem plugin for handling CMake based projects.
2 # It enforces outside-source building.
4 # Copyright: © 2008-2009 Modestas Vainius
7 package Debian::Debhelper::Buildsystem::cmake;
10 use Debian::Debhelper::Dh_Lib;
11 use base 'Debian::Debhelper::Buildsystem::makefile';
14 my ($self, $name, $val) = @_;
15 push @{$self->{cmake_flags}}, "-D$name=$val";
19 "support for building CMake based packages (outside-source tree only)"
23 return -e "CMakeLists.txt";
28 my $self=$cls->SUPER::new(@_);
29 # Enfore outside-source tree builds.
30 $self->enforce_outside_source_building();
31 $self->{cmake_flags} = [];
38 # Standard set of cmake flags
39 $self->_add_cmake_flag("CMAKE_INSTALL_PREFIX", "/usr");
40 $self->_add_cmake_flag("CMAKE_C_FLAGS", $ENV{CFLAGS}) if (exists $ENV{CFLAGS});
41 $self->_add_cmake_flag("CMAKE_CXX_FLAGS", $ENV{CXXFLAGS}) if (exists $ENV{CXXFLAGS});
42 $self->_add_cmake_flag("CMAKE_SKIP_RPATH", "ON");
43 $self->_add_cmake_flag("CMAKE_VERBOSE_MAKEFILE", "ON");
45 # XXX JEH why are we using a method and an object
46 # field to build up a simple one-time-use list?
48 # push @flags, ... if $foo
50 # XXX JEH again a non-sequitor get_topdir.
51 doit("cmake", $self->get_topdir(), @{$self->{cmake_flags}}, @_);