aboutsummaryrefslogtreecommitdiff
path: root/CMakeModules
diff options
context:
space:
mode:
authorDennis Brentjes <d.brentjes@gmail.com>2016-10-04 12:18:35 +0200
committerDennis Brentjes <d.brentjes@gmail.com>2016-10-04 12:18:35 +0200
commit4f2c980343b321e7fccf48190c32bfb4bca426f4 (patch)
treee08d299dc9da1976c8924207f9cbfbc8bd06709a /CMakeModules
parentad3d46b0b6ca285bbaf1540e9805714addfeb9af (diff)
downloadcmix-4f2c980343b321e7fccf48190c32bfb4bca426f4.tar.gz
cmix-4f2c980343b321e7fccf48190c32bfb4bca426f4.tar.bz2
cmix-4f2c980343b321e7fccf48190c32bfb4bca426f4.zip
Added a bignum library to abstract possible implementations.
Diffstat (limited to 'CMakeModules')
-rw-r--r--CMakeModules/bignum_implementations.cmake3
-rw-r--r--CMakeModules/get_target_name.cmake8
-rw-r--r--CMakeModules/implementations.cmake20
3 files changed, 23 insertions, 8 deletions
diff --git a/CMakeModules/bignum_implementations.cmake b/CMakeModules/bignum_implementations.cmake
new file mode 100644
index 0000000..4db7d78
--- /dev/null
+++ b/CMakeModules/bignum_implementations.cmake
@@ -0,0 +1,3 @@
+include(implementations)
+
+DefineImplementations("")
diff --git a/CMakeModules/get_target_name.cmake b/CMakeModules/get_target_name.cmake
index 6e7c6fd..90d585d 100644
--- a/CMakeModules/get_target_name.cmake
+++ b/CMakeModules/get_target_name.cmake
@@ -1,10 +1,10 @@
function(get_target_name target_name)
-get_filename_component(implementation ${CMAKE_CURRENT_LIST_DIR} NAME)
-get_filename_component(implementation_path ${CMAKE_CURRENT_LIST_DIR} DIRECTORY)
-get_filename_component(algorithm ${implementation_path} NAME)
+ get_filename_component(implementation ${CMAKE_CURRENT_LIST_DIR} NAME)
+ get_filename_component(implementation_path ${CMAKE_CURRENT_LIST_DIR} DIRECTORY)
+ get_filename_component(algorithm ${implementation_path} NAME)
-set(${target_name} "${algorithm}-${implementation}" PARENT_SCOPE)
+ set(${target_name} "${algorithm}-${implementation}" PARENT_SCOPE)
endfunction(get_target_name)
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)