Makefile.in
author Sam Lantinga <slouken@libsdl.org>
Fri, 30 Dec 2011 14:14:45 -0500
branchSDL-1.2
changeset 6130 987c365cc7bf
parent 6117 6e6e9d549083
child 13072 eb4b37ea05f6
permissions -rw-r--r--
Fixed bug 938 - SDL fails to link in mingw+msys+libtool

Carlo Bramini 2010-01-27 10:06:17 PST
When building third party software powered by libtool (like xine-lib and
several others) under Mingw+MSys, libSDL fails to link.
I got this message when building SDL video out component of xine-lib:

*** Warning: linker path does not have real file for library -lmingw32.
*** I have the capability to make that library automatically link in when
*** you link to this library. But I can only do this if you have a
*** shared version of the library, which you do not appear to have
*** because I did check the linker path looking for a file starting
*** with libmingw32 and none of the candidates passed a file format test
*** using a file magic. Last file checked: /mingw/lib/libmingw32.a

Apparently there is no need to manually add -lmingw32 for making libSDL
working.
If this flag is removed, everything is built without troubles.
If it has been added for fixing a cross-compiler, perhaps if would be a better
idea to adjust its SPECS file in the same manner it has been done in the true
one used by mingw on Windows (I'm just guessing why it exists here).

There is also another message received on the console:

*** Warning: linker path does not have real file for library -lSDLmain.
*** I have the capability to make that library automatically link in when
*** you link to this library. But I can only do this if you have a
*** shared version of the library, which you do not appear to have
*** because I did check the linker path looking for a file starting
*** with libSDLmain and none of the candidates passed a file format test
*** using a file magic. Last file checked: /mingw/lib/libSDLmain.a

This message, like previous one, is caused by -no-undefined flag sent to
libtool when building shared libraries.
Actually adding an .la file with its dependencies solves the troubles, so I
believe it would be better to create it too in the build process of libSDL.
     1 # Makefile to build and install the SDL library
     2 
     3 top_builddir = .
     4 srcdir  = @srcdir@
     5 objects = build
     6 depend	= build-deps
     7 prefix = @prefix@
     8 exec_prefix = @exec_prefix@
     9 bindir	= @bindir@
    10 libdir  = @libdir@
    11 includedir = @includedir@
    12 datarootdir = @datarootdir@
    13 datadir	= @datadir@
    14 mandir	= @mandir@
    15 auxdir	= @ac_aux_dir@
    16 distpath = $(srcdir)/..
    17 distdir = SDL-@SDL_VERSION@
    18 distfile = $(distdir).tar.gz
    19 
    20 @SET_MAKE@
    21 SHELL	= @SHELL@
    22 CC      = @CC@
    23 INCLUDE = @INCLUDE@
    24 CFLAGS  = @BUILD_CFLAGS@
    25 EXTRA_CFLAGS = @EXTRA_CFLAGS@
    26 LDFLAGS = @BUILD_LDFLAGS@
    27 EXTRA_LDFLAGS = @EXTRA_LDFLAGS@
    28 LIBTOOL = @LIBTOOL@
    29 INSTALL = @INSTALL@
    30 NASM	= @NASM@ @NASMFLAGS@
    31 AR	= @AR@
    32 RANLIB	= @RANLIB@
    33 WINDRES	= @WINDRES@
    34 
    35 TARGET  = libSDL.la
    36 SOURCES = @SOURCES@
    37 OBJECTS = @OBJECTS@
    38 
    39 SDLMAIN_TARGET = libSDLmain.la
    40 SDLMAIN_SOURCES = @SDLMAIN_SOURCES@
    41 SDLMAIN_OBJECTS = @SDLMAIN_OBJECTS@
    42 SDLMAIN_LDFLAGS = @SDLMAIN_LDFLAGS@
    43 
    44 DIST = acinclude autogen.sh Borland.html Borland.zip BUGS build-scripts configure configure.in COPYING CREDITS CWprojects.sea.bin docs docs.html include INSTALL Makefile.dc Makefile.minimal Makefile.in MPWmake.sea.bin README* sdl-config.in sdl.m4 sdl.pc.in SDL.qpg.in SDL.spec SDL.spec.in src test TODO VisualCE VisualC.html VisualC Watcom-OS2.zip Watcom-Win32.zip symbian.zip WhatsNew Xcode
    45 
    46 HDRS = SDL.h SDL_active.h SDL_audio.h SDL_byteorder.h SDL_cdrom.h SDL_cpuinfo.h SDL_endian.h SDL_error.h SDL_events.h SDL_getenv.h SDL_joystick.h SDL_keyboard.h SDL_keysym.h SDL_loadso.h SDL_main.h SDL_mouse.h SDL_mutex.h SDL_name.h SDL_opengl.h SDL_platform.h SDL_quit.h SDL_rwops.h SDL_stdinc.h SDL_syswm.h SDL_thread.h SDL_timer.h SDL_types.h SDL_version.h SDL_video.h begin_code.h close_code.h
    47 
    48 LT_AGE      = @LT_AGE@
    49 LT_CURRENT  = @LT_CURRENT@
    50 LT_RELEASE  = @LT_RELEASE@
    51 LT_REVISION = @LT_REVISION@
    52 LT_LDFLAGS  = -no-undefined -rpath $(DESTDIR)$(libdir) -release $(LT_RELEASE) -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
    53 
    54 all: $(srcdir)/configure Makefile $(objects) $(objects)/$(TARGET) $(objects)/$(SDLMAIN_TARGET)
    55 
    56 $(srcdir)/configure: $(srcdir)/configure.in
    57 	@echo "Warning, configure.in is out of date"
    58 	#(cd $(srcdir) && sh autogen.sh && sh configure)
    59 	@sleep 3
    60 
    61 Makefile: $(srcdir)/Makefile.in
    62 	$(SHELL) config.status $@
    63 
    64 $(objects):
    65 	$(SHELL) $(auxdir)/mkinstalldirs $@
    66 
    67 .PHONY: all depend install install-bin install-hdrs install-lib install-data install-man uninstall uninstall-bin uninstall-hdrs uninstall-lib uninstall-data uninstall-man clean distclean dist
    68 depend:
    69 	@SOURCES="$(SOURCES) $(SDLMAIN_SOURCES)" INCLUDE="$(INCLUDE)" output="$(depend)" \
    70 	$(SHELL) $(auxdir)/makedep.sh
    71 
    72 include $(depend)
    73 
    74 $(objects)/$(TARGET): $(OBJECTS)
    75 	$(LIBTOOL) --mode=link $(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS)
    76 
    77 $(objects)/$(SDLMAIN_TARGET): $(SDLMAIN_OBJECTS)
    78 	$(LIBTOOL) --mode=link $(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS) $(SDLMAIN_LDFLAGS)
    79 
    80 
    81 install: all install-bin install-hdrs install-lib install-data install-man
    82 install-bin:
    83 	$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(bindir)
    84 	$(INSTALL) -m 755 sdl-config $(DESTDIR)$(bindir)/sdl-config
    85 install-hdrs:
    86 	$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(includedir)/SDL
    87 	for file in $(HDRS); do \
    88 	    $(INSTALL) -m 644 $(srcdir)/include/$$file $(DESTDIR)$(includedir)/SDL/$$file; \
    89 	done
    90 	$(INSTALL) -m 644 include/SDL_config.h $(DESTDIR)$(includedir)/SDL/SDL_config.h
    91 install-lib: $(objects) $(objects)/$(TARGET) $(objects)/$(SDLMAIN_TARGET)
    92 	$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(libdir)
    93 	$(LIBTOOL) --mode=install $(INSTALL) $(objects)/$(TARGET) $(DESTDIR)$(libdir)/$(TARGET)
    94 	$(LIBTOOL) --mode=install $(INSTALL) $(objects)/$(SDLMAIN_TARGET) $(DESTDIR)$(libdir)/$(SDLMAIN_TARGET)
    95 install-data:
    96 	$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(datadir)/aclocal
    97 	$(INSTALL) -m 644 $(srcdir)/sdl.m4 $(DESTDIR)$(datadir)/aclocal/sdl.m4
    98 	$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(libdir)/pkgconfig
    99 	$(INSTALL) -m 644 sdl.pc $(DESTDIR)$(libdir)/pkgconfig
   100 install-man:
   101 	$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(mandir)/man3
   102 	for src in $(srcdir)/docs/man3/*.3; do \
   103 	    file=`echo $$src | sed -e 's|^.*/||'`; \
   104 	    $(INSTALL) -m 644 $$src $(DESTDIR)$(mandir)/man3/$$file; \
   105 	done
   106 
   107 uninstall: uninstall-bin uninstall-hdrs uninstall-lib uninstall-data uninstall-man
   108 uninstall-bin:
   109 	rm -f $(DESTDIR)$(bindir)/sdl-config
   110 uninstall-hdrs:
   111 	for file in $(HDRS); do \
   112 	    rm -f $(DESTDIR)$(includedir)/SDL/$$file; \
   113 	done
   114 	rm -f $(DESTDIR)$(includedir)/SDL/SDL_config.h
   115 	-rmdir $(DESTDIR)$(includedir)/SDL
   116 uninstall-lib:
   117 	$(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$(TARGET)
   118 	$(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$(SDLMAIN_TARGET)
   119 uninstall-data:
   120 	rm -f $(DESTDIR)$(datadir)/aclocal/sdl.m4
   121 	rm -f $(DESTDIR)$(libdir)/pkgconfig/sdl.pc
   122 uninstall-man:
   123 	for src in $(srcdir)/docs/man3/*.3; do \
   124 	    file=`echo $$src | sed -e 's|^.*/||'`; \
   125 	    rm -f $(DESTDIR)$(mandir)/man3/$$file; \
   126 	done
   127 
   128 clean:
   129 	rm -rf $(objects)
   130 	if test -f test/Makefile; then (cd test; $(MAKE) $@); fi
   131 
   132 distclean: clean
   133 	rm -f Makefile include/SDL_config.h sdl-config
   134 	rm -f SDL.qpg
   135 	rm -f config.status config.cache config.log libtool $(depend)
   136 	rm -rf $(srcdir)/autom4te*
   137 	rm -rf $(srcdir)/test/autom4te*
   138 	find $(srcdir) \( \
   139 	    -name '*~' -o \
   140 	    -name '*.bak' -o \
   141 	    -name '*.old' -o \
   142 	    -name '*.rej' -o \
   143 	    -name '*.orig' -o \
   144 	    -name '.#*' \) \
   145 	    -exec rm -f {} \;
   146 	cp $(srcdir)/include/SDL_config.h.default $(srcdir)/include/SDL_config.h
   147 	if test -f test/Makefile; then (cd test; $(MAKE) $@); fi
   148 
   149 dist $(distfile):
   150 	$(SHELL) $(auxdir)/mkinstalldirs $(distdir)
   151 	tar cf - $(DIST) | (cd $(distdir); tar xf -)
   152 	cp $(distdir)/include/SDL_config.h.default $(distdir)/include/SDL_config.h
   153 	rm -rf `find $(distdir) -name .svn`
   154 	rm -rf $(distdir)/test/autom4te*
   155 	find $(distdir) \( \
   156 	    -name '*~' -o \
   157 	    -name '*.bak' -o \
   158 	    -name '*.old' -o \
   159 	    -name '*.rej' -o \
   160 	    -name '*.orig' -o \
   161 	    -name '.#*' \) \
   162 	    -exec rm -f {} \;
   163 	if test -f $(distdir)/test/Makefile; then (cd $(distdir)/test && make distclean); fi
   164 	tar cvf - $(distdir) | gzip --best >$(distfile)
   165 	rm -rf $(distdir)
   166 
   167 rpm: $(distfile)
   168 	rpmbuild -ta $?
   169 
   170 # Create a SVN snapshot that people can run update on
   171 snapshot:
   172 	svn co http://svn.libsdl.org/branches/SDL-1.2
   173 	(cd SDL-1.2 && ./autogen.sh && rm -rf autom4te.cache)
   174 	cp SDL-1.2/include/SDL_config.h.default SDL-1.2/include/SDL_config.h
   175 	tar zcf $(HOME)/SDL-1.2.tar.gz SDL-1.2
   176 	rm -f $(HOME)/SDL-1.2.zip
   177 	zip -r $(HOME)/SDL-1.2.zip SDL-1.2
   178 	rm -rf SDL-1.2