From 47a18181b07b2d3e7c01a70a0ba743e5ff3e41cb Mon Sep 17 00:00:00 2001 From: mdaakir Date: Fri, 31 May 2024 10:44:00 +0200 Subject: [PATCH] Update README --- LICENSE.md | 514 +++++++++++++++++++++++++++++++++++++++++++++++ MMVII/LICENSE.md | 514 +++++++++++++++++++++++++++++++++++++++++++++++ MMVII/README.md | 233 +++++++++++++++++++++ MMVII/Readme.md | 139 ------------- README.md | 328 +++++++++++++++++++++--------- 5 files changed, 1491 insertions(+), 237 deletions(-) create mode 100644 LICENSE.md create mode 100644 MMVII/LICENSE.md create mode 100755 MMVII/README.md delete mode 100755 MMVII/Readme.md diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000000..365263d878 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,514 @@ +CeCILL-B FREE SOFTWARE LICENSE AGREEMENT + + + Notice + +This Agreement is a Free Software license agreement that is the result +of discussions between its authors in order to ensure compliance with +the two main principles guiding its drafting: + + * firstly, compliance with the principles governing the distribution + of Free Software: access to source code, broad rights granted to + users, + * secondly, the election of a governing law, French law, with which + it is conformant, both as regards the law of torts and + intellectual property law, and the protection that it offers to + both authors and holders of the economic rights over software. + +The authors of the CeCILL-B (for Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre]) +license are: + +Commissariat à l'Energie Atomique - CEA, a public scientific, technical +and industrial research establishment, having its principal place of +business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France. + +Centre National de la Recherche Scientifique - CNRS, a public scientific +and technological establishment, having its principal place of business +at 3 rue Michel-Ange, 75794 Paris cedex 16, France. + +Institut National de Recherche en Informatique et en Automatique - +INRIA, a public scientific and technological establishment, having its +principal place of business at Domaine de Voluceau, Rocquencourt, BP +105, 78153 Le Chesnay cedex, France. + + + Preamble + +This Agreement is an open source software license intended to give users +significant freedom to modify and redistribute the software licensed +hereunder. + +The exercising of this freedom is conditional upon a strong obligation +of giving credits for everybody that distributes a software +incorporating a software ruled by the current license so as all +contributions to be properly identified and acknowledged. + +In consideration of access to the source code and the rights to copy, +modify and redistribute granted by the license, users are provided only +with a limited warranty and the software's author, the holder of the +economic rights, and the successive licensors only have limited liability. + +In this respect, the risks associated with loading, using, modifying +and/or developing or reproducing the software by the user are brought to +the user's attention, given its Free Software status, which may make it +complicated to use, with the result that its use is reserved for +developers and experienced professionals having in-depth computer +knowledge. Users are therefore encouraged to load and test the +suitability of the software as regards their requirements in conditions +enabling the security of their systems and/or data to be ensured and, +more generally, to use and operate it in the same conditions of +security. This Agreement may be freely reproduced and published, +provided it is not altered, and that no provisions are either added or +removed herefrom. + +This Agreement may apply to any or all software for which the holder of +the economic rights decides to submit the use thereof to its provisions. + + + Article 1 - DEFINITIONS + +For the purpose of this Agreement, when the following expressions +commence with a capital letter, they shall have the following meaning: + +Agreement: means this license agreement, and its possible subsequent +versions and annexes. + +Software: means the software in its Object Code and/or Source Code form +and, where applicable, its documentation, "as is" when the Licensee +accepts the Agreement. + +Initial Software: means the Software in its Source Code and possibly its +Object Code form and, where applicable, its documentation, "as is" when +it is first distributed under the terms and conditions of the Agreement. + +Modified Software: means the Software modified by at least one +Contribution. + +Source Code: means all the Software's instructions and program lines to +which access is required so as to modify the Software. + +Object Code: means the binary files originating from the compilation of +the Source Code. + +Holder: means the holder(s) of the economic rights over the Initial +Software. + +Licensee: means the Software user(s) having accepted the Agreement. + +Contributor: means a Licensee having made at least one Contribution. + +Licensor: means the Holder, or any other individual or legal entity, who +distributes the Software under the Agreement. + +Contribution: means any or all modifications, corrections, translations, +adaptations and/or new functions integrated into the Software by any or +all Contributors, as well as any or all Internal Modules. + +Module: means a set of sources files including their documentation that +enables supplementary functions or services in addition to those offered +by the Software. + +External Module: means any or all Modules, not derived from the +Software, so that this Module and the Software run in separate address +spaces, with one calling the other when they are run. + +Internal Module: means any or all Module, connected to the Software so +that they both execute in the same address space. + +Parties: mean both the Licensee and the Licensor. + +These expressions may be used both in singular and plural form. + + + Article 2 - PURPOSE + +The purpose of the Agreement is the grant by the Licensor to the +Licensee of a non-exclusive, transferable and worldwide license for the +Software as set forth in Article 5 hereinafter for the whole term of the +protection granted by the rights over said Software. + + + Article 3 - ACCEPTANCE + +3.1 The Licensee shall be deemed as having accepted the terms and +conditions of this Agreement upon the occurrence of the first of the +following events: + + * (i) loading the Software by any or all means, notably, by + downloading from a remote server, or by loading from a physical + medium; + * (ii) the first time the Licensee exercises any of the rights + granted hereunder. + +3.2 One copy of the Agreement, containing a notice relating to the +characteristics of the Software, to the limited warranty, and to the +fact that its use is restricted to experienced users has been provided +to the Licensee prior to its acceptance as set forth in Article 3.1 +hereinabove, and the Licensee hereby acknowledges that it has read and +understood it. + + + Article 4 - EFFECTIVE DATE AND TERM + + + 4.1 EFFECTIVE DATE + +The Agreement shall become effective on the date when it is accepted by +the Licensee as set forth in Article 3.1. + + + 4.2 TERM + +The Agreement shall remain in force for the entire legal term of +protection of the economic rights over the Software. + + + Article 5 - SCOPE OF RIGHTS GRANTED + +The Licensor hereby grants to the Licensee, who accepts, the following +rights over the Software for any or all use, and for the term of the +Agreement, on the basis of the terms and conditions set forth hereinafter. + +Besides, if the Licensor owns or comes to own one or more patents +protecting all or part of the functions of the Software or of its +components, the Licensor undertakes not to enforce the rights granted by +these patents against successive Licensees using, exploiting or +modifying the Software. If these patents are transferred, the Licensor +undertakes to have the transferees subscribe to the obligations set +forth in this paragraph. + + + 5.1 RIGHT OF USE + +The Licensee is authorized to use the Software, without any limitation +as to its fields of application, with it being hereinafter specified +that this comprises: + + 1. permanent or temporary reproduction of all or part of the Software + by any or all means and in any or all form. + + 2. loading, displaying, running, or storing the Software on any or + all medium. + + 3. entitlement to observe, study or test its operation so as to + determine the ideas and principles behind any or all constituent + elements of said Software. This shall apply when the Licensee + carries out any or all loading, displaying, running, transmission + or storage operation as regards the Software, that it is entitled + to carry out hereunder. + + + 5.2 ENTITLEMENT TO MAKE CONTRIBUTIONS + +The right to make Contributions includes the right to translate, adapt, +arrange, or make any or all modifications to the Software, and the right +to reproduce the resulting software. + +The Licensee is authorized to make any or all Contributions to the +Software provided that it includes an explicit notice that it is the +author of said Contribution and indicates the date of the creation thereof. + + + 5.3 RIGHT OF DISTRIBUTION + +In particular, the right of distribution includes the right to publish, +transmit and communicate the Software to the general public on any or +all medium, and by any or all means, and the right to market, either in +consideration of a fee, or free of charge, one or more copies of the +Software by any means. + +The Licensee is further authorized to distribute copies of the modified +or unmodified Software to third parties according to the terms and +conditions set forth hereinafter. + + + 5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION + +The Licensee is authorized to distribute true copies of the Software in +Source Code or Object Code form, provided that said distribution +complies with all the provisions of the Agreement and is accompanied by: + + 1. a copy of the Agreement, + + 2. a notice relating to the limitation of both the Licensor's + warranty and liability as set forth in Articles 8 and 9, + +and that, in the event that only the Object Code of the Software is +redistributed, the Licensee allows effective access to the full Source +Code of the Software at a minimum during the entire period of its +distribution of the Software, it being understood that the additional +cost of acquiring the Source Code shall not exceed the cost of +transferring the data. + + + 5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE + +If the Licensee makes any Contribution to the Software, the resulting +Modified Software may be distributed under a license agreement other +than this Agreement subject to compliance with the provisions of Article +5.3.4. + + + 5.3.3 DISTRIBUTION OF EXTERNAL MODULES + +When the Licensee has developed an External Module, the terms and +conditions of this Agreement do not apply to said External Module, that +may be distributed under a separate license agreement. + + + 5.3.4 CREDITS + +Any Licensee who may distribute a Modified Software hereby expressly +agrees to: + + 1. indicate in the related documentation that it is based on the + Software licensed hereunder, and reproduce the intellectual + property notice for the Software, + + 2. ensure that written indications of the Software intended use, + intellectual property notice and license hereunder are included in + easily accessible format from the Modified Software interface, + + 3. mention, on a freely accessible website describing the Modified + Software, at least throughout the distribution term thereof, that + it is based on the Software licensed hereunder, and reproduce the + Software intellectual property notice, + + 4. where it is distributed to a third party that may distribute a + Modified Software without having to make its source code + available, make its best efforts to ensure that said third party + agrees to comply with the obligations set forth in this Article . + +If the Software, whether or not modified, is distributed with an +External Module designed for use in connection with the Software, the +Licensee shall submit said External Module to the foregoing obligations. + + + 5.3.5 COMPATIBILITY WITH THE CeCILL AND CeCILL-C LICENSES + +Where a Modified Software contains a Contribution subject to the CeCILL +license, the provisions set forth in Article 5.3.4 shall be optional. + +A Modified Software may be distributed under the CeCILL-C license. In +such a case the provisions set forth in Article 5.3.4 shall be optional. + + + Article 6 - INTELLECTUAL PROPERTY + + + 6.1 OVER THE INITIAL SOFTWARE + +The Holder owns the economic rights over the Initial Software. Any or +all use of the Initial Software is subject to compliance with the terms +and conditions under which the Holder has elected to distribute its work +and no one shall be entitled to modify the terms and conditions for the +distribution of said Initial Software. + +The Holder undertakes that the Initial Software will remain ruled at +least by this Agreement, for the duration set forth in Article 4.2. + + + 6.2 OVER THE CONTRIBUTIONS + +The Licensee who develops a Contribution is the owner of the +intellectual property rights over this Contribution as defined by +applicable law. + + + 6.3 OVER THE EXTERNAL MODULES + +The Licensee who develops an External Module is the owner of the +intellectual property rights over this External Module as defined by +applicable law and is free to choose the type of agreement that shall +govern its distribution. + + + 6.4 JOINT PROVISIONS + +The Licensee expressly undertakes: + + 1. not to remove, or modify, in any manner, the intellectual property + notices attached to the Software; + + 2. to reproduce said notices, in an identical manner, in the copies + of the Software modified or not. + +The Licensee undertakes not to directly or indirectly infringe the +intellectual property rights of the Holder and/or Contributors on the +Software and to take, where applicable, vis-à-vis its staff, any and all +measures required to ensure respect of said intellectual property rights +of the Holder and/or Contributors. + + + Article 7 - RELATED SERVICES + +7.1 Under no circumstances shall the Agreement oblige the Licensor to +provide technical assistance or maintenance services for the Software. + +However, the Licensor is entitled to offer this type of services. The +terms and conditions of such technical assistance, and/or such +maintenance, shall be set forth in a separate instrument. Only the +Licensor offering said maintenance and/or technical assistance services +shall incur liability therefor. + +7.2 Similarly, any Licensor is entitled to offer to its licensees, under +its sole responsibility, a warranty, that shall only be binding upon +itself, for the redistribution of the Software and/or the Modified +Software, under terms and conditions that it is free to decide. Said +warranty, and the financial terms and conditions of its application, +shall be subject of a separate instrument executed between the Licensor +and the Licensee. + + + Article 8 - LIABILITY + +8.1 Subject to the provisions of Article 8.2, the Licensee shall be +entitled to claim compensation for any direct loss it may have suffered +from the Software as a result of a fault on the part of the relevant +Licensor, subject to providing evidence thereof. + +8.2 The Licensor's liability is limited to the commitments made under +this Agreement and shall not be incurred as a result of in particular: +(i) loss due the Licensee's total or partial failure to fulfill its +obligations, (ii) direct or consequential loss that is suffered by the +Licensee due to the use or performance of the Software, and (iii) more +generally, any consequential loss. In particular the Parties expressly +agree that any or all pecuniary or business loss (i.e. loss of data, +loss of profits, operating loss, loss of customers or orders, +opportunity cost, any disturbance to business activities) or any or all +legal proceedings instituted against the Licensee by a third party, +shall constitute consequential loss and shall not provide entitlement to +any or all compensation from the Licensor. + + + Article 9 - WARRANTY + +9.1 The Licensee acknowledges that the scientific and technical +state-of-the-art when the Software was distributed did not enable all +possible uses to be tested and verified, nor for the presence of +possible defects to be detected. In this respect, the Licensee's +attention has been drawn to the risks associated with loading, using, +modifying and/or developing and reproducing the Software which are +reserved for experienced users. + +The Licensee shall be responsible for verifying, by any or all means, +the suitability of the product for its requirements, its good working +order, and for ensuring that it shall not cause damage to either persons +or properties. + +9.2 The Licensor hereby represents, in good faith, that it is entitled +to grant all the rights over the Software (including in particular the +rights set forth in Article 5). + +9.3 The Licensee acknowledges that the Software is supplied "as is" by +the Licensor without any other express or tacit warranty, other than +that provided for in Article 9.2 and, in particular, without any warranty +as to its commercial value, its secured, safe, innovative or relevant +nature. + +Specifically, the Licensor does not warrant that the Software is free +from any error, that it will operate without interruption, that it will +be compatible with the Licensee's own equipment and software +configuration, nor that it will meet the Licensee's requirements. + +9.4 The Licensor does not either expressly or tacitly warrant that the +Software does not infringe any third party intellectual property right +relating to a patent, software or any other property right. Therefore, +the Licensor disclaims any and all liability towards the Licensee +arising out of any or all proceedings for infringement that may be +instituted in respect of the use, modification and redistribution of the +Software. Nevertheless, should such proceedings be instituted against +the Licensee, the Licensor shall provide it with technical and legal +assistance for its defense. Such technical and legal assistance shall be +decided on a case-by-case basis between the relevant Licensor and the +Licensee pursuant to a memorandum of understanding. The Licensor +disclaims any and all liability as regards the Licensee's use of the +name of the Software. No warranty is given as regards the existence of +prior rights over the name of the Software or as regards the existence +of a trademark. + + + Article 10 - TERMINATION + +10.1 In the event of a breach by the Licensee of its obligations +hereunder, the Licensor may automatically terminate this Agreement +thirty (30) days after notice has been sent to the Licensee and has +remained ineffective. + +10.2 A Licensee whose Agreement is terminated shall no longer be +authorized to use, modify or distribute the Software. However, any +licenses that it may have granted prior to termination of the Agreement +shall remain valid subject to their having been granted in compliance +with the terms and conditions hereof. + + + Article 11 - MISCELLANEOUS + + + 11.1 EXCUSABLE EVENTS + +Neither Party shall be liable for any or all delay, or failure to +perform the Agreement, that may be attributable to an event of force +majeure, an act of God or an outside cause, such as defective +functioning or interruptions of the electricity or telecommunications +networks, network paralysis following a virus attack, intervention by +government authorities, natural disasters, water damage, earthquakes, +fire, explosions, strikes and labor unrest, war, etc. + +11.2 Any failure by either Party, on one or more occasions, to invoke +one or more of the provisions hereof, shall under no circumstances be +interpreted as being a waiver by the interested Party of its right to +invoke said provision(s) subsequently. + +11.3 The Agreement cancels and replaces any or all previous agreements, +whether written or oral, between the Parties and having the same +purpose, and constitutes the entirety of the agreement between said +Parties concerning said purpose. No supplement or modification to the +terms and conditions hereof shall be effective as between the Parties +unless it is made in writing and signed by their duly authorized +representatives. + +11.4 In the event that one or more of the provisions hereof were to +conflict with a current or future applicable act or legislative text, +said act or legislative text shall prevail, and the Parties shall make +the necessary amendments so as to comply with said act or legislative +text. All other provisions shall remain effective. Similarly, invalidity +of a provision of the Agreement, for any reason whatsoever, shall not +cause the Agreement as a whole to be invalid. + + + 11.5 LANGUAGE + +The Agreement is drafted in both French and English and both versions +are deemed authentic. + + + Article 12 - NEW VERSIONS OF THE AGREEMENT + +12.1 Any person is authorized to duplicate and distribute copies of this +Agreement. + +12.2 So as to ensure coherence, the wording of this Agreement is +protected and may only be modified by the authors of the License, who +reserve the right to periodically publish updates or new versions of the +Agreement, each with a separate number. These subsequent versions may +address new issues encountered by Free Software. + +12.3 Any Software distributed under a given version of the Agreement may +only be subsequently distributed under the same version of the Agreement +or a subsequent version. + + + Article 13 - GOVERNING LAW AND JURISDICTION + +13.1 The Agreement is governed by French law. The Parties agree to +endeavor to seek an amicable solution to any disagreements or disputes +that may arise during the performance of the Agreement. + +13.2 Failing an amicable solution within two (2) months as from their +occurrence, and unless emergency proceedings are necessary, the +disagreements or disputes shall be referred to the Paris Courts having +jurisdiction, by the more diligent Party. + + +Version 1.0 dated 2006-09-05. diff --git a/MMVII/LICENSE.md b/MMVII/LICENSE.md new file mode 100644 index 0000000000..365263d878 --- /dev/null +++ b/MMVII/LICENSE.md @@ -0,0 +1,514 @@ +CeCILL-B FREE SOFTWARE LICENSE AGREEMENT + + + Notice + +This Agreement is a Free Software license agreement that is the result +of discussions between its authors in order to ensure compliance with +the two main principles guiding its drafting: + + * firstly, compliance with the principles governing the distribution + of Free Software: access to source code, broad rights granted to + users, + * secondly, the election of a governing law, French law, with which + it is conformant, both as regards the law of torts and + intellectual property law, and the protection that it offers to + both authors and holders of the economic rights over software. + +The authors of the CeCILL-B (for Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre]) +license are: + +Commissariat à l'Energie Atomique - CEA, a public scientific, technical +and industrial research establishment, having its principal place of +business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France. + +Centre National de la Recherche Scientifique - CNRS, a public scientific +and technological establishment, having its principal place of business +at 3 rue Michel-Ange, 75794 Paris cedex 16, France. + +Institut National de Recherche en Informatique et en Automatique - +INRIA, a public scientific and technological establishment, having its +principal place of business at Domaine de Voluceau, Rocquencourt, BP +105, 78153 Le Chesnay cedex, France. + + + Preamble + +This Agreement is an open source software license intended to give users +significant freedom to modify and redistribute the software licensed +hereunder. + +The exercising of this freedom is conditional upon a strong obligation +of giving credits for everybody that distributes a software +incorporating a software ruled by the current license so as all +contributions to be properly identified and acknowledged. + +In consideration of access to the source code and the rights to copy, +modify and redistribute granted by the license, users are provided only +with a limited warranty and the software's author, the holder of the +economic rights, and the successive licensors only have limited liability. + +In this respect, the risks associated with loading, using, modifying +and/or developing or reproducing the software by the user are brought to +the user's attention, given its Free Software status, which may make it +complicated to use, with the result that its use is reserved for +developers and experienced professionals having in-depth computer +knowledge. Users are therefore encouraged to load and test the +suitability of the software as regards their requirements in conditions +enabling the security of their systems and/or data to be ensured and, +more generally, to use and operate it in the same conditions of +security. This Agreement may be freely reproduced and published, +provided it is not altered, and that no provisions are either added or +removed herefrom. + +This Agreement may apply to any or all software for which the holder of +the economic rights decides to submit the use thereof to its provisions. + + + Article 1 - DEFINITIONS + +For the purpose of this Agreement, when the following expressions +commence with a capital letter, they shall have the following meaning: + +Agreement: means this license agreement, and its possible subsequent +versions and annexes. + +Software: means the software in its Object Code and/or Source Code form +and, where applicable, its documentation, "as is" when the Licensee +accepts the Agreement. + +Initial Software: means the Software in its Source Code and possibly its +Object Code form and, where applicable, its documentation, "as is" when +it is first distributed under the terms and conditions of the Agreement. + +Modified Software: means the Software modified by at least one +Contribution. + +Source Code: means all the Software's instructions and program lines to +which access is required so as to modify the Software. + +Object Code: means the binary files originating from the compilation of +the Source Code. + +Holder: means the holder(s) of the economic rights over the Initial +Software. + +Licensee: means the Software user(s) having accepted the Agreement. + +Contributor: means a Licensee having made at least one Contribution. + +Licensor: means the Holder, or any other individual or legal entity, who +distributes the Software under the Agreement. + +Contribution: means any or all modifications, corrections, translations, +adaptations and/or new functions integrated into the Software by any or +all Contributors, as well as any or all Internal Modules. + +Module: means a set of sources files including their documentation that +enables supplementary functions or services in addition to those offered +by the Software. + +External Module: means any or all Modules, not derived from the +Software, so that this Module and the Software run in separate address +spaces, with one calling the other when they are run. + +Internal Module: means any or all Module, connected to the Software so +that they both execute in the same address space. + +Parties: mean both the Licensee and the Licensor. + +These expressions may be used both in singular and plural form. + + + Article 2 - PURPOSE + +The purpose of the Agreement is the grant by the Licensor to the +Licensee of a non-exclusive, transferable and worldwide license for the +Software as set forth in Article 5 hereinafter for the whole term of the +protection granted by the rights over said Software. + + + Article 3 - ACCEPTANCE + +3.1 The Licensee shall be deemed as having accepted the terms and +conditions of this Agreement upon the occurrence of the first of the +following events: + + * (i) loading the Software by any or all means, notably, by + downloading from a remote server, or by loading from a physical + medium; + * (ii) the first time the Licensee exercises any of the rights + granted hereunder. + +3.2 One copy of the Agreement, containing a notice relating to the +characteristics of the Software, to the limited warranty, and to the +fact that its use is restricted to experienced users has been provided +to the Licensee prior to its acceptance as set forth in Article 3.1 +hereinabove, and the Licensee hereby acknowledges that it has read and +understood it. + + + Article 4 - EFFECTIVE DATE AND TERM + + + 4.1 EFFECTIVE DATE + +The Agreement shall become effective on the date when it is accepted by +the Licensee as set forth in Article 3.1. + + + 4.2 TERM + +The Agreement shall remain in force for the entire legal term of +protection of the economic rights over the Software. + + + Article 5 - SCOPE OF RIGHTS GRANTED + +The Licensor hereby grants to the Licensee, who accepts, the following +rights over the Software for any or all use, and for the term of the +Agreement, on the basis of the terms and conditions set forth hereinafter. + +Besides, if the Licensor owns or comes to own one or more patents +protecting all or part of the functions of the Software or of its +components, the Licensor undertakes not to enforce the rights granted by +these patents against successive Licensees using, exploiting or +modifying the Software. If these patents are transferred, the Licensor +undertakes to have the transferees subscribe to the obligations set +forth in this paragraph. + + + 5.1 RIGHT OF USE + +The Licensee is authorized to use the Software, without any limitation +as to its fields of application, with it being hereinafter specified +that this comprises: + + 1. permanent or temporary reproduction of all or part of the Software + by any or all means and in any or all form. + + 2. loading, displaying, running, or storing the Software on any or + all medium. + + 3. entitlement to observe, study or test its operation so as to + determine the ideas and principles behind any or all constituent + elements of said Software. This shall apply when the Licensee + carries out any or all loading, displaying, running, transmission + or storage operation as regards the Software, that it is entitled + to carry out hereunder. + + + 5.2 ENTITLEMENT TO MAKE CONTRIBUTIONS + +The right to make Contributions includes the right to translate, adapt, +arrange, or make any or all modifications to the Software, and the right +to reproduce the resulting software. + +The Licensee is authorized to make any or all Contributions to the +Software provided that it includes an explicit notice that it is the +author of said Contribution and indicates the date of the creation thereof. + + + 5.3 RIGHT OF DISTRIBUTION + +In particular, the right of distribution includes the right to publish, +transmit and communicate the Software to the general public on any or +all medium, and by any or all means, and the right to market, either in +consideration of a fee, or free of charge, one or more copies of the +Software by any means. + +The Licensee is further authorized to distribute copies of the modified +or unmodified Software to third parties according to the terms and +conditions set forth hereinafter. + + + 5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION + +The Licensee is authorized to distribute true copies of the Software in +Source Code or Object Code form, provided that said distribution +complies with all the provisions of the Agreement and is accompanied by: + + 1. a copy of the Agreement, + + 2. a notice relating to the limitation of both the Licensor's + warranty and liability as set forth in Articles 8 and 9, + +and that, in the event that only the Object Code of the Software is +redistributed, the Licensee allows effective access to the full Source +Code of the Software at a minimum during the entire period of its +distribution of the Software, it being understood that the additional +cost of acquiring the Source Code shall not exceed the cost of +transferring the data. + + + 5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE + +If the Licensee makes any Contribution to the Software, the resulting +Modified Software may be distributed under a license agreement other +than this Agreement subject to compliance with the provisions of Article +5.3.4. + + + 5.3.3 DISTRIBUTION OF EXTERNAL MODULES + +When the Licensee has developed an External Module, the terms and +conditions of this Agreement do not apply to said External Module, that +may be distributed under a separate license agreement. + + + 5.3.4 CREDITS + +Any Licensee who may distribute a Modified Software hereby expressly +agrees to: + + 1. indicate in the related documentation that it is based on the + Software licensed hereunder, and reproduce the intellectual + property notice for the Software, + + 2. ensure that written indications of the Software intended use, + intellectual property notice and license hereunder are included in + easily accessible format from the Modified Software interface, + + 3. mention, on a freely accessible website describing the Modified + Software, at least throughout the distribution term thereof, that + it is based on the Software licensed hereunder, and reproduce the + Software intellectual property notice, + + 4. where it is distributed to a third party that may distribute a + Modified Software without having to make its source code + available, make its best efforts to ensure that said third party + agrees to comply with the obligations set forth in this Article . + +If the Software, whether or not modified, is distributed with an +External Module designed for use in connection with the Software, the +Licensee shall submit said External Module to the foregoing obligations. + + + 5.3.5 COMPATIBILITY WITH THE CeCILL AND CeCILL-C LICENSES + +Where a Modified Software contains a Contribution subject to the CeCILL +license, the provisions set forth in Article 5.3.4 shall be optional. + +A Modified Software may be distributed under the CeCILL-C license. In +such a case the provisions set forth in Article 5.3.4 shall be optional. + + + Article 6 - INTELLECTUAL PROPERTY + + + 6.1 OVER THE INITIAL SOFTWARE + +The Holder owns the economic rights over the Initial Software. Any or +all use of the Initial Software is subject to compliance with the terms +and conditions under which the Holder has elected to distribute its work +and no one shall be entitled to modify the terms and conditions for the +distribution of said Initial Software. + +The Holder undertakes that the Initial Software will remain ruled at +least by this Agreement, for the duration set forth in Article 4.2. + + + 6.2 OVER THE CONTRIBUTIONS + +The Licensee who develops a Contribution is the owner of the +intellectual property rights over this Contribution as defined by +applicable law. + + + 6.3 OVER THE EXTERNAL MODULES + +The Licensee who develops an External Module is the owner of the +intellectual property rights over this External Module as defined by +applicable law and is free to choose the type of agreement that shall +govern its distribution. + + + 6.4 JOINT PROVISIONS + +The Licensee expressly undertakes: + + 1. not to remove, or modify, in any manner, the intellectual property + notices attached to the Software; + + 2. to reproduce said notices, in an identical manner, in the copies + of the Software modified or not. + +The Licensee undertakes not to directly or indirectly infringe the +intellectual property rights of the Holder and/or Contributors on the +Software and to take, where applicable, vis-à-vis its staff, any and all +measures required to ensure respect of said intellectual property rights +of the Holder and/or Contributors. + + + Article 7 - RELATED SERVICES + +7.1 Under no circumstances shall the Agreement oblige the Licensor to +provide technical assistance or maintenance services for the Software. + +However, the Licensor is entitled to offer this type of services. The +terms and conditions of such technical assistance, and/or such +maintenance, shall be set forth in a separate instrument. Only the +Licensor offering said maintenance and/or technical assistance services +shall incur liability therefor. + +7.2 Similarly, any Licensor is entitled to offer to its licensees, under +its sole responsibility, a warranty, that shall only be binding upon +itself, for the redistribution of the Software and/or the Modified +Software, under terms and conditions that it is free to decide. Said +warranty, and the financial terms and conditions of its application, +shall be subject of a separate instrument executed between the Licensor +and the Licensee. + + + Article 8 - LIABILITY + +8.1 Subject to the provisions of Article 8.2, the Licensee shall be +entitled to claim compensation for any direct loss it may have suffered +from the Software as a result of a fault on the part of the relevant +Licensor, subject to providing evidence thereof. + +8.2 The Licensor's liability is limited to the commitments made under +this Agreement and shall not be incurred as a result of in particular: +(i) loss due the Licensee's total or partial failure to fulfill its +obligations, (ii) direct or consequential loss that is suffered by the +Licensee due to the use or performance of the Software, and (iii) more +generally, any consequential loss. In particular the Parties expressly +agree that any or all pecuniary or business loss (i.e. loss of data, +loss of profits, operating loss, loss of customers or orders, +opportunity cost, any disturbance to business activities) or any or all +legal proceedings instituted against the Licensee by a third party, +shall constitute consequential loss and shall not provide entitlement to +any or all compensation from the Licensor. + + + Article 9 - WARRANTY + +9.1 The Licensee acknowledges that the scientific and technical +state-of-the-art when the Software was distributed did not enable all +possible uses to be tested and verified, nor for the presence of +possible defects to be detected. In this respect, the Licensee's +attention has been drawn to the risks associated with loading, using, +modifying and/or developing and reproducing the Software which are +reserved for experienced users. + +The Licensee shall be responsible for verifying, by any or all means, +the suitability of the product for its requirements, its good working +order, and for ensuring that it shall not cause damage to either persons +or properties. + +9.2 The Licensor hereby represents, in good faith, that it is entitled +to grant all the rights over the Software (including in particular the +rights set forth in Article 5). + +9.3 The Licensee acknowledges that the Software is supplied "as is" by +the Licensor without any other express or tacit warranty, other than +that provided for in Article 9.2 and, in particular, without any warranty +as to its commercial value, its secured, safe, innovative or relevant +nature. + +Specifically, the Licensor does not warrant that the Software is free +from any error, that it will operate without interruption, that it will +be compatible with the Licensee's own equipment and software +configuration, nor that it will meet the Licensee's requirements. + +9.4 The Licensor does not either expressly or tacitly warrant that the +Software does not infringe any third party intellectual property right +relating to a patent, software or any other property right. Therefore, +the Licensor disclaims any and all liability towards the Licensee +arising out of any or all proceedings for infringement that may be +instituted in respect of the use, modification and redistribution of the +Software. Nevertheless, should such proceedings be instituted against +the Licensee, the Licensor shall provide it with technical and legal +assistance for its defense. Such technical and legal assistance shall be +decided on a case-by-case basis between the relevant Licensor and the +Licensee pursuant to a memorandum of understanding. The Licensor +disclaims any and all liability as regards the Licensee's use of the +name of the Software. No warranty is given as regards the existence of +prior rights over the name of the Software or as regards the existence +of a trademark. + + + Article 10 - TERMINATION + +10.1 In the event of a breach by the Licensee of its obligations +hereunder, the Licensor may automatically terminate this Agreement +thirty (30) days after notice has been sent to the Licensee and has +remained ineffective. + +10.2 A Licensee whose Agreement is terminated shall no longer be +authorized to use, modify or distribute the Software. However, any +licenses that it may have granted prior to termination of the Agreement +shall remain valid subject to their having been granted in compliance +with the terms and conditions hereof. + + + Article 11 - MISCELLANEOUS + + + 11.1 EXCUSABLE EVENTS + +Neither Party shall be liable for any or all delay, or failure to +perform the Agreement, that may be attributable to an event of force +majeure, an act of God or an outside cause, such as defective +functioning or interruptions of the electricity or telecommunications +networks, network paralysis following a virus attack, intervention by +government authorities, natural disasters, water damage, earthquakes, +fire, explosions, strikes and labor unrest, war, etc. + +11.2 Any failure by either Party, on one or more occasions, to invoke +one or more of the provisions hereof, shall under no circumstances be +interpreted as being a waiver by the interested Party of its right to +invoke said provision(s) subsequently. + +11.3 The Agreement cancels and replaces any or all previous agreements, +whether written or oral, between the Parties and having the same +purpose, and constitutes the entirety of the agreement between said +Parties concerning said purpose. No supplement or modification to the +terms and conditions hereof shall be effective as between the Parties +unless it is made in writing and signed by their duly authorized +representatives. + +11.4 In the event that one or more of the provisions hereof were to +conflict with a current or future applicable act or legislative text, +said act or legislative text shall prevail, and the Parties shall make +the necessary amendments so as to comply with said act or legislative +text. All other provisions shall remain effective. Similarly, invalidity +of a provision of the Agreement, for any reason whatsoever, shall not +cause the Agreement as a whole to be invalid. + + + 11.5 LANGUAGE + +The Agreement is drafted in both French and English and both versions +are deemed authentic. + + + Article 12 - NEW VERSIONS OF THE AGREEMENT + +12.1 Any person is authorized to duplicate and distribute copies of this +Agreement. + +12.2 So as to ensure coherence, the wording of this Agreement is +protected and may only be modified by the authors of the License, who +reserve the right to periodically publish updates or new versions of the +Agreement, each with a separate number. These subsequent versions may +address new issues encountered by Free Software. + +12.3 Any Software distributed under a given version of the Agreement may +only be subsequently distributed under the same version of the Agreement +or a subsequent version. + + + Article 13 - GOVERNING LAW AND JURISDICTION + +13.1 The Agreement is governed by French law. The Parties agree to +endeavor to seek an amicable solution to any disagreements or disputes +that may arise during the performance of the Agreement. + +13.2 Failing an amicable solution within two (2) months as from their +occurrence, and unless emergency proceedings are necessary, the +disagreements or disputes shall be referred to the Paris Courts having +jurisdiction, by the more diligent Party. + + +Version 1.0 dated 2006-09-05. diff --git a/MMVII/README.md b/MMVII/README.md new file mode 100755 index 0000000000..17a0fe51f8 --- /dev/null +++ b/MMVII/README.md @@ -0,0 +1,233 @@ +# MicMac v2 (MMVII) + +**Table of Contents** +- [Description](#description) +- [Prerequisites](#prerequisites) +- [Installation](#installation) + - [Linux Ubuntu distribution](#linux-ubuntu-distribution) + - [Windows](#windows) + - [Install PROJ via vcpkg](#install-proj-via-vcpkg) + - [Install MMVII](#install-mmvii) + - [macOS](#macos) + - [Additionnal notes](#additionnal-notes) + - [Compilation details](#compilation-details) + - [MMVII Command Completion](#mmvii-command-completion) + - [Graphical User Interface vMMVII](#graphical-user-interface-vmmvii) + - [Documentation](#documentation) + - [HTML Documentation](#html-documentation) + - [PDF Documentation](#pdf-documentation) +- [Run a test](#run-a-test) +- [License](#license) +- [Useful links](#useful-links) + +# Description +**MicMac** is a free open-source photogrammetry solution developed at (**[IGN](https://www.ign.fr/)**) - French Mapping Agency - since 2003. A second version named **MMVII** aimed at facilitating external contributions and being more maintainable in the long term has been in development since 2020. + +# Prerequisites +Some external tools need to be present on your system for **MMVII** to run properly: +- **[Git](https://git-scm.com/)** to clone the repository +- **[CMake](https://cmake.org/)** to generate build files +- **[make](http://www.gnu.org/software/make)** for parallel processes management +- **[PROJ](http://trac.osgeo.org/proj/)** for coordinate system conversion and coordinate reference system transformation +- **[ccache](https://ccache.dev/)** for recompilation optimization (optional) +- **[OpenMP](https://www.openmp.org/)** multi-platform parallel programming (optionnal) +- **[Doxygen](https://www.doxygen.nl/)** documentation generator (optional) +- **[vcpkg](https://github.com/microsoft/vcpkg/blob/master/README.md)** C/C++ library manager (**Windows only**) + +# Installation +This section covers the compilation of **MMVII** source code to generate binaries. Pre-compiled binaries are available **[HERE](https://github.com/micmacIGN/micmac/releases)**. + +Compilation procedure is discribed below for the 3 main operating systems: +- **[Linux Ubuntu distribution](#linux-ubuntu-distribution)** +- **[Windows](#windows)** +- **[macOS](#macos)** + +## Linux Ubuntu distribution +Before starting the installation, it is necessary to install **MicMac v1** by following the instructions **[HERE](https://github.com/micmacIGN/micmac/README.md)**. + +Under Linux (Ubuntu) distribution the installation procedure is as follows: + +- Open a terminal +- Access the folder: + ```bash + cd micmac/MMVII + ``` +- Create a directory for building intermediate files and access it: + ```bash + mkdir build && cd build + ``` +- Generate makefiles: + ```bash + cmake ../ + ``` +- Compile **MMVII**: + ```bash + make full -j N + ``` + - N is the number of CPUs on the machine and can be retrieved by typing `nproc --all` + +- Add binaries to the `PATH` (**adapt the path**): + ```bash + echo 'export PATH=/home/src/micmac/MMVII/bin:$PATH' >> ~/.bashrc + ``` + +## Windows +Before starting the installation, it is necessary to install **MicMac v1** by following the instructions **[HERE](https://github.com/micmacIGN/micmac/README.md)**. + +Under Windows the installation procedure is as follows: + +### Install PROJ via vcpkg +- Open a **Git Bash** terminal +- In another working directory, clone the repository: + ```bash + git clone https://github.com/microsoft/vcpkg.git + ``` +- Access the folder: + ```bash + cd vcpkg + ``` +- Setup vcpkg: + ```bash + ./bootstrap-vcpkg.bat + ``` + ```bash + vcpkg.exe integrate install + ``` +- Install PROJ: + ```bash + vcpkg install proj --triplet x64-windows + ``` + +### Install MMVII +- Open a **Git Bash** terminal +- Access the folder: + ```bash + cd micmac/MMVII + ``` +- Create a directory for building intermediate files and access it: + ```bash + mkdir build && cd build + ``` +- Specify `CMAKE_TOOLCHAIN_FILE` variable: + ```bash + "[CMAKE_DIR]/cmake.exe" .. "-DCMAKE_TOOLCHAIN_FILE=[VCPKG_DIR]/vcpkg/scripts/buildsystems/vcpkg.cmake" + ``` +- Compile **MMVII**: + ```bash + "[CMAKE_DIR]/cmake.exe" --build . --target full --config Release + ``` +- Add binaries to Windows `PATH` environment variable via **Advanced system settings** menu. Example of path (**adapt the path**): + ```bash + "C:\src\micmac\MMVII\bin" + ``` + +## macOS + +## Additionnal notes +### Compilation details +- If using CLang version XX and want OpenMP: `sudo apt install libomp-XX-dev` +- You can use `cmake -G Ninja ..` to use Ninja build system instead of the native one. (`sudo apt install ninja-build`) +- Use `cmake --build . -j N` or `cmake --build . -j N -v` instead of make (works with all build systems) +- Use `cmake --build . --target clean` or `cmake --build . --target cleanall` +- Use `ccmake ..` or `cmake-gui ..` to change config option: +- CMAKE_BUILD_TYPE: + - Debug : -g + - RelWithDebInfo : -O3 -g (default) + - Release : -O3 -DNDEBUG +- CMAKE_CXX_COMPILER (advanced mode : 't'): + - Allow to set compiler version and type (g++, clang) +- Clean : + - make clean : delete build products + - make distclean : delete build products and generated codes + - rm -fr MMVII/build/* : reinitialize the build configuration + +### MMVII Command Completion +You can enable command completion for **MMVII** in Linux Bash, which simplifies the use of **MMVII** commands. + +**Requirements:** +- `bash-completion` +- `python3` + +These are typically installed by default on Ubuntu. If not, you can install them using: + ```bash + sudo apt install bash-completion python3` + ``` + +**Configuration:** +- Ensure MMVII is compiled. +- Make sure the MMVII executable is in your `$PATH`. +- Add the following line to your `${HOME}/.bashrc` file: + + ```sh + [ -f ${HOME}/@MICMAC_SOURCE_DIR@/micmac/MMVII/bash-completion/mmvii-completion ] && . ${HOME}/@MICMAC_SOURCE_DIR@/micmac/MMVII/bash-completion/mmvii-completion + ``` + +After making this modification, the command completion feature will be active in any new terminal session. + + +### Graphical User Interface vMMVII +The **vMMVII** tool provides a convenient graphical user interface (GUI) for writing **MMVII** commands. + +If you have the Qt5 (or Qt6) development package installed, **vMMVII** will be automatically compiled with **MMVII**. + +For Ubuntu 22.04, you can install the necessary package with the following command: +```bash +sudo apt install qtbase5-dev +``` + +For windows, you can download and install Qt from **[HERE](https://www.qt.io/download)** and adapt the following command: +```bash +"[CMAKE_DIR]\cmake.exe" .. "-DCMAKE_TOOLCHAIN_FILE=[VCPKG_DIR]vcpkg\scripts\buildsystems\vcpkg.cmake" “-DCMAKE_PREFIX_PATH=[QT_DIR]\msvc2019_64” +``` + +To use **vMMVII**, simply type `vMMVII` in a terminal in your working directory. + +Please note: +- Currently, there is no documentation available. +- The tool is in beta, so some MMVII parameters may be misinterpreted or may not have the appropriate File Dialog helper. + +### Documentation + +The latest version of the documentation can be downloaded directly **[HERE](https://github.com/micmacIGN/micmac/releases/tag/MMVII_Documentation)**. + +#### HTML Documentation +- Ensure you have doxygen installed (on Ubuntu, you can use the following command): + ```sh + sudo apt install doxygen + ``` +- Navigate to the MMVII directory: + ```sh + cd micmac/MMVII + ``` +- Run the following command: + ```sh + doxygen Doxyfile + ``` + +#### PDF Documentation +- Ensure you have LaTeX installed (on Ubuntu, you can use the following command): + ```sh + sudo apt install texlive + ``` +- Navigate to the `MMVII/Doc` directory: + ```sh + cd micmac/MMVII/Doc + ``` +- Run the following command: + ```sh + make + ``` + +# Run a test +- In a terminal type: + ```sh + MMVII Bench 1 + ``` + +# License +This project is licensed under the **CECILL-B** License - see the **[LICENSE.md](LICENSE.md)** file for details. + +# Useful links +* [MMVII Documentation](https://github.com/micmacIGN/micmac/releases/tag/MMVII_Documentation) +* [MMVII Programming Session 22-24 Nov 2023](https://www.youtube.com/playlist?list=PLO_lg_3H3aFuMamUsImMzNGPwfkAZge5m) + diff --git a/MMVII/Readme.md b/MMVII/Readme.md deleted file mode 100755 index aa0f125f01..0000000000 --- a/MMVII/Readme.md +++ /dev/null @@ -1,139 +0,0 @@ -Dependencies ------------- - - Required: cmake, libproj-dev. - - Optional: OpenMP, ccache - - - Ubuntu 20.04: - - `sudo apt install ccache cmake pkg-config libproj-dev proj-data` - - If using CLang version XX and want OpenMP: `sudo apt install libomp-XX-dev` - - - MacOs: - - Install/check XCode is installed (xcode-select --version) - - Install brew: `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"` - - Install libX11, qt and proj: - - `brew install libX11` - - `brew install qt` - - `brew install proj` - - Set environment variables: - - `export PATH="/usr/local/opt/llvm/bin:$PATH"` - - `export LDFLAGS="-L/usr/local/opt/llvm/lib -L/usr/local/lib -Wl,-rpath,/usr/local/opt/llvm/lib"` - - `export CPPFLAGS="-I/usr/local/opt/llvm/include"` - - -Compilation (short) -------------------- - - Compile MicMac V1, then (replace N with the number of processor threads): - - cd MMVII - mkdir -p build - cd build - cmake .. - make -j N full (or make -j N full VERBOSE=1 to see compile command line) - - Following compilations could be run just with: - - make -j N - - - Tests: - - ../bin/MMVII Bench 1 - - - Compilation targets: - - all|(none) : build MMVII - full : re-generate files for symbolic calculus and build MMVII - rebuild : distclean + full - clean : delete build products - distclean : delete build products and generated files for symbolic calculus - - rm -fr MMVII/build/* : reinitialize the build configuration. cmake needs to be rerun after that - - In case of SymDer-related compilation error, re-generate files for symbolic calculus : - - make full - - -Compilation (detail) --------------------- - - You can use `cmake -G Ninja ..` to use Ninja build system instead of the native one. (`sudo apt install ninja-build`) - - Use `cmake --build . -j 8 [--target TARGET]` or `cmake --build . -j 8 -v [--target TARGET]` instead of make (works with all build systems) - - Use `cmake --build . --target clean` or `cmake --build . --target distclean` - - Use `ccmake ..` or `cmake-gui ..` to change config option: - - CMAKE_BUILD_TYPE: - - Debug : -g - - RelWithDebInfo : -O3 -g (default) - - Release : -O3 -DNDEBUG - - CMAKE_CXX_COMPILER (advanced mode : 't'): - - Allow to set compiler version and type (g++, clang) - - vMMVII_BUILD (see bellow): - - ON : enable compilation of vMMVII. Needs Qt >= 5.12.8 - - OFF: disable compilation of vMMVII - - You may need to add 'CMAKE_PREFIX_PATH=' on Windows (ex: c:\Qt\6.6.0\msvc2019_64) - - - -To generate html doc --------------------- -In MMVII directory: - - doxygen Doxyfile - - -To generate pdf doc -------------------- - -Require latex: `sudo apt install texlive` - -In MMVII/Doc directory: - - make - - -Bash completion (beta) ----------------------- - -It is possible to have MMVII command completion for Linux bash - -- Requires: python3 - (Already installed by default on Ubuntu, just in case: sudo apt install bash-completion python3) - - python3 must be known as 'python' (ubuntu 22.04: sudo apt install python-is-python3) - -- Configuration: - - MMVII must be (fully) compiled - - MMVII executable must be in your $PATH - - Add to your ${HOME}/.bashrc the following line (adjust @MICMAC_SOURCE_DIR@ to your case) - - `[ -f ${HOME}/@MICMAC_SOURCE_DIR@/micmac/MMVII/bash-completion/mmvii-completion ] && . ${HOME}/@MICMAC_SOURCE_DIR@/micmac/MMVII/bash-completion/mmvii-completion` - - Completion will be active in terminals opened after this modification. - -If you're using bash on Windows, it may also works: - -- You must have python >= 3.7 installed somewhere - -- Edit your ~/.bash_profile and add: (adapt first 2 lines to your case) - ``` - MMVII_INSTALL_PATH=/c/micmac/MMVII - PYTHON_INSTALL_PATH=/c/Python/Python39/ - PATH=${PYTHON_INSTALL_PATH}:${MMVII_INSTALL_PATH}/bin:$PATH - [ -f ${MMVII_INSTALL_PATH}/bash-completion/mmvii-completion ] && . ${MMVII_INSTALL_PATH}/bash-completion/mmvii-completion - ``` - -vCommand (beta) ---------------- -There is a GUI tool that can help for writing MMVII command : vMMVII - -It will be automatically compiled with MMVII if development package Qt5 (or Qt6) is installed (Ubuntu 22.04: `sudo apt install qtbase5-dev`) - -Windows: You may have to add Qt installation path when running cmake configuration : - -`cmake .. -D CMAKE_PREFIX_PATH=C:\Qt\6.6.0\msvc2019_64` - -Usage: just type "vMMVII" in your working directory. - -- Sorry, no documentation yet - -- This tool is beta: some MMVII parameters may be misinterpreted or not have the good File Dialog helper. diff --git a/README.md b/README.md index 570bd69558..2059ee1d5c 100755 --- a/README.md +++ b/README.md @@ -1,104 +1,236 @@ -MICMAC -====== - -[Version française](LISEZMOI.md) +# MicMac + +- For **MicMac v2 (MMVII)** click **[HERE](MMVII/README.md)**. + +**Table of Contents** +- [Description](#description) +- [Prerequisites](#prerequisites) +- [Installation](#installation) + - [Linux Ubuntu distribution](#linux-ubuntu-distribution) + - [Windows](#windows) + - [macOS](#macos) + - [Additionnal notes](#additionnal-notes) + - [Install Homebrew Package Manager for macOS](#install-homebrew-package-manager-for-macos) + - [Qt Tools](#qt-tools) + - [Issues](#issues) + - [PATH and pre-compiled binaries ](#path-and-pre-compiled-binaries) + - [MicMac via a Docker image](#micmac-via-a-docker-image) +- [Run the example dataset](#run-the-example-dataset) +- [License](#license) +- [Useful links](#useful-links) + + +# Description +**MicMac** is a free open-source photogrammetric software for 3D reconstruction under development at the National Institute of Geographic and Forestry Information - French Mapping Agency - (**[IGN](https://www.ign.fr/)**) and the National School of Geographic Sciences (**[ENSG](https://ensg.eu/)**) withing the **[LASTIG](https://www.umr-lastig.fr/)** lab. **MicMac** is distributed under **[CECILL-B](LICENSE.md)** license since 2007. # Prerequisites - -Some external tools need to be present on your system for Micmac to run properly : -- [make](http://www.gnu.org/software/make) for parallel processes management, -- *convert*, from [ImageMagick](http://www.imagemagick.org), for image format conversion, -- [exiftool](http://www.sno.phy.queensu.ca/~phil/exiftool) and [exiv2](http://www.exiv2.org), to read/write image meta-data, -- [proj4](http://trac.osgeo.org/proj/) for coordinate system conversion. - -On Debian/Ubuntu distribution you can easily install these tools by calling this command: - -`sudo apt-get install make imagemagick libimage-exiftool-perl exiv2 proj-bin qt5-default` - -You can check before-hand that Micmac is able to find those programs by calling the command: - -`bin/mm3d CheckDependencies` (in Micmac directory) - -*NOT FOUND* near one of the tools indicates either the specified executable is not on your disk or it cannot be found in the -directories of the *PATH* environment variable. -There is also a special directory for tool finding which is named *binaire-aux*, in Micmac directory. When an external program -is needed, this directory is always scanned whatever the value of PATH. - -## Additionnal notes for Windows - -You will need [Visual C++ 2010 runtime redistribuables](http://www.microsoft.com/fr-fr/download/details.aspx?id=5555) to run pre-compiled binaries of micmac. -Both pre-compiled and compiled from source executables will need : -- [Visual C++ 2005 runtime redistribuables](http://www.microsoft.com/fr-fr/download/details.aspx?id=3387), -- and [Net Framework 2.0](http://www.microsoft.com/fr-fr/download/details.aspx?id=1639). - -One of *WINDIR* or *SystemRoot* environment variable must be set to Windows' installation directory (`C:\Windows` in much cases). -This prevents Micmac from calling a `convert.exe` that is not *ImageMagick's* convert tool but a network utility used by the system. -Since Windows does not have an easy-to-use package manager, a version of *make*, *convert*, *exiftool* and *exiv2* are delivered with -the source and Windows binaries archives. They are placed in the `binaire-aux` directory. - -# Compiling from the sources' archive - -## Prerequisites - -In addition of previously named tools, people willing to compile binaries from the source code will need to install the [cmake](www.cmake.org) -program. Linux and MacOS X users may also want to get X11 header files in order to generate graphical functionalities like *SaisieBasc*, *SaisieMasque*, etc ... -The package of X11 headers is general called `libx11-dev` under Linux distributions. -X11-based tools are not available in the Windows version. -Windows users may need Qt5 libraries to generate graphical interfaces such as *SaisieMasqQT*. - -For recompilation optimization, [ccache](ccache.dev) is automatically used if detected. - -## Compiling process for Linux / MacOS X - -- clone the git repository : `git clone https://github.com/micmacIGN/micmac.git` -- enter 'micmac' directory : `cd micmac` -- create a directory for the build's intermediate files, then enter it : `mkdir build & cd build` -- generate makefiles using cmake : `cmake ../` -- process compilation : `make install -j*cores number*` (ex.: `make install -j4`) - -## Compiling process for Visual C++ (Windows) - -The first steps are the same as for a Linux/MacOS build except for the `make` call. -Instead of makefiles, *Cmake* generates a Visual C++ solution, named `micmac.sln`. Open it and compile the `INSTALL` project. -Be sure to be in *Release* configuration, for Micmac is much faster built this way than in *Debug* mode. -Again, do not compile the entire solution but just the `INSTALL` project, otherwise compiled binaries won't be copied in the `bin` directory and this will prevent Micmac from working. - -## Docker image +Some external tools need to be present on your system for **MicMac** to run properly: +- **[Git](https://git-scm.com/)** to clone the repository +- **[CMake](https://cmake.org/)** to generate build files +- **[make](http://www.gnu.org/software/make)** for parallel processes management +- **[ImageMagick](http://www.imagemagick.org)** for image format conversion +- **[exiftool](http://www.sno.phy.queensu.ca/~phil/exiftool)** and **[exiv2](http://www.exiv2.org)** to read/write image meta-data +- **[PROJ](http://trac.osgeo.org/proj/)** for coordinate system conversion and coordinate reference system transformation +- **[Xlib](https://gitlab.freedesktop.org/xorg/lib/libx11)** to launch some GUI tools based on X window system +- **[ccache](https://ccache.dev/)** for recompilation optimization (optional) +- **[Qt](https://www.qt.io/)** to launch some GUI tool based on QT (optionnal) + +# Installation +This section covers the compilation of **MicMac** source code to generate binaries. Pre-compiled binaries are available **[HERE](https://github.com/micmacIGN/micmac/releases)**. + +Compilation procedure is discribed below for the 3 main operating systems: +- **[Linux Ubuntu distribution](#linux-ubuntu-distribution)** +- **[Windows 10](#windows-10)** +- **[macOS](#macos)** + + +## Linux Ubuntu distribution +Under Linux (Ubuntu) distribution the installation procedure is as follows: + +- Open a terminal +- Install dependencies: + ```bash + sudo apt-get install git cmake make ccache imagemagick libimage-exiftool-perl exiv2 proj-bin libx11-dev qt5-default + ``` +- Clone the repository: + ```bash + git clone https://github.com/micmacIGN/micmac.git + ``` +- Access the folder: + ```bash + cd micmac + ``` +- Create a directory for building intermediate files and access it: + ```bash + mkdir build && cd build + ``` +- Generate makefiles: + ```bash + cmake .. + ``` +- Compile: + ```bash + make install -j N + ``` + - N is the number of CPUs on the machine and can be retrieved by typing `nproc --all` + +- Add binaries to the `PATH` (**adapt the path**): + ```bash + echo 'export PATH=/home/src/micmac/bin:$PATH' >> ~/.bashrc + ``` + +## Windows +Under Windows the installation procedure is as follows: +- Download and Install **[Build Tools for Visual Studio](https://visualstudio.microsoft.com/)** +- Download and Install **[Git](https://git-scm.com/)** +- Download and Install **[CMake](https://cmake.org/)** +- Download and Install **[Qt](https://www.qt.io/)** (optionnal) +- Open a **Git Bash** terminal +- Clone the repository: + ```sh + git clone https://github.com/micmacIGN/micmac.git + ``` +- Access **micmac** folder: + ```bash + cd micmac + ``` +- Create a directory for building intermediate files and access it: + ```bash + mkdir build && cd build + ``` +- Generate Microsoft Visual Studio Solution File **MICMAC.sln**: + ```bash + "[CMAKE_DIR]/cmake.exe" .. + ``` +- Compile **MicMac**: + ```bash + "[CMAKE_DIR]/cmake.exe" --build . --config Release --target INSTALL + ``` +- Add binaries to Windows `PATH` environment variable via **Advanced system settings** menu. Example of path (**adapt the path**): + ```bash + "C:\src\micmac\bin" + ``` + +## macOS +Under macOS we will use **[Homebrew](https://brew.sh/)** Package Manager to install dependencies. + +If you don't have Homebrew, first follow the instructions **[HERE](#install-homebrew-package-manager-for-macos)**. + +Under macOS the installation procedure is as follows: + +- Open a terminal +- Use **Homebrew** to install dependencies: + ```bash + brew install git + brew install cmake + brew install imagemagick + brew install exiftool + brew install exiv2 + brew install proj + brew install qt5 + ``` +- Clone the repository: + ```bash + git clone https://github.com/micmacIGN/micmac.git + ``` +- Access the folder: + ```bash + cd micmac + ``` +- Create a directory for building intermediate files and access it: + ```bash + mkdir build && cd build + ``` +- Generate makefiles: + ```bash + cmake .. + ``` +- Compile **MicMac**: + ```bash + make install -j N + ``` + - N is the number of CPUs on the machine + +- Add binaries to the `PATH` (**adapt the path**): + ```bash + echo 'export PATH=/home/src/micmac/bin:$PATH' >> ~/.zshrc + ``` + +## Additionnal notes + +### Install Homebrew Package Manager for macOS +- Open a terminal +- Download and run Homebrew installation script: + ```bash + /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + ``` +- Follow the on-screen instructions to complete the installation +- Add **Homebrew** to the configuration file of the Zsh shell environment: + ```bash + echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc + ``` +- Execute the commands from the `.zshrc` file in the current shell session: + ```bash + source ~/.zshrc + ``` +- Check installation: + ```bash + brew doctor + ``` + +### Qt Tools +To use Qt GUIs, you need to adapt the **cmake** command as follows: + ```bash + cmake ../ -DWITH_QT5=1 + ``` + +#### Issues +- In case **cmake** complains about missing Widgets library, you must assign `CMAKE_PREFIX_PATH` variable: + ```bash + cmake ../ -DWITH_QT5=1 -DCMAKE_PREFIX_PATH=path/to/qt/X.XX.X/ + ``` +- For Linux/macOS it is sometimes necessary to append the `lib` directory to `LD_LIBRARY_PATH` in `.bashrc` / `.zshrc` to be able to use Qt tools: + + - Under Linux : + ```bash + echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/src/micmac/lib/' >> ~/.bashrc + ``` + - Under macOS: + ```bash + echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/src/micmac/lib/' >> ~/.zshrc + ``` + +### PATH and pre-compiled binaries +You can append the full path of the `bin` directory to `PATH` environment variable to call **MicMac** commands from anywhere. However, it is not necessary to add the `binaire-aux` directory to the `PATH` variable. + +### MicMac via a Docker image A precompiled docker image is available and ready to use: - -`docker pull rupnike/micmac` - + ```sh + docker pull rupnike/micmac + ``` or build your own image from scratch using the existing Dockerfile: - -`docker image build -t micmac:1.0 -f Dockerfile` - + ```sh + docker image build -t micmac:1.0 -f Dockerfile + ``` [![Docker Status](https://dockeri.co/image/rupnike/micmac)](https://hub.docker.com/r/rupnike/micmac/) -## Install MicMac in WinOS subsystem - -You can also use MicMac on Windows 10 through the Windows Subsystem for Linux (WSL). WSL allows you to run a Linux distribution (e.g. Ubuntu) directly on Windows, unmodified, without the overhead of a traditional virtual machine or dualboot setup. For further information please refer to the instructions in this [WSL tutorial](https://micmac.ensg.eu/index.php/Install_MicMac_in_Windows_Subsystem_for_Linux). - -# Installation test - -The website [logiciels.ign.fr](http://logiciels.ign.fr/?Telechargement,20) also provides a test dataset called `Boudha_dataset.zip`. -This file contains images and configuration files needed to compute the *Boudha* example from Micmac's documentation. By calling the script this way : - -`./boudha_test.sh my_micmac_bin/` - -assuming your working directory is the *Boudha* directory contained in the file, you can process all the tool-chain until dense point matching. - -'my_micmac_bin' is a path to the 'bin' directory of your installation. - ex.: ./boudha_test.sh ../micmac/bin/ - This example assumes 'Boudha' directory (containing data) and 'micmac' (installation directory) have the same parent directory. Notice -the ending '/', it's mandatory for the script to work. - After some computation time, you may find three 'ply' files in the 'MEC-6-Im' directory with the three parts of the dense points cloud -of the statue's head. Open the PLY files with a viewer like meshlab to check everything proceeded correctly. - -# Additionnal notes - -You can append the full path of the `bin` directory to `PATH` environment variable to call Micmac commands from anywhere. However, it is not necessary to add the `binaire-aux` directory to the `PATH` variable. - -For Linux / MacOSX, you have to append the path to the `lib` directory to `LD_LIBRARY_PATH` in `.bashrc` to be able to use QT tools. -Add the following line: `export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/micmac/lib/` - -For MacOSX, if you want to use QT tools with precompiled binaries available on [logiciels.ign.fr](http://logiciels.ign.fr/?Telechargement,20), you need to install Qt libraries for Mac from [http://download.qt-project.org](http://download.qt-project.org/archive/qt/4.8/4.8.4/qt-opensource-mac-4.8.4.dmg) +# Run the example dataset +- Download the test dataset available **[HERE](https://micmac.ensg.eu/data/gravillons_dataset.zip)** +- unzip the folder and open a terminal inside the folder containing the images +- Run processing scripts: + - under Linux (Ubuntu) distribution: + ```sh + sh gravillons_test.sh + ``` + - under Windows: + ```sh + ./gravillons_test.bat + ``` +# License +This project is licensed under the **CECILL-B** License - see the **[LICENSE.md](LICENSE.md)** file for details. + +# Useful links +* [MicMac Documentation](https://github.com/micmacIGN/Documentation/blob/master/DocMicMac.pdf) +* [MicMac Wiki](https://micmac.ensg.eu/) +* [MicMac Reddit](https://www.reddit.com/r/MicMac/) +* [MicMac Sketchfab](https://sketchfab.com/micmac)