CMakeLists.txt 2.73 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# check if compiling into source directories
STRING(COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}" insource)
if(insource)
    MESSAGE(FATAL_ERROR "${PROJECT_NAME} requires an out of source build. Goto ./Build and tapes cmake ../")
endif(insource)

project(ADDONS_HMAT_SCALFMM CXX C)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SCALFMM_CXX_FLAGS}")

# Active language
# -----------------------
ENABLE_LANGUAGE(CXX C)
MESSAGE(STATUS " CXX  ${CMAKE_CXX_COMPILER_ID}" )


# if ask to build addon
if(SCALFMM_ADDON_HMAT)
        # first build lib scalfmmhmat
        set(LIBRARY_OUTPUT_PATH ../lib/${CMAKE_BUILD_TYPE})

        # Searching all cpp file
        file( GLOB_RECURSE source_lib_files Src/*.cpp )

        # Adding cpp files to project
        add_library( scalfmmhmat STATIC ${source_lib_files} )

        # Add blas library (even if it is set to off)
        target_link_libraries( scalfmmhmat scalfmm)

        # Adding the entire project dir as an include dir
        INCLUDE_DIRECTORIES(
         ${CMAKE_BINARY_DIR}/Src
         ${CMAKE_SOURCE_DIR}/Src
         ${SCALFMM_INCLUDES}
    )

        # Install lib
        install( TARGETS scalfmmhmat ARCHIVE DESTINATION lib )

        # Install header
        SET(my_include_dirs "Src")

43
        file( GLOB hpp_in_dir Src/*.hpp Src/*.hpp)
44
45
        INSTALL( FILES ${hpp_in_dir} DESTINATION include/ScalFmm/HMat )

46
        file( GLOB_RECURSE source_tests_files Tests/*.cpp )
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
        INCLUDE_DIRECTORIES( ${CMAKE_BINARY_DIR}/Src )

        # Then build test files
        foreach(exec ${source_tests_files})
                get_filename_component(
                        execname ${exec}
                        NAME_WE
                )

            set(compile_exec "TRUE")

            foreach(fuse_key ${FUSE_LIST})
                file(STRINGS "${exec}" lines_fuse REGEX "@FUSE_${fuse_key}")
                if(lines_fuse)
                        if( NOT SCALFMM_USE_${fuse_key} )
                                MESSAGE( STATUS "This needs ${fuse_key} = ${exec}" )
                                set(compile_exec "FALSE")
                        endif()
                endif()
            endforeach()

                # Dependency are OK
                if( compile_exec )
                        add_executable(	${execname} ${exec} )
                        # link to scalfmm and scalfmmhmat
                        target_link_libraries(
                                ${execname}
                                ${scalfmm_lib}
                                scalfmmhmat
                                # ${BLAS_LIBRARIES}
                                # ${LAPACK_LIBRARIES}
                            ${SCALFMM_LIBRARIES}
                                )
                endif()
        endforeach(exec)
endif()