Skip to content

Commit 7c9d0c3

Browse files
committed
Fix handling of build-time grub-bin2h and grub-mkfont when doing
full Canadian cross. Tested with build=x86_64, host=arm, target=ppc-ieee1275.
1 parent 816719c commit 7c9d0c3

File tree

9 files changed

+143
-149
lines changed

9 files changed

+143
-149
lines changed

ChangeLog

+6
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
2013-08-14 Vladimir Serbinenko <[email protected]>
2+
3+
Fix handling of build-time grub-bin2h and grub-mkfont when doing
4+
full Canadian cross. Tested with build=x86_64, host=arm,
5+
target=ppc-ieee1275.
6+
17
2013-08-14 Vladimir Serbinenko <[email protected]>
28

39
* configure.ac: Error if no $BUILD_CC could be found.

Makefile.am

+30-26
Original file line numberDiff line numberDiff line change
@@ -60,63 +60,67 @@ grub_fstest_init.c: grub_fstest_init.lst $(top_srcdir)/geninit.sh
6060
sh $(top_srcdir)/geninit.sh `cat $<` > $@ || (rm -f $@; exit 1)
6161
CLEANFILES += grub_fstest_init.c
6262

63-
if COND_GRUB_MKFONT
6463
if COND_HAVE_FONT_SOURCE
6564
pkgdata_DATA += unicode.pf2 ascii.pf2 euro.pf2 ascii.h widthspec.h
6665
endif
67-
endif
6866

6967
starfield_theme_files = $(srcdir)/themes/starfield/blob_w.png $(srcdir)/themes/starfield/boot_menu_c.png $(srcdir)/themes/starfield/boot_menu_e.png $(srcdir)/themes/starfield/boot_menu_ne.png $(srcdir)/themes/starfield/boot_menu_n.png $(srcdir)/themes/starfield/boot_menu_nw.png $(srcdir)/themes/starfield/boot_menu_se.png $(srcdir)/themes/starfield/boot_menu_s.png $(srcdir)/themes/starfield/boot_menu_sw.png $(srcdir)/themes/starfield/boot_menu_w.png $(srcdir)/themes/starfield/slider_c.png $(srcdir)/themes/starfield/slider_n.png $(srcdir)/themes/starfield/slider_s.png $(srcdir)/themes/starfield/starfield.png $(srcdir)/themes/starfield/terminal_box_c.png $(srcdir)/themes/starfield/terminal_box_e.png $(srcdir)/themes/starfield/terminal_box_ne.png $(srcdir)/themes/starfield/terminal_box_n.png $(srcdir)/themes/starfield/terminal_box_nw.png $(srcdir)/themes/starfield/terminal_box_se.png $(srcdir)/themes/starfield/terminal_box_s.png $(srcdir)/themes/starfield/terminal_box_sw.png $(srcdir)/themes/starfield/terminal_box_w.png $(srcdir)/themes/starfield/theme.txt $(srcdir)/themes/starfield/README $(srcdir)/themes/starfield/COPYING.CC-BY-SA-3.0
7068

69+
build-grub-mkfont: util/grub-mkfont.c grub-core/unidata.c grub-core/kern/emu/argp_common.c grub-core/kern/emu/misc.c util/misc.c grub-core/gnulib/progname.c
70+
$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -I$(top_srcdir)/grub-core/gnulib -DGRUB_MKFONT=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) $(LIBINTL)
71+
72+
build-grub-bin2h: util/bin2h.c
73+
$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $<
74+
7175
if COND_STARFIELD
7276
starfield_DATA = dejavu_10.pf2 dejavu_12.pf2 dejavu_bold_14.pf2 dejavu_14.pf2 dejavu_16.pf2 $(starfield_theme_files)
73-
dejavu_10.pf2: $(DJVU_FONT_SOURCE) grub-mkfont
74-
./grub-mkfont -s 10 -o $@ $(DJVU_FONT_SOURCE)
75-
dejavu_12.pf2: $(DJVU_FONT_SOURCE) grub-mkfont
76-
./grub-mkfont -s 12 -o $@ $(DJVU_FONT_SOURCE)
77-
dejavu_14.pf2: $(DJVU_FONT_SOURCE) grub-mkfont
78-
./grub-mkfont -s 14 -o $@ $(DJVU_FONT_SOURCE)
79-
dejavu_bold_14.pf2: $(DJVU_FONT_SOURCE) grub-mkfont
80-
./grub-mkfont -b -s 14 -o $@ $(DJVU_FONT_SOURCE)
81-
dejavu_16.pf2: $(DJVU_FONT_SOURCE) grub-mkfont
82-
./grub-mkfont -s 16 -o $@ $(DJVU_FONT_SOURCE)
77+
dejavu_10.pf2: $(DJVU_FONT_SOURCE) build-grub-mkfont
78+
./build-grub-mkfont -s 10 -o $@ $(DJVU_FONT_SOURCE)
79+
dejavu_12.pf2: $(DJVU_FONT_SOURCE) build-grub-mkfont
80+
./build-grub-mkfont -s 12 -o $@ $(DJVU_FONT_SOURCE)
81+
dejavu_14.pf2: $(DJVU_FONT_SOURCE) build-grub-mkfont
82+
./build-grub-mkfont -s 14 -o $@ $(DJVU_FONT_SOURCE)
83+
dejavu_bold_14.pf2: $(DJVU_FONT_SOURCE) build-grub-mkfont
84+
./build-grub-mkfont -b -s 14 -o $@ $(DJVU_FONT_SOURCE)
85+
dejavu_16.pf2: $(DJVU_FONT_SOURCE) build-grub-mkfont
86+
./build-grub-mkfont -s 16 -o $@ $(DJVU_FONT_SOURCE)
8387
else
8488
starfield_DATA =
8589
endif
8690

