# 
#   Copyright 2016 RIFT.IO Inc
#
#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.
#
# Author(s): Tim Mortsolf
# Creation Date: 2014/05/22
# 

cmake_minimum_required(VERSION 2.8)

set(PKG_NAME rwcal)
set(PKG_VERSION 1.0)
set(PKG_RELEASE 1)
set(PKG_LONG_NAME ${PKG_NAME}-${PKG_VERSION})

set(subdirs src plugins test)
rift_add_subdirs(SUBDIR_LIST ${subdirs})

install(FILES include/riftware/rwcal-api.h
  DESTINATION usr/include/riftware
  COMPONENT ${PKG_LONG_NAME})

install(
    PROGRAMS
    etc/userdata-template
  DESTINATION etc
  COMPONENT ${PKG_LONG_NAME}
  )


rift_python_install_tree(
  FILES
    rift/cal/client.py
    rift/cal/server/__init__.py
    rift/cal/server/app.py
    rift/cal/server/operations.py
    rift/cal/server/server.py
    rift/cal/utils.py    
    rift/cal/rwcal_status.py
  PYTHON3_ONLY
  COMPONENT rwcal-1.0)

install(
  PROGRAMS
    rift/cal/cloudsim
  DESTINATION usr/bin
  COMPONENT rwcal-1.0
  )

