Francisco Sanz García wrote, On 04.11.2009 10:42 Uhr:
Hello.
I'm trying to cross build the boinc project using mingw32 (i686-pc-mingw32)
but I found several problems. Is there any way to do the configure step to
reduce this problems.
This would only work for the library and the API, i.e. what's needed to
build Windows applications, not the client or the server code.
If that's what you want: I recently added some include fixes that are
enabled with CPPFLAGS=-DMINGW_WIN32.
I'll attach the Makefile that I am using, which refers to an older
Version of BOINC and still builds boinc_zip; you might want to remove
this parts. It requires BOINC_SRC to be set to the BOINC source
directory and BOINC_PREFIX to the install prefix if you want to use the
install target. Apart from that I'm using the config.h from win_build
and don't use autoconf for a cross-build.
Eric Korpela has integrationg this into autoconf on his todo list, but
it may take some time until he gets to it.
Best,
Bernd
# Makefile for building BOINC with MinGW (gcc and gnumake)
# headers to install
HEADERS = version.h api/boinc_api.h api/graphics2.h lib/app_ipc.h
lib/boinc_win.h \
lib/common_defs.h lib/diagnostics.h lib/diagnostics_win.h lib/filesys.h
lib/hostinfo.h \
lib/proxy_info.h lib/prefs.h lib/miofile.h lib/mfile.h lib/parse.h
lib/util.h \
zip/boinc_zip.h win_build/config.h
# objects to compile
API_OBJ = boinc_api.o graphics2_util.o
GPH_OBJ = graphics2.o graphics2_util.o
LIB_OBJ = util.o win_util.o app_ipc.o diagnostics.o diagnostics_win.o filesys.o
\
hostinfo.o md5.o md5_file.o mem_usage.o mfile.o miofile.o parse.o
prefs.o \
proxy_info.o str_util.o shmem.o base64.o stackwalker_win.o
ZIP_OBJ = boinc_zip.o z_win32.o win32zip.o zipup.o zipfile.o zip.o z_globals.o
z_fileio.o \
z_util.o trees.o deflate.o zipinfo.o win32.o unzip.o unshrink.o
unreduce.o ttyio.o \
process.o match.o list.o inflate.o globals.o fileio.o extract.o
explode.o envargs.o \
crctab.o crc32.o apihelp.o api.o
# libraries to build finally
API_BIN = libboinc_api.a
LIB_BIN = libboinc.a
GPH_BIN = libboinc_graphics2.a
ZIP_BIN = libboinc_zip.a
OBJ = $(API_OBJ) $(LIB_OBJ) $(GPH_OBJ) $(ZIP_OBJ)
BIN = $(API_BIN) $(LIB_BIN) $(GPH_BIN) $(ZIP_BIN)
# -gstabs is necessary for MinGWs backtrace to work
DEBUG = -D__DEBUG__ -gstabs -g3
# where to find headers
INCS = -I"$(BOINC_SRC)" -I"$(BOINC_SRC)/db" -I"$(BOINC_SRC)/lib"
-I"$(BOINC_SRC)/api" -I"$(BOINC_SRC)/zip" -I"$(BOINC_SRC)/win_build"
# various cpp & gcc flags (for both C and C++ mode)
CCXXFLAGS = $(INCS) $(DEBUG) --include $(BOINC_SRC)/version.h -DMINGW_WIN32 \
-DWIN32 -D_WIN32 -D_WIN32_WINDOWS=0x0410 -D_MT -DNDEBUG -D_WINDOWS
-DBOINC \
-DNODB -D_CONSOLE -mtune=pentium-m -fexceptions -march=i386 -O2
$(NOCYGWIN)
# flags for compiling boinc_zip
ZIP_FLAGS = -DWIN32 -DNDEBUG -D_LIB -D_MBCS -DNO_MKTEMP $(INCS) -O2 -DDLL
$(NOCYGWIN)
LDFLAGS = -lwinmm -march=i386
CFLAGS = $(CCXXFLAGS)
CXXFLAGS = $(CCXXFLAGS)
# default target
all: $(BIN)
# rules for the indivisual libraries
$(API_BIN): $(API_OBJ)
$(AR) rc $@ $^
$(LIB_BIN): $(LIB_OBJ)
$(AR) rc $@ $^
$(GPH_BIN): $(GPH_OBJ)
$(AR) rc $@ $^
$(ZIP_BIN): $(ZIP_OBJ)
$(AR) rc $@ $^
# standard BOINC code - .C and .cpp versions
%.o: $(BOINC_SRC)/api/%.C
$(CXX) -c $< -o $@ $(CPPFLAGS) $(CXXFLAGS)
%.o: $(BOINC_SRC)/lib/%.C
$(CXX) -c $< -o $@ $(CPPFLAGS) $(CXXFLAGS)
%.o: $(BOINC_SRC)/api/%.cpp
$(CXX) -c $< -o $@ $(CPPFLAGS) $(CXXFLAGS)
%.o: $(BOINC_SRC)/lib/%.cpp
$(CXX) -c $< -o $@ $(CPPFLAGS) $(CXXFLAGS)
# C-mode file
md5.o: $(BOINC_SRC)/lib/md5.c
$(CXX) -c $(BOINC_SRC)/lib/md5.c -o md5.o $(CPPFLAGS) $(CXXFLAGS)
# for boinc_zip. Don't change the order!
%.o: $(BOINC_SRC)/zip/%.cpp
$(CXX) -c $< -o $@ $(ZIP_FLAGS)
%.o: $(BOINC_SRC)/zip/unzip/win32/%.c
$(CC) -c $< -o $@ $(ZIP_FLAGS)
%.o: $(BOINC_SRC)/zip/unzip/%.c
$(CC) -c $< -o $@ $(ZIP_FLAGS)
%.o: $(BOINC_SRC)/zip/zip/win32/%.c
$(CC) -c $< -o $@ $(ZIP_FLAGS)
%.o: $(BOINC_SRC)/zip/zip/%.c
$(CC) -c $< -o $@ $(ZIP_FLAGS)
z_util.o: $(BOINC_SRC)/zip/zip/util.c
$(CC) -c $< -o $@ $(ZIP_FLAGS)
RANLIB ?= ranlib
# additional targets
install: $(BIN) $(HEADERS)
mkdir -p $(BOINC_PREFIX)/include/BOINC $(BOINC_PREFIX)/lib
cp $(HEADERS) $(BOINC_PREFIX)/include/BOINC
$(RANLIB) $(BIN)
cp $(BIN) $(BOINC_PREFIX)/lib
uninstall:
rm -f $(BOINC_PREFIX)/include/BOINC/*.h
( cd $(BOINC_PREFIX)/lib && rm -f $(BIN) || exit 0 )
clean:
${RM} $(OBJ) $(BIN)
_______________________________________________
boinc_dev mailing list
[email protected]
http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_dev
To unsubscribe, visit the above URL and
(near bottom of page) enter your email address.