8791
EXTRA_DIST += $(starfield_theme_files)
8892
EXTRA_DIST += $(srcdir)/themes/starfield/src/slider_s.xcf $(srcdir)/themes/starfield/src/slider_n.xcf $(srcdir)/themes/starfield/src/slider_c.xcf $(srcdir)/themes/starfield/src/blob_nw.xcf $(srcdir)/themes/starfield/src/bootmenu/center.xcf $(srcdir)/themes/starfield/src/bootmenu/corner.xcf $(srcdir)/themes/starfield/src/bootmenu/side.xcf $(srcdir)/themes/starfield/src/terminalbox/side.xcf $(srcdir)/themes/starfield/src/terminalbox/corner.xcf $(srcdir)/themes/starfield/src/terminalbox/center.xcf
8993

90-
unicode.pf2: $(FONT_SOURCE) grub-mkfont
91-
./grub-mkfont -o $@ $(FONT_SOURCE)
94+
unicode.pf2: $(FONT_SOURCE) build-grub-mkfont
95+
./build-grub-mkfont -o $@ $(FONT_SOURCE)
9296
CLEANFILES += unicode.pf2
9397

9498
# Arrows and lines are needed to draw the menu, so always include them
9599
UNICODE_ARROWS=0x2190-0x2193
96100
UNICODE_LINES=0x2501-0x251B
97101

98-
ascii.pf2: $(FONT_SOURCE) grub-mkfont
99-
./grub-mkfont -o $@ $(FONT_SOURCE) -r 0x0-0x7f,$(UNICODE_ARROWS),$(UNICODE_LINES)
102+
ascii.pf2: $(FONT_SOURCE) build-grub-mkfont
103+
./build-grub-mkfont -o $@ $(FONT_SOURCE) -r 0x0-0x7f,$(UNICODE_ARROWS),$(UNICODE_LINES)
100104
CLEANFILES += ascii.pf2
101105

102-
euro.pf2: $(FONT_SOURCE) grub-mkfont
103-
./grub-mkfont -o $@ $(FONT_SOURCE) -r 0x0-0x4ff,0x1e00-0x1fff,$(UNICODE_ARROWS),$(UNICODE_LINES)
106+
euro.pf2: $(FONT_SOURCE) build-grub-mkfont
107+
./build-grub-mkfont -o $@ $(FONT_SOURCE) -r 0x0-0x4ff,0x1e00-0x1fff,$(UNICODE_ARROWS),$(UNICODE_LINES)
104108
CLEANFILES += euro.pf2
105109

106-
ascii.bitmaps: $(FONT_SOURCE) grub-mkfont
107-
./grub-mkfont --ascii-bitmaps -o $@ $(FONT_SOURCE)
110+
ascii.bitmaps: $(FONT_SOURCE) build-grub-mkfont
111+
./build-grub-mkfont --ascii-bitmaps -o $@ $(FONT_SOURCE)
108112
CLEANFILES += ascii.bitmaps
109113

110-
ascii.h: ascii.bitmaps grub-bin2h
111-
./grub-bin2h ascii_bitmaps < $< > $@
114+
ascii.h: ascii.bitmaps build-grub-bin2h
115+
./build-grub-bin2h ascii_bitmaps < $< > $@
112116
CLEANFILES += ascii.h $(top_builddir)/grub-core/include/ascii.h
113117

