]> Creatis software - cpPlugins.git/blob - cmake/cpPlugins_Functions.cmake
d2ec9ca333e5c5cb1c62da9533e4aa1743e2ad8b
[cpPlugins.git] / cmake / cpPlugins_Functions.cmake
1
2 ## -------------------------------------------------------------------------
3 FUNCTION(cpPlugins_WrapInstances instances libprefix ver sver)
4 GET_FILENAME_COMPONENT(name ${instances} NAME_WE)
5 SET(i_FILE "${CMAKE_CURRENT_SOURCE_DIR}/${name}.i")
6 SET(h_FILE "${CMAKE_CURRENT_BINARY_DIR}/${name}.h")
7 SET(s_FILE "${CMAKE_CURRENT_BINARY_DIR}/${name}.cxx")
8 SET(e_FILE "${CMAKE_CURRENT_SOURCE_DIR}/${name}_extra.cxx")
9 SET(l_NAME "${libprefix}${name}")
10 SET(x_FILE "${CMAKE_CURRENT_BINARY_DIR}/${l_NAME}_Export.h")
11 ADD_CUSTOM_COMMAND(
12   OUTPUT ${h_FILE} ${s_FILE}
13   DEPENDS ${cpPlugins_CreateInstances_APP} ${i_FILE}
14   COMMAND ${cpPlugins_CreateInstances_APP} ${i_FILE} ${l_NAME} ${h_FILE} ${s_FILE}
15   )
16 IF(EXISTS ${e_FILE})
17   ADD_LIBRARY(${l_NAME} SHARED ${s_FILE} ${e_FILE})
18 ELSE(EXISTS ${e_FILE})
19   ADD_LIBRARY(${l_NAME} SHARED ${s_FILE})
20 ENDIF(EXISTS ${e_FILE})
21 SET_TARGET_PROPERTIES(
22   ${l_NAME} PROPERTIES
23   VERSION "${ver}"
24   SOVERSION "${sver}"
25   )
26 GENERATE_EXPORT_HEADER(
27   ${l_NAME}
28   BASE_NAME ${l_NAME}
29   EXPORT_MACRO_NAME ${l_NAME}_EXPORT
30   EXPORT_FILE_NAME ${x_FILE}
31   STATIC_DEFINE ${l_NAME}_BUILT_AS_STATIC
32   )
33 TARGET_LINK_LIBRARIES(${l_NAME} ${ARGN})
34 ENDFUNCTION()
35
36 ## -------------------------------------------------------------------------
37 FUNCTION(cpPlugins_WrapPlugins libname ver sver headers sources other_sources qtheaders)
38 SET(host ${CMAKE_CURRENT_BINARY_DIR}/${libname}_Host.cxx)
39 ADD_CUSTOM_COMMAND(
40   OUTPUT ${host}
41   DEPENDS ${cpPlugins_HostCreator_APP} ${headers}
42   COMMAND ${cpPlugins_HostCreator_APP} ${host} ${headers}
43   )
44 ADD_LIBRARY(${libname} SHARED ${host} ${sources} ${other_sources})
45 SET_TARGET_PROPERTIES(
46   ${libname} PROPERTIES
47   VERSION "${ver}"
48   SOVERSION "${sver}"
49   )
50 GENERATE_EXPORT_HEADER(
51   ${libname}
52   BASE_NAME ${libname}
53   EXPORT_MACRO_NAME ${libname}_EXPORT
54   EXPORT_FILE_NAME ${CMAKE_CURRENT_BINARY_DIR}/${libname}_Export.h
55   STATIC_DEFINE ${libname}_BUILT_AS_STATIC
56   )
57 TARGET_LINK_LIBRARIES(${libname} ${ARGN})
58 ENDFUNCTION()
59
60 ## eof - $RCSfile$