Salome HOME
Small fix for check_openmpi.m4
[modules/kernel.git] / salome_adm / cmake_files / am2cmake.py
index 80e1d96e95b76a7d39768a948bf4beeac681fb2e..8e0774b1542b157557921752a3344e37889acdd3 100644 (file)
@@ -1,8 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-#  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
-#
-#  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+#  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
 #
 #  This library is free software; you can redistribute it and/or
 #  modify it under the terms of the GNU Lesser General Public
@@ -20,6 +17,7 @@
 #
 #  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+
 import re
 
 # ----
@@ -54,7 +52,7 @@ p_if = re.compile(r"""
 if         # an if
 \s+        # 1 or more space
 (?P<val>   # open the group val
-[^\s]+     # the group contain 1 or more non space characters
+.+         # the group contain 1 or more non space characters
 )          # close the group
 """, re.VERBOSE)
 
@@ -325,6 +323,7 @@ class CMakeFile(object):
             "SalomeIDLMED",
             ]
         smesh_list = [
+            "GeomSelectionTools",
             "MEFISTO2D",
             "MeshDriverDAT",
             "MeshDriverMED",
@@ -440,23 +439,48 @@ class CMakeFile(object):
                 INCLUDE(${CMAKE_SOURCE_DIR}/salome_adm/cmake_files/FindSWIG.cmake)
                 INCLUDE(${CMAKE_SOURCE_DIR}/salome_adm/cmake_files/FindCPPUNIT.cmake)
                 INCLUDE(${CMAKE_SOURCE_DIR}/salome_adm/cmake_files/FindDOXYGEN.cmake)
+                INCLUDE(${CMAKE_SOURCE_DIR}/salome_adm/cmake_files/FindMPI.cmake)
                 """)
                 pass
             else:
-                newlines.append("""
-                SET(KERNEL_ROOT_DIR $ENV{KERNEL_ROOT_DIR})
-                INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindPLATFORM.cmake)
-                INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindPYTHON.cmake)
-                INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindOMNIORB.cmake)
-                INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindPTHREADS.cmake)
-                INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindHDF5.cmake)
-                INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindBOOST.cmake)
-                INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindLIBXML2.cmake)
-                INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindSWIG.cmake)
-                INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindCPPUNIT.cmake)
-                INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindDOXYGEN.cmake)
-                INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindKERNEL.cmake)
-                """)
+                if self.module == "med":
+                    newlines.append("""
+                    SET(KERNEL_ROOT_DIR $ENV{KERNEL_ROOT_DIR})
+                    IF(KERNEL_ROOT_DIR)
+                    INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindPLATFORM.cmake)
+                    INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindPYTHON.cmake)
+                    INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindOMNIORB.cmake)
+                    INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindPTHREADS.cmake)
+                    INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindHDF5.cmake)
+                    INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindBOOST.cmake)
+                    INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindLIBXML2.cmake)
+                    INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindSWIG.cmake)
+                    INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindCPPUNIT.cmake)
+                    INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindDOXYGEN.cmake)
+                    INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindMPI.cmake)
+                    INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindKERNEL.cmake)
+                    ELSE(KERNEL_ROOT_DIR)
+                    INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindPLATFORM.cmake)
+                    INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindMPI.cmake)
+                    ENDIF(KERNEL_ROOT_DIR)
+                    """)
+                else:
+                    newlines.append("""
+                    SET(KERNEL_ROOT_DIR $ENV{KERNEL_ROOT_DIR})
+                    INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindPLATFORM.cmake)
+                    INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindPYTHON.cmake)
+                    INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindOMNIORB.cmake)
+                    INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindPTHREADS.cmake)
+                    INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindHDF5.cmake)
+                    INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindBOOST.cmake)
+                    INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindLIBXML2.cmake)
+                    INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindSWIG.cmake)
+                    INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindCPPUNIT.cmake)
+                    INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindDOXYGEN.cmake)
+                    INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindMPI.cmake)
+                    INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindKERNEL.cmake)
+                    """)
+                    pass
                 if self.module == "gui":
                     newlines.append("""
                     INCLUDE(${CMAKE_SOURCE_DIR}/adm_local/cmake_files/FindCAS.cmake)
