Makefile.in
author Sam Lantinga <slouken@libsdl.org>
Wed, 09 Aug 2017 19:03:10 -0700
changeset 11210 c92070a96da5
parent 11206 946452867513
child 11245 283194179512
permissions -rw-r--r--
Fixed bug 3651 - CMake build does not install CMake package configuration

tschwinger@elitemail.org

Most ironically, although autoconf/automake-based builds install (pretty half-assed) CMake package configuration files, they're missing in installations resulting from CMake-based builds entirely.

A proper configuration file typically also loads target exports (implemented in patch 3572, also fixing this issue - see my comment on that issue for details).

I believe it would be best to let the dinosaurs go extinct and redirect all build efforts to the CMake end for two reasons:

1. It potentially provides the best user experience, but you'd have to give it some love and ship with less quirky buildfiles.

2. It would force distros to build SDL via CMake and thus would ensure target exports are actually available everywhere.

Various CMake patches I submitted today in summary (directly converted from the HG commits and `am`d onto a fork of a git mirror that happened to be on `tip`).

https://github.com/tschw/SDL/commits/patched

Fixing #2576 #3572, #3613, and this fresh ticket, which is almost entirely advertisement ;).

These already do to make SDL much less of a quirky fella to have in your dependency tree...
     1 # Makefile to build and install the SDL library
     2 
     3 top_builddir = .
     4 srcdir  = @srcdir@
     5 objects = build
     6 gen = gen
     7 prefix = @prefix@
     8 exec_prefix = @exec_prefix@
     9 bindir	= @bindir@
    10 libdir  = @libdir@
    11 includedir = @includedir@
    12 datarootdir = @datarootdir@
    13 datadir	= @datadir@
    14 auxdir	= @ac_aux_dir@
    15 distpath = $(srcdir)/..
    16 distdir = SDL2-@SDL_VERSION@
    17 distfile = $(distdir).tar.gz
    18 
    19 @SET_MAKE@
    20 SHELL	= @SHELL@
    21 CC      = @CC@
    22 INCLUDE = @INCLUDE@
    23 CFLAGS  = @BUILD_CFLAGS@
    24 EXTRA_CFLAGS = @EXTRA_CFLAGS@
    25 LDFLAGS = @BUILD_LDFLAGS@
    26 EXTRA_LDFLAGS = @EXTRA_LDFLAGS@
    27 LIBTOOL = @LIBTOOL@
    28 INSTALL = @INSTALL@
    29 AR	= @AR@
    30 RANLIB	= @RANLIB@
    31 WINDRES	= @WINDRES@
    32 
    33 TARGET  = libSDL2.la
    34 OBJECTS = @OBJECTS@
    35 GEN_HEADERS = @GEN_HEADERS@
    36 GEN_OBJECTS = @GEN_OBJECTS@
    37 VERSION_OBJECTS = @VERSION_OBJECTS@
    38 
    39 SDLMAIN_TARGET = libSDL2main.a
    40 SDLMAIN_OBJECTS = @SDLMAIN_OBJECTS@
    41 
    42 SDLTEST_TARGET = libSDL2_test.a
    43 SDLTEST_OBJECTS = @SDLTEST_OBJECTS@
    44 
    45 WAYLAND_SCANNER = @WAYLAND_SCANNER@
    46 
    47 SRC_DIST = *.txt acinclude Android.mk autogen.sh android-project build-scripts cmake cmake_uninstall.cmake.in configure configure.in debian docs include Makefile.* sdl2-config.cmake.in sdl2-config.in sdl2.m4 sdl2.pc.in SDL2.spec.in SDL2Config.cmake src test VisualC.html VisualC VisualC-WinRT Xcode Xcode-iOS
    48 GEN_DIST = SDL2.spec
    49 
    50 ifneq ($V,1)
    51 RUN_CMD_AR     = @echo "  AR    " $@;
    52 RUN_CMD_CC     = @echo "  CC    " $@;
    53 RUN_CMD_CXX    = @echo "  CXX   " $@;
    54 RUN_CMD_LTLINK = @echo "  LTLINK" $@;
    55 RUN_CMD_RANLIB = @echo "  RANLIB" $@;
    56 RUN_CMD_GEN    = @echo "  GEN   " $@;
    57 LIBTOOL += --quiet
    58 endif
    59 
    60 HDRS = \
    61 	SDL.h \
    62 	SDL_assert.h \
    63 	SDL_atomic.h \
    64 	SDL_audio.h \
    65 	SDL_bits.h \
    66 	SDL_blendmode.h \
    67 	SDL_clipboard.h \
    68 	SDL_cpuinfo.h \
    69 	SDL_egl.h \
    70 	SDL_endian.h \
    71 	SDL_error.h \
    72 	SDL_events.h \
    73 	SDL_filesystem.h \
    74 	SDL_gamecontroller.h \
    75 	SDL_gesture.h \
    76 	SDL_haptic.h \
    77 	SDL_hints.h \
    78 	SDL_joystick.h \
    79 	SDL_keyboard.h \
    80 	SDL_keycode.h \
    81 	SDL_loadso.h \
    82 	SDL_log.h \
    83 	SDL_main.h \
    84 	SDL_messagebox.h \
    85 	SDL_mouse.h \
    86 	SDL_mutex.h \
    87 	SDL_name.h \
    88 	SDL_opengl.h \
    89 	SDL_opengl_glext.h \
    90 	SDL_opengles.h \
    91 	SDL_opengles2_gl2ext.h \
    92 	SDL_opengles2_gl2.h \
    93 	SDL_opengles2_gl2platform.h \
    94 	SDL_opengles2.h \
    95 	SDL_opengles2_khrplatform.h \
    96 	SDL_pixels.h \
    97 	SDL_platform.h \
    98 	SDL_power.h \
    99 	SDL_quit.h \
   100 	SDL_rect.h \
   101 	SDL_render.h \
   102 	SDL_rwops.h \
   103 	SDL_scancode.h \
   104 	SDL_shape.h \
   105 	SDL_stdinc.h \
   106 	SDL_surface.h \
   107 	SDL_system.h \
   108 	SDL_syswm.h \
   109 	SDL_thread.h \
   110 	SDL_timer.h \
   111 	SDL_touch.h \
   112 	SDL_types.h \
   113 	SDL_version.h \
   114 	SDL_video.h \
   115 	begin_code.h \
   116 	close_code.h
   117 
   118 SDLTEST_HDRS = $(shell ls $(srcdir)/include | fgrep SDL_test)
   119 
   120 LT_AGE      = @LT_AGE@
   121 LT_CURRENT  = @LT_CURRENT@
   122 LT_RELEASE  = @LT_RELEASE@
   123 LT_REVISION = @LT_REVISION@
   124 LT_LDFLAGS  = -no-undefined -rpath $(DESTDIR)$(libdir) -release $(LT_RELEASE) -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
   125 
   126 all: $(srcdir)/configure Makefile $(objects) $(objects)/$(TARGET) $(objects)/$(SDLMAIN_TARGET) $(objects)/$(SDLTEST_TARGET)
   127 
   128 $(srcdir)/configure: $(srcdir)/configure.in
   129 	@echo "Warning, configure is out of date, please re-run autogen.sh"
   130 
   131 Makefile: $(srcdir)/Makefile.in
   132 	$(SHELL) config.status $@
   133 
   134 Makefile.in:;
   135 
   136 $(objects):
   137 	$(SHELL) $(auxdir)/mkinstalldirs $@
   138 
   139 update-revision:
   140 	$(SHELL) $(auxdir)/updaterev.sh
   141 
   142 .PHONY: all update-revision install install-bin install-hdrs install-lib install-data uninstall uninstall-bin uninstall-hdrs uninstall-lib uninstall-data clean distclean dist $(OBJECTS:.lo=.d)
   143 
   144 $(objects)/$(TARGET): $(GEN_HEADERS) $(GEN_OBJECTS) $(OBJECTS) $(VERSION_OBJECTS)
   145 	$(RUN_CMD_LTLINK)$(LIBTOOL) --tag=CC --mode=link $(CC) -o $@ $(OBJECTS) $(GEN_OBJECTS) $(VERSION_OBJECTS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS)
   146 
   147 $(objects)/$(SDLMAIN_TARGET): $(SDLMAIN_OBJECTS)
   148 	$(RUN_CMD_AR)$(AR) cru $@ $(SDLMAIN_OBJECTS)
   149 	$(RUN_CMD_RANLIB)$(RANLIB) $@
   150 
   151 $(objects)/$(SDLTEST_TARGET): $(SDLTEST_OBJECTS)
   152 	$(RUN_CMD_AR)$(AR) cru $@ $(SDLTEST_OBJECTS)
   153 	$(RUN_CMD_RANLIB)$(RANLIB) $@
   154 
   155 install: all install-bin install-hdrs install-lib install-data
   156 install-bin:
   157 	$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(bindir)
   158 	$(INSTALL) -m 755 sdl2-config $(DESTDIR)$(bindir)/sdl2-config
   159 install-hdrs: update-revision
   160 	$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(includedir)/SDL2
   161 	for file in $(HDRS) $(SDLTEST_HDRS); do \
   162 	    $(INSTALL) -m 644 $(srcdir)/include/$$file $(DESTDIR)$(includedir)/SDL2/$$file; \
   163 	done
   164 	$(INSTALL) -m 644 include/SDL_config.h $(DESTDIR)$(includedir)/SDL2/SDL_config.h
   165 	if test -f include/SDL_revision.h; then \
   166 	    $(INSTALL) -m 644 include/SDL_revision.h $(DESTDIR)$(includedir)/SDL2/SDL_revision.h; \
   167 	else \
   168 	    $(INSTALL) -m 644 $(srcdir)/include/SDL_revision.h $(DESTDIR)$(includedir)/SDL2/SDL_revision.h; \
   169 	fi
   170 
   171 install-lib: $(objects) $(objects)/$(TARGET) $(objects)/$(SDLMAIN_TARGET) $(objects)/$(SDLTEST_TARGET)
   172 	$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(libdir)
   173 	$(LIBTOOL) --mode=install $(INSTALL) $(objects)/$(TARGET) $(DESTDIR)$(libdir)/$(TARGET)
   174 	$(INSTALL) -m 644 $(objects)/$(SDLMAIN_TARGET) $(DESTDIR)$(libdir)/$(SDLMAIN_TARGET)
   175 	$(RANLIB) $(DESTDIR)$(libdir)/$(SDLMAIN_TARGET)
   176 	$(INSTALL) -m 644 $(objects)/$(SDLTEST_TARGET) $(DESTDIR)$(libdir)/$(SDLTEST_TARGET)
   177 	$(RANLIB) $(DESTDIR)$(libdir)/$(SDLTEST_TARGET)
   178 install-data:
   179 	$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(datadir)/aclocal
   180 	$(INSTALL) -m 644 $(srcdir)/sdl2.m4 $(DESTDIR)$(datadir)/aclocal/sdl2.m4
   181 	$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(libdir)/pkgconfig
   182 	$(INSTALL) -m 644 sdl2.pc $(DESTDIR)$(libdir)/pkgconfig
   183 	$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(libdir)/cmake/SDL2
   184 	$(INSTALL) -m 644 sdl2-config.cmake $(DESTDIR)$(libdir)/cmake/SDL2
   185 
   186 uninstall: uninstall-bin uninstall-hdrs uninstall-lib uninstall-data
   187 uninstall-bin:
   188 	rm -f $(DESTDIR)$(bindir)/sdl2-config
   189 uninstall-hdrs:
   190 	for file in $(HDRS) $(SDLTEST_HDRS); do \
   191 	    rm -f $(DESTDIR)$(includedir)/SDL2/$$file; \
   192 	done
   193 	rm -f $(DESTDIR)$(includedir)/SDL2/SDL_config.h
   194 	rm -f $(DESTDIR)$(includedir)/SDL2/SDL_revision.h
   195 	-rmdir $(DESTDIR)$(includedir)/SDL2
   196 uninstall-lib:
   197 	$(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$(TARGET)
   198 	rm -f $(DESTDIR)$(libdir)/$(SDLMAIN_TARGET)
   199 	rm -f $(DESTDIR)$(libdir)/$(SDLTEST_TARGET)
   200 uninstall-data:
   201 	rm -f $(DESTDIR)$(datadir)/aclocal/sdl2.m4
   202 	rm -f $(DESTDIR)$(libdir)/pkgconfig/sdl2.pc
   203 	rm -f $(DESTDIR)$(libdir)/cmake/SDL2/sdl2-config.cmake
   204 
   205 clean:
   206 	rm -rf $(objects)
   207 	rm -rf $(gen)
   208 	if test -f test/Makefile; then (cd test; $(MAKE) $@); fi
   209 
   210 distclean: clean
   211 	rm -f Makefile Makefile.rules sdl2-config
   212 	rm -f config.status config.cache config.log libtool
   213 	rm -rf $(srcdir)/autom4te*
   214 	find $(srcdir) \( \
   215 	    -name '*~' -o \
   216 	    -name '*.bak' -o \
   217 	    -name '*.old' -o \
   218 	    -name '*.rej' -o \
   219 	    -name '*.orig' -o \
   220 	    -name '.#*' \) \
   221 	    -exec rm -f {} \;
   222 	if test -f test/Makefile; then (cd test; $(MAKE) $@); fi
   223 
   224 dist $(distfile):
   225 	$(SHELL) $(auxdir)/mkinstalldirs $(distdir)
   226 	(cd $(srcdir); tar cf - $(SRC_DIST)) | (cd $(distdir); tar xf -)
   227 	tar cf - $(GEN_DIST) | (cd $(distdir); tar xf -)
   228 	find $(distdir) \( \
   229 	    -name '*~' -o \
   230 	    -name '*.bak' -o \
   231 	    -name '*.old' -o \
   232 	    -name '*.rej' -o \
   233 	    -name '*.orig' -o \
   234 	    -name '.#*' \) \
   235 	    -exec rm -f {} \;
   236 	if test -f $(distdir)/test/Makefile; then (cd $(distdir)/test && make distclean); fi
   237 	(cd $(distdir); build-scripts/updaterev.sh)
   238 	tar cvf - $(distdir) | gzip --best >$(distfile)
   239 	rm -rf $(distdir)
   240 
   241 rpm: $(distfile)
   242 	rpmbuild -ta $?