1 # Copyright Louis Dionne 2016
2 # Copyright Zach Laine 2016
3 # Distributed under the Boost Software License, Version 1.0.
4 # (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
6 ###############################################################################
8 ###############################################################################
9 find_package(Boost COMPONENTS)
10 if (Boost_INCLUDE_DIRS)
11 add_library(boost INTERFACE)
12 target_include_directories(boost INTERFACE ${Boost_INCLUDE_DIRS})
14 message("-- Boost was not found; attempting to download it if we haven't already...")
15 include(ExternalProject)
16 ExternalProject_Add(install-Boost
17 PREFIX ${CMAKE_BINARY_DIR}/dependencies/boost_1_68_0
18 URL https://dl.bintray.com/boostorg/release/1.68.0/source/boost_1_68_0.tar.bz2
25 ExternalProject_Get_Property(install-Boost SOURCE_DIR)
26 add_library(boost INTERFACE)
27 target_include_directories(boost INTERFACE ${SOURCE_DIR})
28 add_dependencies(boost install-Boost)
32 set_target_properties(boost
34 INTERFACE_COMPILE_FEATURES cxx_decltype_auto
37 ###############################################################################
39 ###############################################################################
43 COMMAND git clone https://github.com/google/benchmark.git
44 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
47 COMMAND git checkout v1.5.0
48 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/benchmark
50 set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "" FORCE)
51 add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/benchmark)
55 ###############################################################################
56 # Autodiff (see https://github.com/fqiang/autodiff_library)
57 ###############################################################################
60 add_library(autodiff_library
61 ${CMAKE_CURRENT_SOURCE_DIR}/example/autodiff_library/ActNode.cpp
62 ${CMAKE_CURRENT_SOURCE_DIR}/example/autodiff_library/BinaryOPNode.cpp
63 ${CMAKE_CURRENT_SOURCE_DIR}/example/autodiff_library/Edge.cpp
64 ${CMAKE_CURRENT_SOURCE_DIR}/example/autodiff_library/EdgeSet.cpp
65 ${CMAKE_CURRENT_SOURCE_DIR}/example/autodiff_library/Node.cpp
66 ${CMAKE_CURRENT_SOURCE_DIR}/example/autodiff_library/OPNode.cpp
67 ${CMAKE_CURRENT_SOURCE_DIR}/example/autodiff_library/PNode.cpp
68 ${CMAKE_CURRENT_SOURCE_DIR}/example/autodiff_library/Stack.cpp
69 ${CMAKE_CURRENT_SOURCE_DIR}/example/autodiff_library/Tape.cpp
70 ${CMAKE_CURRENT_SOURCE_DIR}/example/autodiff_library/UaryOPNode.cpp
71 ${CMAKE_CURRENT_SOURCE_DIR}/example/autodiff_library/VNode.cpp
72 ${CMAKE_CURRENT_SOURCE_DIR}/example/autodiff_library/autodiff.cpp
74 target_include_directories(autodiff_library PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/example/autodiff_library)
75 target_compile_definitions(autodiff_library PUBLIC BOOST_ALL_NO_LIB=1)
76 target_link_libraries(autodiff_library boost)