Help... CC Dependency Analysis Hangs

Help
2005-02-15
2013-04-24
  • jeffplummer
    jeffplummer
    2005-02-15

    I'm having trouble getting CC task to build a library, it seems to hang doing the "dependency analysis".

    I'm writing an ant script to build the "Ogre" (www.ogre3d.org) graphics engine on my windows box simply to learn ant-cc, and since I'm using Ogre in my project.  It compiles just fine, but it seems to get stuck in the "Dependency analysis" phase during the link.

    If anyone has any clues I'd be very greatful.

    Below is the output (the compiler part was finished before this run - so you won't see the compiling cpp files):

    D:\Independant\Project\Libraries>ant BUILD_OGRE_WIN
    Buildfile: build.xml

    SET_PLATFORM_WINDOWS:
         [echo] Using the Windows Platform

    SET_BUILD_MODE_DEBUG:
         [echo] Setting build mode to debug

    SETUP_BUILD_MODE_ENVIRONMENT:
         [echo] Setting Variables for DEBUG mode

    SETUP_PLATFORM_ENVIRONMENT:
         [echo] Setting Variables for Win32 Platform

    SETUP_CPP_ENVIRONMENT:
         [echo] Setting Variables for C++ Build

    INIT_OGRE_BUILD_SETTINGS:

    BUILD_OGREMAIN:
         [echo] Building D:\Independant\Karaoke\Libraries\ogrenew\OgreMain\lib\Debug/OgreMain_d
           [cc] Starting dependency analysis for 147 files.

    *** AND THIS IS WHERE IT JUST HANGS CHEWING UP ALL MY CPU CYCLES FOREVER ***

    *** HERE IS THE BUILD TASK ***
    <target name    = "BUILD_OGREMAIN" depends=  "SETUP_CPP_ENVIRONMENT,
                                                        INIT_OGRE_BUILD_SETTINGS">
            <echo message="Building ${ogremain_build_output_file}"/>
    <cc name    = "msvc"
                link    = "shared"
                outtype = "shared"
                runtime = "dynamic"
                objdir  = "${ogremain_build_dir}"
                outfile = "${ogremain_build_output_file}"
                incremental = "true" >
                          
                <fileset dir="${ogremain_source_dir}" includes="**/*.c*"/>
                <includepath path="${ogremain_include_dir}"/>
                <includepath refid="ogremain_required_includes_dir"/>
                <defineset refid="ogremain_required_defines"/>   
                <sysincludepath refid="cpp_include_path_allplatforms"/>
                <sysincludepath refid="cpp_include_path_win32" if="is-win32"/>
                <defineset refid="cpp_defineset_allplatforms"/>
                <defineset refid="cpp_defineset_win32" if="is-win32"/>
                <compilerarg value="/Zm200"/>
                <compilerarg value="/GZ"/>
                <compilerarg value="/G6"/>
                <compilerarg value="/MDd" if="${debugMode}"/>
                <compilerarg value="/MD" if="${releaseMode}"/>
                <compilerarg value="/W3"/>
                <compilerarg value="/Gm"/>
                <compilerarg value="/Gi"/>
                <compilerarg value="/GX"/>
                <compilerarg value="/ZI"/>
                <compilerarg value="/Od" if="${debugMode}"/>
                <compilerarg value="/FD"/>
                
                <syslibset dir="${sltport_lib_dir}" libs="stlport_vc6_stldebug"/>
                  
                <syslibset dir="C:\Program Files\Microsoft Visual Studio\VC98\Lib"
                           libs="kernel32, user32, gdi32, winspool, comdlg32, advapi32, shell32, ole32, oleaut32, uuid, odbc32, odbccp32"
                           if="is-win32" />
                <syslibset dir="${ogremain_dependencies_dir}" libs="zlib, freetype"/>
               
            </cc>
        </target>

     
    • Curt Arnold
      Curt Arnold
      2005-02-15

      There have been previous reports of the existing dependency analysis implementation behaving very poorly for a particular class of problems, see http://sourceforge.net/mailarchive/message.php?msg_id=5908255 and following.

      Unfortunately, if I remember correctly, I was afraid that the replacement algorithm lost the ability to order compilations based on the proximity of the last change and never had the time to really deeply analyze the problem and try to combine the best features of the two algorithms.  Since it was only affecting one user, I think they branched.