This is an automated email from the ASF dual-hosted git repository. pnoltes pushed a commit to branch feature/cxx in repository https://gitbox.apache.org/repos/asf/celix.git
commit 4eebbdc5df936f8bc8208918b14bd05defa76429 Author: Pepijn Noltes <pepijnnol...@gmail.com> AuthorDate: Mon Jan 7 20:48:00 2019 +0100 CELIX-438: Convert libzip external project setup to a FindLIBZIP cmake file --- .travis.yml | 2 - CMakeLists.txt | 2 +- bundles/shell/cxx_shell/src/QueryCommand.cc | 2 +- cmake/Modules/FindLIBZIP.cmake | 52 ++++++++++++++++++++++ examples/celix-examples/CMakeLists.txt | 5 ++- .../cxx_shell_example}/CMakeLists.txt | 21 ++------- .../celix-examples/cxx_shell_example/src/main.cc | 34 ++++++++++++++ libs/dfi/CMakeLists.txt | 2 +- libs/framework_cxx/CMakeLists.txt | 2 + 9 files changed, 98 insertions(+), 24 deletions(-) diff --git a/.travis.yml b/.travis.yml index dafc512..ead5d89 100644 --- a/.travis.yml +++ b/.travis.yml @@ -81,8 +81,6 @@ script: - if [ "$CC" = "gcc" ] && [ "$TRAVIS_OS_NAME" = "linux" ]; then export BUILD_OPTS="${BUILD_OPTS} -DENABLE_CODE_COVERAGE=ON"; fi - if [ "$TRAVIS_OS_NAME" = "linux" ] && [ -z "$ANDROID" ]; then cmake -DCMAKE_BUILD_TYPE=Debug ${BUILD_OPTIONS} ${BUILD_OPTIONS_LINUX} -DBUILD_FRAMEWORK_TESTS=ON -DBUILD_UTILS-TESTS=ON -DENABLE_TESTING=ON ${BUILD_OPTS} -DCMAKE_INSTALL_PREFIX=../install ..; fi - if [ "$TRAVIS_OS_NAME" = "osx" ]; then cmake -DCMAKE_BUILD_TYPE=Debug ${BUILD_OPTIONS} ${BUILD_OPTIONS_OSX} -DBUILD_FRAMEWORK_TESTS=ON -DBUILD_UTILS-TESTS=ON -DENABLE_TESTING=ON -DFFI_LIBRARY=/usr/local/opt/libffi/lib/libffi.dylib ${BUILD_OPTS} -DCMAKE_INSTALL_PREFIX=../install ..; fi - - if [ -z "$ANDROID" ]; then make all && make deploy && sudo make install; else cd .. && docker build -t celixandroid - < misc/Dockerfile.Android ; fi - - if [ -z "$ANDROID" ]; then export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH:`pwd`/utils:`pwd`/framework:`pwd`/dfi && make test ARGS="-V"; else docker run celixandroid; fi after_success: - if [ "$CC" = "gcc" ] && [ "$TRAVIS_OS_NAME" = "linux" ]; then diff --git a/CMakeLists.txt b/CMakeLists.txt index 669cc43..b728c86 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -59,7 +59,7 @@ if (ENABLE_TESTING) #include(cmake/celix_project/AddCppUTest.cmake) endif () include(cmake/celix_project/AddGLog.cmake) -include(cmake/celix_project/AddLibzip.cmake) +#include(cmake/celix_project/AddLibzip.cmake) # Default bundle version set(DEFAULT_VERSION 1.0.0) diff --git a/bundles/shell/cxx_shell/src/QueryCommand.cc b/bundles/shell/cxx_shell/src/QueryCommand.cc index 67206bc..f90b5c7 100644 --- a/bundles/shell/cxx_shell/src/QueryCommand.cc +++ b/bundles/shell/cxx_shell/src/QueryCommand.cc @@ -71,6 +71,6 @@ celix::ServiceRegistration impl::registerQuery(std::shared_ptr<celix::BundleCont celix::Properties props{}; props[celix::SHELL_COMMAND_FUNCTION_COMMAND_NAME] = "query"; props[celix::SHELL_COMMAND_FUNCTION_COMMAND_USAGE] = "query [lang] [serviceName serviceFilter]"; - props[celix::SHELL_COMMAND_FUNCTION_COMMAND_DESCRIPTION] = "Query the service registry. If no argumenst are provided list the available services names."; + props[celix::SHELL_COMMAND_FUNCTION_COMMAND_DESCRIPTION] = "Query the service registry. If no arguments are provided list the available services names."; return ctx->registerFunctionService(celix::SHELL_COMMAND_FUNCTION_SERVICE_FQN, std::move(cmd), std::move(props)); } \ No newline at end of file diff --git a/cmake/Modules/FindLIBZIP.cmake b/cmake/Modules/FindLIBZIP.cmake new file mode 100644 index 0000000..e13dd0f --- /dev/null +++ b/cmake/Modules/FindLIBZIP.cmake @@ -0,0 +1,52 @@ + +# 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. + + +# - Try to find libffi define the variables for the binaries/headers and include +# +# Once done this will define +# LIBZIP_FOUND - System has libffi +# libzip::libzip target + +mark_as_advanced(GNUTLS_INCLUDE_DIR GNUTLS_LIBRARY) + +find_library(LIBZIP_LIBRARY NAMES zip + PATHS $ENV{LIBZIP_DIR} ${LIBZIP_DIR} /usr /usr/local /opt/local + PATH_SUFFIXES lib lib64 x86_64-linux-gnu lib/x86_64-linux-gnu +) + +find_path(LIBZIP_INCLUDE_DIR zip.h + PATHS $ENV{LIBZIP_DIR} ${LIBZIP_DIR} /usr /usr/local /opt/local + PATH_SUFFIXES include include/ffi include/x86_64-linux-gnu x86_64-linux-gnu +) + +include(FindPackageHandleStandardArgs) +# handle the QUIETLY and REQUIRED arguments and set LIBZIP_FOUND to TRUE +# if all listed variables are TRUE +find_package_handle_standard_args(LIBZIP DEFAULT_MSG + LIBZIP_LIBRARY LIBZIP_INCLUDE_DIR) + +if(LIBZIP_FOUND) + add_library(libzip::libzip IMPORTED STATIC GLOBAL) + set_target_properties(libzip::libzip PROPERTIES + IMPORTED_LOCATION "${LIBZIP_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${LIBZIP_INCLUDE_DIR}" + ) +endif() + +unset(LIBZIP_LIBRARY) +unset(LIBZIP_INCLUDE_DIR) diff --git a/examples/celix-examples/CMakeLists.txt b/examples/celix-examples/CMakeLists.txt index 0975a60..d36116e 100644 --- a/examples/celix-examples/CMakeLists.txt +++ b/examples/celix-examples/CMakeLists.txt @@ -38,8 +38,11 @@ if (EXAMPLES) add_subdirectory(embedding) add_subdirectory(service_hook_example) add_subdirectory(log_service_example) + add_subdirectory(shell_command_example) - add_subdirectory(shell_command_example) + #Example for the C++ framework + add_subdirectory(cxx_shell_example) + endif(EXAMPLES) diff --git a/libs/framework_cxx/CMakeLists.txt b/examples/celix-examples/cxx_shell_example/CMakeLists.txt similarity index 54% copy from libs/framework_cxx/CMakeLists.txt copy to examples/celix-examples/cxx_shell_example/CMakeLists.txt index 98c857d..d0e9aa4 100644 --- a/libs/framework_cxx/CMakeLists.txt +++ b/examples/celix-examples/cxx_shell_example/CMakeLists.txt @@ -15,23 +15,8 @@ # specific language governing permissions and limitations # under the License. -find_package(UUID REQUIRED) -if(NOT APPLE) - set(UUID ${UUID_LIBRARY}) -endif() -#TODO rename to celix::framework -add_library(celix_framework_cxx SHARED - src/Framework.cc - src/BundleContext.cc - src/Bundle.cc +add_executable(cxx_shell_example + src/main.cc ) -target_include_directories(celix_framework_cxx PRIVATE src) -target_include_directories(celix_framework_cxx PUBLIC include) -target_link_libraries(celix_framework_cxx PRIVATE glog::glog libzip::libzip) -#NOTE because of libzil libbz2 and libz is also needed. maybe more to other form of resources (i.e. tar) -target_link_libraries(celix_framework_cxx PUBLIC celix::registry bz2 z ${UUID}) - -if (ENABLE_TESTING) - add_subdirectory(gtest) -endif () \ No newline at end of file +target_link_libraries(cxx_shell_example PRIVATE celix_cxx_shell celix_cxx_shell_tui glog::glog) \ No newline at end of file diff --git a/examples/celix-examples/cxx_shell_example/src/main.cc b/examples/celix-examples/cxx_shell_example/src/main.cc new file mode 100644 index 0000000..b4b50da --- /dev/null +++ b/examples/celix-examples/cxx_shell_example/src/main.cc @@ -0,0 +1,34 @@ +/** + *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. + */ + +#include <glog/logging.h> + +#include "celix/api.h" + + +int main(int /*argc*/, char **argv) { + //TODO move glog init to framework (a pthread_once?), so that glog::glog dep can be removed from executables. + google::InitGoogleLogging(argv[0]); + google::LogToStderr(); + + //TODO create launcher, which handles config.properties and command args + auto fw = celix::Framework{}; + fw.waitForShutdown(); + return 0; +} \ No newline at end of file diff --git a/libs/dfi/CMakeLists.txt b/libs/dfi/CMakeLists.txt index b738730..ee75635 100644 --- a/libs/dfi/CMakeLists.txt +++ b/libs/dfi/CMakeLists.txt @@ -74,5 +74,5 @@ if (ENABLE_TESTING AND DFI_TESTS) add_test(NAME run_test_dfi COMMAND test_dfi) SETUP_TARGET_FOR_COVERAGE(test_dfi_cov test_dfi ${CMAKE_BINARY_DIR}/coverage/test_dfi/test_dfi) -endif(ENABLE_TESTING) +endif () diff --git a/libs/framework_cxx/CMakeLists.txt b/libs/framework_cxx/CMakeLists.txt index 98c857d..c4604ac 100644 --- a/libs/framework_cxx/CMakeLists.txt +++ b/libs/framework_cxx/CMakeLists.txt @@ -16,6 +16,8 @@ # under the License. find_package(UUID REQUIRED) +find_package(LIBZIP REQUIRED) + if(NOT APPLE) set(UUID ${UUID_LIBRARY}) endif()