Salome HOME
SketchSolver Refactoring: Eliminate SolveSpace as a sketch solver.
[modules/shaper.git] / src / SketchSolver / CMakeLists.txt
1 ## Copyright (C) 2014-20xx CEA/DEN, EDF R&D
2
3 # Avoid using SolveSpace
4 SET(NO_SolveSpace TRUE)
5
6 # Convert files in list to full name
7 FUNCTION(TO_FULL_PATH theFILES)
8   SET(locFiles "")
9   FOREACH(locFile ${${theFILES}})
10     SET(locFiles ${locFiles} ${CMAKE_CURRENT_SOURCE_DIR}/${locFile})
11   ENDFOREACH()
12   SET(${theFILES} ${locFiles} PARENT_SCOPE)
13 ENDFUNCTION(TO_FULL_PATH)
14
15
16 INCLUDE(Common)
17
18 SET(SKETCHSOLVER_HEADERS
19     SketchSolver.h
20     SketchSolver_Error.h
21     SketchSolver_Group.h
22     SketchSolver_Builder.h
23     SketchSolver_IConstraintWrapper.h
24     SketchSolver_IEntityWrapper.h
25     SketchSolver_ISolver.h
26     SketchSolver_Manager.h
27     SketchSolver_Storage.h
28 )
29
30 SET(SKETCHSOLVER_CONSTRAINT_HEADERS
31     SketchSolver_Constraint.h
32     SketchSolver_ConstraintAngle.h
33     SketchSolver_ConstraintCoincidence.h
34     SketchSolver_ConstraintCollinear.h
35     SketchSolver_ConstraintDistance.h
36     SketchSolver_ConstraintEqual.h
37     SketchSolver_ConstraintLength.h
38     SketchSolver_ConstraintMiddle.h
39     SketchSolver_ConstraintMirror.h
40     SketchSolver_ConstraintFixed.h
41     SketchSolver_ConstraintTangent.h
42     SketchSolver_ConstraintMulti.h
43     SketchSolver_ConstraintMultiRotation.h
44     SketchSolver_ConstraintMultiTranslation.h
45 )
46
47 SET(SKETCHSOLVER_SOURCES
48     SketchSolver_Group.cpp
49     SketchSolver_Builder.cpp
50     SketchSolver_Manager.cpp
51     SketchSolver_Storage.cpp
52 )
53
54 SET(SKETCHSOLVER_CONSTRAINT_SOURCES
55     SketchSolver_Constraint.cpp
56     SketchSolver_ConstraintAngle.cpp
57     SketchSolver_ConstraintCoincidence.cpp
58     SketchSolver_ConstraintCollinear.cpp
59     SketchSolver_ConstraintDistance.cpp
60     SketchSolver_ConstraintEqual.cpp
61     SketchSolver_ConstraintLength.cpp
62     SketchSolver_ConstraintMiddle.cpp
63     SketchSolver_ConstraintMirror.cpp
64     SketchSolver_ConstraintFixed.cpp
65     SketchSolver_ConstraintTangent.cpp
66     SketchSolver_ConstraintMulti.cpp
67     SketchSolver_ConstraintMultiRotation.cpp
68     SketchSolver_ConstraintMultiTranslation.cpp
69 )
70
71 SET(SKETCHSOLVER_LIBRARIES
72     Config
73     Events
74     ModelAPI
75     GeomAPI
76     GeomDataAPI
77 )
78
79 SET(SKETCHSOLVER_TEXT_RESOURCES
80     SketchSolver_msg_en.ts
81 )
82
83 INCLUDE_DIRECTORIES(
84     ${PROJECT_SOURCE_DIR}/src/Config
85     ${PROJECT_SOURCE_DIR}/src/SketchPlugin
86     ${PROJECT_SOURCE_DIR}/src/ModelAPI
87     ${PROJECT_SOURCE_DIR}/src/GeomAPI
88     ${PROJECT_SOURCE_DIR}/src/GeomDataAPI
89     ${PROJECT_SOURCE_DIR}/src/Events
90 )
91
92 #SOURCE_GROUP ("Resource Files" FILES ${SKETCHSOLVER_TEXT_RESOURCES})
93 #
94 #ADD_DEFINITIONS(-DSKETCHSOLVER_EXPORTS)
95 #
96 #ADD_LIBRARY(SketchSolver SHARED ${SKETCHSOLVER_SOURCES} ${SKETCHSOLVER_CONSTRAINT_SOURCES} ${SKETCHSOLVER_HEADERS} ${SKETCHSOLVER_CONSTRAINT_HEADERS} ${SKETCHSOLVER_TEXT_RESOURCES}
97 #)
98 #
99 #TARGET_LINK_LIBRARIES(SketchSolver ${SKETCHSOLVER_LIBRARIES}
100 #)
101 #
102 #INSTALL(TARGETS SketchSolver DESTINATION ${SHAPER_INSTALL_PLUGIN_FILES})
103 #INSTALL(FILES ${SKETCHSOLVER_TEXT_RESOURCES} DESTINATION ${SHAPER_INSTALL_XML_RESOURCES})
104
105 # Set full path to source files
106 TO_FULL_PATH(SKETCHSOLVER_SOURCES)
107 TO_FULL_PATH(SKETCHSOLVER_CONSTRAINT_SOURCES)
108 TO_FULL_PATH(SKETCHSOLVER_HEADERS)
109 TO_FULL_PATH(SKETCHSOLVER_CONSTRAINT_HEADERS)
110 TO_FULL_PATH(SKETCHSOLVER_TEXT_RESOURCES)
111
112
113 # Include specific solvers
114 IF(NO_SolveSpace)
115   SET(SSPath_FOUND FALSE)
116 ELSE()
117   FIND_FILE(SSPath "SolveSpaceSolver/CMakeLists.txt" PATHS "${CMAKE_CURRENT_SOURCE_DIR}")
118   STRING(COMPARE NOTEQUAL ${SSPath} "SSPath-NOTFOUND" SSPath_FOUND)
119 ENDIF()
120
121 IF(NO_PlaneGCS)
122   SET(GCSPath_FOUND FALSE)
123 ELSE()
124   FIND_FILE(GCSPath "PlaneGCSSolver/CMakeLists.txt" PATHS "${CMAKE_CURRENT_SOURCE_DIR}")
125   STRING(COMPARE NOTEQUAL ${GCSPath} "GCSPath-NOTFOUND" GCSPath_FOUND)
126 ENDIF()
127
128 IF(${SSPath_FOUND} OR ${GCSPath_FOUND})
129   IF(${SSPath_FOUND})
130     MESSAGE(STATUS "SolveSpaceSolver plugin found in ${SSPath}")
131     ADD_SUBDIRECTORY(SolveSpaceSolver)
132   ENDIF()
133   IF(${GCSPath_FOUND})
134     MESSAGE(STATUS "PlaneGCSSolver plugin found in ${GCSPath}")
135     ADD_SUBDIRECTORY(PlaneGCSSolver)
136   ENDIF()
137 ELSE()
138   MESSAGE(WARNING "No sketch solver plugin is found")
139 ENDIF()