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
|
Description: Split export file into several pieces
In Debian, OCE libraries are split into several packages.
Prior to oce 0.10-3, the OCE-libraries-release.cmake file contained all
targets computed when compiling. But then CMake projects could load this
file only if all files referenced by these targets were present, which
means that nearly all oce packages have to be installed.
.
With this patch, each package contains a cmake script which declares
only its own targets, and OCEConfig.cmake loads all those scripts
in the right order.
.
The only downside is that cmake reports errors when generating files:
CMake Error: INSTALL(EXPORT "OCE02_ModelingTargets" ...) includes target "TKG2d" which requires target "TKernel" that is not in the export set.
CMake Error: INSTALL(EXPORT "OCE02_ModelingTargets" ...) includes target "TKG3d" which requires target "TKMath" that is not in the export set.
[...]
and thus returns 1 instead of 0.
.
This is related to
http://www.cmake.org/Bug/view.php?id=12588
.
This patch is Debian specific and does not have to be forwarded upstream.
.
Author: Denis Barbier <bouzim@gmail.com>
Origin: Debian
Forwarded: no
Last-Update: 2013-08-07
Index: oce-OCE-0.18.3/CMakeLists.txt
===================================================================
--- oce-OCE-0.18.3.orig/CMakeLists.txt
+++ oce-OCE-0.18.3/CMakeLists.txt
@@ -999,6 +999,19 @@ configure_file (${CMAKE_CURRENT_SOURCE_D
set ( OCE_WIN32_RES_FILE ${CMAKE_CURRENT_BINARY_DIR}/Version.rc )
endif(NOT OCE_NO_LIBRARY_VERSION)
+macro(debian_declare_export_targets packagename modules)
+ foreach(module ${modules})
+ set(debianTargetExport${module} OCE${packagename}Targets)
+ endforeach(module ${modules})
+endmacro(debian_declare_export_targets packagename modules)
+
+debian_declare_export_targets(01_Foundation "TKernel;TKMath;TKAdvTools")
+debian_declare_export_targets(02_Modeling "TKG2d;TKG3d;TKGeomBase;TKBRep;TKGeomAlgo;TKTopAlgo;TKPrim;TKBO;TKHLR;TKMesh;TKShHealing;TKXMesh;TKBool;TKFillet;TKFeat;TKOffset;TKSTL;TKXSBase;TKSTEPBase;TKIGES;TKSTEPAttr;TKSTEP209;TKSTEP")
+debian_declare_export_targets(03_OcafLite "TKCDF;PTKernel;TKLCAF;FWOSPlugin;TKPShape;TKBinL;TKXmlL;TKPLCAF;TKTObj;TKShapeSchema;TKStdLSchema")
+debian_declare_export_targets(04_Visualization "TKService;TKV2d;TKV3d;TKOpenGl;TKMeshVS;TKNIS;TKVRML;TKVoxel")
+debian_declare_export_targets(05_Ocaf "TKCAF;TKBin;TKXml;TKPCAF;TKBinTObj;TKXmlTObj;TKStdSchema;TKXCAF;TKXCAFSchema;TKXmlXCAF;TKBinXCAF;TKXDEIGES;TKXDESTEP")
+debian_declare_export_targets(06_Draw "TKDraw;TKTopTest;TKViewerTest;TKXSDRAW;TKDCAF;TKXDEDRAW;TKTObjDRAW;TKQADraw")
+
macro(process_module modulename modules_std)
set(modules ${modules_std})
if(NOT OCE_DISABLE_X11)
@@ -1075,7 +1088,12 @@ configure_file( ${CMAKE_CURRENT_SOURCE_D
install(FILES ${PROJECT_BINARY_DIR}/OCEConfig.cmake ${PROJECT_BINARY_DIR}/OCEConfigVersion.cmake
DESTINATION ${OCE_INSTALL_CMAKE_DATA_DIR} COMPONENT Development )
-install(EXPORT OCE-libraries DESTINATION ${OCE_INSTALL_CMAKE_DATA_DIR} COMPONENT Development)
+install(EXPORT OCE01_FoundationTargets DESTINATION ${OCE_INSTALL_CMAKE_DATA_DIR} COMPONENT Development)
+install(EXPORT OCE02_ModelingTargets DESTINATION ${OCE_INSTALL_CMAKE_DATA_DIR} COMPONENT Development)
+install(EXPORT OCE03_OcafLiteTargets DESTINATION ${OCE_INSTALL_CMAKE_DATA_DIR} COMPONENT Development)
+install(EXPORT OCE04_VisualizationTargets DESTINATION ${OCE_INSTALL_CMAKE_DATA_DIR} COMPONENT Development)
+install(EXPORT OCE05_OcafTargets DESTINATION ${OCE_INSTALL_CMAKE_DATA_DIR} COMPONENT Development)
+install(EXPORT OCE06_DrawTargets DESTINATION ${OCE_INSTALL_CMAKE_DATA_DIR} COMPONENT Development)
############
# PostBuild Step
Index: oce-OCE-0.18.3/adm/cmake/BuildToolkit.cmake
===================================================================
--- oce-OCE-0.18.3.orig/adm/cmake/BuildToolkit.cmake
+++ oce-OCE-0.18.3/adm/cmake/BuildToolkit.cmake
@@ -382,7 +382,7 @@ install(FILES ${TOOLKIT_HEADER_FILES}
)
install(TARGETS ${TOOLKIT}
- EXPORT OCE-libraries
+ EXPORT ${debianTargetExport${TOOLKIT}}
RUNTIME DESTINATION ${TOOLKIT_INSTALL_BIN_DIR} COMPONENT RuntimeLibraries
LIBRARY DESTINATION ${TOOLKIT_INSTALL_LIB_DIR} COMPONENT RuntimeLibraries
ARCHIVE DESTINATION ${TOOLKIT_INSTALL_LIB_DIR} COMPONENT Development
Index: oce-OCE-0.18.3/adm/cmake/config/ProjectConfig.cmake.in
===================================================================
--- oce-OCE-0.18.3.orig/adm/cmake/config/ProjectConfig.cmake.in
+++ oce-OCE-0.18.3/adm/cmake/config/ProjectConfig.cmake.in
@@ -20,7 +20,11 @@ get_filename_component(SELF_DIR "${CMAKE
set(OCE_INCLUDE_DIRS "${SELF_DIR}/@OCE_CMAKE_DATA_TO_INCLUDE_RELATIVE_DIR@")
set(OCE_LIBRARIES "@OCE_LIBRARIES@")
set(OCE_ALL_BUILT_MODULES "@OCE_ALL_BUILT_MODULES@")
-include("${SELF_DIR}/OCE-libraries.cmake")
+file(GLOB DEBIAN_TARGET_FILES ${SELF_DIR}/OCE*Targets.cmake)
+list(SORT DEBIAN_TARGET_FILES)
+foreach(file ${DEBIAN_TARGET_FILES})
+ include("${file}")
+endforeach(file ${DEBIAN_TARGET_FILES})
set(OCE_ALL_FOUND true)
if(OCE_FIND_COMPONENTS)
|