Thread

  1. BUG #1311: Can't crosscompile

    PostgreSQL Bugs List <pgsql-bugs@postgresql.org> — 2004-11-10T10:34:48Z

    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)
    
    
    
    
  2. Re: BUG #1311: Can't crosscompile

    Tom Lane <tgl@sss.pgh.pa.us> — 2004-11-10T17:33:51Z

    "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
    
    
  3. Re: BUG #1311: Can't crosscompile

    Bruce Momjian <pgman@candle.pha.pa.us> — 2004-11-29T03:17:23Z

    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