diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000000000000000000000000000000000..6313b56c57848efce05faa7aa7e901ccfc2886ea --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..e0e6750c8a8a3043ec363eb3a88c4bd5918338fe --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +target +build +CMakeUserPresets.json diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..8735aae23713845e9e52f6d274f62441addf75e7 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,35 @@ +cmake_minimum_required(VERSION 3.15) +project(electrometerslibrary) + +option(BUILD_SHARED_LIBS "Build using shared libraries" ON) + +find_package(cpptango CONFIG REQUIRED) + +add_compile_definitions( + PROJECT_NAME=${PROJECT_NAME} + PROJECT_VERSION=${PROJECT_VERSION} + LOG4TANGO_HAVE_INT64_T +) + +file(GLOB_RECURSE sources + src/*.cpp +) + +set(includedirs + src + include +) + +add_library(electrometerslibrary ${sources}) +target_include_directories(electrometerslibrary PRIVATE ${includedirs}) +target_link_libraries(electrometerslibrary PRIVATE cpptango::cpptango) + +if (MAJOR_VERSION) + set_target_properties(electrometerslibrary PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${MAJOR_VERSION}) +endif() + +install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/ DESTINATION include + FILES_MATCHING PATTERN "*.h" +) + +install(TARGETS electrometerslibrary LIBRARY DESTINATION ${LIB_INSTALL_DIR}) diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000000000000000000000000000000000000..e8dcc42e15b4d6beb698852248917b01f09c5cd8 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1 @@ +conan.create(['el6-gcc44-x86-shared', 'win7-msvc12-x86-static']) diff --git a/conanfile.py b/conanfile.py new file mode 100644 index 0000000000000000000000000000000000000000..fc87bdd340483011b42f7e51f8c8a09d076f5c7d --- /dev/null +++ b/conanfile.py @@ -0,0 +1,61 @@ +from conan import ConanFile +from conan.tools.cmake import CMakeToolchain, CMake, cmake_layout, CMakeDeps + +class electrometerslibraryRecipe(ConanFile): + name = "electrometerslibrary" + version = "2.5.29" + package_type = "library" + user = "soleil" + + # Optional metadata + license = "GPL-2" + author = "Xavier Elattaoui" + url = "https://gitlab.synchrotron-soleil.fr/software-control-system/tango-devices/measureinstruments/lib/electrometerslibrary.git" + description = "Electrometers library" + topics = ("utility", "control-system") + + # Binary configuration + settings = "os", "compiler", "build_type", "arch" + options = {"shared": [True, False], "fPIC": [True, False]} + default_options = {"shared": False, "fPIC": True} + + # Sources are located in the same place as this recipe, copy them to the recipe + exports_sources = "CMakeLists.txt", "src/**", "include/**" + + def requirements(self): + self.requires("cpptango/9.2.5@soleil/stable") + + def config_options(self): + if self.settings.os == "Windows": + self.options.rm_safe("fPIC") + + def configure(self): + if self.options.shared: + self.options.rm_safe("fPIC") + + def layout(self): + cmake_layout(self) + + def generate(self): + deps = CMakeDeps(self) + deps.generate() + tc = CMakeToolchain(self) + major, minor, patch = map(int, self.version.split('.')) + tc.variables["PROJECT_NAME"] = self.name + tc.variables["PROJECT_VERSION"] = self.version + tc.variables["MAJOR_VERSION"] = major + tc.variables["MINOR_VERSION"] = minor + tc.variables["PATCH_VERSION"] = patch + tc.generate() + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def package(self): + cmake = CMake(self) + cmake.install() + + def package_info(self): + self.cpp_info.libs = ["electrometerslibrary"] diff --git a/test_package/CMakeLists.txt b/test_package/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..36c846ce2ffcc5b6e7b173fb4cb7a2ce8d881082 --- /dev/null +++ b/test_package/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 3.15) +project(PackageTest CXX) + +find_package(electrometerslibrary CONFIG REQUIRED) +find_package(cpptango CONFIG REQUIRED) + +add_executable(test_package src/test_package.cpp) +target_link_libraries(test_package electrometerslibrary::electrometerslibrary) +target_link_libraries(test_package cpptango::cpptango) diff --git a/test_package/conanfile.py b/test_package/conanfile.py new file mode 100644 index 0000000000000000000000000000000000000000..055b772a1fe317f7476da1837d03cdc2e97a33d4 --- /dev/null +++ b/test_package/conanfile.py @@ -0,0 +1,25 @@ +import os + +from conan import ConanFile +from conan.tools.cmake import CMake, cmake_layout +from conan.tools.build import can_run + +class TestPackageConan(ConanFile): + settings = "os", "compiler", "build_type", "arch" + generators = "CMakeDeps", "CMakeToolchain" + + def requirements(self): + self.requires(self.tested_reference_str) + self.requires("cpptango/9.2.5@soleil/stable") + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def layout(self): + cmake_layout(self) + + def test(self): + cmd = os.path.join(self.cpp.build.bindir, "test_package") + self.run(cmd, env="conanrun") diff --git a/test_package/src/test_package.cpp b/test_package/src/test_package.cpp new file mode 100644 index 0000000000000000000000000000000000000000..79c4b0de278229425b96b1a014dda68cd6ef9883 --- /dev/null +++ b/test_package/src/test_package.cpp @@ -0,0 +1,11 @@ +#include <iostream> + +#include <Keithley_485.h> + +int main() +{ + std::string dummy; + Keithley_485 k = Keithley_485(dummy); + + return 0; +}