Hello all,

I have been following the discussion of Klaas and Marteez wrt "compile 
under Cygwin" and "wxOnAssert error" threads.

What I considered doing was going back to attempting to use bakefiles 
and generating the necessary makefiles for wxDev(gcc) (and also for 
Borland) which uses a monolithic build.

After spending a couple of days looking at it, I gave up.

However, what I have had some success with is reusing a wxWidgets 
contrib library makefile, and adjusting it to cater for the wxArt2D 
libraries.

and example -  the contents of the makefile for docview

# =========================================================================
#     This makefile was generated by
#     Bakefile 0.2.0 (http://bakefile.sourceforge.net)
#     Do not modify, all changes will be overwritten!
# =========================================================================

include ./config.gcc

# -------------------------------------------------------------------------
# Do not modify the rest of this file!
# -------------------------------------------------------------------------

### Variables: ###

CPPDEPS = -MT$@ [EMAIL PROTECTED] -MD
WX_RELEASE_NODOT = 28
WX_VERSION_NODOT = $(WX_RELEASE_NODOT)0
OBJS = \
    
gcc_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG)
LIBDIRNAME = $(WXART2D)\lib\gcc_$(LIBTYPE_SUFFIX)$(CFG)

SETUPHDIR = \
    $(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)
DOCVIEWDLL_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) \
    $(GCCFLAGS) -DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
    $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
    $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \
    -I$(SETUPHDIR) -I$(WXWIN)\include -I$(WXART2D)\modules 
-I$(WXART2D)\include -I$(WXWIN)\src\expat\lib  -W -Wall \
    -I$(WXART2D)\modules -I..\..\include\wx\docview -I..\..\src\docview 
-DWXUSINGDLL -DWXMAKINGDLL_DOCVIEW \
    $(__RTTIFLAG) $(__EXCEPTIONSFLAG) -Wno-ctor-dtor-privacy $(CPPFLAGS) \
    $(CXXFLAGS)
DOCVIEWDLL_OBJECTS =  \
    $(OBJS)\docviewdll_dummy.o \
    $(OBJS)\docviewdll_version_rc.o \
    $(OBJS)\docviewdll_cparser.o \
    $(OBJS)\docviewdll_doccom.o \
    $(OBJS)\docviewdll_docmdiref.o \
    $(OBJS)\docviewdll_docviewref.o \
    $(OBJS)\docviewdll_xh_a2dmenu.o
DOCVIEWLIB_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) \
    $(GCCFLAGS) -DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
    $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
    $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \
    -I$(SETUPHDIR) -I$(WXWIN)\include -I$(WXART2D)\modules 
-I$(WXART2D)\include -I$(WXWIN)\src\expat\lib  -W -Wall \
    -I$(WXART2D)\modules -I..\..\include\wx\docview -I..\..\src\docview 
$(__RTTIFLAG) $(__EXCEPTIONSFLAG) \
    -Wno-ctor-dtor-privacy $(CPPFLAGS) $(CXXFLAGS)
DOCVIEWLIB_OBJECTS =  \
    $(OBJS)\docviewlib_dummy.o \
    $(OBJS)\docviewlib_cparser.o \
    $(OBJS)\docviewlib_doccom.o \
    $(OBJS)\docviewlib_docmdiref.o \
    $(OBJS)\docviewlib_docviewref.o \
    $(OBJS)\docviewlib_xh_a2dmenu.o


### Conditionally set variables: ###

