diff --git a/CHANGELOG.md b/CHANGELOG.md index 157546cda..4b81f6bcb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,11 @@ All notable changes to this project will be documented in this file. -## Unreleased +## 1.1.2 + +**Changes:** + +- plugins are now part of Alien distribution. That means that only `find_package(Alien)` is necessary. ## 1.1.1 diff --git a/CMakeLists.txt b/CMakeLists.txt index e505eddc8..5aad0f644 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -126,6 +126,30 @@ if (ALIEN_GENERATE_DOCUMENTATION) set(DOXYGEN_GENERATE_XML YES) endif(ALIEN_GENERATE_DOCUMENTATION) +# Use Arccon functions and macros +find_package(Arccon REQUIRED) +list(APPEND CMAKE_MODULE_PATH ${ARCCON_MODULE_PATH}) + +# use arccon commands otherwise a +include(${ARCCON_CMAKE_COMMANDS}) +include(ArcconSetInstallDirs) + +# ---------------------------------------------------------------------------- +# Configure installation layout. +# Layout. This works for all platforms: +# * /lib*/cmake/ +# * /lib*/ +# * /include/ +set(config_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") + +set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated") + +# Configuration +set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake") +set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake") +set(namespace "Alien::") + + add_subdirectory(src) if (ALIEN_PLUGIN_HYPRE) diff --git a/docs/sphinx/user/build.rst b/docs/sphinx/user/build.rst new file mode 100644 index 000000000..724235200 --- /dev/null +++ b/docs/sphinx/user/build.rst @@ -0,0 +1,59 @@ +.. _user_build: + +======================== +Building and Using Alien +======================== + +Building Alien +============== + +Alien's build system is based on CMake. + +Getting the sources +------------------- + +One can use Alien's github repository https://github.com/arcaneframework/alien +to either get an archive of a released version https://github.com/arcaneframework/alien/releases or +to clone the repository. + +Configuring +----------- + +When using a released version, Arccon and Arccore must be installed before being able to compile Alien. +Their install paths can be passed to cmake using `CMAKE_PREFIX_PATH`. + +Optional dependencies are: + - HDF5, enabled by setting `ALIEN_USE_HDF5` to `ON` + - libxml2, enabled by setting `ALIEN_USE_xml2` to `ON` + - GoogleTest, enabled by setting `ALIEN_UNIT_TESTS` to `ON` + +`ALIEN_DEFAULT_OPTIONS` allows to try detecting installed dependencies and automatically enable them. + +Backend librairies are: + - hypre, enabled by setting `ALIEN_PLUGIN_HYPRE` to `ON` + - PETSc, enabled by setting `ALIEN_PLUGIN_PETSC` to `ON` + +Example +------- + +Configuring, compiling Alien, using hypre and petsc. + +.. code-block:: bash + + cmake -DALIEN_DEFAULT_OPTIONS:BOOL=ON -DALIEN_PLUGIN_HYPRE:BOOL=ON -DALIEN_PLUGIN_PETSC:BOOL=ON -B + cmake --build + cmake --install + +Using Alien from a CMake project +================================ + +Example using hypre and move semantic: + +.. code-block:: cmake + + find_package(Alien REQUIRED) + + add_library(foo ) + target_link_libraries(foo PRIVATE Alien::hypre_wrapper Alien::semantic_move) + + diff --git a/docs/sphinx/user/index.rst b/docs/sphinx/user/index.rst index 811b9f9a9..42363eee2 100644 --- a/docs/sphinx/user/index.rst +++ b/docs/sphinx/user/index.rst @@ -5,5 +5,6 @@ Alien user documentation .. toctree:: :maxdepth: 2 + build concepts move \ No newline at end of file diff --git a/plugins/hypre/.gitignore b/plugins/hypre/.gitignore deleted file mode 100644 index 2eca2c6c8..000000000 --- a/plugins/hypre/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -*~ - -Debug* -debug* -Release* -release* -Build* -build* - -!build-system - -.cproject -.project -.settings - -*#* -/build_debug/ - -*.orig - -# clion -.idea -cmake-build* - diff --git a/plugins/hypre/CMake/AlienHypreConfig.cmake.in b/plugins/hypre/CMake/AlienHypreConfig.cmake.in deleted file mode 100644 index 0256ae2ea..000000000 --- a/plugins/hypre/CMake/AlienHypreConfig.cmake.in +++ /dev/null @@ -1,17 +0,0 @@ -@PACKAGE_INIT@ - -# Set and Check must go first else macro might be redefined by find_dependency ... -set_and_check(ALIENHYPRE_TARGET_FILE "${PACKAGE_PREFIX_DIR}/@config_install_dir@/@ALIENHYPRE_EXPORT_TARGET@.cmake") - -include(CMakeFindDependencyMacro) - -find_dependency(Arccon) -# Add FindPackage from Arccon -list(APPEND CMAKE_MODULE_PATH ${ARCCON_MODULE_PATH}) - -find_dependency(Alien) - -# Remove FindPackage Arccon paths -list(REMOVE_AT CMAKE_MODULE_PATH -1) - -include(${ALIENHYPRE_TARGET_FILE}) diff --git a/plugins/hypre/CMake/FindAlienHypre.cmake b/plugins/hypre/CMake/FindAlienHypre.cmake deleted file mode 100644 index e69de29bb..000000000 diff --git a/plugins/hypre/CMakeLists.txt b/plugins/hypre/CMakeLists.txt index 3f71a20bb..824bf4bb1 100644 --- a/plugins/hypre/CMakeLists.txt +++ b/plugins/hypre/CMakeLists.txt @@ -1,65 +1,13 @@ -# Copyright 2020 IFPEN-CEA -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -cmake_minimum_required(VERSION 3.13) - -# To properly handle VERSION directive in PROJECT -cmake_policy(SET CMP0048 NEW) -cmake_policy(SET CMP0023 NEW) - -# To export dependencies -cmake_policy(SET CMP0022 NEW) - -# for find_package with Foo_ROOT -cmake_policy(SET CMP0074 NEW) - -# ---------------------------------------------------------------------------- -# ---------------------------------------------------------------------------- - -project(AlienHypre - VERSION 1.0) - -# ---------------------------------------------------------------------------- -# ---------------------------------------------------------------------------- - option(ALIEN_HYPRE_UNIT_TESTS "Enable Hypre wrapper tests" ${ALIEN_UNIT_TESTS}) -set(BUILD_SHARED_LIBS True) - -list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/CMake) - -# ---------------------------------------------------------------------------- -# ---------------------------------------------------------------------------- - -find_package(Arccon REQUIRED) -list(APPEND CMAKE_MODULE_PATH ${ARCCON_MODULE_PATH}) -include(${ARCCON_CMAKE_COMMANDS}) - -find_package(Arccore REQUIRED) - -find_package(Alien REQUIRED) +find_package(Hypre REQUIRED) find_package(MPI REQUIRED) -find_package(Hypre REQUIRED) - # ---------------------------------------------------------------------------- # ---------------------------------------------------------------------------- -add_library(alien_hypre +add_library(hypre_wrapper include/alien/hypre/backend.h include/alien/hypre/options.h src/hypre_vector.cpp @@ -73,11 +21,11 @@ add_library(alien_hypre src/converters/simplecsr_to_hypre_matrix.cpp ) -target_link_libraries(alien_hypre PUBLIC +target_link_libraries(hypre_wrapper PUBLIC Alien::alien_core ) -target_link_libraries(alien_hypre PRIVATE +target_link_libraries(hypre_wrapper PRIVATE MPI::MPI_CXX Arccore::arccore_trace Arccore::arccore_collections @@ -86,17 +34,18 @@ target_link_libraries(alien_hypre PRIVATE arccon::Hypre ) -target_include_directories(alien_hypre PUBLIC - $ +target_include_directories(hypre_wrapper PUBLIC + $ $ $ ) -add_library(Alien::alien_hypre ALIAS alien_hypre) +add_library(Alien::hypre_wrapper ALIAS hypre_wrapper) include(GenerateExportHeader) -generate_export_header(alien_hypre +generate_export_header(hypre_wrapper + BASE_NAME ALIEN_HYPRE EXPORT_FILE_NAME include/alien/hypre/export.h ) @@ -119,7 +68,7 @@ install(DIRECTORY include/alien/hypre DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/alien ) -install(TARGETS alien_hypre EXPORT ${ALIENHYPRE_EXPORT_TARGET} +install(TARGETS hypre_wrapper EXPORT ${ALIENHYPRE_EXPORT_TARGET} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ) @@ -129,28 +78,10 @@ install( DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/alien/hypre ) -set(alien_install_lib "${CMAKE_INSTALL_LIBDIR}/alien") -set(config_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") - install(EXPORT ${ALIENHYPRE_EXPORT_TARGET} - NAMESPACE Alien:: + NAMESPACE ${namespace} DESTINATION ${config_install_dir}) -include(CMakePackageConfigHelpers) - -set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated") -set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake") - -configure_package_config_file( - CMake/${PROJECT_NAME}Config.cmake.in - "${project_config}" - INSTALL_DESTINATION "${config_install_dir}" -) - -install(FILES "${project_config}" - DESTINATION "${config_install_dir}" - ) - install(DIRECTORY examples/ DESTINATION ${CMAKE_INSTALL_DOCDIR}/examples/hypre) # ---------------------------------------------------------------------------- # ---------------------------------------------------------------------------- diff --git a/plugins/hypre/LICENSE b/plugins/hypre/LICENSE deleted file mode 100644 index ab6695efc..000000000 --- a/plugins/hypre/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2020 Arcane / AlienOpenSource - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/plugins/hypre/README.md b/plugins/hypre/README.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/plugins/hypre/examples/CMakeLists.txt b/plugins/hypre/examples/CMakeLists.txt index 1822a694d..cf0002c64 100644 --- a/plugins/hypre/examples/CMakeLists.txt +++ b/plugins/hypre/examples/CMakeLists.txt @@ -15,31 +15,23 @@ # SPDX-License-Identifier: Apache-2.0 cmake_minimum_required(VERSION 3.13) -# To properly handle VERSION directive in PROJECT -cmake_policy(SET CMP0048 NEW) -cmake_policy(SET CMP0023 NEW) - -# To export dependencies -cmake_policy(SET CMP0022 NEW) - # for find_package with Foo_ROOT cmake_policy(SET CMP0074 NEW) project(AlienHypreExample VERSION 1.0 LANGUAGES CXX) find_package(Alien REQUIRED) -find_package(AlienHypre REQUIRED) add_executable(example_hypre hypre_example_solve.cpp) target_link_libraries(example_hypre PUBLIC - Alien::alien_hypre + Alien::hypre_wrapper Alien::alien_semantic_ref) add_executable(example_hypre_move hypre_example_solve_move.cpp) target_link_libraries(example_hypre_move PUBLIC - Alien::alien_hypre + Alien::hypre_wrapper Alien::alien_semantic_move) if (ALIEN_BENCHMARK) diff --git a/plugins/hypre/tests/CMakeLists.txt b/plugins/hypre/tests/CMakeLists.txt index d4665961b..376ee78aa 100644 --- a/plugins/hypre/tests/CMakeLists.txt +++ b/plugins/hypre/tests/CMakeLists.txt @@ -9,7 +9,7 @@ target_link_libraries(hypre_gtest PRIVATE GTest::GTest PRIVATE Alien::alien_core Alien::alien_semantic_move Alien::alien_semantic_ref - Alien::alien_hypre + Alien::hypre_wrapper ) include(LoadAlienTest) diff --git a/plugins/petsc/AlienPETScConfig.cmake.in b/plugins/petsc/AlienPETScConfig.cmake.in deleted file mode 100644 index c5e5490e6..000000000 --- a/plugins/petsc/AlienPETScConfig.cmake.in +++ /dev/null @@ -1,17 +0,0 @@ -@PACKAGE_INIT@ - -# Set and Check must go first else macro might be redefined by find_dependency ... -set_and_check(ALIENPETSC_TARGET_FILE "${PACKAGE_PREFIX_DIR}/@config_install_dir@/@ALIENPETSC_EXPORT_TARGET@.cmake") - -include(CMakeFindDependencyMacro) - -find_dependency(Arccon) -# Add FindPackage from Arccon -list(APPEND CMAKE_MODULE_PATH ${ARCCON_MODULE_PATH}) - -find_dependency(Alien) - -# Remove FindPackage Arccon paths -list(REMOVE_AT CMAKE_MODULE_PATH -1) - -include(${ALIENPETSC_TARGET_FILE}) diff --git a/plugins/petsc/CMakeLists.txt b/plugins/petsc/CMakeLists.txt index 60673de11..869cf0166 100644 --- a/plugins/petsc/CMakeLists.txt +++ b/plugins/petsc/CMakeLists.txt @@ -1,55 +1,5 @@ -# Copyright 2020 IFPEN-CEA -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -cmake_minimum_required(VERSION 3.13) - -# To properly handle VERSION directive in PROJECT -cmake_policy(SET CMP0048 NEW) -cmake_policy(SET CMP0023 NEW) - -# To export dependencies -cmake_policy(SET CMP0022 NEW) - -# for find_package with Foo_ROOT -cmake_policy(SET CMP0074 NEW) - -# ---------------------------------------------------------------------------- -# ---------------------------------------------------------------------------- - -project(AlienPETSc - VERSION 1.0) - -# ---------------------------------------------------------------------------- -# ---------------------------------------------------------------------------- - - option(ALIEN_PETSC_UNIT_TESTS "Enable Hypre wrapper tests" ${ALIEN_UNIT_TESTS}) -set(BUILD_SHARED_LIBS True) - -# ---------------------------------------------------------------------------- -# ---------------------------------------------------------------------------- - -find_package(Arccon REQUIRED) -list(APPEND CMAKE_MODULE_PATH ${ARCCON_MODULE_PATH}) -include(${ARCCON_CMAKE_COMMANDS}) - -find_package(Arccore REQUIRED) - -find_package(Alien REQUIRED) find_package(MPI REQUIRED) find_package(PETSc REQUIRED) @@ -57,7 +7,7 @@ find_package(PETSc REQUIRED) # ---------------------------------------------------------------------------- # ---------------------------------------------------------------------------- -add_library(alien_petsc +add_library(petsc_wrapper include/alien/petsc/backend.h src/matrix.h src/matrix.cpp @@ -70,11 +20,11 @@ add_library(alien_petsc src/converters/petsc_to_simplecsr_vector.cpp src/petsc_instance.cpp src/petsc_instance.h) -target_link_libraries(alien_petsc PUBLIC +target_link_libraries(petsc_wrapper PUBLIC Alien::alien_core ) -target_link_libraries(alien_petsc PRIVATE +target_link_libraries(petsc_wrapper PRIVATE MPI::MPI_CXX Arccore::arccore_trace Arccore::arccore_collections @@ -83,17 +33,18 @@ target_link_libraries(alien_petsc PRIVATE arccon::PETSc ) -target_include_directories(alien_petsc PUBLIC - $ +target_include_directories(petsc_wrapper PUBLIC + $ $ $ ) -add_library(Alien::alien_petsc ALIAS alien_petsc) +add_library(Alien::petsc_wrapper ALIAS petsc_wrapper) include(GenerateExportHeader) -generate_export_header(alien_petsc +generate_export_header(petsc_wrapper + BASE_NAME ALIEN_PETSC EXPORT_FILE_NAME include/alien/petsc/export.h ) @@ -113,7 +64,7 @@ install(DIRECTORY include/alien/petsc DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/alien ) -install(TARGETS alien_petsc EXPORT ${ALIENPETSC_EXPORT_TARGET} +install(TARGETS petsc_wrapper EXPORT ${ALIENPETSC_EXPORT_TARGET} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ) @@ -123,27 +74,9 @@ install( DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/alien/petsc ) -set(alien_install_lib "${CMAKE_INSTALL_LIBDIR}/alien") -set(config_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") - install(EXPORT ${ALIENPETSC_EXPORT_TARGET} - NAMESPACE Alien:: + NAMESPACE ${namespace} DESTINATION ${config_install_dir}) -include(CMakePackageConfigHelpers) - -set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated") -set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake") - -configure_package_config_file( - "${PROJECT_NAME}Config.cmake.in" - "${project_config}" - INSTALL_DESTINATION "${config_install_dir}" -) - -install(FILES "${project_config}" - DESTINATION "${config_install_dir}" - ) - # ---------------------------------------------------------------------------- # ---------------------------------------------------------------------------- diff --git a/plugins/petsc/LICENSE b/plugins/petsc/LICENSE deleted file mode 100644 index ab6695efc..000000000 --- a/plugins/petsc/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2020 Arcane / AlienOpenSource - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/plugins/petsc/README.md b/plugins/petsc/README.md deleted file mode 100644 index 6e7311e22..000000000 --- a/plugins/petsc/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# alien_petsc - -PETSc backend for Alien. \ No newline at end of file diff --git a/plugins/petsc/test/CMakeLists.txt b/plugins/petsc/test/CMakeLists.txt index fa3267688..f612d59d4 100644 --- a/plugins/petsc/test/CMakeLists.txt +++ b/plugins/petsc/test/CMakeLists.txt @@ -17,7 +17,7 @@ add_executable(test_petsc test_petsc.cpp) target_link_libraries(test_petsc PUBLIC - Alien::alien_petsc + Alien::petsc_wrapper Alien::alien_semantic_ref) include(LoadAlienTest) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 60ca9e200..a11861b20 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -14,14 +14,6 @@ # # SPDX-License-Identifier: Apache-2.0 -# Use Arccon functions and macros -find_package(Arccon REQUIRED) -list(APPEND CMAKE_MODULE_PATH ${ARCCON_MODULE_PATH}) - -# use arccon commands otherwise a -include(${ARCCON_CMAKE_COMMANDS}) -include(ArcconSetInstallDirs) - include(GenerateExportHeader) @@ -66,20 +58,6 @@ if (ALIEN_UNIT_TESTS) endif () -# ---------------------------------------------------------------------------- -# Configure installation layout. -# Layout. This works for all platforms: -# * /lib*/cmake/ -# * /lib*/ -# * /include/ -set(config_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") - -set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated") - -# Configuration -set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake") -set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake") -set(namespace "Alien::") # Include module with fuction 'write_basic_package_version_file' include(CMakePackageConfigHelpers)