]> git.cworth.org Git - glaze/blobdiff - Makefile
Add egl definitions and related buildsupport.
[glaze] / Makefile
index bd7064f04eaa3d71e6339611dc4838ea27123faf..6bdd6d42c43141149fa718775fdf6e354819444b 100644 (file)
--- a/Makefile
+++ b/Makefile
-CC     ?= gcc
-CFLAGS ?= -g
-CFLAGS += -Wall -Wextra -Wmissing-declarations -Werror=attributes
+all:
 
-TARGETS = lib64/libGL.so.1 lib32/libGL.so.1
+# Get settings from the output of configure by running it to generate
+# Makefile.config if it doesn't exist yet.
+
+# If Makefile.config doesn't exist, then srcdir won't be
+# set. Conditionally set it (assuming a plain srcdir build) so that
+# the rule to generate Makefile.config can actually work.
+srcdir ?= .
+
+include Makefile.config
+Makefile.config: $(srcdir)/configure
+ifeq ($(configure_options),)
+       @echo ""
+       @echo "Note: Calling ./configure with no command-line arguments. This is often fine,"
+       @echo "      but if you want to specify any arguments (such as an alternate prefix"
+       @echo "      into which to install), call ./configure explicitly and then make again."
+       @echo "      See \"./configure --help\" for more details."
+       @echo ""
+endif
+       $(srcdir)/configure $(configure_options)
+
+LIBGLAZE_LINKER_NAME = libglaze.so
+LIBGLAZE_SONAME = $(LIBGLAZE_LINKER_NAME).$(MAJOR)
+LIBGLAZE_LIBNAME = $(LIBGLAZE_SONAME).$(MINOR).$(RELEASE)
+
+LIBGLAZE_32_LINKER_NAME = libglaze-32.so
+LIBGLAZE_32_SONAME = $(LIBGLAZE_32_LINKER_NAME).$(MAJOR)
+LIBGLAZE_32_LIBNAME = $(LIBGLAZE_32_SONAME).$(MINOR).$(RELEASE)
+
+TARGETS = glaze $(LIBGLAZE_LINKER_NAME)
+
+SPECS = specs/gl.def specs/glx.def specs/egl.def
+
+ifeq ($(COMPILER_SUPPORTS_32),Yes)
+TARGETS += $(LIBGLAZE_32_LIBNAME)
+TARGETS += $(LIB32_DIR)/libGL.so.1
+TARGETS += glaze-find-libgl-32 glaze-find-libegl-32
+endif
+
+ifeq ($(COMPILER_SUPPORTS_64),Yes)
+TARGETS += $(LIBGLAZE_LIBNAME)
+TARGETS += $(LIB64_DIR)/libGL.so.1
+TARGETS += glaze-find-libgl-64 glaze-find-libegl-64
+endif
 
 all: $(TARGETS)
 
-lib64/libGL.so.1: glaze.c glapi.def
-       mkdir -p lib64
-       $(CC) $(CFLAGS) -m64 -fPIC -shared -Wl,-Bsymbolic -o $@ $<
+GLAZE_CFLAGS = $(CFLAGS) $(WARN_CFLAGS)
+
+glaze: glaze.c $(LIBGLAZE_LINKER_NAME)
+       $(CC) $(GLAZE_CFLAGS) -I. -L. -o $@ $< -ldl -lglaze
+
+$(LIBGLAZE_32_LIBNAME): libglaze.c
+       $(CC) $(GLAZE_CFLAGS) -m32 -fPIC -shared -Wl,--version-script=libglaze.sym,-soname=$(LIBGLAZE_SONAME) -ldl -ltalloc -o $@ $<
 