ifeq ($(GCC_VERSION),2.95)
GCCFLAGS = -fvtable-thunks
endif
ifeq ($(USE_GUI),0)
PORTNAME = base
endif
ifeq ($(USE_GUI),1)
PORTNAME = msw
endif
ifeq ($(OFFICIAL_BUILD),0)
VENDORTAG = _$(VENDOR)
endif
ifeq ($(OFFICIAL_BUILD),1)
VENDORTAG =
endif
ifeq ($(BUILD),debug)
ifeq ($(DEBUG_FLAG),default)
WXDEBUGFLAG = d
endif
endif
ifeq ($(DEBUG_FLAG),1)
WXDEBUGFLAG = d
endif
ifeq ($(UNICODE),1)
WXUNICODEFLAG = u
endif
ifeq ($(WXUNIV),1)
WXUNIVNAME = univ
endif
ifeq ($(SHARED),1)
WXDLLFLAG = dll
endif
ifeq ($(SHARED),0)
LIBTYPE_SUFFIX = lib
endif
ifeq ($(SHARED),1)
LIBTYPE_SUFFIX = dll
endif
ifeq ($(MONOLITHIC),0)
EXTRALIBS_FOR_BASE =
endif
ifeq ($(MONOLITHIC),1)
EXTRALIBS_FOR_BASE = 
endif
ifeq ($(SHARED),1)
__docviewdll___depname = \
    
$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_docview_gcc$(VENDORTAG).dll
endif
ifeq ($(WXUNIV),1)
__WXUNIV_DEFINE_p_1 = --define __WXUNIVERSAL__
endif
ifeq ($(BUILD),debug)
ifeq ($(DEBUG_FLAG),default)
__DEBUG_DEFINE_p_1 = --define __WXDEBUG__
endif
endif
ifeq ($(DEBUG_FLAG),1)
__DEBUG_DEFINE_p_1 = --define __WXDEBUG__
endif
ifeq ($(USE_EXCEPTIONS),0)
__EXCEPTIONS_DEFINE_p_1 = --define wxNO_EXCEPTIONS
endif
ifeq ($(USE_RTTI),0)
__RTTI_DEFINE_p_1 = --define wxNO_RTTI
endif
ifeq ($(USE_THREADS),0)
__THREAD_DEFINE_p_1 = --define wxNO_THREADS
endif
ifeq ($(UNICODE),1)
__UNICODE_DEFINE_p_1 = --define _UNICODE
endif
ifeq ($(MSLU),1)
__MSLU_DEFINE_p_1 = --define wxUSE_UNICODE_MSLU=1
endif
ifeq ($(MONOLITHIC),1)
__WXLIB_MONO_p = \
    
-lwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)
endif
ifeq ($(USE_GUI),1)
__LIB_TIFF_p = -lwxtiff$(WXDEBUGFLAG)
endif
ifeq ($(USE_GUI),1)
__LIB_JPEG_p = -lwxjpeg$(WXDEBUGFLAG)
endif
ifeq ($(USE_GUI),1)
__LIB_PNG_p = -lwxpng$(WXDEBUGFLAG)
endif
ifeq ($(MSLU),1)
__UNICOWS_LIB_p = -lunicows
endif
ifeq ($(MONOLITHIC),0)
__WXLIB_CORE_p = \
    
-lwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core
endif
ifeq ($(MONOLITHIC),0)
__WXLIB_BASE_p = \
    
-lwxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)
endif
ifeq ($(SHARED),0)
__docviewlib___depname = \
    