@@ -469,6 +493,7 @@ class CMakeFile(object):
                 else:
                     newlines.append("""
                     SET(GUI_ROOT_DIR $ENV{GUI_ROOT_DIR})
+                    IF(GUI_ROOT_DIR)
                     INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/FindCAS.cmake)
                     INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/FindQT4.cmake)
                     INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/FindOPENGL.cmake)
@@ -476,10 +501,14 @@ class CMakeFile(object):
                     INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/FindQWT.cmake)
                     INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/FindSIPPYQT.cmake)
                     INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/FindGUI.cmake)
+                    ENDIF(GUI_ROOT_DIR)
                     """)
                     if self.module == "med":
                         newlines.append("""
                         INCLUDE(${CMAKE_SOURCE_DIR}/adm_local/cmake_files/FindMEDFILE.cmake)
+                        IF(WINDOWS)
+                        INCLUDE(${CMAKE_SOURCE_DIR}/adm_local/cmake_files/FindXDR.cmake)
+                        ENDIF(WINDOWS)
                         """)
                         pass
                     if self.module == "smesh":
@@ -513,7 +542,7 @@ class CMakeFile(object):
                         INCLUDE(${CMAKE_SOURCE_DIR}/adm_local/cmake_files/FindBLSURF.cmake)
                         """)
                         pass
-                    if self.module == "hexoticplugin":
+                    if self.module in ["ghs3dplugin", "hexoticplugin"]:
                         newlines.append("""
                         SET(GEOM_ROOT_DIR $ENV{GEOM_ROOT_DIR})
                         SET(MED_ROOT_DIR $ENV{MED_ROOT_DIR})
@@ -523,12 +552,13 @@ class CMakeFile(object):
                         INCLUDE(${SMESH_ROOT_DIR}/adm_local/cmake_files/FindSMESH.cmake)
                         """)
                         pass
-                    if self.module == "ghs3dplugin":
+                    if self.module == "ghs3dprlplugin":
                         newlines.append("""
                         SET(GEOM_ROOT_DIR $ENV{GEOM_ROOT_DIR})
                         SET(MED_ROOT_DIR $ENV{MED_ROOT_DIR})
                         SET(SMESH_ROOT_DIR $ENV{SMESH_ROOT_DIR})
                         INCLUDE(${GEOM_ROOT_DIR}/adm_local/cmake_files/FindGEOM.cmake)
+                        INCLUDE(${MED_ROOT_DIR}/adm_local/cmake_files/FindMEDFILE.cmake)
                         INCLUDE(${MED_ROOT_DIR}/adm_local/cmake_files/FindMED.cmake)
                         INCLUDE(${SMESH_ROOT_DIR}/adm_local/cmake_files/FindSMESH.cmake)
                         """)
@@ -563,8 +593,8 @@ class CMakeFile(object):
                 newlines.append("""
                 SET(WITH_LOCAL 1)
                 SET(WITH_BATCH 1)
-                set(VERSION 5.1.2)
-                set(XVERSION 0x050102)
+                set(VERSION 5.1.4)
+                set(XVERSION 0x050104)
                 SET(CALCIUM_IDL_INT_F77 long)
                 SET(CALCIUM_CORBA_INT_F77 CORBA::Long)
                 SET(LONG_OR_INT int)
@@ -580,13 +610,15 @@ class CMakeFile(object):
                 SET(ENABLE_PYCONSOLE ON)
                 SET(ENABLE_SUPERVGRAPHVIEWER ON)
                 SET(ENABLE_QXGRAPHVIEWER ON)
-                set(VERSION 5.1.2)
-                set(XVERSION 0x050102)
+                set(VERSION 5.1.4)
+                set(XVERSION 0x050104)
                 """)
                 pass
             elif self.module == "geom":
                 newlines.append("""
+                IF(GUI_ROOT_DIR)
                 SET(GEOM_ENABLE_GUI ON)
