This info is a fix for a "FIXME" in gcc-4_2-branch/libobjc/Makefile.in

To create libobjc.dll a fix to
/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/Makefile, is needed. This
makefile is created from gcc-4_2-branch/libobjc/Makefile.in


There is no author name or e-mail given but these words are enclosed in the
file:

#
# FIXME -- The following part does not fit in the libtool context. 
# Libtool is supposed to [going to] be able to create a win 32 DLL 
# without extra code but since I don't have a win machine to test 
# if it already works, I leave the old code here.
#


#Origonal:
#
libobjc_s.a: libobjc.la
        mv libobjc.a libobjc_s.a

# Create a relocatable DLL
libobjc.dll: libobjc_s.a libobjc_entry.o
        $(CC) -mdll -Wl,--base-file -Wl,libobjc.base \
                -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32
        $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \
                --base-file libobjc.base --output-exp libobjc.exp
        $(GCC_FOR_TARGET) -mdll -Wl,--base-file libobjc.base libobjc.exp \
                -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32
        $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \
                --base-file libobjc.base --output-exp libobjc.exp
        $(GCC_FOR_TARGET) libobjc.exp -mdll \
                -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32
        $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \
                --output-lib libobjc.a
#
#


#New: (change "mv" to "cp ./libs" and add 3 -lobjc 's
#
libobjc_s.a: libobjc.la
        cp .libs/libobjc.a libobjc_s.a
#       mv libobjc.a libobjc_s.a

# Create a relocatable DLL
libobjc.dll: libobjc_s.a libobjc_entry.o
        $(CC) -mdll -Wl,--base-file -Wl,libobjc.base \
                -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32 -lobjc
        $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \
                --base-file libobjc.base --output-exp libobjc.exp
        $(GCC_FOR_TARGET) -mdll -Wl,--base-file libobjc.base libobjc.exp \
                -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32 -lobjc
        $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \
                --base-file libobjc.base --output-exp libobjc.exp
        $(GCC_FOR_TARGET) libobjc.exp -mdll \
                -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32 -lobjc
        $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \
                --output-lib libobjc.a
#
#


Then, use these commands to run make and create libobjc_entry.o and
libobjc.dll:

cd /cygdrive/c/gcc-4_2-branch-build/athlon_xp-pc-cygwin/libobjc
make libobjc_entry.lo
make -i -k libobjc.dll DLLTOOL=dlltool
GCC_FOR_TARGET="/cygdrive/c/gcc-4_2-branch-build/gcc/xgcc
-B/cygdrive/c/cygwin/lib/gcc/athlon_xp-pc-cygwin/4.1.1/
-B/cygdrive/c/gcc-4_2-branch-build/gcc/ -B/usr/athlon_xp-pc-cygwin/bin/
-B/usr/athlon_xp-pc-cygwin/lib/ -isystem /usr/athlon_xp-pc-cygwin/include
-isystem /usr/athlon_xp-pc-cygwin/sys-include"