$(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_docview.a
endif
ifeq ($(BUILD),debug)
ifeq ($(DEBUG_INFO),default)
__DEBUGINFO = -g
endif
endif
ifeq ($(BUILD),release)
ifeq ($(DEBUG_INFO),default)
__DEBUGINFO =
endif
endif
ifeq ($(DEBUG_INFO),0)
__DEBUGINFO =
endif
ifeq ($(DEBUG_INFO),1)
__DEBUGINFO = -g
endif
ifeq ($(BUILD),debug)
__OPTIMIZEFLAG = -O0
endif
ifeq ($(BUILD),release)
__OPTIMIZEFLAG = -O2
endif
ifeq ($(USE_THREADS),0)
__THREADSFLAG =
endif
ifeq ($(USE_THREADS),1)
__THREADSFLAG = -mthreads
endif
ifeq ($(USE_RTTI),0)
__RTTIFLAG = -fno-rtti
endif
ifeq ($(USE_RTTI),1)
__RTTIFLAG =
endif
ifeq ($(USE_EXCEPTIONS),0)
__EXCEPTIONSFLAG = -fno-exceptions
endif
ifeq ($(USE_EXCEPTIONS),1)
__EXCEPTIONSFLAG =
endif
ifeq ($(WXUNIV),1)
__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__
endif
ifeq ($(BUILD),debug)
ifeq ($(DEBUG_FLAG),default)
__DEBUG_DEFINE_p = -D__WXDEBUG__
endif
endif
ifeq ($(DEBUG_FLAG),1)
__DEBUG_DEFINE_p = -D__WXDEBUG__
endif
ifeq ($(USE_EXCEPTIONS),0)
__EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS
endif
ifeq ($(USE_RTTI),0)
__RTTI_DEFINE_p = -DwxNO_RTTI
endif
ifeq ($(USE_THREADS),0)
__THREAD_DEFINE_p = -DwxNO_THREADS
endif
ifeq ($(UNICODE),1)
__UNICODE_DEFINE_p = -D_UNICODE
endif
ifeq ($(MSLU),1)
__MSLU_DEFINE_p = -DwxUSE_UNICODE_MSLU=1
endif


all: $(OBJS)
$(OBJS):
    -if not exist $(OBJS) mkdir $(OBJS)

### Targets: ###

all: $(__docviewdll___depname) $(__docviewlib___depname)

clean:
    -if exist $(OBJS)\*.o del $(OBJS)\*.o
    -if exist $(OBJS)\*.d del $(OBJS)\*.d
    -if exist 
$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_docview_gcc$(VENDORTAG).dll
 
del 
$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_docview_gcc$(VENDORTAG).dll
    -if exist 
$(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_docview.a
 
del 
$(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_docview.a
    -if exist 
$(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_docview.a
 
del 
$(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_docview.a

ifeq ($(SHARED),1)
$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_docview_gcc$(VENDORTAG).dll:
 
$(DOCVIEWDLL_OBJECTS) $(OBJS)\docviewdll_version_rc.o
    $(CXX) -shared -fPIC -o $@ $(DOCVIEWDLL_OBJECTS) $(LDFLAGS) 
$(__DEBUGINFO) $(__THREADSFLAG) -L$(LIBDIRNAME) 
-Wl,--out-implib,$(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_docview.a
  
$(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p)  
-lwxzlib$(WXDEBUGFLAG)  -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG) 
-lwxexpat$(WXDEBUGFLAG) $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) 
-lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 
-lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 
-lodbc32 $(__WXLIB_CORE_p)  $(__WXLIB_BASE_p)
endif

ifeq ($(SHARED),0)
$(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_docview.a:
 
$(DOCVIEWLIB_OBJECTS)
    if exist $@ del $@
    ar rcu $@ $(DOCVIEWLIB_OBJECTS)
    ranlib $@
endif

$(OBJS)\docviewdll_dummy.o: $(WXWIN)/src/common/dummy.cpp
    $(CXX) -c -o $@ $(DOCVIEWDLL_CXXFLAGS) $(CPPDEPS) $<

$(OBJS)\docviewdll_version_rc.o: $(WXWIN)/src/msw/version.rc
    windres --use-temp-file -i$< -o$@   --define __WXMSW__ 
$(__WXUNIV_DEFINE_p_1) $(__DEBUG_DEFINE_p_1) $(__EXCEPTIONS_DEFINE_p_1) 
$(__RTTI_DEFINE_p_1) $(__THREAD_DEFINE_p_1) $(__UNICODE_DEFINE_p_1) 
$(__MSLU_DEFINE_p_1) --include-dir $(SETUPHDIR) --include-dir 
../../src/docview/../../../include --define 
WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_docview_gcc$(VENDORTAG)

$(OBJS)\docviewdll_cparser.o: ../../src/cparser.cpp
    $(CXX) -c -o $@ $(DOCVIEWDLL_CXXFLAGS) $(CPPDEPS) $<

$(OBJS)\docviewdll_doccom.o: ../../src/doccom.cpp
    $(CXX) -c -o $@ $(DOCVIEWDLL_CXXFLAGS) $(CPPDEPS) $<

$(OBJS)\docviewdll_docmdiref.o: ../../src/docmdiref.cpp
    $(CXX) -c -o $@ $(DOCVIEWDLL_CXXFLAGS) $(CPPDEPS) $<

$(OBJS)\docviewdll_docviewref.o: ../../src/docviewref.cpp
    $(CXX) -c -o $@ $(DOCVIEWDLL_CXXFLAGS) $(CPPDEPS) $<

$(OBJS)\docviewdll_xh_a2dmenu.o: ../../src/xh_a2dmenu.cpp
    $(CXX) -c -o $@ $(DOCVIEWDLL_CXXFLAGS) $(CPPDEPS) $<

$(OBJS)\docviewlib_dummy.o: $(WXWIN)/src/common/dummy.cpp
    $(CXX) -c -o $@ $(DOCVIEWLIB_CXXFLAGS) $(CPPDEPS) $<

$(OBJS)\docviewlib_cparser.o: ../../src/cparser.cpp
    $(CXX) -c -o $@ $(DOCVIEWLIB_CXXFLAGS) $(CPPDEPS) $<

$(OBJS)\docviewlib_doccom.o: ../../src/doccom.cpp
    $(CXX) -c -o $@ $(DOCVIEWLIB_CXXFLAGS) $(CPPDEPS) $<

$(OBJS)\docviewlib_docmdiref.o: ../../src/docmdiref.cpp
    $(CXX) -c -o $@ $(DOCVIEWLIB_CXXFLAGS) $(CPPDEPS) $<

$(OBJS)\docviewlib_docviewref.o: ../../src/docviewref.cpp
    $(CXX) -c -o $@ $(DOCVIEWLIB_CXXFLAGS) $(CPPDEPS) $<

$(OBJS)\docviewlib_xh_a2dmenu.o: ../../src/xh_a2dmenu.cpp
    $(CXX) -c -o $@ $(DOCVIEWLIB_CXXFLAGS) $(CPPDEPS) $<




.PHONY: all clean


# Dependencies tracking:
-include $(OBJS)/*.d



Using this method (and you could conceivably create a blank template and 
make some program fill in the required info) it is a reasonably simple 
procedure of create a \lib\gcc_lib folder under your main wxArt2D 
folder. Under each library root folder create a build\msw folder. copy 
the above makefile.gcc into it. copy the associated config.gcc file into it.

I then have a batch file

set WXWIN=c:\wxWidgets-2.8.7
set WXDEV=c:\Program Files\Dev-Cpp
set WXART2D=c:\wxart2d
set path=%WXDEV%\bin;%WXDEV%\libexec\gcc\mingw32\3.4.2;

rem these are for vista only
set 
C_INCLUDE_PATH=%WXDEV%\include;%WXDEV%\lib\gcc\mingw32\3.4.2\include;%WXDEV%\include\c++\3.4.2;%WXDEV%\include\c++\3.4.2\mingw32
set CPLUS_INCLUDE_PATH=%C_INCLUDE_PATH%
set LIBRARY_PATH=%WXDEV%\lib
set GCC_EXEC_PREFIX=%WXDEV%\
set LD_LIBRARY_PATH=%WXDEV%\lib
rem end of Vista only variables



mingw32-make -f makefile.gcc BUILD=release MONOLITHIC=1 USE_OPENGL=1 
RUNTIME_LIBS=static USE_RTTI=0 USE_EXCEPTIONS=1 2> compfile.txt


pause

which I also place into the build\msw folder. (All the environmental 
variables are to allow the gcc compiler to function correctly in Vista 
and are not required prior to this (XP, 2000, 98)

It's taking me a bit of time, since I compile - check errors - recompile 
- etc, but I am achieving results. I only build in release mode static 
library, so there may very well be errors in the dynamic library 
sections, but once completed, you are very welcome to see my efforts. 
And the beauty of this method is that once the makefiles are functioning 
correctly for each individual library/sample/executable, then it is a 
simple matter to batch build the whole library, simply maintaining a 
single batch file which steps sequentially through the makefiles.

I used this method when creating libraries for wxdev-C++.

Best regards
Mal


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Wxart2d-users_dev mailing list
Wxart2d-users_dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wxart2d-users_dev

Reply via email to