+                ENDIF(GUI_ROOT_DIR)
                 """)
                 pass
             elif self.module == "medfile":
@@ -602,37 +634,64 @@ class CMakeFile(object):
                 pass
             elif self.module == "med":
                 newlines.append("""
+                IF(KERNEL_ROOT_DIR)
                 SET(MED_ENABLE_KERNEL ON)
                 IF(NOT WINDOWS)
                 SET(MED_ENABLE_SPLITTER ON)
                 ENDIF(NOT WINDOWS)
+                ENDIF(KERNEL_ROOT_DIR)
+                IF(GUI_ROOT_DIR)
                 SET(MED_ENABLE_GUI ON)
+                ENDIF(GUI_ROOT_DIR)
                 """)
                 pass
             elif self.module == "smesh":
                 newlines.append("""
+                IF(GUI_ROOT_DIR)
                 SET(SMESH_ENABLE_GUI ON)
+                ENDIF(GUI_ROOT_DIR)
                 """)
                 pass
             elif self.module == "netgenplugin":
                 newlines.append("""
+                IF(GUI_ROOT_DIR)
                 SET(NETGENPLUGIN_ENABLE_GUI ON)
+                ENDIF(GUI_ROOT_DIR)
                 """)
                 pass
             elif self.module == "blsurfplugin":
                 newlines.append("""
+                IF(GUI_ROOT_DIR)
                 SET(BLSURFPLUGIN_ENABLE_GUI ON)
+                ENDIF(GUI_ROOT_DIR)
                 """)
                 pass
             elif self.module == "ghs3dplugin":
                 newlines.append("""
+                IF(GUI_ROOT_DIR)
                 SET(GHS3DPLUGIN_ENABLE_GUI ON)
+                ENDIF(GUI_ROOT_DIR)
+                """)
+                pass
+            elif self.module == "hexoticplugin":
+                newlines.append("""
+                IF(GUI_ROOT_DIR)
+                SET(HEXOTICPLUGIN_ENABLE_GUI ON)
+                ENDIF(GUI_ROOT_DIR)
+                """)
+                pass
+            elif self.module == "ghs3dprlplugin":
+                newlines.append("""
+                IF(GUI_ROOT_DIR)
+                SET(GHS3DPRLPLUGIN_ENABLE_GUI ON)
+                ENDIF(GUI_ROOT_DIR)
                 """)
                 pass
             elif self.module == "yacs":
                 newlines.append("""
                 SET(SALOME_KERNEL ON)
                 SET(HAS_GUI ON)