Result (which is likely to be different depending on your initial ./configure
and CFLAGS:

/bin/sh ./libtool --mode=compile /cygdrive/c/gcc-4_2-branch-build/./gcc/xgcc
-B/cygdrive/c/gcc-4_2-branch-build/./gcc/ -B/usr/athlon_xp-pc-cygwin/bin/
-B/usr/athlon_xp-pc-cygwin/lib/ -isystem /usr/athlon_xp-pc-cygwin/include
-isystem /usr/athlon_xp-pc-cygwin/sys-include -c -I.
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc -I/usr/include -I/include
-I/usr/local/include  -O2 -march=athlon-xp -ffast-math -mfancy-math-387 -mmmx
-m3dnow -msse -msse2 -msse3 -mfpmath=sse,387 -pipe -mthreads
-fno-eliminate-unused-debug-types  -W -Wall -Wwrite-strings -Wstrict-prototypes
-DIN_GCC -DIN_TARGET_LIBS -fno-strict-aliasing -fexceptions
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/objc 
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/../gcc
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/../gcc/config -I../.././gcc
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/../include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/../boehm-gc/include
-I../boehm-gc/include
/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/libobjc_entry.c

/cygdrive/c/gcc-4_2-branch-build/./gcc/xgcc
-B/cygdrive/c/gcc-4_2-branch-build/./gcc/ -B/usr/athlon_xp-pc-cygwin/bin/
-B/usr/athlon_xp-pc-cygwin/lib/ -isystem /usr/athlon_xp-pc-cygwin/include
-isystem /usr/athlon_xp-pc-cygwin/sys-include -c -I.
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc -I/usr/include -I/include
-I/usr/local/include -O2 -march=athlon-xp -ffast-math -mfancy-math-387 -mmmx
-m3dnow -msse -msse2 -msse3 -mfpmath=sse,387 -pipe -mthreads
-fno-eliminate-unused-debug-types -W -Wall -Wwrite-strings -Wstrict-prototypes
-DIN_GCC -DIN_TARGET_LIBS -fno-strict-aliasing -fexceptions
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/objc
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/../gcc
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/../gcc/config -I../.././gcc
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/../include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/../boehm-gc/include
-I../boehm-gc/include
/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/libobjc_entry.c -o
libobjc_entry.o

/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/libobjc_entry.c: In function
'DllMain':
/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/libobjc_entry.c:34: warning:
unused parameter 'hInst'
/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/libobjc_entry.c:35: warning:
unused parameter 'lpReserved'


/cygdrive/c/gcc-4_2-branch-build/./gcc/xgcc
-B/cygdrive/c/gcc-4_2-branch-build/./gcc/ -B/usr/athlon_xp-pc-cygwin/bin/
-B/usr/athlon_xp-pc-cygwin/lib/ -isystem /usr/athlon_xp-pc-cygwin/include
-isystem /usr/athlon_xp-pc-cygwin/sys-include -mdll -Wl,--base-file
-Wl,libobjc.base \
                -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32 -lobjc
dlltool --dllname libobjc.dll --def
/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/libobjc.def \
                --base-file libobjc.base --output-exp libobjc.exp
/cygdrive/c/gcc-4_2-branch-build/gcc/xgcc
-B/cygdrive/c/cygwin/lib/gcc/athlon_xp-pc-cygwin/4.1.1/
-B/cygdrive/c/gcc-4_2-branch-build/gcc/ -B/usr/athlon_xp-pc-cygwin/bin/
-B/usr/athlon_xp-pc-cygwin/lib/ -isystem /usr/athlon_xp-pc-cygwin/include
-isystem /usr/athlon_xp-pc-cygwin/sys-include -mdll -Wl,--base-file
libobjc.base libobjc.exp \
                -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32 -lobjc
dlltool --dllname libobjc.dll --def
/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/libobjc.def \
                --base-file libobjc.base --output-exp libobjc.exp
/cygdrive/c/gcc-4_2-branch-build/gcc/xgcc
-B/cygdrive/c/cygwin/lib/gcc/athlon_xp-pc-cygwin/4.1.1/
-B/cygdrive/c/gcc-4_2-branch-build/gcc/ -B/usr/athlon_xp-pc-cygwin/bin/
-B/usr/athlon_xp-pc-cygwin/lib/ -isystem /usr/athlon_xp-pc-cygwin/include
-isystem /usr/athlon_xp-pc-cygwin/sys-include libobjc.exp -mdll \
                -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32 -lobjc
dlltool --dllname libobjc.dll --def
/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/libobjc.def \
                --output-lib libobjc.a


Note: You DO need to define DLLTOOL and GCC_FOR_TARGET since neither is defined
and you MUST use
      4.1.1's libobjc.a since 4.2.0's libobjc.a does not seem to have the
"hash_*" functions.

      Failing to add "-B/cygdrive/c/cygwin/lib/gcc/athlon_xp-pc-cygwin/4.1.1/"
(or wherever
      the gcc 4.1.1 libobjc.a file is on YOUR system) gives these errors:

libobjc.exp:fake:(.edata+0xb0): undefined reference to `_hash_add'
libobjc.exp:fake:(.edata+0xb4): undefined reference to `_hash_delete'
libobjc.exp:fake:(.edata+0xb8): undefined reference to `_hash_is_key_in_hash'
libobjc.exp:fake:(.edata+0xbc): undefined reference to `_hash_new'
libobjc.exp:fake:(.edata+0xc0): undefined reference to `_hash_next'
libobjc.exp:fake:(.edata+0xc4): undefined reference to `_hash_remove'
libobjc.exp:fake:(.edata+0xc8): undefined reference to `_hash_value_for_key'

It may be an omission in the gcc-4_2-branch CVS that these functions are
unavailable. They are mentioned in the source code in file
gcc-4_2-branch/libobjc/libobjc.def and nowhere else. I imagine we need to add
these functions from 4.1.1 so 4.2.0 will be able to make this .dll .


-- 
           Summary: Fix for FIXME in gcc-4_2-branch/libobjc/Makefile.in
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Severity: minor
          Priority: P3
         Component: libobjc
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: rob1weld at aol dot com
 GCC build triplet: i686-pc-cygwin
  GCC host triplet: i686-pc-cygwin
GCC target triplet: i686-pc-cygwin


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30445

Reply via email to