2016-01-13 13:38:23 +02:00
macro ( file_to_list readfile outlist )
FILE ( READ "${readfile}" contents )
STRING ( REGEX REPLACE ";" "\\\\;" contents "${contents}" )
STRING ( REGEX REPLACE "\n" ";" contents "${contents}" )
set ( "${outlist}" "${contents}" )
2016-08-17 17:58:21 -07:00
endmacro ( file_to_list )
2016-01-13 13:38:23 +02:00
file_to_list ( "javaswig_blacklist" JAVASWIG_BLACKLIST )
file_to_list ( "pythonswig_blacklist" PYTHONSWIG_BLACKLIST )
file_to_list ( "nodeswig_blacklist" NODESWIG_BLACKLIST )
2014-06-05 13:58:34 +01:00
macro ( subdirlist result curdir )
file ( GLOB children RELATIVE ${ curdir } ${ curdir } /* )
set ( dirlist "" )
foreach ( child ${ children } )
if ( IS_DIRECTORY ${ curdir } / ${ child } )
set ( dirlist ${ dirlist } ${ child } )
endif ( )
endforeach ( )
set ( ${ result } ${ dirlist } )
2016-08-17 17:58:21 -07:00
endmacro ( subdirlist )
2014-06-11 13:54:19 +01:00
2016-08-17 17:58:21 -07:00
macro ( upm_create_install_pkgconfig generated_file install_location )
2014-06-11 13:54:19 +01:00
configure_file ( ${ PROJECT_SOURCE_DIR } /src/pkgconfig.in
$ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / $ { g e n e r a t e d _ f i l e } @ O N L Y )
install ( FILES ${ CMAKE_CURRENT_BINARY_DIR } / ${ generated_file } DESTINATION ${ install_location } )
2016-08-17 17:58:21 -07:00
endmacro ( upm_create_install_pkgconfig )
2014-06-11 13:54:19 +01:00
2016-08-17 17:58:21 -07:00
macro ( upm_swig_python )
2016-08-03 11:52:43 -06:00
if ( BUILDSWIGPYTHON )
2016-03-29 10:28:22 -07:00
2016-03-29 17:08:12 -07:00
include_directories (
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / . .
)
2014-06-11 13:54:19 +01:00
set_source_files_properties ( pyupm_ ${ libname } .i PROPERTIES CPLUSPLUS ON )
2015-12-16 13:58:11 -08:00
set_source_files_properties ( pyupm_ ${ libname } .i PROPERTIES SWIG_FLAGS "-I${CMAKE_CURRENT_BINARY_DIR}/.." )
2016-08-17 17:58:21 -07:00
swig_add_module ( pyupm_ ${ libname } python pyupm_ ${ libname } .i )
swig_link_libraries ( pyupm_ ${ libname } ${ PYTHON_LIBRARIES } ${ MRAA_LIBRARIES } ${ libname } )
2014-06-11 13:54:19 +01:00
target_include_directories ( ${ SWIG_MODULE_pyupm_${libname } _REAL_NAME}
P U B L I C
" $ { P Y T H O N _ I N C L U D E _ P A T H } "
" $ { P Y T H O N _ I N C L U D E _ D I R S } "
)
install ( FILES ${ CMAKE_CURRENT_BINARY_DIR } /_pyupm_ ${ libname } .so
$ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / p y u p m _ $ { l i b n a m e } . p y
2016-03-28 16:11:46 -07:00
D E S T I N A T I O N $ { L I B _ I N S T A L L _ D I R } / p y t h o n $ { P Y T H O N _ V E R S I O N _ M A J O R } . $ { P Y T H O N _ V E R S I O N _ M I N O R } / s i t e - p a c k a g e s /
2014-06-11 13:54:19 +01:00
C O M P O N E N T $ { l i b n a m e } )
endif ( )
2016-08-17 17:58:21 -07:00
endmacro ( upm_swig_python )
2014-06-11 13:54:19 +01:00
2016-08-17 17:58:21 -07:00
macro ( upm_swig_node )
2016-08-03 11:52:43 -06:00
if ( BUILDSWIGNODE )
2016-03-22 12:01:59 +00:00
# SWIG treats SWIG_FLAGS as a list and not a string so semicolon seperation is
# required. This hardcodes V8_VERSION to be <10 but I assume that's not going
# to be a problem for a little while! SWIG uses a padded SWIG_V8 version which
# we hack together from our findnode module.
set ( V8_VERSION_HEX 0x0 ${ V8_VERSION_MAJOR } ${ V8_VERSION_MINOR } ${ V8_VERSION_PATCH } )
string ( LENGTH "${V8_VERSION_HEX}" V8_VERSION_HEX_length )
while ( V8_VERSION_HEX_length LESS 8 )
set ( V8_VERSION_HEX "${V8_VERSION_HEX}0" )
string ( LENGTH "${V8_VERSION_HEX}" V8_VERSION_HEX_length )
endwhile ( )
2016-03-29 10:28:22 -07:00
2016-03-26 22:01:46 +03:00
include_directories (
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / . .
)
2016-03-22 12:01:59 +00:00
set_property ( SOURCE jsupm_ ${ libname } .i PROPERTY SWIG_FLAGS "-node" "-DV8_VERSION=${V8_VERSION_HEX}" )
2014-06-11 13:54:19 +01:00
set_source_files_properties ( jsupm_ ${ libname } .i PROPERTIES CPLUSPLUS ON )
2016-08-17 17:58:21 -07:00
swig_add_module ( jsupm_ ${ libname } javascript jsupm_ ${ libname } .i )
swig_link_libraries ( jsupm_ ${ libname } ${ MRAA_LIBRARIES } ${ NODE_LIBRARIES } ${ libname } )
2014-06-11 13:54:19 +01:00
target_include_directories ( ${ SWIG_MODULE_jsupm_${libname } _REAL_NAME}
P U B L I C
" $ { N O D E _ I N C L U D E _ D I R S } "
2016-03-22 12:01:59 +00:00
)
2014-06-11 13:54:19 +01:00
set_target_properties ( jsupm_ ${ libname } PROPERTIES
2016-03-22 12:01:59 +00:00
C O M P I L E _ F L A G S " $ { C M A K E _ C X X _ F L A G S } - D B U I L D I N G _ N O D E _ E X T E N S I O N - D S W I G _ V 8 _ V E R S I O N = $ { V 8 _ V E R S I O N _ H E X } "
2014-06-11 13:54:19 +01:00
P R E F I X " "
S U F F I X " . n o d e "
)
2015-11-24 02:50:17 +03:00
if ( ${ V8_VERSION_MAJOR } GREATER 3 )
if ( CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
2015-12-10 13:57:55 -08:00
if ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.7" )
message ( FATAL_ERROR " **ERROR** GCC 4.7 or above is required to compile jsupm_${libname} " )
endif ( )
2015-11-24 02:50:17 +03:00
endif ( )
2016-03-29 10:28:22 -07:00
2016-03-25 11:57:13 -07:00
if ( NOT ENABLECXX11 )
set_property ( TARGET jsupm_ ${ libname } PROPERTY CXX_STANDARD 11 )
set_property ( TARGET jsupm_ ${ libname } PROPERTY CXX_STANDARD_REQUIRED ON )
if ( CMAKE_VERSION VERSION_LESS "3.1" )
if ( CMAKE_COMPILER_IS_GNUCXX )
if ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.7" )
message ( FATAL_ERROR " FATAL ERROR: GNU gcc compiler is also too old (need 4.7+, but ${CMAKE_CXX_COMPILER_VERSION}) and does not support C++11 standard." )
endif ( )
set ( UPM_CXX11_WORKAROUND_OPTION "-std=gnu++11" )
else ( )
set ( UPM_CXX11_WORKAROUND_OPTION "-std=c++11" )
endif ( )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${UPM_CXX11_WORKAROUND_OPTION} " )
2016-03-22 16:15:31 +00:00
endif ( )
endif ( )
2015-11-24 02:50:17 +03:00
endif ( )
2014-06-11 13:54:19 +01:00
createpackagejson ( ${ libname } )
install ( FILES ${ CMAKE_CURRENT_BINARY_DIR } /jsupm_ ${ libname } .node
2016-03-21 17:21:46 +00:00
D E S T I N A T I O N $ { N O D E _ M O D U L E _ I N S T A L L _ P A T H } C O M P O N E N T $ { l i b n a m e } )
2014-06-11 13:54:19 +01:00
endif ( )
2016-08-17 17:58:21 -07:00
endmacro ( upm_swig_node )
2014-06-11 13:54:19 +01:00
2016-08-17 17:58:21 -07:00
macro ( upm_swig_java )
2016-08-03 11:52:43 -06:00
if ( BUILDSWIGJAVA )
2015-08-05 19:43:31 +03:00
FIND_PACKAGE ( JNI REQUIRED )
2015-12-23 17:47:26 +02:00
pkg_check_modules ( MRAAJAVA REQUIRED mraajava>=0.8.0 )
2015-08-05 19:43:31 +03:00
include_directories (
$ { J A V A _ I N C L U D E _ P A T H }
$ { J A V A _ I N C L U D E _ P A T H 2 }
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / . .
)
set_source_files_properties ( javaupm_ ${ libname } .i PROPERTIES CPLUSPLUS ON )
set_source_files_properties ( javaupm_ ${ libname } .i PROPERTIES SWIG_FLAGS ";-package;upm_${libname};-I${CMAKE_BINARY_DIR}/src" )
2016-08-17 17:58:21 -07:00
swig_add_module ( javaupm_ ${ libname } java javaupm_ ${ libname } .i )
swig_link_libraries ( javaupm_ ${ libname } ${ MRAAJAVA_LIBRARIES } ${ MRAA_LIBRARIES } ${ JAVA_LIBRARIES } ${ libname } )
2015-08-05 19:43:31 +03:00
target_include_directories ( ${ SWIG_MODULE_javaupm_${libname } _REAL_NAME}
P U B L I C
" $ { J A V A _ I N C L U D E _ D I R S } "
" $ { J A V A _ I N C L U D E _ P A T H } "
)
set_target_properties ( javaupm_ ${ libname } PROPERTIES
2015-09-14 18:10:12 +03:00
C O M P I L E _ F L A G S " $ { C M A K E _ C X X _ F L A G S } - f p e r m i s s i v e - D J A V A C A L L B A C K "
2015-08-12 19:07:48 +03:00
P R E F I X " l i b "
2015-08-05 19:43:31 +03:00
S U F F I X " . s o "
)
2016-03-28 16:11:46 -07:00
install ( TARGETS javaupm_ ${ libname } LIBRARY DESTINATION ${ LIB_INSTALL_DIR } )
install ( FILES ${ CMAKE_CURRENT_BINARY_DIR } /upm_ ${ libname } .jar DESTINATION ${ LIB_INSTALL_DIR } /../lib/java )
2015-08-05 19:43:31 +03:00
2015-10-08 18:07:25 +03:00
if ( NOT DEFINED $ENV{ JAVA_HOME_NATIVE } )
2015-11-24 02:50:17 +03:00
set ( JAVAC $ENV{ JAVA_HOME } /bin/javac )
set ( JAR $ENV{ JAVA_HOME } /bin/jar )
2015-10-08 18:07:25 +03:00
else ( )
2015-11-24 02:50:17 +03:00
set ( JAVAC $ENV{ JAVA_HOME_NATIVE } /bin/javac )
set ( JAR $ENV{ JAVA_HOME_NATIVE } /bin/jar )
2015-10-08 18:07:25 +03:00
endif ( )
2015-08-05 19:43:31 +03:00
add_custom_command ( TARGET javaupm_ ${ libname }
P O S T _ B U I L D
C O M M A N D c m a k e - E e c h o " C o m p i l i n g j a v a . . "
2015-08-17 16:36:33 +03:00
C O M M A N D c m a k e - E m a k e _ d i r e c t o r y $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / u p m _ $ { l i b n a m e }
2015-08-05 19:43:31 +03:00
C O M M A N D $ { J A V A C } * . j a v a - d $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R }
C O M M A N D c m a k e - E e c h o " C r e a t i n g j a r "
2015-08-17 16:36:33 +03:00
C O M M A N D $ { J A R } c v f u p m _ $ { l i b n a m e } . j a r u p m _ $ { l i b n a m e }
2015-08-05 19:43:31 +03:00
)
endif ( )
2016-08-17 17:58:21 -07:00
endmacro ( upm_swig_java )
2015-08-05 19:43:31 +03:00
2014-06-11 13:54:19 +01:00
macro ( upm_doxygen )
2014-08-11 11:31:32 +01:00
if ( DOXYGEN_FOUND )
2015-07-22 11:48:17 -07:00
if ( NOT DEFINED classname )
set ( classname ${ libname } )
endif ( )
2014-06-11 13:54:19 +01:00
set ( CMAKE_SWIG_FLAGS -DDOXYGEN= ${ DOXYGEN_FOUND } )
2016-08-03 11:52:43 -06:00
if ( BUILDSWIGPYTHON )
2015-12-16 13:58:11 -08:00
add_dependencies ( _pyupm_ ${ libname } pyupm_doxy2swig )
2015-06-02 11:55:49 -07:00
add_dependencies ( pydoc _pyupm_ ${ libname } )
2014-08-11 11:31:32 +01:00
else ( )
add_dependencies ( ${ libname } doc )
endif ( )
2014-06-11 13:54:19 +01:00
endif ( )
2016-08-17 17:58:21 -07:00
endmacro ( upm_doxygen )
2014-06-11 13:54:19 +01:00
if ( SWIG_FOUND )
2016-03-25 11:57:13 -07:00
if ( BUILDSWIGPYTHON )
if ( NOT PYTHONLIBS_FOUND )
2016-06-24 23:01:25 -07:00
find_package ( PythonInterp ${ PYTHONBUILD_VERSION } REQUIRED )
find_package ( PythonLibs ${ PYTHONBUILD_VERSION } REQUIRED )
2016-03-28 13:37:59 -07:00
string ( REPLACE "." ";" PYTHON_VERSION_LIST ${ PYTHONLIBS_VERSION_STRING } )
list ( GET PYTHON_VERSION_LIST 0 PYTHON_VERSION_MAJOR )
list ( GET PYTHON_VERSION_LIST 1 PYTHON_VERSION_MINOR )
2016-03-25 11:57:13 -07:00
endif ( )
2016-03-28 13:37:59 -07:00
endif ( BUILDSWIGPYTHON )
2016-03-21 17:22:25 +00:00
if ( BUILDSWIGNODE )
2015-05-28 08:53:57 -07:00
if ( NOT NODE_FOUND )
2016-03-21 17:21:46 +00:00
find_package ( Node )
2015-05-28 08:53:57 -07:00
endif ( )
if ( SWIG_VERSION VERSION_LESS 3.0.5 AND NODE_VERSION_STRING VERSION_GREATER 0.12 )
message ( "WARNING - SWIG 3.0.5+ required for building with nodejs 0.12. Current version is ${SWIG_VERSION}" )
endif ( )
2016-03-21 17:21:46 +00:00
find_path ( NODE_ROOT_DIR "include/node/node.h" )
set ( NODE_INCLUDE_DIRS
$ { N O D E _ R O O T _ D I R } / i n c l u d e / s r c
$ { N O D E _ R O O T _ D I R } / i n c l u d e / n o d e
$ { N O D E _ R O O T _ D I R } / i n c l u d e / d e p s / v 8 / i n c l u d e
$ { N O D E _ R O O T _ D I R } / i n c l u d e / d e p s / u v / i n c l u d e
)
2014-06-11 13:54:19 +01:00
macro ( createpackagejson )
2016-03-28 14:13:11 -07:00
configure_file ( ${ PROJECT_SOURCE_DIR } /src/package.json.in ${ CMAKE_CURRENT_BINARY_DIR } /package.json @ONLY )
# If a CMAKE_INSTALL_PREFIX has NOT been provided, set NODE_MODULE_INSTALL_PATH
# base on the NODE_ROOT_DIR.
if ( CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT )
2016-04-05 18:45:57 +03:00
set ( NODE_MODULE_INSTALL_PATH ${ NODE_ROOT_DIR } /lib/node_modules/jsupm_ ${ libname } / )
2016-03-28 14:13:11 -07:00
# If a CMAKE_INSTALL_PREFIX has been provided, set NODE_MODULE_INSTALL_PATH
# relative to the provided install directory.
else ( )
2016-04-05 18:45:57 +03:00
set ( NODE_MODULE_INSTALL_PATH ${ CMAKE_INSTALL_PREFIX } /lib/node_modules/jsupm_ ${ libname } / )
2016-03-28 14:13:11 -07:00
endif ( )
install ( FILES ${ CMAKE_CURRENT_BINARY_DIR } /package.json
D E S T I N A T I O N $ { N O D E _ M O D U L E _ I N S T A L L _ P A T H } C O M P O N E N T $ { l i b n a m e } )
2016-08-17 17:58:21 -07:00
endmacro ( createpackagejson )
2014-06-11 13:54:19 +01:00
endif ( BUILDSWIGNODE )
endif ( )
2016-08-17 17:58:21 -07:00
# Process C/C++ sensor modules
# This function pre-processes sensor library input and hands off the
# necessary global variables to upm_module_init for library creation,
# documenation, swigging, etc...
function ( UPM_MIXED_MODULE_INIT )
# CPP_WRAPS_C -> Set to have CPP library link to C library
# DESCRIPTION -> Library description string
# CPP_HDR -> List of CPP header files
# CPP_SRC -> List of CPP source files
# C_HDR -> List of C header files
# C_SRC -> List of C source files
# FTI_SRC -> List of C FTI source files
# REQUIRES -> List requires libraries for pkg-config
set ( options CPP_WRAPS_C )
set ( oneValueArgs NAME DESCRIPTION )
set ( multiValueArgs CPP_HDR CPP_SRC C_HDR C_SRC FTI_SRC FTI_HDR REQUIRES )
# Parse function parameters
cmake_parse_arguments ( UPM_MIXED_MODULE_INIT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ ARGN } )
# Set the description
set ( libdescription ${ UPM_MIXED_MODULE_INIT_DESCRIPTION } )
# Always build C libs first
if ( UPM_MIXED_MODULE_INIT_C_SRC )
set ( libname ${ UPM_MIXED_MODULE_INIT_NAME } )
# Set the src and hpp variables for upm_module_init
set ( module_src ${ UPM_MIXED_MODULE_INIT_C_SRC } )
set ( module_hpp ${ UPM_MIXED_MODULE_INIT_C_HDR } )
# Create the reqlibname list
string ( REPLACE ";" " " reqlibname "${UPM_MIXED_MODULE_INIT_REQUIRES}" )
2016-08-24 15:40:30 -06:00
# Append upmc-utilities to the reqlibs (but not on upm-utilities itself)
if ( NOT ${ libname } MATCHES "utilities" )
set ( reqlibname "${reqlibname} upmc-utilities" )
endif ( )
2016-08-17 17:58:21 -07:00
# If building FTI, and FTI src exists, add it in
if ( BUILDFTI AND UPM_MIXED_MODULE_INIT_FTI_SRC )
#set (module_src ${UPM_MIXED_MODULE_INIT_C_SRC} ${UPM_MIXED_MODULE_INIT_FTI_SRC})
list ( APPEND module_src ${ UPM_MIXED_MODULE_INIT_FTI_SRC } )
message ( INFO " XXX BUILDING FTI ${UPM_MIXED_MODULE_INIT_FTI_SRC}" )
endif ( BUILDFTI AND UPM_MIXED_MODULE_INIT_FTI_SRC )
message ( INFO " XXX BUILDING C src ${module_src}" )
# Add include directories for C
include_directories ( ${ UPM_COMMON_HEADER_DIRS }
$ { C M A K E _ S O U R C E _ D I R } / s r c / u t i l i t i e s )
# Set a flag to tell upm_module_init that it's building a C library
set ( IS_C_LIBRARY TRUE )
upm_module_init ( )
2016-08-24 15:40:30 -06:00
# add upmc-utilities as a dependancy to all C libs (but NOT to the
# utilities lib itself)
if ( NOT ${ libname } MATCHES "utilities-c" )
2016-08-31 14:16:56 -07:00
target_link_libraries ( ${ libname } utilities-c )
2016-08-24 15:40:30 -06:00
endif ( )
2016-08-29 17:39:41 -06:00
endif ( UPM_MIXED_MODULE_INIT_C_SRC )
2016-08-17 17:58:21 -07:00
# Build C++ if enabled AND C++ headers exist
if ( BUILDCPP AND UPM_MIXED_MODULE_INIT_CPP_HDR )
# Set the src and hpp variables for upm_module_init
set ( module_src ${ UPM_MIXED_MODULE_INIT_CPP_SRC } )
set ( module_hpp ${ UPM_MIXED_MODULE_INIT_CPP_HDR } )
# Create the reqlibname list
string ( REPLACE ";" " " reqlibname "${UPM_MIXED_MODULE_INIT_REQUIRES}" )
# Reset the libname (upm_module_init can change it)
set ( libname ${ UPM_MIXED_MODULE_INIT_NAME } )
unset ( IS_C_LIBRARY )
message ( INFO " XXX BUILDING C++ src ${module_src}" )
upm_module_init ( )
# If the C++ wraps the C target, add the C target as a dependency
if ( UPM_MIXED_MODULE_INIT_CPP_WRAPS_C )
target_link_libraries ( ${ libname } ${ libname } -c )
endif ( UPM_MIXED_MODULE_INIT_CPP_WRAPS_C )
endif ( BUILDCPP AND UPM_MIXED_MODULE_INIT_CPP_HDR )
endfunction ( UPM_MIXED_MODULE_INIT )
2014-06-11 13:54:19 +01:00
macro ( upm_module_init )
2016-08-17 17:58:21 -07:00
set ( basename ${ libname } )
# If this is a C library, handle different collateral naming
if ( IS_C_LIBRARY )
set ( libname ${ libname } -c )
set ( libprefix upmc- )
set ( pcname upmc- ${ basename } .pc )
else ( )
set ( libprefix upm- )
set ( pcname upm- ${ basename } .pc )
endif ( IS_C_LIBRARY )
2015-12-10 13:57:55 -08:00
link_directories ( ${ MRAA_LIBDIR } )
2014-06-12 11:39:10 +01:00
add_library ( ${ libname } SHARED ${ module_src } )
2015-01-17 10:09:06 +00:00
foreach ( linkflag ${ ARGN } )
target_link_libraries ( ${ libname } ${ linkflag } )
endforeach ( )
2016-03-29 10:28:22 -07:00
include_directories ( ${ MRAA_INCLUDE_DIRS } . .. )
2014-06-25 10:05:27 +01:00
target_link_libraries ( ${ libname } ${ MRAA_LIBRARIES } )
2014-06-17 11:41:05 +01:00
set_target_properties (
$ { l i b n a m e }
2016-08-17 17:58:21 -07:00
P R O P E R T I E S P R E F I X l i b $ { l i b p r e f i x }
O U T P U T _ N A M E $ { b a s e n a m e }
2014-06-17 11:41:05 +01:00
S O V E R S I O N $ { u p m _ V E R S I O N _ M A J O R }
V E R S I O N $ { u p m _ V E R S I O N _ S T R I N G }
)
2016-08-17 17:58:21 -07:00
upm_create_install_pkgconfig ( ${ pcname } ${ LIB_INSTALL_DIR } /pkgconfig )
# Don't SWIG C
if ( SWIG_FOUND AND NOT IS_C_LIBRARY )
2016-01-13 13:38:23 +02:00
if ( NOT ";${PYTHONSWIG_BLACKLIST};" MATCHES ";${libname};" )
upm_swig_python ( )
endif ( )
if ( NOT ";${NODESWIG_BLACKLIST};" MATCHES ";${libname};" )
upm_swig_node ( )
endif ( )
if ( NOT ";${JAVASWIG_BLACKLIST};" MATCHES ";${libname};" )
upm_swig_java ( )
endif ( )
2016-08-17 17:58:21 -07:00
endif ( SWIG_FOUND AND NOT IS_C_LIBRARY )
# Skip doxygen run on C (for now)
if ( BUILDDOC AND NOT IS_C_LIBRARY )
2014-06-11 13:54:19 +01:00
upm_doxygen ( )
endif ( )
2016-08-17 17:58:21 -07:00
install ( TARGETS ${ libname } DESTINATION ${ LIB_INSTALL_DIR } )
2016-04-25 14:27:51 -07:00
install ( FILES ${ module_hpp } DESTINATION include/upm COMPONENT ${ libname } )
2014-06-11 13:54:19 +01:00
if ( IPK )
cpack_add_component ( ${ libname } DISPLAY_NAME ${ libname } REQUIRED INSTALL_TYPES all )
set ( CPACK_COMPONENT_ ${ libname } _DESCRIPTION "${libdescription}" )
endif ( )
endmacro ( upm_module_init )
2015-12-16 13:58:11 -08:00
# Generate python module documentation from doxygen collateral
if ( BUILDDOC AND BUILDSWIGPYTHON AND SWIG_FOUND )
# doxy2swig the doxygen output
add_custom_command ( OUTPUT ${ CMAKE_CURRENT_BINARY_DIR } /pyupm_doxy2swig.i
C O M M A N D $ { P Y T H O N _ E X E C U T A B L E } $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / d o x y 2 s w i g . p y
$ { C M A K E _ B I N A R Y _ D I R } / x m l / i n d e x . x m l
$ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / p y u p m _ d o x y 2 s w i g . i
D E P E N D S $ { C M A K E _ B I N A R Y _ D I R } / x m l / i n d e x . x m l
)
add_custom_target ( pyupm_doxy2swig DEPENDS ${ CMAKE_CURRENT_BINARY_DIR } /pyupm_doxy2swig.i )
add_dependencies ( pyupm_doxy2swig doc )
# BUILDDOC not set but still building python modules, generate an empty
# pyupm_doxy2swig.i file (overwriting if necessary)
elseif ( BUILDSWIGPYTHON AND SWIG_FOUND )
message ( INFO " Generating empty ${CMAKE_CURRENT_BINARY_DIR}/pyupm_doxy2swig.i" )
file ( WRITE ${ CMAKE_CURRENT_BINARY_DIR } /pyupm_doxy2swig.i "// Empty doxy2swig stub" )
endif ( BUILDDOC AND BUILDSWIGPYTHON AND SWIG_FOUND )
2015-11-19 15:49:18 -08:00
if ( MODULE_LIST )
set ( SUBDIRS ${ MODULE_LIST } )
set ( SUBDIRS ${ SUBDIRS } upm )
else ( )
subdirlist ( SUBDIRS ${ CMAKE_CURRENT_SOURCE_DIR } )
endif ( )
2014-06-05 13:58:34 +01:00
foreach ( subdir ${ SUBDIRS } )
2015-01-15 18:24:52 +01:00
if ( EXISTS ${ CMAKE_CURRENT_SOURCE_DIR } / ${ subdir } /CMakeLists.txt )
add_subdirectory ( ${ subdir } )
endif ( )
2014-06-05 13:58:34 +01:00
endforeach ( )