[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnugo-devel] [PATCH 3/4] Make libs also generate native versions, use t
From: |
Yann Dirson |
Subject: |
[gnugo-devel] [PATCH 3/4] Make libs also generate native versions, use them when needed. |
Date: |
Tue, 14 Sep 2010 22:40:35 +0200 |
When cross-compiling, correct values for the four BUILD_* variables
have to be provided, we do not check for the host toolchain ourselves.
In the case of the openembedded build system those are already provided
by the "autoconf" recipe.
Since native and non-native targets have different needs for some
variables, we must use per-target variable values. But since those
are confusing autoconf into thinking we are *overriding* the library
link rules, we need to lure it, and we do so with the $(EMPTY) trick
which prevents it to parse those lines.
It is possible that some (non-)native are slightly unoptimized, and
that some object files are used only in one of the two versions, but
introducing another mess for such a little gain seems useless.
Signed-off-by: Yann Dirson <address@hidden>
---
configure.in | 19 +++++++++++++++++
engine/Makefile.am | 18 +++++++++++++++-
patterns/Makefile.am | 53 +++++++++++++++++++++++++++++++++++++++++--------
sgf/Makefile.am | 17 +++++++++++++++-
utils/Makefile.am | 11 +++++++++-
5 files changed, 105 insertions(+), 13 deletions(-)
diff --git a/configure.in b/configure.in
index 29d9a31..397ecdb 100644
--- a/configure.in
+++ b/configure.in
@@ -528,6 +528,25 @@ AC_SUBST(BUILD_RANLIB)
AC_SUBST(BUILD_LDFLAGS)
AC_SUBST(BUILD_CFLAGS)
+if test "$cross_compiling" != no; then
+ NATIVE=native
+ NATIVESGF=libnativesgf.a
+ NATIVEPATTERNS=libnativepatterns.a
+ NATIVEUTILS=libnativeutils.a
+ NATIVEENGINE="libnativeengine.a libnativeboard.a"
+else
+ NATIVE=
+ NATIVESGF=
+ NATIVEPATTERNS=
+ NATIVEUTILS=
+ NATIVEENGINE=
+fi
+AC_SUBST(NATIVE)
+AC_SUBST(NATIVESGF)
+AC_SUBST(NATIVEPATTERNS)
+AC_SUBST(NATIVEUTILS)
+AC_SUBST(NATIVEENGINE)
+
AC_SUBST(GCC_MAJOR_VERSION)
AC_SUBST(GCC_MINOR_VERSION)
AC_SUBST(GNU_GO_WARNINGS)
diff --git a/engine/Makefile.am b/engine/Makefile.am
index e01b1f5..6c97266 100644
--- a/engine/Makefile.am
+++ b/engine/Makefile.am
@@ -1,4 +1,5 @@
EXTRA_DIST = engine.dsp board.dsp CMakeLists.txt
+EMPTY=
# Remove these files here... they are created locally
DISTCLEANFILES = *~
@@ -14,8 +15,9 @@ noinst_HEADERS = cache.h gnugo.h hash.h clock.h readconnect.h
\
influence.h liberty.h move_reasons.h board.h
# preconfigured settings for various configurations
-noinst_LIBRARIES = libengine.a libboard.a
-
+noinst_LIBRARIES = libengine.a libboard.a $(NATIVEENGINE)
+EXTRA_LIBRARIES = libnativeengine.a libnativeboard.a
+CLEANFILES = libnativeengine.a libnativeboard.a
libengine_a_SOURCES = \
aftermath.c \
board.c \
@@ -55,9 +57,21 @@ libengine_a_SOURCES = \
utils.c \
value_moves.c \
worm.c
+libnativeengine_a_SOURCES = $(libengine_a_SOURCES)
libboard_a_SOURCES = \
board.c \
boardlib.c \
hash.c \
printutils.c
+libnativeboard_a_SOURCES = $(libboard_a_SOURCES)
+
+$(libnativeengine_a_OBJECTS): CC=$(BUILD_CC)
+libnativeengine_a_CFLAGS = $(BUILD_CFLAGS)
+libnativeengine$(EMPTY).a: LDFLAGS=$(BUILD_LDFLAGS)
+libnativeengine$(EMPTY).a: RANLIB=$(BUILD_RANLIB)
+
+$(libnativeboard_a_OBJECTS): CC=$(BUILD_CC)
+libnativeboard_a_CFLAGS = $(BUILD_CFLAGS)
+libnativeboard$(EMPTY).a: LDFLAGS=$(BUILD_LDFLAGS)
+libnativeboard$(EMPTY).a: RANLIB=$(BUILD_RANLIB)
diff --git a/patterns/Makefile.am b/patterns/Makefile.am
index 21632ba..8ae5b6c 100644
--- a/patterns/Makefile.am
+++ b/patterns/Makefile.am
@@ -1,5 +1,32 @@
noinst_PROGRAMS = mkpat joseki mkeyes uncompress_fuseki mkmcpat
EXTRA_PROGRAMS = extract_fuseki compress_fuseki
+EMPTY=
+
+$(mkpat_OBJECTS) $(joseki_OBJECTS) $(mkeyes_OBJECTS) \
+$(uncompress_fuseki_OBJECTS) $(mkmcpat_OBJECTS): CC=$(BUILD_CC)
+mkpat joseki mkeyes uncompress_fuseki mkmcpat: CCLD=$(BUILD_CC)
+mkpat joseki mkeyes uncompress_fuseki mkmcpat: CFLAGS=$(BUILD_CFLAGS)
+mkpat joseki mkeyes uncompress_fuseki mkmcpat: LDFLAGS=$(BUILD_LDFLAGS)
+
+mkpat_CC = $(BUILD_CC)
+mkpat_CFLAGS = $(BUILD_CFLAGS)
+mkpat_LDFLAGS = $(BUILD_LDFLAGS)
+
+joseki_CC = $(BUILD_CC)
+joseki_CFLAGS = $(BUILD_CFLAGS)
+joseki_LDFLAGS = $(BUILD_LDFLAGS)
+
+mkeyes_CC = $(BUILD_CC)
+mkeyes_CFLAGS = $(BUILD_CFLAGS)
+mkeyes_LDFLAGS = $(BUILD_LDFLAGS)
+
+uncompress_fuseki_CC = $(BUILD_CC)
+uncompress_fuseki_CFLAGS = $(BUILD_CFLAGS)
+uncompress_fuseki_LDFLAGS = $(BUILD_LDFLAGS)
+
+mkmcpat_CC = $(BUILD_CC)
+mkmcpat_CFLAGS = $(BUILD_CFLAGS)
+mkmcpat_LDFLAGS = $(BUILD_LDFLAGS)
DSP = dfa.dsp patterns.dsp joseki.dsp mkeyes.dsp mkpat.dsp fuseki.dsp
uncompress_fuseki.dsp mkmcpat.dsp
DTR = aa_attackpats.dtr owl_attackpats.dtr owl_defendpats.dtr \
@@ -49,7 +76,7 @@ EXTRA_DIST = $(DSP)\
mkpat_SOURCES = mkpat.c transform.c dfa.c
-mkpat_LDADD = ../utils/libutils.a
+mkpat_LDADD = ../utils/lib$(NATIVE)utils.a
if DFA_ENABLED
DFAFLAGS = -D -m
@@ -58,22 +85,22 @@ DFAFLAGS =
endif
joseki_SOURCES = joseki.c
-joseki_LDADD = ../engine/libboard.a ../sgf/libsgf.a ../utils/libutils.a
+joseki_LDADD = ../engine/lib$(NATIVE)board.a ../sgf/lib$(NATIVE)sgf.a
../utils/lib$(NATIVE)utils.a
joseki_AM_CPPFLAGS = $(GNU_GO_WARNINGS) -I$(top_srcdir)/sgf
mkeyes_SOURCES = mkeyes.c
-mkeyes_LDADD = ../utils/libutils.a
+mkeyes_LDADD = ../utils/lib$(NATIVE)utils.a
mkmcpat_SOURCES = mkmcpat.c ../engine/globals.c
-mkmcpat_LDADD = ../engine/libengine.a ../sgf/libsgf.a ../utils/libutils.a
+mkmcpat_LDADD = ../engine/lib$(NATIVE)engine.a ../sgf/lib$(NATIVE)sgf.a
../utils/lib$(NATIVE)utils.a
mkmcpat_AM_CPPFLAGS = $(GNU_GO_WARNINGS)
extract_fuseki_SOURCES = extract_fuseki.c
# Yes, we currently need duplicate libengine.a and libpatterns.a.
-extract_fuseki_LDADD = ../engine/libengine.a libpatterns.a\
- ../engine/libengine.a libpatterns.a\
- ../sgf/libsgf.a ../utils/libutils.a
+extract_fuseki_LDADD = ../engine/lib$(NATIVE)engine.a lib$(NATIVE)patterns.a\
+ ../engine/lib$(NATIVE)engine.a lib$(NATIVE)patterns.a\
+ ../sgf/lib$(NATIVE)sgf.a ../utils/lib$(NATIVE)utils.a
extract_fuseki_AM_CPPFLAGS = $(GNU_GO_WARNINGS) -I$(top_srcdir)/sgf
uncompress_fuseki_SOURCES = uncompress_fuseki.c
-uncompress_fuseki_LDADD = ../utils/libutils.a ../engine/libboard.a
../sgf/libsgf.a
+uncompress_fuseki_LDADD = ../utils/lib$(NATIVE)utils.a
../engine/lib$(NATIVE)board.a ../sgf/lib$(NATIVE)sgf.a
compress_fuseki_SOURCES = compress_fuseki.c
noinst_HEADERS = patterns.h eyes.h dfa.h dfa-mkpat.h
@@ -113,9 +140,17 @@ AM_CPPFLAGS = \
-I$(top_srcdir)/utils \
-I$(top_srcdir)/sgf
-noinst_LIBRARIES = libpatterns.a
+noinst_LIBRARIES = libpatterns.a $(NATIVEPATTERNS)
+EXTRA_LIBRARIES = libnativepatterns.a
+CLEANFILES = libnativepatterns.a
libpatterns_a_SOURCES = connections.c helpers.c transform.c $(GGBUILTSOURCES)
+libnativepatterns_a_SOURCES = $(libpatterns_a_SOURCES)
+
+$(libnativepatterns_a_OBJECTS): CC=$(BUILD_CC)
+libnativepatterns_a_CFLAGS = $(BUILD_CFLAGS)
+libnativepatterns$(EMPTY).a: LDFLAGS=$(BUILD_LDFLAGS)
+libnativepatterns$(EMPTY).a: RANLIB=$(BUILD_RANLIB)
gogo.db : $(srcdir)/gogo.sgf joseki$(EXEEXT)
./joseki JG $(srcdir)/gogo.sgf >gogo.db
diff --git a/sgf/Makefile.am b/sgf/Makefile.am
index 33dcf14..48cce65 100644
--- a/sgf/Makefile.am
+++ b/sgf/Makefile.am
@@ -1,7 +1,14 @@
noinst_PROGRAMS = sgfgen
+EMPTY=
sgfgen_SOURCES = sgfgen.c
+$(sgfgen_OBJECTS): CC=$(BUILD_CC)
+sgfgen: CCLD=$(BUILD_CC)
+sgfgen_CC = $(BUILD_CC)
+sgfgen_CFLAGS = $(BUILD_CFLAGS)
+sgfgen_LDFLAGS = $(BUILD_LDFLAGS)
+
EXTRA_DIST = sgf_extras.def sgf_properties.def sgfgen.dsp sgf.dsp
CMakeLists.txt
noinst_HEADERS = \
@@ -13,12 +20,20 @@ DISTCLEANFILES = *~
AM_CPPFLAGS = $(GNU_GO_WARNINGS) -I$(top_srcdir)/utils
-noinst_LIBRARIES = libsgf.a
+noinst_LIBRARIES = libsgf.a $(NATIVESGF)
+EXTRA_LIBRARIES = libnativesgf.a
+CLEANFILES = libnativesgf.a
libsgf_a_SOURCES = \
sgf_utils.c \
sgfnode.c \
sgftree.c
+libnativesgf_a_SOURCES = $(libsgf_a_SOURCES)
+
+$(libnativesgf_a_OBJECTS): CC=$(BUILD_CC)
+libnativesgf_a_CFLAGS = $(BUILD_CFLAGS)
+libnativesgf$(EMPTY).a: LDFLAGS=$(BUILD_LDFLAGS)
+libnativesgf$(EMPTY).a: RANLIB=$(BUILD_RANLIB)
# To rebuild sgf_properties.h in case sgf_properties.def or sgf_extras.def
# is changed, 'make sgf_properties'. Normally this is not needed.
diff --git a/utils/Makefile.am b/utils/Makefile.am
index 08568f2..77f739d 100644
--- a/utils/Makefile.am
+++ b/utils/Makefile.am
@@ -1,8 +1,17 @@
-noinst_LIBRARIES = libutils.a
+noinst_LIBRARIES = libutils.a $(NATIVEUTILS)
+EXTRA_LIBRARIES = libnativeutils.a
+CLEANFILES = libnativeutils.a
+EMPTY=
EXTRA_DIST = utils.dsp CMakeLists.txt
libutils_a_SOURCES = getopt.c getopt1.c random.c gg_utils.c winsocket.c
+libnativeutils_a_SOURCES = $(libutils_a_SOURCES)
+
+$(libnativeutils_a_OBJECTS): CC=$(BUILD_CC)
+libnativeutils_a_CFLAGS = $(BUILD_CFLAGS)
+libnativeutils$(EMPTY).a: LDFLAGS=$(BUILD_LDFLAGS)
+libnativeutils$(EMPTY).a: RANLIB=$(BUILD_RANLIB)
noinst_HEADERS = gg-getopt.h random.h gg_utils.h winsocket.h
--
1.7.2.3
- [gnugo-devel] [PATCH SERIES] Cross-compilation support., Yann Dirson, 2010/09/14
- [gnugo-devel] [PATCH 1/4] Add AC_CANONICAL_BUILD for cross-build support., Yann Dirson, 2010/09/14
- [gnugo-devel] [PATCH 2/4] Add support for BUILD_ for cross-building., Yann Dirson, 2010/09/14
- [gnugo-devel] [PATCH 3/4] Make libs also generate native versions, use them when needed.,
Yann Dirson <=
- Message not available
- [gnugo-devel] Re: [PATCH 4/4] Autotools refresh., Yann Dirson, 2010/09/15
- Message not available
- Message not available
- Message not available
- Message not available
- Message not available
- Message not available
- Message not available
- Re: [gnugo-devel] Re: [PATCH 4/4] Autotools refresh., Yann Dirson, 2010/09/23
- Re: [gnugo-devel] Re: [PATCH 4/4] Autotools refresh., Gunnar Farnebäck, 2010/09/23
- Re: [gnugo-devel] Re: [PATCH 4/4] Autotools refresh., Yann Dirson, 2010/09/24
- Re: [gnugo-devel] Re: [PATCH 4/4] Autotools refresh., Yann Dirson, 2010/09/24
- Re: [gnugo-devel] Re: [PATCH 4/4] Autotools refresh., Gunnar Farnebäck, 2010/09/25
- Re: [gnugo-devel] Re: [PATCH 4/4] Autotools refresh., Yann Dirson, 2010/09/25
- Re: [gnugo-devel] Re: [PATCH 4/4] Autotools refresh., Gunnar Farnebäck, 2010/09/25
- Re: [gnugo-devel] Re: [PATCH 4/4] Autotools refresh., Yann Dirson, 2010/09/26
- Re: [gnugo-devel] Re: [PATCH 4/4] Autotools refresh., Gunnar Farnebäck, 2010/09/26