Skip to content
Snippets Groups Projects
CMakeLists.txt 1.65 KiB
Newer Older
Cyril Moineau's avatar
Cyril Moineau committed

if (BUILD_CPU_ALONE)
    project(Aidge_CPU)
    cmake_minimum_required(VERSION 3.11)
    add_compile_options(-Wall -Wextra -fPIC)

    # Need the Core library to compile the CPU library
    set(BUILD_CORE_ALONE ON)
    add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../_Core _Core)
endif()

if (PYBIND)
    add_definitions(-DPYBIND)
    Include(FetchContent)

    FetchContent_Declare(
    PyBind11
    GIT_REPOSITORY https://github.com/pybind/pybind11.git
    GIT_TAG        v2.10.4 # or a later release
    )

    FetchContent_MakeAvailable(PyBind11)
    file(GLOB_RECURSE pybind_src_files "python_binding/*.cpp")
    pybind11_add_module(aidge_cpu MODULE ${pybind_src_files} "NO_EXTRAS")
    target_include_directories(aidge_cpu PUBLIC ${pybind11_INCLUDE_DIRS} "python_binding")
    target_link_libraries(aidge_cpu PUBLIC cpu)
    # generate_python_binding(aidge_cpu cpu)
endif()

add_library(cpu STATIC)

# Add include directories 
target_include_directories(cpu PUBLIC "include")

# Containers module
file(GLOB_RECURSE src_files "src/*.cpp")
target_sources(cpu PRIVATE ${src_files})

target_link_libraries(cpu PUBLIC core)

set_property(TARGET cpu PROPERTY POSITION_INDEPENDENT_CODE ON)

if (PYBIND)
    target_include_directories(cpu PUBLIC $<BUILD_INTERFACE:${PYTHON_INCLUDE_DIRS}>)
    target_link_libraries(cpu PRIVATE ${PYTHON_LIBRARIES})
endif()

if (NOT BUILD_CPU_ALONE)
    # Activate compile time reducer for aidge_core
    set_target_properties(cpu PROPERTIES COTIRE_ADD_UNITY_BUILD FALSE)
    # set_target_properties(n2d2_cpu_lib PROPERTIES COTIRE_CXX_PREFIX_HEADER_INIT "include/utils/Precompiled.hpp")
    cotire(cpu)
endif()

if (TESTS)
    add_subdirectory(tests)
endif()