BUG #1311: Can't crosscompile

Started by PostgreSQL Bugs Listover 21 years ago3 messagesbugs
Jump to latest
#1PostgreSQL Bugs List
pgsql-bugs@postgresql.org

The following bug has been logged online:

Bug reference: 1311
Logged by: Bernhard Rosenkraenzer

Email address: bero@arklinux.org

PostgreSQL version: 8.0 Beta

Operating system: Ark Linux

Description: Can't crosscompile

Details:

Hi,
8.0.0beta4 can't be crosscompiled (I know that's hardly mainstream usage --
but I need the client libs on a PDA) because it tries to run the zic binary
it generated for the target platform rather than the build platform.

Quick and dirty [and not really portable] patch:

--- postgresql-8.0.0beta4/src/timezone/Makefile.ark     2004-11-10 
06:59:27.000000000 +0100 
+++ postgresql-8.0.0beta4/src/timezone/Makefile 2004-11-10 
07:01:21.000000000 +0100 
@@ -13,12 +13,14 @@
 include $(top_builddir)/src/Makefile.global
 override CPPFLAGS := $(CPPFLAGS)
+HOST_CC := gcc
+HOST_CFLAGS := $(CFLAGS)

# files to build into backend
OBJS= localtime.o strftime.o pgtz.o

 # files needed to build zic utility program
-ZICOBJS= zic.o ialloc.o scheck.o localtime.o
+ZICSOURCES= zic.c ialloc.c scheck.c localtime.c

# timezone data files
TZDATA := africa antarctica asia australasia europe northamerica
southamerica \
@@ -30,8 +32,8 @@
SUBSYS.o: $(OBJS)
$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)

-zic: $(ZICOBJS)
-       $(CC) $(CFLAGS) $(ZICOBJS) $(LDFLAGS) $(LIBS) -o $@$(X)
+zic: $(ZICSOURCES)
+       $(HOST_CC) $(HOST_CFLAGS) $(CPPFLAGS) $(ZICSOURCES) $(LDFLAGS) 
$(LIBS) -o $@$(X) 

install: all installdirs
./zic -d $(DESTDIR)$(datadir)/timezone $(TZDATAFILES)

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: PostgreSQL Bugs List (#1)
Re: BUG #1311: Can't crosscompile

"PostgreSQL Bugs List" <pgsql-bugs@postgresql.org> writes:

Quick and dirty [and not really portable] patch:

s/not really/not at all/

AFAICS this would take some fairly significant surgery in configure to
even have a prayer of working --- there's no reason to assume that the
host compiler has the same flags as the cross-compiler, for example.

An even bigger issue is that the files generated by zic might not be
machine-independent --- I haven't looked closely but they certainly
are binary data. If they are dependent on endianness or sizeof(int)
or whatever then this approach won't work at all.

In a cross-compile situation it'd probably be better to install the zic
executable and then run it later on the target system to generate the
timezone data files. Not sure what sort of makefile hacking might be
needed to bring this into the realm of possibility.

regards, tom lane

#3Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#2)
Re: BUG #1311: Can't crosscompile

Added to TODO list:

* Allow cross-compiling by generating the zic database on the
target system

---------------------------------------------------------------------------

Tom Lane wrote:

"PostgreSQL Bugs List" <pgsql-bugs@postgresql.org> writes:

Quick and dirty [and not really portable] patch:

s/not really/not at all/

AFAICS this would take some fairly significant surgery in configure to
even have a prayer of working --- there's no reason to assume that the
host compiler has the same flags as the cross-compiler, for example.

An even bigger issue is that the files generated by zic might not be
machine-independent --- I haven't looked closely but they certainly
are binary data. If they are dependent on endianness or sizeof(int)
or whatever then this approach won't work at all.

In a cross-compile situation it'd probably be better to install the zic
executable and then run it later on the target system to generate the
timezone data files. Not sure what sort of makefile hacking might be
needed to bring this into the realm of possibility.

regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faqs/FAQ.html

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073