Repository: nifi-minifi-cpp Updated Branches: refs/heads/master e678ef30f -> 3bc335c8d
MINIFI-139 - Resolved OS X 10.12 build failures by introducing Cmake find modules for LevelDB and UUID for both includes and libraries. This closes #26. Signed-off-by: Aldrin Piri <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/repo Commit: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/commit/3bc335c8 Tree: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/tree/3bc335c8 Diff: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/diff/3bc335c8 Branch: refs/heads/master Commit: 3bc335c8d5b57d93868eef3e4ab68042d0d561dd Parents: e678ef3 Author: Jeremy Dyer <[email protected]> Authored: Tue Nov 29 21:09:37 2016 -0500 Committer: Aldrin Piri <[email protected]> Committed: Mon Dec 5 15:45:57 2016 -0500 ---------------------------------------------------------------------- NOTICE | 8 ++++++- cmake/FindLeveldb.cmake | 50 +++++++++++++++++++++++++++++++++++++++++++ cmake/FindUUID.cmake | 37 ++++++++++++++++++++++++++++++++ libminifi/CMakeLists.txt | 10 +++++++++ main/CMakeLists.txt | 10 +++++++-- 5 files changed, 112 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/3bc335c8/NOTICE ---------------------------------------------------------------------- diff --git a/NOTICE b/NOTICE index e1743a6..3badb13 100644 --- a/NOTICE +++ b/NOTICE @@ -2,4 +2,10 @@ Apache NiFi MiNiFi Copyright 2016 The Apache Software Foundation This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). \ No newline at end of file +The Apache Software Foundation (http://www.apache.org/). + +This includes derived works from the Apache Celix (ASLv2 licensed) project (https://github.com/apache/celix): +Copyright 2015 The Apache Software Foundation +The derived work is adapted from + celix/cmake/FindUUID.cmake +and can be found in cmake/FindUUID.cmake \ No newline at end of file http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/3bc335c8/cmake/FindLeveldb.cmake ---------------------------------------------------------------------- diff --git a/cmake/FindLeveldb.cmake b/cmake/FindLeveldb.cmake new file mode 100644 index 0000000..73ac693 --- /dev/null +++ b/cmake/FindLeveldb.cmake @@ -0,0 +1,50 @@ +# 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 qrequired 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. + + +# Find module for Leveldb library and includes +# LEVELDB_FOUND - if system found LEVELDB library +# LEVELDB_INCLUDE_DIRS - The LEVELDB include directories +# LEVELDB_LIBRARIES - The libraries needed to use LEVELDB +# LEVELDB_DEFINITIONS - Compiler switches required for using LEVELDB + +# For OS X do not attempt to use the OS X application frameworks or bundles. +set (CMAKE_FIND_FRAMEWORK NEVER) +set (CMAKE_FIND_APPBUNDLE NEVER) + +find_path(LEVELDB_INCLUDE_DIR + NAMES leveldb/db.h + PATHS /usr/local/include /usr/include + DOC "LevelDB include header" +) + +find_library(LEVELDB_LIBRARY + NAMES libleveldb.dylib libleveldb.so + PATHS /usr/local/lib /usr/lib/x86_64-linux-gnu + DOC "LevelDB library" +) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LEVELDB DEFAULT_MSG LEVELDB_INCLUDE_DIR LEVELDB_LIBRARY) + +if (LEVELDB_FOUND) + set(LEVELDB_LIBRARIES ${LEVELDB_LIBRARY} ) + set(LEVELDB_INCLUDE_DIRS ${LEVELDB_INCLUDE_DIR} ) + set(LEVELDB_DEFINITIONS ) +endif() + +mark_as_advanced(LEVELDB_ROOT_DIR LEVELDB_INCLUDE_DIR LEVELDB_LIBRARY) \ No newline at end of file http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/3bc335c8/cmake/FindUUID.cmake ---------------------------------------------------------------------- diff --git a/cmake/FindUUID.cmake b/cmake/FindUUID.cmake new file mode 100644 index 0000000..2402d08 --- /dev/null +++ b/cmake/FindUUID.cmake @@ -0,0 +1,37 @@ +# 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. + + +find_path(UUID_INCLUDE_DIR + NAMES uuid/uuid.h + HINTS ${UUID_DIR}/include + $ENV{UUID_DIR}/include + PATHS /usr/include + /usr/local/include ) + +find_library(UUID_LIBRARY NAMES uuid + PATHS /usr/lib /usr/local/lib /usr/local/lib64 /lib/i386-linux-gnu /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu) + +set(UUID_INCLUDE_DIRS ${UUID_INCLUDE_DIR}) +set(UUID_LIBRARIES ${UUID_LIBRARY}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(UUID DEFAULT_MSG + UUID_LIBRARY UUID_INCLUDE_DIR) + + +mark_as_advanced(UUID_INCLUDE_DIRS UUID_LIBRARIES) http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/3bc335c8/libminifi/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/libminifi/CMakeLists.txt b/libminifi/CMakeLists.txt index 3e5eb87..ff1634a 100644 --- a/libminifi/CMakeLists.txt +++ b/libminifi/CMakeLists.txt @@ -56,3 +56,13 @@ if (LIBXML2_FOUND) else () # Build from our local version endif (LIBXML2_FOUND) + +# Include LevelDB +find_package (Leveldb REQUIRED) +if (LEVELDB_FOUND) + include_directories(${LEVELDB_INCLUDE_DIRS}) + target_link_libraries (minifi ${LEVELDB_LIBRARIES}) +else () + message( FATAL_ERROR "LevelDB was not found. Please install LevelDB" ) +endif (LEVELDB_FOUND) + http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/3bc335c8/main/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 0f66cda..3e0bbc4 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -25,6 +25,9 @@ ENDIF(POLICY CMP0048) include_directories(../include ../libminifi/include ../thirdparty/yaml-cpp-yaml-cpp-0.5.3/include ../thirdparty/leveldb-1.18/include ../thirdparty/) +find_package(Boost REQUIRED) +include_directories(${Boost_INCLUDE_DIRS}) + # Include libxml2 find_package(LibXml2) if (LIBXML2_FOUND) @@ -41,8 +44,11 @@ if(CMAKE_THREAD_LIBS_INIT) target_link_libraries(minifiexe "${CMAKE_THREAD_LIBS_INIT}") endif() -# Link against minifi, yaml-cpp and uuid -target_link_libraries(minifiexe minifi yaml-cpp uuid leveldb) +# Include UUID +find_package(UUID REQUIRED) + +# Link against minifi, yaml-cpp, uuid, and leveldb +target_link_libraries(minifiexe minifi yaml-cpp ${UUID_LIBRARIES} ${LEVELDB_LIBRARIES}) set_target_properties(minifiexe PROPERTIES OUTPUT_NAME minifi)
