From 00998dc60db83e014a413948e8c9efacf5e65f6d Mon Sep 17 00:00:00 2001
From: MADELA Patrick <patrick.madela@synchrotron-soleil.fr>
Date: Mon, 11 Sep 2023 10:30:10 +0200
Subject: [PATCH] Add conan recipe

---
 .gitattributes            |  1 +
 .gitignore                |  7 ++++++
 CMakeLists.txt            | 29 +++++++++++++++++++++++
 Jenkinsfile               |  1 +
 conanfile.py              | 48 +++++++++++++++++++++++++++++++++++++++
 test_package/conanfile.py | 17 ++++++++++++++
 6 files changed, 103 insertions(+)
 create mode 100644 .gitattributes
 create mode 100644 .gitignore
 create mode 100644 CMakeLists.txt
 create mode 100644 Jenkinsfile
 create mode 100644 conanfile.py
 create mode 100644 test_package/conanfile.py

diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..94f480d
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1 @@
+* text=auto eol=lf
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..7946446
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,7 @@
+.project
+bin
+target
+# Ignore all files in folder test_package
+test_package/*
+# except conanfile.py
+!test_package/conanfile.py
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..b64d600
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,29 @@
+cmake_minimum_required(VERSION 3.15)
+project(${PROJECT_NAME} CXX)
+
+find_package(yat4tango CONFIG REQUIRED)
+find_package(crashreporting CONFIG REQUIRED)
+if (NOT CMAKE_SYSTEM_NAME STREQUAL "Windows")
+    find_package(crashreporting2 CONFIG)
+endif()
+
+add_compile_definitions(PROJECT_NAME=${PROJECT_NAME})
+add_compile_definitions(PROJECT_VERSION=${PROJECT_VERSION})
+
+file(GLOB_RECURSE sources
+    src/*.cpp
+)
+
+set(includedirs 
+    src
+)
+
+add_executable(${EXECUTABLE_NAME} ${sources})
+target_include_directories(${EXECUTABLE_NAME} PRIVATE ${includedirs})
+target_link_libraries(${EXECUTABLE_NAME} PRIVATE yat4tango::yat4tango)
+target_link_libraries(${EXECUTABLE_NAME} PRIVATE crashreporting::crashreporting)
+if (NOT CMAKE_SYSTEM_NAME STREQUAL "Windows")
+    target_link_libraries(${EXECUTABLE_NAME} PRIVATE crashreporting2::crashreporting2)
+endif()
+
+install(TARGETS ${EXECUTABLE_NAME} DESTINATION "." RUNTIME DESTINATION bin)
diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000..4d99c5a
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1 @@
+conan.create(['el6-gcc44-x86-shared'])
diff --git a/conanfile.py b/conanfile.py
new file mode 100644
index 0000000..215ed77
--- /dev/null
+++ b/conanfile.py
@@ -0,0 +1,48 @@
+from conan import ConanFile
+from conan.tools.cmake import CMakeToolchain, CMake, cmake_layout, CMakeDeps
+
+
+class MythenWAXSRecipe(ConanFile):
+    name = "mythenwaxs"
+    executable = "ds_MythenWAXS"
+    version = "1.0.2"
+    package_type = "application"
+    user = "soleil"
+
+    license = "GPL-3.0-or-later"
+    author = "Arafat Nourredine, Alain Buteau"
+    url = "https://gitlab.synchrotron-soleil.fr/software-control-system/tango-devices/acquisition/1d/mythenwaxs.git"
+    description = "MythenWAXS device"
+    topics = ("control-system", "tango", "device")
+
+    settings = "os", "compiler", "build_type", "arch"
+
+    exports_sources = "CMakeLists.txt", "src/*"
+    
+    def requirements(self):
+        self.requires("yat4tango/[>=1.0]@soleil")
+        
+        self.requires("crashreporting/[>=1.0]@soleil")
+        if self.settings.os == "Linux":
+            self.requires("crashreporting2/[>=1.0]@soleil/stable")
+    
+    def layout(self):
+        cmake_layout(self)
+
+    def generate(self):
+        deps = CMakeDeps(self)
+        deps.generate()
+        tc = CMakeToolchain(self)
+        tc.variables["PROJECT_NAME"] = self.name
+        tc.variables["PROJECT_VERSION"] = self.version
+        tc.variables["EXECUTABLE_NAME"] = self.executable
+        tc.generate()
+
+    def build(self):
+        cmake = CMake(self)
+        cmake.configure()
+        cmake.build()
+
+    def package(self):
+        cmake = CMake(self)
+        cmake.install()
diff --git a/test_package/conanfile.py b/test_package/conanfile.py
new file mode 100644
index 0000000..26f6de4
--- /dev/null
+++ b/test_package/conanfile.py
@@ -0,0 +1,17 @@
+import os
+from conan import ConanFile
+from conan.tools.build import can_run
+
+
+class MythenWAXSTestConan(ConanFile):
+    settings = "os", "compiler", "build_type", "arch"
+
+    def requirements(self):
+        self.requires(self.tested_reference_str)
+
+    def test(self):
+        if can_run(self):
+            if self.settings.os == "Windows":
+                self.run("ds_MythenWAXS 2>&1 | findstr \"usage\"", env="conanrun")
+            else:
+                self.run("ds_MythenWAXS 2>&1 | grep \"usage\"", env="conanrun")
-- 
GitLab