blob: bb705916bb560dfb613b52b68e07c35e3eb9dcef [file] [log] [blame]
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
#
cmake_minimum_required(VERSION 2.8.8)
project(cordova-ubuntu)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}")
file (STRINGS "VERSION" CORDOVA_VERSION)
STRING(REGEX MATCH "^[0-9]+\\.[0-9]+" VERSION ${CORDOVA_VERSION})
STRING(REGEX MATCH "^[0-9]+" MAJOR_VERSION ${VERSION})
STRING(REGEX MATCH "[0-9]+$" MINOR_VERSION ${VERSION})
configure_file (
"${PROJECT_SOURCE_DIR}/qml/main.qml.in"
"${PROJECT_BINARY_DIR}/main.qml"
)
configure_file (
"${PROJECT_SOURCE_DIR}/qml/CordovaView.qml.in"
"${PROJECT_BINARY_DIR}/CordovaView.qml"
)
SET(CMAKE_CXX_FLAGS "-std=c++11 -fno-omit-frame-pointer -Wall -Wextra -DCORDOVA_UBUNTU_VERSION=\\\"${CORDOVA_VERSION}\\\" -DCORDOVA_UBUNTU_MAJOR_VERSION=${MAJOR_VERSION} -DCORDOVA_UBUNTU_MINOR_VERSION=${MINOR_VERSION} -I ${PROJECT_SOURCE_DIR}/src")
if(UBUNTU_TOUCH STREQUAL "1")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUBUNTU_TOUCH")
endif()
if(CMAKE_BUILD_TYPE STREQUAL "Release")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Os")
endif()
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O1 -g")
endif()
add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/qml
COMMAND mkdir -p ${PROJECT_BINARY_DIR}/qml
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/main.qml ${PROJECT_BINARY_DIR}/qml
DEPENDS ${PROJECT_BINARY_DIR}/main.qml
)
file(GLOB tmp CordovaUbuntu/*)
add_custom_command(
OUTPUT ${PROJECT_BINARY_DIR}/CordovaUbuntu.${VERSION}
COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/CordovaUbuntu ${PROJECT_BINARY_DIR}/CordovaUbuntu.${VERSION}
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/libcordovaubuntuplugin.so ${PROJECT_BINARY_DIR}/CordovaUbuntu.${VERSION}
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/CordovaView.qml ${PROJECT_BINARY_DIR}/CordovaUbuntu.${VERSION}
DEPENDS ${tmp} cordovaubuntuplugin ${PROJECT_BINARY_DIR}/CordovaView.qml
)
file(GLOB tmp xml/*)
add_custom_command(
OUTPUT ${PROJECT_BINARY_DIR}/xml
COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/xml ${PROJECT_BINARY_DIR}/xml
DEPENDS ${tmp} ${PROJECT_SOURCE_DIR}/xml
)
add_custom_target(copy_wwwqmlxml DEPENDS ${PROJECT_BINARY_DIR}/CordovaUbuntu.${VERSION} ${PROJECT_BINARY_DIR}/xml ${PROJECT_BINARY_DIR}/qml)
find_package(Qt5Widgets)
find_package(Qt5Core)
find_package(PkgConfig)
pkg_check_modules(PLUGIN_DEPS REQUIRED ${ADDITIONAL_DEPENDECIES})
include_directories(${PLUGIN_DEPS_INCLUDE_DIRS})
link_directories(${PLUGIN_DEPS_LIBRARY_DIRS})
add_executable(cordova-ubuntu
main.cpp
)
qt5_use_modules(cordova-ubuntu Widgets Quick Xml)
add_dependencies(cordova-ubuntu copy_wwwqmlxml)
ADD_LIBRARY(cordovaubuntuplugin SHARED
src/cplugin.cpp
src/cordova.cpp
src/qmlplugin.cpp
src/cordova_whitelist.cpp
src/cordova_config.cpp
src/cordova.h
src/cplugin.h
src/qmlplugin.h
src/cordova_whitelist.hpp
src/cordova_config.hpp
)
qt5_use_modules(cordovaubuntuplugin Widgets Quick Xml)
#TODO use subprojects
file(GLOB_RECURSE PLUGIN_SOURCES src/plugins/*.cpp)
file(GLOB_RECURSE PLUGIN_HEADERS src/plugins/*.h)
ADD_LIBRARY(coreplugins SHARED
src/coreplugins.cpp
${PLUGIN_SOURCES}
${PLUGIN_HEADERS}
)
qt5_use_modules(coreplugins Widgets Location Sensors Feedback SystemInfo Contacts Multimedia Quick MultimediaWidgets)
target_link_libraries(cordova-ubuntu cordovaubuntuplugin)
target_link_libraries(
coreplugins
cordovaubuntuplugin
${PLUGIN_DEPS_LIBRARIES}
${PLUGIN_DEPS_LDFLAGS}
${PLUGIN_DEPS_LDFLAGS_OTHER}
)
install (TARGETS cordova-ubuntu DESTINATION ${CMAKE_INSTALL_PREFIX})
install (TARGETS coreplugins DESTINATION ${CMAKE_INSTALL_PREFIX}/www)
install (FILES ${PROJECT_SOURCE_DIR}/www/cordova.js DESTINATION ${CMAKE_INSTALL_PREFIX}/www/)
install (DIRECTORY ${PROJECT_BINARY_DIR}/qml DESTINATION ${CMAKE_INSTALL_PREFIX})
install (DIRECTORY ${PROJECT_BINARY_DIR}/CordovaUbuntu.${VERSION} DESTINATION ${CMAKE_INSTALL_PREFIX})