+                SET(WITH_QT4 ON)
                 """)
                 pass
             # --
@@ -654,8 +713,10 @@ class CMakeFile(object):
         else:
             if self.module not in ["yacs"]:
                 newlines.append(r'''
+                IF(KERNEL_ROOT_DIR)
                 SET(AM_CPPFLAGS ${AM_CPPFLAGS} -DHAVE_SALOME_CONFIG -I${KERNEL_ROOT_DIR}/include/salome -include SALOMEconfig.h)
                 SET(AM_CXXFLAGS ${AM_CXXFLAGS} -DHAVE_SALOME_CONFIG -I${KERNEL_ROOT_DIR}/include/salome -include SALOMEconfig.h)
+                ENDIF(KERNEL_ROOT_DIR)
                 ''')
                 pass
             pass
@@ -957,9 +1018,17 @@ class CMakeFile(object):
             COMMAND ${OMNIORB_IDL} ${flags} ${input}
             MAIN_DEPENDENCY ${input}
             )
+            ''')
+            newlines.append('''
             install(FILES ${input} DESTINATION idl/salome)
-            SET(IDL_HEADER ${CMAKE_CURRENT_BINARY_DIR}/${base}.hh)
-            install(FILES ${IDL_HEADER} DESTINATION include/salome)
+            ''')
+            if self.module not in ["pyhello"]:
+                newlines.append('''
+                SET(IDL_HEADER ${CMAKE_CURRENT_BINARY_DIR}/${base}.hh)
+                install(FILES ${IDL_HEADER} DESTINATION include/salome)
+                ''')
+                pass
+            newlines.append('''
             INSTALL(CODE "SET(IDL_FILE ${input})")
             INSTALL(CODE "SET(DIR lib/python${PYTHON_VERSION}/site-packages/salome)")
             INSTALL(CODE "SET(CMAKE_CURRENT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})")
@@ -1013,9 +1082,22 @@ class CMakeFile(object):
             ELSE(SWIG_SOURCES MATCHES ";")
             SET(SWIG_SOURCES_FIRST "${SWIG_SOURCES}")
             ENDIF(SWIG_SOURCES MATCHES ";")
+            SET(flags)
+            FOREACH(f ${SWIG_FLAGS} ${MY_SWIG_FLAGS})
+            SET(test ON)
+            IF(flags)
+            LIST(FIND flags ${f} index)
+            IF(NOT index EQUAL -1)
+            SET(test OFF)
+            ENDIF(NOT index EQUAL -1)
+            ENDIF(flags)
+            IF(test)
+            SET(flags ${flags} ${f})
+            ENDIF(test)
+            ENDFOREACH(f ${SWIG_FLAGS} ${MY_SWIG_FLAGS})
             ADD_CUSTOM_COMMAND(
             OUTPUT ${build_srcs}
-            COMMAND ${SWIG_EXECUTABLE} ${SWIG_FLAGS} ${MY_SWIG_FLAGS} -o ${build_srcs} ${CMAKE_CURRENT_SOURCE_DIR}/${SWIG_SOURCES_FIRST}
+            COMMAND ${SWIG_EXECUTABLE} ${flags} -o ${build_srcs} ${CMAKE_CURRENT_SOURCE_DIR}/${SWIG_SOURCES_FIRST}
             MAIN_DEPENDENCY ${SWIG_SOURCES}
             )
             ''')
@@ -1389,6 +1471,15 @@ class CMakeFile(object):
         SET(type SHARED)
         ENDIF(ISIDL)
         ''')
+        if key == "noinst_LTLIBRARIES":
+            newlines.append(r'''
+            IF(WINDOWS)
+            SET(type STATIC)
+            ELSE(WINDOWS)
+            SET(type STATIC)
+            ENDIF(WINDOWS)
+            ''')
+            pass
         # --
         # Set sources for the library
         # --
@@ -1462,7 +1553,7 @@ class CMakeFile(object):
         # --
         self.setLibAdd(key, newlines)
         # --
-        if 1: # key != "noinst_LTLIBRARIES":
+        if key != "noinst_LTLIBRARIES":
             if self.module == "medfile":
                 newlines.append(r'''
                 SET(DEST lib)
@@ -1551,7 +1642,24 @@ class CMakeFile(object):
     def addBinTarget(self, key, newlines):
         # --
         newlines.append(r'''
-        FOREACH(amname ${bin_PROGRAMS} ${check_PROGRAMS})
+        FOREACH(amname ${%s})
+        '''%(key))
+        # --
+        newlines.append(r'''
+        SET(test ON)
+        ''')
+        if key == "check_PROGRAMS":
+            newlines.append(r'''
+            IF(bin_PROGRAMS)
+            STRING(REGEX MATCH ${amname} is_present ${bin_PROGRAMS})
+            IF(is_present)
+            SET(test OFF)
+            ENDIF(is_present)
+            ENDIF(bin_PROGRAMS)
+            ''')
+            pass
+        newlines.append(r'''
+        IF(test)
         ''')
         # --
         newlines.append(r'''
@@ -1602,8 +1710,11 @@ class CMakeFile(object):
         ''')
         # --
         newlines.append(r'''
-        ENDFOREACH(amname ${bin_PROGRAMS} ${check_PROGRAMS})
+        ENDIF(test)
         ''')
+        newlines.append(r'''
+        ENDFOREACH(amname ${%s})
+        '''%(key))
         # --
         return
     
@@ -1764,9 +1875,13 @@ if __name__ == "__main__":
                 pass
             pass
         # --
+        from sys import stdout
         for f in files:
             if f in ["Makefile.am", "Makefile.am.cmake"]:
+                stdout.write("Scanning %s %s ..."%(root, f))
+                stdout.flush()
                 convertAmFile(the_root, root, dirs, files, f, module)
+                stdout.write(" done.\n")
                 pass
             pass
         pass