File: CMakeLists.txt

package info (click to toggle)
solvespace 3.1%2Bds1-3.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 15,964 kB
  • sloc: cpp: 122,491; ansic: 11,375; javascript: 1,919; sh: 89; xml: 44; makefile: 25
file content (141 lines) | stat: -rw-r--r-- 4,537 bytes parent folder | download | duplicates (2)
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
43
44
45
46
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
include_directories(
    ${CMAKE_CURRENT_SOURCE_DIR}
    ${CMAKE_CURRENT_BINARY_DIR})

foreach(pkg_config_lib CAIRO)
    include_directories(${${pkg_config_lib}_INCLUDE_DIRS})
    link_directories(${${pkg_config_lib}_LIBRARY_DIRS})
endforeach()

if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Windows")
    add_definitions(-DTEST_BUILD_ON_WINDOWS)
endif()

# test suite

set(testsuite_SOURCES
    harness.cpp
    analysis/contour_area/test.cpp
    core/expr/test.cpp
    core/locale/test.cpp
    core/path/test.cpp
    constraint/points_coincident/test.cpp
    constraint/pt_pt_distance/test.cpp
    constraint/pt_plane_distance/test.cpp
    constraint/pt_line_distance/test.cpp
    constraint/pt_face_distance/test.cpp
    constraint/proj_pt_distance/test.cpp
    constraint/pt_in_plane/test.cpp
    constraint/pt_on_line/test.cpp
    constraint/pt_on_face/test.cpp
    constraint/equal_length_lines/test.cpp
    constraint/length_ratio/test.cpp
    constraint/eq_len_pt_line_d/test.cpp
    constraint/eq_pt_ln_distances/test.cpp
    constraint/equal_angle/test.cpp
    constraint/equal_line_arc_len/test.cpp
    constraint/length_difference/test.cpp
    constraint/symmetric/test.cpp
    constraint/symmetric_horiz/test.cpp
    constraint/symmetric_vert/test.cpp
    constraint/symmetric_line/test.cpp
    constraint/at_midpoint/test.cpp
    constraint/horizontal/test.cpp
    constraint/vertical/test.cpp
    constraint/diameter/test.cpp
    constraint/pt_on_circle/test.cpp
    constraint/same_orientation/test.cpp
    constraint/angle/test.cpp
    constraint/parallel/test.cpp
    constraint/perpendicular/test.cpp
    constraint/arc_line_tangent/test.cpp
    constraint/cubic_line_tangent/test.cpp
    constraint/curve_curve_tangent/test.cpp
    constraint/equal_radius/test.cpp
    constraint/where_dragged/test.cpp
    constraint/comment/test.cpp
    request/arc_of_circle/test.cpp
    request/circle/test.cpp
    request/cubic/test.cpp
    request/cubic_periodic/test.cpp
    request/datum_point/test.cpp
    request/image/test.cpp
    request/line_segment/test.cpp
    request/ttf_text/test.cpp
    request/workplane/test.cpp
    group/link/test.cpp
    group/translate_asy/test.cpp
    group/translate_nd/test.cpp
)

add_executable(solvespace-testsuite
    ${testsuite_SOURCES}
    $<TARGET_PROPERTY:resources,EXTRA_SOURCES>)

target_link_libraries(solvespace-testsuite
    solvespace-headless
    ${COVERAGE_LIBRARY})

target_include_directories(solvespace-testsuite
    PRIVATE
    ${EIGEN3_INCLUDE_DIRS})
add_dependencies(solvespace-testsuite
    resources)

add_custom_target(test_solvespace
    COMMAND $<TARGET_FILE:solvespace-testsuite>
    COMMENT "Testing SolveSpace"
    VERBATIM)

# coverage reports

if(ENABLE_COVERAGE)
    set(LCOV_FLAGS   -q --gcov-tool ${GCOV})
    set(LCOV_FLAGS   ${LCOV_FLAGS} --rc lcov_branch_coverage=1)
    set(LCOV_FLAGS   ${LCOV_FLAGS} --rc "lcov_excl_line=(ssassert|switch)")
    set(LCOV_FLAGS   ${LCOV_FLAGS} --rc "lcov_excl_br_line=BRANCH_ALWAYS_TAKEN")
    set(LCOV_COLLECT -c -b ${CMAKE_SOURCE_DIR}/src -d ${CMAKE_BINARY_DIR}/src --no-external)

    add_custom_command(
        OUTPUT  ${CMAKE_CURRENT_BINARY_DIR}/coverage_base.info
        COMMAND ${LCOV} ${LCOV_FLAGS} ${LCOV_COLLECT}
            -o ${CMAKE_BINARY_DIR}/coverage_base.info -i
        DEPENDS solvespace-testsuite
        COMMENT "Importing baseline coverage data"
        VERBATIM)

    add_custom_target(coverage_solvespace ALL
        COMMAND ${LCOV} ${LCOV_FLAGS} ${LCOV_COLLECT}
            -o ${CMAKE_BINARY_DIR}/coverage_test.info
        COMMAND ${LCOV} ${LCOV_FLAGS}
            -o ${CMAKE_BINARY_DIR}/coverage_full.info
            -a ${CMAKE_BINARY_DIR}/coverage_base.info
            -a ${CMAKE_BINARY_DIR}/coverage_test.info
        COMMAND ${LCOV} ${LCOV_FLAGS} --summary
            ${CMAKE_BINARY_DIR}/coverage_full.info
        COMMAND ${GENHTML} -q --branch-coverage --demangle-cpp --legend
            ${CMAKE_BINARY_DIR}/coverage_full.info
            -o ${CMAKE_BINARY_DIR}/coverage/
            -t "SolveSpace testbench"
        DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/coverage_base.info
        DEPENDS test_solvespace
        COMMENT "Generating coverage report"
        VERBATIM)
endif()

# debug runner

set(debugtool_SOURCES
    debugtool.cpp
)

add_executable(solvespace-debugtool
    ${debugtool_SOURCES}
    $<TARGET_PROPERTY:resources,EXTRA_SOURCES>)

target_link_libraries(solvespace-debugtool
    solvespace-core
    solvespace-headless)

add_dependencies(solvespace-debugtool
    resources)