aboutsummaryrefslogtreecommitdiff
path: root/CMakeModules/implementations.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeModules/implementations.cmake')
-rw-r--r--CMakeModules/implementations.cmake20
1 files changed, 16 insertions, 4 deletions
diff --git a/CMakeModules/implementations.cmake b/CMakeModules/implementations.cmake
index aa6a8bf..cfab7e2 100644
--- a/CMakeModules/implementations.cmake
+++ b/CMakeModules/implementations.cmake
@@ -5,7 +5,7 @@ function(DefineImplementations prefix)
set(implementations "")
foreach(child ${children})
IF(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${prefix}/${child})
- LIST(APPEND implementations ${child})
+ LIST(APPEND implementations ${child})
ENDIF()
ENDFOREACH()
@@ -15,9 +15,21 @@ function(DefineImplementations prefix)
message(FATAL_ERROR "Cannot call DefineImplementations with an empty implementations list.")
endif()
+ get_filename_component(lib ${CMAKE_CURRENT_SOURCE_DIR} NAME)
+ string(REGEX REPLACE "-" "_" lib ${lib})
+
list(GET implementations 0 default)
- set(${prefix}_implementations ${implementations} PARENT_SCOPE)
- set(${prefix}_implementation "${default}" CACHE STRING "${prefix} implementation chosen at configure time")
- set_property(CACHE ${prefix}_implementation PROPERTY STRINGS ${implementations})
+
+ if ("${prefix}" STREQUAL "")
+ set(prefix "")
+ else()
+ set(prefix "${prefix}_")
+ string(REGEX REPLACE "/" "_" prefix ${prefix})
+ endif()
+
+
+ set(${lib}_${prefix}implementations ${implementations} PARENT_SCOPE)
+ set(${lib}_${prefix}implementation "${default}" CACHE STRING "${lib} implementation chosen at configure time")
+ set_property(CACHE ${lib}_${prefix}implementation PROPERTY STRINGS ${implementations})
endfunction(DefineImplementations)