-lib32/libGL.so.1: glaze.c specs/gl.def
-       mkdir -p lib32
-       $(CC) $(CFLAGS) -m32 -fPIC -shared -Wl,-Bsymbolic -o $@ $<
+$(LIBGLAZE_LIBNAME): libglaze.c
+       $(CC) $(GLAZE_CFLAGS) -m64 -fPIC -shared -Wl,--version-script=libglaze.sym,-soname=$(LIBGLAZE_SONAME) -ldl -ltalloc -o $@ $<
+
+$(LIBGLAZE_LINKER_NAME): $(LIBGLAZE_LIBNAME)
+       ln -sf $(LIBGLAZE_LIBNAME) $@
+
+$(LIB64_DIR)/libGL.so.1: glaze-gl.c $(SPECS)
+       mkdir -p $(LIB64_DIR)
+       $(CC) $(GLAZE_CFLAGS) -DGLAZE_BITS=64 -m64 -fPIC -shared -Wl,-Bsymbolic -o $@ $<
+
+$(LIB32_DIR)/libGL.so.1: glaze-gl.c $(SPECS)
+       mkdir -p $(LIB32_DIR)
+       $(CC) $(GLAZE_CFLAGS) -DGLAZE_BITS=32 -m32 -fPIC -shared -Wl,-Bsymbolic -o $@ $<
+
+glaze-find-libgl-32: glaze-find-libgl.c
+       $(CC) $(GLAZE_CFLAGS) -m32 -fPIC -ldl -o $@ $<
+
+glaze-find-libgl-64: glaze-find-libgl.c
+       $(CC) $(GLAZE_CFLAGS) -m64 -fPIC -ldl -o $@ $<
+
+glaze-find-libegl-32: glaze-find-libegl.c
+       $(CC) $(GLAZE_CFLAGS) -m32 -fPIC -ldl -o $@ $<
+
+glaze-find-libegl-64: glaze-find-libegl.c
+       $(CC) $(GLAZE_CFLAGS) -m64 -fPIC -ldl -o $@ $<
+
+.PHONY: install
+install: all
+       mkdir -p $(DESTDIR)$(INCLUDEDIR)/glaze
+       install -m0644 glaze.h $(DESTDIR)$(INCLUDEDIR)/glaze
+       mkdir -p $(DESTDIR)$(BINDIR)
+       mkdir -p $(DESTDIR)$(LIBDIR)/pkgconfig
+       install -m0755 glaze $(DESTDIR)$(BINDIR)
+ifeq ($(COMPILER_SUPPORTS_32),Yes)
+       mkdir -p $(DESTDIR)$(LIBDIR)/glaze/$(LIB32_DIR)
+       install -m0644 $(LIB32_DIR)/libGL.so.1 $(DESTDIR)$(LIBDIR)/glaze/$(LIB32_DIR)
+       ln -sf libGL.so.1 $(DESTDIR)$(LIBDIR)/glaze/$(LIB32_DIR)/libGL.so
+       install -m0644 $(LIBGLAZE_32_LIBNAME) $(DESTDIR)$(LIBDIR)
+       ln -sf $(LIBGLAZE_32_LIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBGLAZE_32_SONAME)
+       ln -sf $(LIBGLAZE_32_LIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBGLAZE_32_LINKER_NAME)
+       install glaze-32.pc $(DESTDIR)$(LIBDIR)/pkgconfig
+       install -m0755 glaze-find-libgl-32 $(DESTDIR)$(BINDIR)
+       install -m0755 glaze-find-libegl-32 $(DESTDIR)$(BINDIR)
+endif
+ifeq ($(COMPILER_SUPPORTS_64),Yes)
+       mkdir -p $(DESTDIR)$(LIBDIR)/glaze/$(LIB64_DIR)
+       install -m0644 $(LIB64_DIR)/libGL.so.1 $(DESTDIR)$(LIBDIR)/glaze/$(LIB64_DIR)
+       ln -sf libGL.so.1 $(DESTDIR)$(LIBDIR)/glaze/$(LIB64_DIR)/libGL.so
+       install -m0644 $(LIBGLAZE_LIBNAME) $(DESTDIR)$(LIBDIR)
+       ln -sf $(LIBGLAZE_LIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBGLAZE_SONAME)
+       ln -sf $(LIBGLAZE_LIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBGLAZE_LINKER_NAME)
+       install glaze.pc $(DESTDIR)$(LIBDIR)/pkgconfig
+       install -m0755 glaze-find-libgl-64 $(DESTDIR)$(BINDIR)
+       install -m0755 glaze-find-libegl-64 $(DESTDIR)$(BINDIR)
+endif
 
 clean:
        rm -f $(TARGETS)
+
+distclean: clean
+       rm Makefile.config glaze.pc glaze-32.pc config.h
+
+.PHONY: check-syntax
+check-syntax:
+       $(CC) $(CFLAGS) -Wall -Wextra -fsyntax-only $(CHK_SOURCES)