Commit d053e561 authored by Dick Hollenbeck's avatar Dick Hollenbeck
Browse files

More migration towards single process, extend PROJECT::Config*() in proper direction, cleanups.

parent 94bc4355
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -364,13 +364,13 @@ check_find_package_result( OPENGL_FOUND "OpenGL" )
# https://www.mail-archive.com/cmake@cmake.org/msg47501.html
# https://www.mail-archive.com/cmake@cmake.org/msg47501.html


# Handle target used to specify if a target needs wx-widgets or other libraries
# Handle target used to specify if a target needs wx-widgets or other libraries
# Always defined, empty if no libraries are to be build
# Always defined, empty if no libraries are to be built
add_custom_target( lib-dependencies )
add_custom_target( lib-dependencies )


if( KICAD_BUILD_STATIC OR KICAD_BUILD_DYNAMIC )
if( KICAD_BUILD_STATIC OR KICAD_BUILD_DYNAMIC )


    # This should be build in all cases, if swig exec is not avaiable
    # This should be built in all cases, if swig exec is not avaiable
    # will be impossible also enable SCRIPTING being for PCBNEW required immediatly
    # will be impossible also enable SCRIPTING being for PCBNEW required immediately


    include( download_pcre )
    include( download_pcre )
    include( download_swig )
    include( download_swig )
+1 −13
Original line number Original line Diff line number Diff line
@@ -622,8 +622,6 @@ const FP_LIB_TABLE::ROW* FP_LIB_TABLE::FindRow( const wxString& aNickname )
// wxGetenv( wchar_t* ) is not re-entrant on linux.
// wxGetenv( wchar_t* ) is not re-entrant on linux.
// Put a lock on multithreaded use of wxGetenv( wchar_t* ), called from wxEpandEnvVars(),
// Put a lock on multithreaded use of wxGetenv( wchar_t* ), called from wxEpandEnvVars(),
// needed by bool ReadFootprintFiles( FP_LIB_TABLE* aTable, const wxString* aNickname = NULL );
// needed by bool ReadFootprintFiles( FP_LIB_TABLE* aTable, const wxString* aNickname = NULL );
#if 1

#include <ki_mutex.h>
#include <ki_mutex.h>


const wxString FP_LIB_TABLE::ExpandSubstitutions( const wxString& aString )
const wxString FP_LIB_TABLE::ExpandSubstitutions( const wxString& aString )
@@ -637,16 +635,6 @@ const wxString FP_LIB_TABLE::ExpandSubstitutions( const wxString& aString )
    return wxExpandEnvVars( aString );
    return wxExpandEnvVars( aString );
}
}


#else

const wxString FP_LIB_TABLE::ExpandSubstitutions( const wxString& aString )
{
    // We reserve the right to do this another way, by providing our own member
    // function.
    return wxExpandEnvVars( aString );
}

#endif


bool FP_LIB_TABLE::IsEmpty( bool aIncludeFallback )
bool FP_LIB_TABLE::IsEmpty( bool aIncludeFallback )
{
{
@@ -691,7 +679,7 @@ bool FP_LIB_TABLE::ConvertFromLegacy( SEARCH_STACK& aSStack, NETLIST& aNetList,
            {
            {
                wxFileName fn( wxEmptyString, aLibNames[ii], LegacyFootprintLibPathExtension );
                wxFileName fn( wxEmptyString, aLibNames[ii], LegacyFootprintLibPathExtension );


                libPath = aSStack.FindValidPath( fn );
                libPath = aSStack.FindValidPath( fn.GetFullPath() );


                if( !libPath )
                if( !libPath )
                {
                {
+4 −1
Original line number Original line Diff line number Diff line
@@ -205,14 +205,17 @@ wxConfigBase* PROJECT::configCreate( const SEARCH_STACK& aSList, const wxString&
    // is there an edge transition, a change in m_project_filename?
    // is there an edge transition, a change in m_project_filename?
    if( m_project_name != fn )
    if( m_project_name != fn )
    {
    {
        m_pcb_search.Clear();
        m_sch_search.Clear();
        m_sch_search.Clear();


        SetProjectFullName( fn.GetFullPath() );
        SetProjectFullName( fn.GetFullPath() );


        // to the empty list, add project dir as first
        // to the empty lists, add project dir as first
        m_pcb_search.AddPaths( fn.GetPath() );
        m_sch_search.AddPaths( fn.GetPath() );
        m_sch_search.AddPaths( fn.GetPath() );


        // append all paths from aSList
        // append all paths from aSList
        add_search_paths( &m_pcb_search, aSList, -1 );
        add_search_paths( &m_sch_search, aSList, -1 );
        add_search_paths( &m_sch_search, aSList, -1 );


        // addLibrarySearchPaths( SEARCH_STACK* aSP, wxConfigBase* aCfg )
        // addLibrarySearchPaths( SEARCH_STACK* aSP, wxConfigBase* aCfg )
+12 −4
Original line number Original line Diff line number Diff line
@@ -182,10 +182,6 @@ static const wxString dso_full_path( const wxString& aAbsoluteArgv0 )
    return fn.GetFullPath();
    return fn.GetFullPath();
}
}


// Use of this is arbitrary, remember single_top only knows about a single DSO.
// Could have used one from the KIWAY also.
static wxDynamicLibrary dso;



// Only a single KIWAY is supported in this single_top top level component,
// Only a single KIWAY is supported in this single_top top level component,
// which is dedicated to loading only a single DSO.
// which is dedicated to loading only a single DSO.
@@ -261,6 +257,15 @@ IMPLEMENT_APP( APP_SINGLE_TOP );
static KIFACE_GETTER_FUNC* get_kiface_getter( const wxString& aDSOName )
static KIFACE_GETTER_FUNC* get_kiface_getter( const wxString& aDSOName )
{
{
#if defined(BUILD_KIWAY_DLL)
#if defined(BUILD_KIWAY_DLL)

    // Remember single_top only knows about a single DSO.  Using an automatic
    // with a defeated destructor, see Detach() below, so that the DSO program
    // image stays in RAM until process termination, and specifically
    // beyond the point in time at which static destructors are run.  Otherwise
    // a static wxDynamicLibrary's destructor might create an out of sequence
    // problem.  This was never detected, so it's only a preventative strategy.
    wxDynamicLibrary dso;

    void*   addr = NULL;
    void*   addr = NULL;


    if( !dso.Load( aDSOName, wxDL_VERBATIM | wxDL_NOW ) )
    if( !dso.Load( aDSOName, wxDL_VERBATIM | wxDL_NOW ) )
@@ -275,6 +280,9 @@ static KIFACE_GETTER_FUNC* get_kiface_getter( const wxString& aDSOName )
        // No further reporting required here.
        // No further reporting required here.
    }
    }


    // Tell dso's wxDynamicLibrary destructor not to Unload() the program image.
    (void) dso.Detach();

    return (KIFACE_GETTER_FUNC*) addr;
    return (KIFACE_GETTER_FUNC*) addr;


#else
#else
+1 −1
Original line number Original line Diff line number Diff line
@@ -107,7 +107,7 @@ void CVPCB_MAINFRAME::AssocieModule( wxCommandEvent& event )
        {
        {
            fn.SetExt( fn.GetExt() + wxT( "." ) + FootprintAliasFileExtension );
            fn.SetExt( fn.GetExt() + wxT( "." ) + FootprintAliasFileExtension );
        }
        }
        tmp = search.FindValidPath( fn );
        tmp = search.FindValidPath( fn.GetFullPath() );


        if( !tmp )
        if( !tmp )
        {
        {
Loading