# The Craftr build system
# Copyright (C) 2016  Niklas Rosenstein
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

from craftr.loaders import external_archive

if not options.directory:
  if not options.version.startswith('release-') and '.' in options.version:
    options.version = 'release-' + options.version
  options.directory = external_archive("https://github.com/google/googletest/archive/{}.zip".format(options.version))

__all__ = ['googletest']

googletest = Framework(
  include = [
    path.join(options.directory, 'googlemock/include'),
    path.join(options.directory, 'googletest/include')
  ],
  libs = []
)

if platform.name != 'win':
  googletest['libs'].append('pthread')


load_module('craftr.lang.cxx.*')

library = cxx_library(
  link_style = 'static',
  inputs = cpp_compile(
    sources = [
      path.join(options.directory, 'googlemock/src/gmock-all.cc'),
      path.join(options.directory, 'googletest/src/gtest-all.cc')
    ],
    include = [path.join(options.directory, 'googlemock'), path.join(options.directory, 'googletest')],
    frameworks = [googletest]
  ),
  output = 'gtest'
)

cxx_extend_framework(googletest, library)
