Skip to content

Commit

Permalink
Merge pull request #124 from torfinnberset/master
Browse files Browse the repository at this point in the history
Conan recipe
  • Loading branch information
kokke authored Feb 1, 2019
2 parents 2c88f70 + 597569f commit e72b6ef
Show file tree
Hide file tree
Showing 6 changed files with 113 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/*.o
/test.elf
/test.map
test_package/build
9 changes: 9 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
cmake_minimum_required(VERSION 2.8.12)

project(tinyaes C ASM)

add_library(tiny-aes
aes.c
)

target_include_directories(tiny-aes PRIVATE tiny-AES-c/)
73 changes: 73 additions & 0 deletions conanfile.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
from conans import ConanFile, CMake
from conans.errors import ConanException


class TinyAesCConan(ConanFile):
name = "tiny-AES-c"
version = "1.0.0"
license = "The Unlicense"
url = "https://github.com/kokke/tiny-AES-c"
description = "Small portable AES128/192/256 in C"
topics = ("encryption", "crypto", "AES")
settings = "os", "compiler", "build_type", "arch"

generators = "cmake"
exports_sources = ["CMakeLists.txt", "*.c", '*.h', '*.hpp']
exports = ["unlicense.txt"]

_options_dict = {
# enable AES128
"AES128": [True, False],

# enable AES192
"AES192": [True, False],

# enable AES256
"AES256": [True, False],

# enable AES encryption in CBC-mode of operation
"CBC": [True, False],

# enable the basic ECB 16-byte block algorithm
"ECB": [True, False],

# enable encryption in counter-mode
"CTR": [True, False],
}

options = _options_dict

default_options = {
"AES128": True,
"AES192": False,
"AES256": False,
"CBC": True,
"ECB": True,
"CTR": True
}

def configure(self):
if not self.options.CBC and not self.options.ECB and not self.options.CTR:
raise ConanException("Need to at least specify one of CBC, ECB or CTR modes")

if not self.options.AES128 and not self.options.AES192 and not self.options.AES256:
raise ConanException("Need to at least specify one of AES{128, 192, 256} modes")

def build(self):
cmake = CMake(self)

for key in self._options_dict.keys():
if self.options[key]:
cmake.definitions["CMAKE_CFLAGS"].append(key)

cmake.configure()
cmake.build()

def package(self):
self.copy("*.h", dst="include")
self.copy("*.hpp", dst="include")
self.copy("*.a", dst="lib", keep_path=False)
self.copy("unlicense.txt")

def package_info(self):
self.cpp_info.libs = ["tiny-aes"]
2 changes: 2 additions & 0 deletions test.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#include "aes.hpp"
#include "test.c"
11 changes: 11 additions & 0 deletions test_package/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
cmake_minimum_required(VERSION 2.8.12)
project(TinyAesPackageTest C CXX)

include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()

add_executable(example ../test.c)
add_executable(example_cpp ../test.cpp)

target_link_libraries(example ${CONAN_LIBS})
target_link_libraries(example_cpp ${CONAN_LIBS})
17 changes: 17 additions & 0 deletions test_package/conanfile.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from conans import ConanFile, CMake, tools
import os


class TinyAesCTestConan(ConanFile):
settings = "os", "compiler", "build_type", "arch"
generators = "cmake"

def build(self):
cmake = CMake(self)
cmake.configure()
cmake.build()

def test(self):
if not tools.cross_building(self.settings):
os.chdir("bin")
self.run(".%sexample" % os.sep)

0 comments on commit e72b6ef

Please sign in to comment.