CMakeLists.txt 4.5 KB
Newer Older
1
#include_directories(${CMAKE_SOURCE_DIR}/include algorithms ext util nn .)
2

M
Marius Muja 已提交
3 4
add_definitions(-D_FLANN_VERSION=${FLANN_VERSION})

M
Marius Muja 已提交
5 6
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/flann/config.h.in ${CMAKE_CURRENT_SOURCE_DIR}/flann/config.h)

7 8
file(GLOB_RECURSE C_SOURCES flann.cpp lz4.c lz4hc.c)
file(GLOB_RECURSE CPP_SOURCES flann_cpp.cpp lz4.c lz4hc.c)
9
file(GLOB_RECURSE CU_SOURCES *.cu)
10

11
add_library(flann_cpp_s STATIC ${CPP_SOURCES})
M
Marius Muja 已提交
12
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG)
M
Marius Muja 已提交
13 14
    set_target_properties(flann_cpp_s PROPERTIES COMPILE_FLAGS -fPIC)
endif()
M
Marius Muja 已提交
15
set_property(TARGET flann_cpp_s PROPERTY COMPILE_DEFINITIONS FLANN_STATIC FLANN_USE_CUDA)
16 17

if (BUILD_CUDA_LIB)
M
Marius Muja 已提交
18
    SET(CUDA_NVCC_FLAGS -DFLANN_USE_CUDA)
M
Marius Muja 已提交
19
    if(CMAKE_COMPILER_IS_GNUCC)
20 21 22 23
		set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS};-Xcompiler;-fPIC;-arch=sm_13" )
        if (NVCC_COMPILER_BINDIR)
            set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS};--compiler-bindir=${NVCC_COMPILER_BINDIR}")
        endif()
M
Marius Muja 已提交
24 25 26
    else()
	    set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS};-arch=sm_13" )
    endif()
27 28 29
    cuda_add_library(flann_cuda_s STATIC ${CU_SOURCES})
    set_property(TARGET flann_cuda_s PROPERTY COMPILE_DEFINITIONS FLANN_STATIC)
endif()
30

31 32
if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_COMPILER_IS_GNUCC)
    add_library(flann_cpp SHARED "")
33
    set_target_properties(flann_cpp PROPERTIES LINKER_LANGUAGE CXX)
34
    target_link_libraries(flann_cpp -Wl,-whole-archive flann_cpp_s -Wl,-no-whole-archive)
35 36 37 38 39

    if (BUILD_CUDA_LIB)
	    cuda_add_library(flann_cuda SHARED "")
        set_target_properties(flann_cuda PROPERTIES LINKER_LANGUAGE CXX)
        target_link_libraries(flann_cuda -Wl,-whole-archive flann_cuda_s -Wl,-no-whole-archive)
M
Marius Muja 已提交
40
        set_property(TARGET flann_cpp_s PROPERTY COMPILE_DEFINITIONS FLANN_USE_CUDA)
41 42
    # 	target_link_libraries(flann_cuda cudpp_x86_64)
    endif()
43 44
else()
    add_library(flann_cpp SHARED ${CPP_SOURCES})
45
    if (BUILD_CUDA_LIB)
M
Marius Muja 已提交
46
		cuda_add_library(flann_cuda SHARED ${CPP_SOURCES})
M
Marius Muja 已提交
47
        set_property(TARGET flann_cpp PROPERTY COMPILE_DEFINITIONS FLANN_USE_CUDA)
48
    endif()
M
Marius Muja 已提交
49 50
endif()

M
Marius Muja 已提交
51 52 53
set_target_properties(flann_cpp PROPERTIES
   VERSION ${FLANN_VERSION}
   SOVERSION ${FLANN_SOVERSION}
M
Marius Muja 已提交
54
   DEFINE_SYMBOL FLANN_EXPORTS
55
) 
M
Marius Muja 已提交
56

57 58 59 60 61 62 63
if (BUILD_CUDA_LIB)
    set_target_properties(flann_cuda PROPERTIES
       VERSION ${FLANN_VERSION}
       SOVERSION ${FLANN_SOVERSION}
       DEFINE_SYMBOL FLANN_EXPORTS
    ) 
