summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/2geom/src/py2geom/CMakeLists.txt
blob: 8e21e7410345964a755037c272a4164ae802e0fc (plain)
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
SET(2GEOM_BOOST_PYTHON_SRC
etc.cpp
point.cpp
interval.cpp
transforms.cpp
rect.cpp
line.cpp
circle.cpp
ellipse.cpp
conic.cpp
crossing.cpp
sbasis.cpp
bezier.cpp
linear.cpp
pw.cpp
d2.cpp
parser.cpp
path.cpp
ray.cpp
#convexcover.cpp
py2geom.cpp
# curves
#curve.cpp
#bezier-curve.cpp
)

IF (WIN32)
    SET(BUILD_BOOST_PYTHON_STATIC FALSE)
ELSE (WIN32)
    SET(BUILD_BOOST_PYTHON_STATIC FALSE)
ENDIF (WIN32)
IF (BUILD_BOOST_PYTHON_STATIC)
  SET(BOOST_PYTHON_SRC "C:/boost_1_42_0/libs/python/src")
  #define BOOST_PYTHON_STATIC_LIB
  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBOOST_PYTHON_STATIC_LIB")
  SET(2GEOM_BOOST_PYTHON_SRC
    ${2GEOM_BOOST_PYTHON_SRC}
    ${BOOST_PYTHON_SRC}/dict.cpp
    ${BOOST_PYTHON_SRC}/errors.cpp
    ${BOOST_PYTHON_SRC}/exec.cpp
    ${BOOST_PYTHON_SRC}/import.cpp
    ${BOOST_PYTHON_SRC}/list.cpp
    ${BOOST_PYTHON_SRC}/long.cpp
    ${BOOST_PYTHON_SRC}/module.cpp
    ${BOOST_PYTHON_SRC}/numeric.cpp
    ${BOOST_PYTHON_SRC}/object_operators.cpp
    ${BOOST_PYTHON_SRC}/object_protocol.cpp
    ${BOOST_PYTHON_SRC}/slice.cpp
    ${BOOST_PYTHON_SRC}/str.cpp
    ${BOOST_PYTHON_SRC}/tuple.cpp
    ${BOOST_PYTHON_SRC}/wrapper.cpp

    ${BOOST_PYTHON_SRC}/converter/arg_to_python_base.cpp
    ${BOOST_PYTHON_SRC}/converter/builtin_converters.cpp
    ${BOOST_PYTHON_SRC}/converter/from_python.cpp
    ${BOOST_PYTHON_SRC}/converter/registry.cpp
    ${BOOST_PYTHON_SRC}/converter/type_id.cpp

    ${BOOST_PYTHON_SRC}/object/class.cpp
    ${BOOST_PYTHON_SRC}/object/enum.cpp
    ${BOOST_PYTHON_SRC}/object/function.cpp
    ${BOOST_PYTHON_SRC}/object/function_doc_signature.cpp
    ${BOOST_PYTHON_SRC}/object/inheritance.cpp
    ${BOOST_PYTHON_SRC}/object/iterator.cpp
    ${BOOST_PYTHON_SRC}/object/life_support.cpp
    ${BOOST_PYTHON_SRC}/object/pickle_support.cpp
    ${BOOST_PYTHON_SRC}/object/stl_iterator.cpp
  )
ENDIF (BUILD_BOOST_PYTHON_STATIC)

IF(PYCAIRO_FOUND)
    SET(2GEOM_BOOST_PYTHON_SRC
    ${2GEOM_BOOST_PYTHON_SRC}
    cairo-helpers.cpp
    )
ENDIF(PYCAIRO_FOUND)


OPTION(2GEOM_BOOST_PYTHON
  "Build a python binding with Boost.Python"
  OFF)
IF(2GEOM_BOOST_PYTHON)
	FIND_PACKAGE(Python3 COMPONENTS Development Interpreter REQUIRED)

	SET(Boost_DEBUG TRUE)
        SET(Boost_REALPATH FALSE)
        FIND_PACKAGE(Boost 1.42.0 REQUIRED)
	FIND_PACKAGE(Boost REQUIRED COMPONENTS python${Python3_VERSION_MAJOR}${Python3_VERSION_MINOR})

        IF (WIN32)
            SET_TARGET_PROPERTIES(py2geom PROPERTIES SUFFIX ".pyd")
        ELSEIF (APPLE)
	    SET(CMAKE_MACOSX_RPATH FALSE)
	    SET(CMAKE_SHARED_LIBRARY_SUFFIX ".so")
        ENDIF(WIN32)

	INCLUDE_DIRECTORIES( src/ ${Python3_INCLUDE_DIRS} ${Boost_INCLUDE_DIR} )
        ADD_LIBRARY(py2geom SHARED ${2GEOM_BOOST_PYTHON_SRC})
        SET_TARGET_PROPERTIES(py2geom PROPERTIES PREFIX "_")

        IF (BUILD_BOOST_PYTHON_STATIC)
            TARGET_LINK_LIBRARIES(py2geom 2geom ${Python3_LIBRARIES})
        ELSE (BUILD_BOOST_PYTHON_STATIC)
	    TARGET_LINK_LIBRARIES(py2geom 2geom ${Boost_LIBRARIES} ${Python3_LIBRARIES})
        ENDIF (BUILD_BOOST_PYTHON_STATIC)

        set_property(TARGET 2geom PROPERTY POSITION_INDEPENDENT_CODE ON)  # we need -fPIC to link py2geom against 2geom

        IF(PYCAIRO_FOUND)
            TARGET_LINK_LIBRARIES(py2geom ${Cairo_LIBRARIES})
        ENDIF(PYCAIRO_FOUND)

	INSTALL(TARGETS py2geom DESTINATION "${Python3_SITEARCH}/py2geom")
        INSTALL(FILES "${CMAKE_CURRENT_SOURCE_DIR}/__init__.py" DESTINATION "${Python3_SITEARCH}/py2geom")
ENDIF(2GEOM_BOOST_PYTHON)