diff options
| author | Dennis Brentjes <d.brentjes@gmail.com> | 2016-10-04 12:18:35 +0200 |
|---|---|---|
| committer | Dennis Brentjes <d.brentjes@gmail.com> | 2016-10-04 12:18:35 +0200 |
| commit | 4f2c980343b321e7fccf48190c32bfb4bca426f4 (patch) | |
| tree | e08d299dc9da1976c8924207f9cbfbc8bd06709a /CMakeModules | |
| parent | ad3d46b0b6ca285bbaf1540e9805714addfeb9af (diff) | |
| download | cmix-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.cmake | 3 | ||||
| -rw-r--r-- | CMakeModules/get_target_name.cmake | 8 | ||||
| -rw-r--r-- | CMakeModules/implementations.cmake | 20 |
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) |