114-
widthspec.bin: $(FONT_SOURCE) grub-mkfont
115-
./grub-mkfont --width-spec -o $@ $(FONT_SOURCE)
118+
widthspec.bin: $(FONT_SOURCE) build-grub-mkfont
119+
./build-grub-mkfont --width-spec -o $@ $(FONT_SOURCE)
116120
CLEANFILES += widthspec.bin
117121

118-
widthspec.h: widthspec.bin grub-bin2h
119-
./grub-bin2h widthspec < $< > $@
122+
widthspec.h: widthspec.bin build-grub-bin2h
123+
./build-grub-bin2h widthspec < $< > $@
120124
CLEANFILES += widthspec.h
121125

122126
# Install config.h into platformdir

Makefile.util.def

+5-16
Original file line numberDiff line numberDiff line change
@@ -148,17 +148,6 @@ library = {
148148
common = grub-core/lib/xzembed/xz_dec_stream.c;
149149
};
150150

151-
program = {
152-
name = grub-bin2h;
153-
common = util/bin2h.c;
154-
ldadd = libgrubmods.a;
155-
ldadd = libgrubgcry.a;
156-
ldadd = libgrubkern.a;
157-
ldadd = grub-core/gnulib/libgnu.a;
158-
ldadd = '$(LIBINTL) $(LIBDEVMAPPER)';
159-
installdir = noinst;
160-
};
161-
162151
program = {
163152
name = grub-mkimage;
164153
mansection = 1;
@@ -292,15 +281,15 @@ program = {
292281
common = util/grub-mkfont.c;
293282
common = grub-core/unidata.c;
294283
common = grub-core/kern/emu/argp_common.c;
284+
common = grub-core/kern/emu/misc.c;
285+
common = util/misc.c;
286+
common = grub-core/gnulib/progname.c;
295287

296288
cflags = '$(freetype_cflags)';
289+
cppflags = '-DGRUB_MKFONT=1';
297290

298-
ldadd = libgrubmods.a;
299-
ldadd = libgrubgcry.a;
300-
ldadd = libgrubkern.a;
301-
ldadd = grub-core/gnulib/libgnu.a;
302291
ldadd = '$(freetype_libs)';
303-
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
292+
ldadd = '$(LIBINTL)';
304293
condition = COND_GRUB_MKFONT;
305294
};
306295

conf/Makefile.common

+1
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ CPPFLAGS_DEFAULT += -I$(top_builddir)/include
5959
CPPFLAGS_DEFAULT += -I$(top_srcdir)/grub-core/lib/libgcrypt-grub/include
6060
CPPFLAGS_DEFAULT += -I$(top_srcdir)/grub-core/lib/libgcrypt-grub/src/
6161
CCASFLAGS_DEFAULT = $(CPPFLAGS_DEFAULT) -DASM_FILE=1
62+
BUILD_CPPFLAGS += $(CPPFLAGS_DEFAULT)
6263

6364
LDADD_KERNEL =
6465

configure.ac

+84-27
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ if test "x$TARGET_CFLAGS" = x; then
7373
TARGET_CFLAGS="$TARGET_CFLAGS -Os"
7474
fi
7575

76+
BUILD_CPPFLAGS="$BUILD_CPPFLAGS -DLOCALEDIR=\\\"\$(localedir)\\\""
77+
7678
# Default HOST_CPPFLAGS
7779
HOST_CPPFLAGS="$HOST_CPPFLAGS -Wall -W"
7880
HOST_CPPFLAGS="$HOST_CPPFLAGS -I\$(top_builddir)/include"
@@ -282,23 +284,6 @@ if test "x$YACC" = x; then
282284
AC_MSG_ERROR([bison is not found])
283285
fi
284286

285-
FONT_SOURCE=
286-
287-
for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do
288-
for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/unifont /usr/share/fonts/uni /usr/share/fonts/truetype/unifont /usr/share/fonts/misc; do
289-
if test -f "$dir/unifont.$ext"; then
290-
FONT_SOURCE="$dir/unifont.$ext"
291-
break 2
292-
fi
293-
done
294-
done
295-
296-
if test "x$FONT_SOURCE" = x && ( test "x$platform" = xqemu || test "x$platform" = xloongson || test "x$platform" = xqemu_mips); then
297-
AC_MSG_ERROR([qemu and loongson ports need unifont])
298-
fi
299-
300-
AC_SUBST([FONT_SOURCE])
301-
302287
AC_PROG_RANLIB
303288
AC_PROG_INSTALL
304289
AC_PROG_AWK
@@ -438,6 +423,8 @@ else
438423
fi
439424
AC_SUBST(HOST_CC)
440425
AC_SUBST(BUILD_CC)
426+
AC_SUBST(BUILD_CFLAGS)
427+
AC_SUBST(BUILD_CPPFLAGS)
441428
AC_SUBST(TARGET_CC)
442429

443430
# Test the C compiler for the target environment.
@@ -985,20 +972,61 @@ enable_grub_mkfont=yes
985972
else
986973
enable_grub_mkfont=no
987974
fi
988-
if test x"$enable_grub_mkfont" = xno && test "x$platform" = xloongson; then
989-
AC_MSG_ERROR([loongson port needs grub-mkfont])
990-
fi
991975
AC_SUBST([enable_grub_mkfont])
992976
AC_SUBST([freetype_cflags])
993977
AC_SUBST([freetype_libs])
994978

995-
DJVU_FONT_SOURCE=
979+
SAVED_CC="$CC"
980+
SAVED_CFLAGS="$CFLAGS"
981+
SAVED_CPPFLAGS="$CPPFLAGS"
982+
CC="$BUILD_CC"
983+
CFLAGS="$BUILD_CFLAGS"
984+
CPPFLAGS="$SAVED_CPPFLAGS"
996985

997-
starfield_excuse=
986+
if test x"$grub_build_mkfont_excuse" = x ; then
987+
# Check for freetype libraries.
988+
AC_CHECK_TOOLS([BUILD_FREETYPE], [freetype-config])
989+
if test "x$BUILD_FREETYPE" = x ; then
990+
grub_build_mkfont_excuse=["need freetype2 library"]
991+
fi
992+
fi
998993

999-
if test x$enable_grub_mkfont = xno; then
1000-
starfield_excuse="No grub-mkfont"
994+
if test x"$grub_build_mkfont_excuse" = x ; then
995+
# Check for freetype libraries.
996+
build_freetype_cflags=`$BUILD_FREETYPE --cflags`
997+
build_freetype_libs=`$BUILD_FREETYPE --libs`
998+
SAVED_CPPFLAGS_2="$CPPFLAGS"
999+
CPPFLAGS="$CPPFLAGS $build_freetype_cflags"
1000+
AC_CHECK_HEADERS([ft2build.h], [],
1001+
[grub_build_mkfont_excuse=["need freetype2 headers"]])
1002+
CPPFLAGS="$SAVED_CPPFLAGS_2"
1003+
fi
1004+
1005+
if test x"$enable_build_grub_mkfont" = xyes && test x"$grub_build_mkfont_excuse" != x ; then
1006+
AC_MSG_ERROR([build-grub-mkfont was explicitly requested but can't be compiled])
1007+
fi
1008+
if test x"$grub_build_mkfont_excuse" = x ; then
1009+
enable_build_grub_mkfont=yes
1010+
else
1011+
enable_build_grub_mkfont=no
1012+
starfield_excuse="No build-time grub-mkfont"
1013+
FONT_SOURCE=
10011014
fi
1015+
if test x"$enable_build_grub_mkfont" = xno && ( test "x$platform" = xqemu || test "x$platform" = xloongson || test "x$platform" = xqemu_mips ); then
1016+
AC_MSG_ERROR([loongson port needs build-time grub-mkfont])
1017+
fi
1018+
1019+
AC_SUBST([build_freetype_cflags])
1020+
AC_SUBST([build_freetype_libs])
1021+
1022+
CC="$SAVED_CC"
1023+
CFLAGS="$SAVED_CFLAGS"
1024+
CPPFLAGS="$SAVED_CPPFLAGS"
1025+
1026+
1027+
DJVU_FONT_SOURCE=
1028+
1029+
starfield_excuse=
10021030

10031031
if test x"$starfield_excuse" = x; then
10041032
for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do
@@ -1017,6 +1045,28 @@ fi
10171045

10181046
AC_SUBST([DJVU_FONT_SOURCE])
10191047

1048+
FONT_SOURCE=
1049+
1050+
for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do
1051+
for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/unifont /usr/share/fonts/uni /usr/share/fonts/truetype/unifont /usr/share/fonts/misc; do
1052+
if test -f "$dir/unifont.$ext"; then
1053+
FONT_SOURCE="$dir/unifont.$ext"
1054+
break 2
1055+
fi
1056+
done
1057+
done
1058+
1059+
if test "x$FONT_SOURCE" = x && ( test "x$platform" = xqemu || test "x$platform" = xloongson || test "x$platform" = xqemu_mips ); then
1060+
AC_MSG_ERROR([qemu and loongson ports need unifont])
1061+
fi
1062+
1063+
AC_SUBST([FONT_SOURCE])
1064+
1065+
if test x"$FONT_SOURCE" = x && test x"$DJVU_FONT_SOURCE" = x; then
1066+
grub_build_mkfont_excuse="no fonts"
1067+
fi
1068+
1069+
10201070
AC_ARG_ENABLE([grub-mount],
10211071
[AS_HELP_STRING([--enable-grub-mount],
10221072
[build and install the `grub-mount' utility (default=guessed)])])
@@ -1193,6 +1243,7 @@ AM_CONDITIONAL([COND_GRUB_EMU_USB], [test x$enable_grub_emu_usb = xyes])
11931243
AM_CONDITIONAL([COND_GRUB_EMU_SDL], [test x$enable_grub_emu_sdl = xyes])
11941244
AM_CONDITIONAL([COND_GRUB_EMU_PCI], [test x$enable_grub_emu_pci = xyes])
11951245
AM_CONDITIONAL([COND_GRUB_MKFONT], [test x$enable_grub_mkfont = xyes])
1246+
AM_CONDITIONAL([COND_BUILD_GRUB_MKFONT], [test x$enable_build_grub_mkfont = xyes])
11961247
AM_CONDITIONAL([COND_GRUB_MOUNT], [test x$enable_grub_mount = xyes])
11971248
AM_CONDITIONAL([COND_HAVE_FONT_SOURCE], [test x$FONT_SOURCE != x])
11981249
AM_CONDITIONAL([COND_GRUB_PE2ELF], [test x$TARGET_OBJ2ELF != x])
@@ -1306,10 +1357,16 @@ echo With libzfs support: Yes
13061357
else
13071358
echo With libzfs support: No "($libzfs_excuse)"
13081359
fi
1309-
if test "x$FONT_SOURCE" = x ; then
1310-
echo "Without unifont"
1360+
if [ x"$build_grub_mkfont_excuse" = x ]; then
1361+
echo Build-time grub-mkfont: Yes
1362+
if test "x$FONT_SOURCE" = x ; then
1363+
echo "Without unifont"
1364+
else
1365+
echo "With unifont from $FONT_SOURCE"
1366+
fi
13111367
else
1312-
echo "With unifont from $FONT_SOURCE"
1368+
echo Build-time grub-mkfont: No "($build_grub_mkfont_excuse)"
1369+
echo "Without unifont (no build-time grub-mkfont)"
13131370
fi
13141371
if test "x$LIBLZMA" = x ; then
13151372
echo "Without liblzma (no support for XZ-compressed mips images)"

grub-core/Makefile.am

+1-8
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,9 @@ CC=$(TARGET_CC)
88
CPP=$(TARGET_CC)
99
CCAS=$(TARGET_CC)
1010

11-
if COND_GRUB_MKFONT
1211
if COND_HAVE_FONT_SOURCE
1312
TARGET_CFLAGS += -DUSE_ASCII_FALLBACK=1 -DHAVE_UNIFONT_WIDTHSPEC=1
1413
endif
15-
endif
1614

1715
MACHO2IMG=$(top_builddir)/grub-macho2img
1816

@@ -32,7 +30,7 @@ CCASFLAGS_LIBRARY += $(CCASFLAGS_PLATFORM)
3230

3331
# gentrigtables
3432
gentrigtables: gentrigtables.c
35-
$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(CPPFLAGS) $< -lm
33+
$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $< -lm
3634
CLEANFILES += gentrigtables
3735

3836
# trigtables.c
@@ -151,11 +149,6 @@ if COND_mips_qemu_mips
151149
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/keyboard_layouts.h
152150
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
153151
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/cpu/cache.h
154-
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/video.h
155-
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/video_fb.h
156-
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/gfxterm.h
157-
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/font.h
158-
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/bufio.h
159152
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/serial.h
160153
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/loader.h
161154
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h

grub-core/kern/emu/misc.c

+2
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ xstrdup (const char *str)
145145
return newstr;
146146
}
147147

148+
#ifndef GRUB_MKFONT
148149
char *
149150
xasprintf (const char *fmt, ...)
150151
{
@@ -158,6 +159,7 @@ xasprintf (const char *fmt, ...)
158159

159160
return result;
160161
}
162+
#endif
161163

162164
void
163165
grub_exit (void)

0 commit comments

Comments
 (0)