]> Creatis software - cpPlugins.git/blob - cmake/cpPlugins_Functions.cmake
..
[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 SET(qtsources)
45 FOREACH(qth ${qtheaders})
46   QT4_WRAP_CPP(qth_moc ${qth})
47   SET(qtsources "${qtsources};${qth_moc}")
48 ENDFOREACH(qth)
49
50 ADD_LIBRARY(${libname} SHARED ${host} ${sources} ${other_sources} ${qtsources})
51 SET_TARGET_PROPERTIES(
52   ${libname} PROPERTIES
53   VERSION "${ver}"
54   SOVERSION "${sver}"
55   )
56 GENERATE_EXPORT_HEADER(
57   ${libname}
58   BASE_NAME ${libname}
59   EXPORT_MACRO_NAME ${libname}_EXPORT
60   EXPORT_FILE_NAME ${CMAKE_CURRENT_BINARY_DIR}/${libname}_Export.h
61   STATIC_DEFINE ${libname}_BUILT_AS_STATIC
62   )
63 TARGET_LINK_LIBRARIES(${libname} ${ARGN})
64 ENDFUNCTION()
65
66 ## eof - $RCSfile$