endif()
64

M
Marius Muja 已提交
65

M
Marius Muja 已提交
66 67 68
if (USE_MPI AND HDF5_IS_PARALLEL)
    add_executable(flann_mpi_server flann/mpi/flann_mpi_server.cpp)
    target_link_libraries(flann_mpi_server flann_cpp ${HDF5_LIBRARIES} ${MPI_LIBRARIES} ${Boost_LIBRARIES})
M
Marius Muja 已提交
69

M
Marius Muja 已提交
70 71
    add_executable(flann_mpi_client flann/mpi/flann_mpi_client.cpp)
    target_link_libraries(flann_mpi_client flann_cpp ${HDF5_LIBRARIES} ${MPI_LIBRARIES} ${Boost_LIBRARIES})
72

M
Marius Muja 已提交
73 74
    install (TARGETS flann_mpi_client flann_mpi_server
        DESTINATION bin)
75 76
endif()

77

M
Marius Muja 已提交
78 79
if (BUILD_C_BINDINGS)
    add_library(flann_s STATIC ${C_SOURCES})
M
Marius Muja 已提交
80
    if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG)
M
Marius Muja 已提交
81 82
        set_target_properties(flann_s PROPERTIES COMPILE_FLAGS -fPIC)
    endif()
M
Marius Muja 已提交
83
    set_property(TARGET flann_s PROPERTY COMPILE_DEFINITIONS FLANN_STATIC)
84 85 86

    if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_COMPILER_IS_GNUCC)
        add_library(flann SHARED "")
87
        set_target_properties(flann PROPERTIES LINKER_LANGUAGE CXX)
88 89 90
        target_link_libraries(flann -Wl,-whole-archive flann_s -Wl,-no-whole-archive)
    else()
        add_library(flann SHARED ${C_SOURCES})
91 92 93 94

        if(MINGW)
          target_link_libraries(flann -lgomp)
        endif(MINGW)
95 96 97 98 99
    endif()

    set_target_properties(flann PROPERTIES
       VERSION ${FLANN_VERSION}
       SOVERSION ${FLANN_SOVERSION}
M
Marius Muja 已提交
100
       DEFINE_SYMBOL FLANN_EXPORTS
101
    ) 
M
Marius Muja 已提交
102 103
endif()

104
if(WIN32)
M
Marius Muja 已提交
105
if (BUILD_C_BINDINGS)
106 107
    install (
        TARGETS flann
M
Marius Muja 已提交
108
        RUNTIME DESTINATION share/flann/matlab
109
    )
M
Marius Muja 已提交
110
endif()
111 112
endif(WIN32)

113 114

install (
M
Marius Muja 已提交
115
    TARGETS flann_cpp flann_cpp_s
116 117 118 119
    RUNTIME DESTINATION bin
    LIBRARY DESTINATION ${FLANN_LIB_INSTALL_DIR}
    ARCHIVE DESTINATION ${FLANN_LIB_INSTALL_DIR}
)
120 121 122
 
if (BUILD_CUDA_LIB)
    install (
M
Marius Muja 已提交
123
        TARGETS flann_cuda flann_cuda_s
124 125 126 127 128
        RUNTIME DESTINATION bin
        LIBRARY DESTINATION ${FLANN_LIB_INSTALL_DIR}
        ARCHIVE DESTINATION ${FLANN_LIB_INSTALL_DIR}
    )
endif()
129

M
Marius Muja 已提交
130 131
if (BUILD_C_BINDINGS)
    install (
132
        TARGETS flann flann_s
M
Marius Muja 已提交
133 134 135 136 137
        RUNTIME DESTINATION bin
        LIBRARY DESTINATION ${FLANN_LIB_INSTALL_DIR}
        ARCHIVE DESTINATION ${FLANN_LIB_INSTALL_DIR}
    )
endif()
M
Marius Muja 已提交
138

139
install (
140
    DIRECTORY flann
M
Marius Muja 已提交
141
    DESTINATION include
142
    FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp"
M
Marius Muja 已提交
143
)