summaryrefslogtreecommitdiffstats
path: root/src/methods
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2013-11-03 02:20:09 +0100
committerMatthias Schiffer <mschiffer@universe-factory.net>2013-11-03 02:20:09 +0100
commite7893cc54fb0eaba0cfe88ff44cf52a3f7ff2200 (patch)
treee8036848eae496deea839ec35389d710b54cd18c /src/methods
parentd04123c9ed17d7a590702cd574e651aa78021a5c (diff)
downloadfastd-e7893cc54fb0eaba0cfe88ff44cf52a3f7ff2200.tar
fastd-e7893cc54fb0eaba0cfe88ff44cf52a3f7ff2200.zip
Even nicer method specification
Diffstat (limited to 'src/methods')
-rw-r--r--src/methods/CMakeLists.txt49
-rw-r--r--src/methods/generic_gcm/CMakeLists.txt3
-rw-r--r--src/methods/null/CMakeLists.txt2
-rw-r--r--src/methods/xsalsa20_poly1305/CMakeLists.txt3
4 files changed, 16 insertions, 41 deletions
diff --git a/src/methods/CMakeLists.txt b/src/methods/CMakeLists.txt
index 7676c25..4a1f986 100644
--- a/src/methods/CMakeLists.txt
+++ b/src/methods/CMakeLists.txt
@@ -1,58 +1,31 @@
-set(METHODS "")
-set(METHOD_COMMON FALSE)
+add_library(methods STATIC "${CMAKE_CURRENT_BINARY_DIR}/methods.c")
+add_library(method_common STATIC "common.c")
-macro(fastd_method name needs_common)
- string(REPLACE - _ name_ "${name}")
- string(TOUPPER "${name_}" NAME)
-
- set(WITH_METHOD_${NAME} TRUE CACHE BOOL "Include the ${name} method")
-
- if(WITH_METHOD_${NAME})
- add_library(method_${name_} OBJECT ${ARGN})
- set_property(TARGET method_${name_} PROPERTY COMPILE_FLAGS "${FASTD_CFLAGS}")
-
- list(APPEND METHODS ${name_})
- set(METHODS "${METHODS}" PARENT_SCOPE)
- endif(WITH_METHOD_${NAME})
-
- if(${needs_common})
- set(METHOD_COMMON TRUE PARENT_SCOPE)
- endif(${needs_common})
+macro(fastd_method)
+ fastd_module(method ${ARGV})
endmacro(fastd_method)
-macro(fastd_method_include_directories name)
- string(REPLACE - _ name_ "${name}")
- string(TOUPPER "${name_}" NAME)
-
- if(WITH_METHOD_${NAME})
- target_include_directories(method_${name_} PRIVATE ${ARGN})
- endif(WITH_METHOD_${NAME})
+macro(fastd_method_include_directories)
+ fastd_module_include_directories(method ${ARGV})
endmacro(fastd_method_include_directories)
+macro(fastd_method_link_libraries)
+ fastd_module_link_libraries(method ${ARGV})
+endmacro(fastd_method_link_libraries)
-add_subdirectory(null)
+add_subdirectory(null)
add_subdirectory(generic_gcm)
add_subdirectory(xsalsa20_poly1305)
-set(METHOD_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/methods.c")
-
set(METHOD_DEFINITIONS "")
set(METHOD_LIST "")
+get_property(METHODS GLOBAL PROPERTY FASTD_METHODS)
foreach(method ${METHODS})
- list(APPEND METHOD_SOURCES $<TARGET_OBJECTS:method_${method}>)
-
set(METHOD_DEFINITIONS "${METHOD_DEFINITIONS}\nextern const fastd_method_t fastd_method_${method};")
set(METHOD_LIST "${METHOD_LIST}\n&fastd_method_${method},")
endforeach(method)
-
-if(METHOD_COMMON)
- list(APPEND METHOD_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/common.c)
-endif(METHOD_COMMON)
-
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/methods.c.in ${CMAKE_CURRENT_BINARY_DIR}/methods.c)
-
-set(METHOD_SOURCES "${METHOD_SOURCES}" PARENT_SCOPE)
diff --git a/src/methods/generic_gcm/CMakeLists.txt b/src/methods/generic_gcm/CMakeLists.txt
index 99d07a8..c50c1ab 100644
--- a/src/methods/generic_gcm/CMakeLists.txt
+++ b/src/methods/generic_gcm/CMakeLists.txt
@@ -1,3 +1,4 @@
-fastd_method(generic-gcm TRUE
+fastd_method(generic-gcm
generic_gcm.c
)
+fastd_method_link_libraries(generic-gcm method_common)
diff --git a/src/methods/null/CMakeLists.txt b/src/methods/null/CMakeLists.txt
index 6e3073d..bfd3109 100644
--- a/src/methods/null/CMakeLists.txt
+++ b/src/methods/null/CMakeLists.txt
@@ -1,3 +1,3 @@
-fastd_method(null FALSE
+fastd_method(null
null.c
)
diff --git a/src/methods/xsalsa20_poly1305/CMakeLists.txt b/src/methods/xsalsa20_poly1305/CMakeLists.txt
index 36e486a..d071d99 100644
--- a/src/methods/xsalsa20_poly1305/CMakeLists.txt
+++ b/src/methods/xsalsa20_poly1305/CMakeLists.txt
@@ -1,4 +1,5 @@
-fastd_method(xsalsa20-poly1305 TRUE
+fastd_method(xsalsa20-poly1305
xsalsa20_poly1305.c
)
fastd_method_include_directories(xsalsa20-poly1305 ${NACL_INCLUDE_DIRS})
+fastd_method_link_libraries(xsalsa20-poly1305 method_common ${NACL_LIBRARIES})