1
1
cmake_minimum_required (VERSION 3.13)
2
2
3
- set (TARGET_NAME prostruct_interface)
3
+ find_package (SWIG 3.0 REQUIRED)
4
+
5
+ set (PYTHON_TARGET_NAME prostruct_python_interface)
6
+ set (R_TARGET_NAME prostruct_r_interface)
7
+
4
8
cmake_policy (SET CMP0078 NEW)
5
9
6
10
if (${CMAKE_VERSION} GREATER "3.14.0" )
7
- cmake_policy (SET CMP0086 NEW )
11
+ cmake_policy (SET CMP0086 OLD )
8
12
endif ()
9
13
10
14
include (${SWIG_USE_FILE} )
11
15
include_directories (swig)
12
16
include_directories (${PROJECT_SOURCE_DIR} /src)
13
- file (GLOB_RECURSE SWIG_FILES ${PROJECT_SOURCE_DIR} /src/interface /python/*.i)
14
17
15
- set_property (SOURCE ${SWIG_FILES} PROPERTY CPLUSPLUS ON )
16
18
#set(CMAKE_SWIG_OUTDIR ${CMAKE_BINARY_DIR}/src/interface/python)
17
- set (CMAKE_SWIG_FLAGS "-builtin" )
18
- swig_add_library(${TARGET_NAME}
19
- LANGUAGE python SOURCES ${SWIG_FILES} )
20
- target_include_directories (${TARGET_NAME} PUBLIC ${PYTHON_INCLUDE_DIRS} PUBLIC ${PROJECT_SOURCE_DIR} /src)
19
+ if (ENABLE_PYTHON)
20
+ find_package (PythonLibs 3.6 REQUIRED)
21
+ find_package (Numpy 1.7 REQUIRED)
22
+ file (GLOB_RECURSE SWIG_FILES ${PROJECT_SOURCE_DIR} /src/interface /python/*.i)
23
+ set_property (SOURCE ${SWIG_FILES} PROPERTY CPLUSPLUS ON )
21
24
22
- if (APPLE )
23
- target_link_libraries (${TARGET_NAME} PUBLIC "-undefined dynamic_lookup" )
25
+ set (CMAKE_SWIG_FLAGS "-builtin" )
26
+ swig_add_library(${PYTHON_TARGET_NAME}
27
+ LANGUAGE python SOURCES ${SWIG_FILES}
28
+ OUTFILE_DIR "${CMAKE_BINARY_DIR} /src/interface/python"
29
+ OUTPUT_DIR "${CMAKE_BINARY_DIR} /src/interface/python" )
30
+ target_include_directories (${PYTHON_TARGET_NAME}
31
+ PUBLIC ${PYTHON_INCLUDE_DIRS}
32
+ PUBLIC ${PROJECT_SOURCE_DIR} /src)
33
+ if (APPLE )
34
+ target_link_libraries (${PYTHON_TARGET_NAME} PUBLIC "-undefined dynamic_lookup" )
35
+ endif ()
36
+ target_link_libraries (${PYTHON_TARGET_NAME} PUBLIC prostruct ${ARMADILLO_LIBRARIES} )
37
+ target_include_directories (${PYTHON_TARGET_NAME} PUBLIC ${NUMPY_INCLUDE_DIRS} )
38
+ set_target_properties (${PYTHON_TARGET_NAME} PROPERTIES SWIG_DEPENDS prostruct)
39
+ set_target_properties (${PYTHON_TARGET_NAME} PROPERTIES
40
+ OUTPUT_NAME prostruct
41
+ LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR} /src/interface/python" )
42
+ endif ()
43
+ if (ENABLE_R)
44
+ find_package (R REQUIRED)
45
+ find_package (Rcpp REQUIRED)
46
+ find_package (Boost REQUIRED)
47
+ file (GLOB_RECURSE SWIG_FILES ${PROJECT_SOURCE_DIR} /src/interface /r/*.i)
48
+ set_property (SOURCE ${SWIG_FILES} PROPERTY CPLUSPLUS ON )
49
+ set (CMAKE_SWIG_FLAGS "" )
50
+ swig_add_library(${R_TARGET_NAME}
51
+ LANGUAGE r SOURCES ${SWIG_FILES}
52
+ OUTFILE_DIR "${CMAKE_BINARY_DIR} /src/interface/r"
53
+ OUTPUT_DIR "${CMAKE_BINARY_DIR} /src/interface/r" )
54
+ target_include_directories (${R_TARGET_NAME}
55
+ PUBLIC ${R_INCLUDE_DIR}
56
+ PUBLIC ${RCPP_INCLUDE_DIR}
57
+ PUBLIC ${PROJECT_SOURCE_DIR} /src
58
+ PUBLIC ${Boost_INCLUDE_DIRS} )
59
+ if (APPLE )
60
+ target_link_libraries (${R_TARGET_NAME} PUBLIC "-undefined dynamic_lookup" )
61
+ endif ()
62
+ target_link_libraries (${R_TARGET_NAME} PUBLIC prostruct ${ARMADILLO_LIBRARIES} ${R_LIBRARIES} )
63
+ set_target_properties (${R_TARGET_NAME} PROPERTIES SWIG_DEPENDS prostruct)
64
+ set_target_properties (${R_TARGET_NAME} PROPERTIES
65
+ OUTPUT_NAME prostruct
66
+ LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR} /src/interface/r" )
24
67
endif ()
25
-
26
- target_link_libraries (${TARGET_NAME} PUBLIC prostruct ${ARMADILLO_LIBRARIES} )
27
- target_include_directories (${TARGET_NAME} PUBLIC ${NUMPY_INCLUDE_DIRS} )
28
- set_target_properties (${TARGET_NAME} PROPERTIES SWIG_DEPENDS prostruct)
29
- set_target_properties (${TARGET_NAME} PROPERTIES OUTPUT_NAME prostruct)
0 commit comments