Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
otb
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
211
Issues
211
List
Boards
Labels
Milestones
Merge Requests
9
Merge Requests
9
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Container Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Main Repositories
otb
Commits
e193510e
Commit
e193510e
authored
Sep 02, 2019
by
Guillaume Pasero
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
CI: script to setup a namespace for OTB imported targets
parent
3e7f5be3
Pipeline
#2499
passed with stages
in 73 minutes and 54 seconds
Changes
2
Pipelines
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
108 additions
and
0 deletions
+108
-0
CMake/NamespaceHandler.cmake
CMake/NamespaceHandler.cmake
+107
-0
CMakeLists.txt
CMakeLists.txt
+1
-0
No files found.
CMake/NamespaceHandler.cmake
0 → 100644
View file @
e193510e
#
# Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES)
#
# This file is part of Orfeo Toolbox
#
# https://www.orfeo-toolbox.org/
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# replace target name on one line
macro
(
ns_filter_line
)
foreach
(
_t_name
${
_t_list
}
)
string
(
REPLACE
"
${
_t_prefix
}${
_t_name
}${
_t_suffix
}
"
"
${
_t_prefix
}${
REPLACEMENT_
${
_t_name
}}${
_t_suffix
}
"
_filtered_line
"
${
_filtered_line
}
"
)
endforeach
()
endmacro
()
# This function sets the namespace for all targets in the CMake files installed
# by OTB
function
(
otb_set_namespace folder ns
)
set
(
_t_regex
"add_(library|executable) *
\\
( *([a-zA-Z0-9_:-]+) (.* )?IMPORTED( |
\\
)).*"
)
if
(
EXISTS
"
${
folder
}
/OTBTargets.cmake"
)
# list targets
file
(
STRINGS
"
${
folder
}
/OTBTargets.cmake"
_t_content REGEX
"
${
_t_regex
}
"
)
set
(
_t_list
)
foreach
(
_line
${
_t_content
}
)
string
(
REGEX REPLACE
"
${
_t_regex
}
"
"
\\
2"
_t_name
"
${
_line
}
"
)
list
(
APPEND _t_list
"
${
_t_name
}
"
)
set
(
_t_real_name
"
${
_t_name
}
"
)
set
(
_old_ns_regex
"([a-zA-Z0-9_-]+)::([a-zA-Z0-9_-]+)"
)
if
(
_t_name MATCHES
"
${
_old_ns_regex
}
"
)
string
(
REGEX REPLACE
"
${
_old_ns_regex
}
"
"
\\
2"
_t_real_name
"
${
_t_name
}
"
)
endif
()
if
(
ns
)
set
(
REPLACEMENT_
${
_t_name
}
"
${
ns
}
::
${
_t_real_name
}
"
)
else
()
set
(
REPLACEMENT_
${
_t_name
}
"
${
_t_real_name
}
"
)
endif
()
endforeach
()
# list files to patch
set
(
_files_to_process
"
${
folder
}
/OTBTargets.cmake"
)
file
(
GLOB _other_targets
"
${
folder
}
/OTBTargets-*.cmake"
)
list
(
APPEND _files_to_process
${
_other_targets
}
)
file
(
GLOB _module_files
"
${
folder
}
/Modules/*.cmake"
)
list
(
APPEND _files_to_process
${
_module_files
}
)
# patch each file
foreach
(
_file_path
${
_files_to_process
}
)
file
(
STRINGS
"
${
_file_path
}
"
_file_content NEWLINE_CONSUME
)
string
(
REGEX REPLACE
"
\n
"
"
\n
;"
_file_content
"
${
_file_content
}
"
)
set
(
_file_filtered_content
)
foreach
(
_line
${
_file_content
}
)
set
(
_filtered_line
"
${
_line
}
"
)
if
(
_filtered_line MATCHES
"(add_library|add_executable|set_target_properties)"
)
set
(
_t_prefix
"("
)
set
(
_t_suffix
" "
)
ns_filter_line
()
elseif
(
_filtered_line MATCHES
"(set_property|APPEND _IMPORT_CHECK_TARGETS)"
)
set
(
_t_prefix
" "
)
set
(
_t_suffix
" "
)
ns_filter_line
()
elseif
(
_filtered_line MATCHES
"_LIBRARIES"
)
set
(
_t_prefix
" "
)
set
(
_t_suffix
" "
)
string
(
REPLACE
";"
" ; "
_filtered_line
"
${
_filtered_line
}
"
)
string
(
REPLACE
"
\"
"
"
\"
"
_filtered_line
"
${
_filtered_line
}
"
)
ns_filter_line
()
string
(
REPLACE
" ; "
";"
_filtered_line
"
${
_filtered_line
}
"
)
string
(
REPLACE
"
\"
"
"
\"
"
_filtered_line
"
${
_filtered_line
}
"
)
elseif
(
_filtered_line MATCHES
"APPEND _IMPORT_CHECK_FILES_FOR_"
)
set
(
_t_prefix
"_"
)
set
(
_t_suffix
" "
)
ns_filter_line
()
elseif
(
_filtered_line MATCHES
"foreach
\\
(_expectedTarget "
)
set
(
_t_prefix
" "
)
set
(
_t_suffix
" "
)
string
(
REPLACE
")"
" )"
_filtered_line
"
${
_filtered_line
}
"
)
ns_filter_line
()
string
(
REPLACE
" )"
")"
_filtered_line
"
${
_filtered_line
}
"
)
endif
()
list
(
APPEND _file_filtered_content
${
_filtered_line
}
)
endforeach
()
string
(
REGEX REPLACE
"
\n
;"
"
\n
"
_file_filtered_content
"
${
_file_filtered_content
}
"
)
file
(
WRITE
"
${
_file_path
}
"
"
${
_file_filtered_content
}
"
)
endforeach
()
else
()
message
(
WARNING
"No OTBTargets.cmake found in folder :
${
folder
}
"
)
endif
()
endfunction
()
if
(
DEFINED NAMESPACE
)
set
(
CTEST_SOURCE_DIRECTORY
"
${
CMAKE_CURRENT_LIST_DIR
}
"
)
set
(
CTEST_BINARY_DIRECTORY
"
${
CMAKE_CURRENT_LIST_DIR
}
"
)
set
(
CTEST_COMMAND ctest
)
message
(
"Set target namespace to
\"
${
NAMESPACE
}
\"
"
)
otb_set_namespace
(
"
${
CMAKE_CURRENT_LIST_DIR
}
"
"
${
NAMESPACE
}
"
)
endif
()
CMakeLists.txt
View file @
e193510e
...
...
@@ -403,6 +403,7 @@ install(FILES ${OTB_BINARY_DIR}/CMakeFiles/OTBConfig.cmake
CMake/UseOTB.cmake
CMake/GenerateExportHeaderCustom.cmake
CMake/exportheader.cmake.in
CMake/NamespaceHandler.cmake
DESTINATION
${
OTB_INSTALL_PACKAGE_DIR
}
COMPONENT Development
)
get_property
(
OTBTargets_MODULES GLOBAL PROPERTY OTBTargets_MODULES
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment