Salome HOME
Additional fix of libxml2 check procedures for PARAVIS compilation (Linux)
[modules/kernel.git] / salome_adm / cmake_files / am2cmake.py
index 7505317b9885a2db3721b191d9bf18a74289f6db..8affe058b1c8d14ffe44c62e5bd8cfad875f2e7b 100644 (file)
@@ -1,3 +1,4 @@
+#  -*- 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,
@@ -438,6 +439,7 @@ class CMakeFile(object):
                 INCLUDE(${CMAKE_SOURCE_DIR}/salome_adm/cmake_files/FindLIBXML2.cmake)
                 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)
                 """)
                 pass
             else:
@@ -452,6 +454,7 @@ class CMakeFile(object):
                 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 == "gui":
@@ -536,15 +539,32 @@ class CMakeFile(object):
                         INCLUDE(${MED_ROOT_DIR}/adm_local/cmake_files/FindMED.cmake)
                         """)
                         pass
+                    if self.module == "yacs":
+                        newlines.append("""
+                        INCLUDE(${CMAKE_SOURCE_DIR}/adm/cmake/FindEXPAT.cmake)
+                        INCLUDE(${CMAKE_SOURCE_DIR}/adm/cmake/FindGRAPHVIZ.cmake)
+                        """)
+                        pass
                     pass
                 pass
             # --
+            newlines.append("""
+            SET(DOXYGEN_IS_OK 0)
+            """)
+            if self.module not in ['med']:
+                newlines.append("""
+                IF(WINDOWS)
+                SET(CPPUNIT_IS_OK 0)
+                ENDIF(WINDOWS)
+                """)
+                pass
+            # --
             if self.module == "kernel":
                 newlines.append("""
                 SET(WITH_LOCAL 1)
                 SET(WITH_BATCH 1)
-                set(VERSION 5.1.2)
-                set(XVERSION 0x050102)
+                set(VERSION 5.1.3)
+                set(XVERSION 0x050103)
                 SET(CALCIUM_IDL_INT_F77 long)
                 SET(CALCIUM_CORBA_INT_F77 CORBA::Long)
                 SET(LONG_OR_INT int)
@@ -559,9 +579,9 @@ class CMakeFile(object):
                 SET(ENABLE_PLOT2DVIEWER ON)
                 SET(ENABLE_PYCONSOLE ON)
                 SET(ENABLE_SUPERVGRAPHVIEWER ON)
-                SET(ENABLE_QXGRAPHVIEWER ON)
-                set(VERSION 5.1.2)
-                set(XVERSION 0x050102)
+                SET(ENABLE_QXGRAPHVIEWER ON)
+                set(VERSION 5.1.3)
+                set(XVERSION 0x050103)
                 """)
                 pass
             elif self.module == "geom":
@@ -583,6 +603,9 @@ class CMakeFile(object):
             elif self.module == "med":
                 newlines.append("""
                 SET(MED_ENABLE_KERNEL ON)
+                IF(NOT WINDOWS)
+                SET(MED_ENABLE_SPLITTER ON)
+                ENDIF(NOT WINDOWS)
                 SET(MED_ENABLE_GUI ON)
                 """)
                 pass
@@ -601,6 +624,18 @@ class CMakeFile(object):
                 SET(BLSURFPLUGIN_ENABLE_GUI ON)
                 """)
                 pass
+            elif self.module == "ghs3dplugin":
+                newlines.append("""
+                SET(GHS3DPLUGIN_ENABLE_GUI ON)
+                """)
+                pass
+            elif self.module == "yacs":
+                newlines.append("""
+                SET(SALOME_KERNEL ON)
+                SET(HAS_GUI ON)
+                SET(WITH_QT4 ON)
+                """)
+                pass
             # --
             pass
         # --
@@ -618,10 +653,12 @@ class CMakeFile(object):
             SET(AM_CXXFLAGS ${AM_CXXFLAGS} -DHAVE_SALOME_CONFIG -I${CMAKE_BINARY_DIR}/salome_adm/unix -include SALOMEconfig.h)
             ''')
         else:
-            newlines.append(r'''
-            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)
-            ''')
+            if self.module not in ["yacs"]:
+                newlines.append(r'''
+                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)
+                ''')
+                pass
             pass
         # --
         return
@@ -813,6 +850,12 @@ class CMakeFile(object):
         # --
         # Convert the .in files in build dir
         # --
+        if self.module == "yacs":
+            key = "salomegui"
+            if self.root[-len(key):] == key:
+                self.files.append("resources/YACSCatalog.xml.in")
+                pass
+            pass
         for f in self.files:
             if f[-3:] == ".in":
                 if f == "sstream.in":
@@ -864,7 +907,7 @@ class CMakeFile(object):
         
         # --
         # --
-        for key in ["bin_PROGRAMS"]:
+        for key in ["bin_PROGRAMS", "check_PROGRAMS"]:
             if self.__thedict__.has_key(key):
                 self.addBinTarget(key, newlines)
                 pass
@@ -898,19 +941,34 @@ class CMakeFile(object):
             SET(outputs ${src})
             SET(dynsrc ${CMAKE_CURRENT_BINARY_DIR}/${base}DynSK.cc)
             SET(outputs ${outputs} ${dynsrc})
+            SET(inc ${CMAKE_CURRENT_BINARY_DIR}/${base}.hh)
+            SET(outputs ${outputs} ${inc})
             IF(input STREQUAL Calcium_Ports.idl)
             SET(input ${CMAKE_CURRENT_BINARY_DIR}/${input})
             ELSE(input STREQUAL Calcium_Ports.idl)
             SET(input ${CMAKE_CURRENT_SOURCE_DIR}/${input})
             ENDIF(input STREQUAL Calcium_Ports.idl)
+            SET(flags ${IDLCXXFLAGS} ${OMNIORB_IDLCXXFLAGS})
+            STRING(REGEX MATCH "-bcxx" ISBCXX ${flags})
+            IF(NOT ISBCXX)
+            SET(flags -bcxx ${flags})
+            ENDIF(NOT ISBCXX)
             ADD_CUSTOM_COMMAND(
             OUTPUT ${outputs}
-            COMMAND ${OMNIORB_IDL} ${IDLCXXFLAGS} ${OMNIORB_IDLCXXFLAGS} ${input}
+            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})")
@@ -920,6 +978,10 @@ class CMakeFile(object):
             FOREACH(f ${IDLPYFLAGS})
             SET(flags "${flags} ${f}")
             ENDFOREACH(f ${IDLPYFLAGS})
+            STRING(REGEX MATCH "-bpython" ISBPYTHON ${flags})
+            IF(NOT ISBPYTHON)
+            SET(flags "-bpython ${flags}")
+            ENDIF(NOT ISBPYTHON)
             SET(IDLPYFLAGS ${flags})
             STRING(REPLACE "\\\\" "/" IDLPYFLAGS ${IDLPYFLAGS})
             INSTALL(CODE "SET(IDLPYFLAGS ${IDLPYFLAGS})")
@@ -960,21 +1022,62 @@ 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}
             )
             ''')
             pass
         
+        # --
+        # --
+        if self.__thedict__.has_key("BUILT_SOURCES"):
+            newlines.append('''
+            FOREACH(f ${BUILT_SOURCES})
+            IF(f MATCHES "WRAP.cxx$")
+            # STRING(REGEX REPLACE "WRAP.cxx" "WRAP.h" inc ${f})
+            STRING(REGEX REPLACE "WRAP.cxx" ".i" input ${f})
+            ADD_CUSTOM_COMMAND(
+            OUTPUT ${f} # ${inc}
+            COMMAND ${SWIG_EXECUTABLE} ${SWIG_FLAGS} ${SWIG_PYTHON_INCLUDES} ${MYSWIG_FLAGS} -o ${f} ${CMAKE_CURRENT_SOURCE_DIR}/${input}
+            MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/${input}
+            )
+            ENDIF(f MATCHES "WRAP.cxx$")
+            ENDFOREACH(f ${BUILT_SOURCES})
+            ''')
+            pass
+
         # --
         # --
         key = "MOC_FILES"
         if self.__thedict__.has_key(key):
             newlines.append('''
             FOREACH(output ${MOC_FILES})
-            STRING(REGEX REPLACE _moc.cxx .h input ${output})
+            ''')
+            if self.module == "yacs":
+                newlines.append('''
+                STRING(REGEX REPLACE _moc.cxx .hxx input ${output})
+                ''')
+            else:
+                newlines.append('''
+                STRING(REGEX REPLACE _moc.cxx .h input ${output})
+                ''')
+                pass
+            newlines.append('''
             SET(input ${CMAKE_CURRENT_SOURCE_DIR}/${input})
             SET(output ${CMAKE_CURRENT_BINARY_DIR}/${output})
             ADD_CUSTOM_COMMAND(
@@ -1067,6 +1170,7 @@ class CMakeFile(object):
             "nodist_salomescript_DATA"    :  "bin/salome",
             "salomepython_PYTHON"         :  "lib/python${PYTHON_VERSION}/site-packages/salome",
             "nodist_salomepython_PYTHON"  :  "lib/python${PYTHON_VERSION}/site-packages/salome",
+            "dist_salomepython_DATA"      :  "lib/python${PYTHON_VERSION}/site-packages/salome",
             "sharedpkgpython_PYTHON"      :  "lib/python${PYTHON_VERSION}/site-packages/salome/shared_modules",
             }
         if self.module == "medfile":
@@ -1132,7 +1236,6 @@ class CMakeFile(object):
         SET(vars ${vars} -no-undefined)
         SET(vars ${vars} -lvtkWidgets)
         IF(WINDOWS)
-        SET(vars ${vars} -fPIC)
         SET(vars ${vars} -module)
         SET(vars ${vars} -Wl,-E)
         SET(vars ${vars} -Xlinker)
@@ -1140,6 +1243,7 @@ class CMakeFile(object):
         SET(vars ${vars} -lm)
         SET(vars ${vars} -lboost_thread)
         SET(vars ${vars} -lboost_signals)
+        SET(vars ${vars} -pthread -lpthread -ldl)
         ENDIF(WINDOWS)
         FOREACH(v ${vars})
         IF(lib STREQUAL v)
@@ -1189,6 +1293,14 @@ class CMakeFile(object):
         ENDIF(WINDOWS)
         ''')
         # --
+        if self.module in ["medfile", "yacs"]:
+            newlines.append(r'''
+            IF(WINDOWS)
+            SET(var ${var} -DNOGDI)
+            ENDIF(WINDOWS)
+            ''')
+            pass
+        # --
         newlines.append(r'''
         IF(WINDOWS)
         SET(targets)
@@ -1198,6 +1310,7 @@ class CMakeFile(object):
         SET(dir $ENV{F2CHOME})
         STRING(REPLACE "\\\\" "/" dir ${dir})
         SET(var ${var} -I${dir})
+        SET(var ${var} -DF2C_BUILD)
         ENDIF(name STREQUAL ${target})
         ENDFOREACH(target ${targets})
         ENDIF(WINDOWS)
@@ -1213,6 +1326,15 @@ class CMakeFile(object):
         SET(var ${var} ${AM_CPPFLAGS})
         SET(var ${var} ${AM_CXXFLAGS})
         ''')
+        if self.module == "yacs":
+            newlines.append(r'''
+            SET(var ${var} -DYACS_PTHREAD)
+            SET(var ${var} -DCMAKE_BUILD)
+            SET(var ${var} -DSALOME_KERNEL)
+            SET(var ${var} -DDSC_PORTS)
+            SET(var ${var} -DOMNIORB)
+            ''')
+            pass
         newlines.append(r'''
        SET(var ${var} ${PLATFORM_CPPFLAGS})
        SET(var ${var} ${PTHREAD_CFLAGS})
@@ -1223,6 +1345,8 @@ class CMakeFile(object):
         IF(WINDOWS)
         SET(vars ${vars} -include SALOMEconfig.h)
         SET(vars ${vars} -ftemplate-depth-32)
+        SET(vars ${vars} -fPIC)
+        SET(vars ${vars} -g)
         ENDIF(WINDOWS)
         SET(flags)
         FOREACH(f ${var})
@@ -1326,12 +1450,15 @@ class CMakeFile(object):
         ENDFOREACH(src ${${amname}_SOURCES} ${dist_${amname}_SOURCES})
         ''')
         newlines.append(r'''
-        SET(build_srcs)
+        SET(l ${nodist_${amname}_SOURCES} ${UIC_FILES})
+        FOREACH(f ${l})
+        SET(src ${CMAKE_CURRENT_BINARY_DIR}/${f})
+        SET(srcs ${srcs} ${src})
+        ENDFOREACH(f ${l})
         ''')
         newlines.append(r'''
+        SET(build_srcs)
         SET(l ${nodist_${amname}_SOURCES} ${BUILT_SOURCES})
-        ''')
-        newlines.append(r'''
         FOREACH(f ${l})
         GET_FILENAME_COMPONENT(ext ${f} EXT)
         IF(ext STREQUAL .py)
@@ -1339,7 +1466,6 @@ class CMakeFile(object):
         SET(build_srcs ${build_srcs} ${CMAKE_CURRENT_BINARY_DIR}/${f})
         ENDIF(ext STREQUAL .py)
         ENDFOREACH(f ${l})
-        SET(srcs ${build_srcs} ${srcs})
         ''')
         # --
         # Add the library to cmake
@@ -1447,12 +1573,17 @@ class CMakeFile(object):
     def addBinTarget(self, key, newlines):
         # --
         newlines.append(r'''
-        FOREACH(amname ${bin_PROGRAMS})
+        FOREACH(amname ${bin_PROGRAMS} ${check_PROGRAMS})
         ''')
         # --
         newlines.append(r'''
         SET(name "${amname}_exe")
         SET(srcs ${${amname}_SOURCES} ${dist_${amname}_SOURCES})
+        SET(l ${nodist_${amname}_SOURCES})
+        FOREACH(f ${l})
+        SET(src ${CMAKE_CURRENT_BINARY_DIR}/${f})
+        SET(srcs ${srcs} ${src})
+        ENDFOREACH(f ${l})
         LIST(LENGTH srcs nb)
         IF(nb)
         ADD_EXECUTABLE(${name} ${srcs})
@@ -1472,26 +1603,28 @@ class CMakeFile(object):
             ''')
             pass
         # --
-        newlines.append(r'''
-        IF(WINDOWS)
-        INSTALL(TARGETS ${name} DESTINATION ${DEST})
-        INSTALL(FILES ${CMAKE_INSTALL_PREFIX}/${DEST}/${name}.exe DESTINATION ${DEST} RENAME ${amname}.exe)
-        INSTALL(CODE "FILE(REMOVE ${CMAKE_INSTALL_PREFIX}/${DEST}/${name}.exe)")
-        ELSE(WINDOWS)
-        SET(PERMS)
-        SET(PERMS ${PERMS} OWNER_READ OWNER_WRITE OWNER_EXECUTE)
-        SET(PERMS ${PERMS} GROUP_READ GROUP_EXECUTE)
-        SET(PERMS ${PERMS} WORLD_READ WORLD_EXECUTE)
-        INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${name} DESTINATION ${DEST} PERMISSIONS ${PERMS} RENAME ${amname})
-        ENDIF(WINDOWS)
-        ''')
+        if key == "bin_PROGRAMS":
+            newlines.append(r'''
+            IF(WINDOWS)
+            INSTALL(TARGETS ${name} DESTINATION ${DEST})
+            INSTALL(FILES ${CMAKE_INSTALL_PREFIX}/${DEST}/${name}.exe DESTINATION ${DEST} RENAME ${amname}.exe)
+            INSTALL(CODE "FILE(REMOVE ${CMAKE_INSTALL_PREFIX}/${DEST}/${name}.exe)")
+            ELSE(WINDOWS)
+            SET(PERMS)
+            SET(PERMS ${PERMS} OWNER_READ OWNER_WRITE OWNER_EXECUTE)
+            SET(PERMS ${PERMS} GROUP_READ GROUP_EXECUTE)
+            SET(PERMS ${PERMS} WORLD_READ WORLD_EXECUTE)
+            INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${name} DESTINATION ${DEST} PERMISSIONS ${PERMS} RENAME ${amname})
+            ENDIF(WINDOWS)
+            ''')
+            pass
         # --
         newlines.append(r'''
         ENDIF(nb)
         ''')
         # --
         newlines.append(r'''
-        ENDFOREACH(amname ${bin_PROGRAMS})
+        ENDFOREACH(amname ${bin_PROGRAMS} ${check_PROGRAMS})
         ''')
         # --
         return
@@ -1544,7 +1677,7 @@ class CMakeFile(object):
         IF(ext STREQUAL .qm)
         STRING(REGEX REPLACE .qm .ts input ${f})
         ''')
-        if self.module in ["kernel", "gui"]:
+        if self.module in ["kernel", "gui", "yacs"]:
             newlines.append(r'''
             SET(input ${CMAKE_CURRENT_SOURCE_DIR}/resources/${input})
             ''')
@@ -1647,8 +1780,14 @@ if __name__ == "__main__":
         except ValueError:
             pass
         # --
+        if "Makefile.am.cmake" in files:
+            if "Makefile.am" in files:
+                files.remove("Makefile.am")
+                pass
+            pass
+        # --
         for f in files:
-            if f == "Makefile.am":
+            if f in ["Makefile.am", "Makefile.am.cmake"]:
                 convertAmFile(the_root, root, dirs, files, f, module)
                 pass
             pass