summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile421
1 files changed, 421 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..792e779
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,421 @@
+#!gmake
+## The OpenGL Extension Wrangler Library
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002, Lev Povalahev
+## All rights reserved.
+##
+## Redistribution and use in source and binary forms, with or without
+## modification, are permitted provided that the following conditions are met:
+##
+## * Redistributions of source code must retain the above copyright notice,
+## this list of conditions and the following disclaimer.
+## * Redistributions in binary form must reproduce the above copyright notice,
+## this list of conditions and the following disclaimer in the documentation
+## and/or other materials provided with the distribution.
+## * The name of the author may be used to endorse or promote products
+## derived from this software without specific prior written permission.
+##
+## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+## AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+## ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+## LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+## CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+## SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+## INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+## CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+## ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+## THE POSSIBILITY OF SUCH DAMAGE.
+
+include config/version
+
+SHELL = /bin/sh
+SYSTEM ?= $(shell config/config.guess | cut -d - -f 3 | sed -e 's/[0-9\.]//g;')
+SYSTEM.SUPPORTED = $(shell test -f config/Makefile.$(SYSTEM) && echo 1)
+
+ifeq ($(SYSTEM.SUPPORTED), 1)
+include config/Makefile.$(SYSTEM)
+else
+$(error "Platform '$(SYSTEM)' not supported")
+endif
+
+GLEW_PREFIX ?= /usr
+GLEW_DEST ?= /usr
+BINDIR ?= $(GLEW_DEST)/bin
+LIBDIR ?= $(GLEW_DEST)/lib
+INCDIR ?= $(GLEW_DEST)/include/GL
+
+ifneq ($(GLEW_NO_GLU), -DGLEW_NO_GLU)
+LIBGLU = glu
+endif
+
+DIST_NAME ?= glew-$(GLEW_VERSION)
+DIST_SRC_ZIP ?= $(shell pwd)/$(DIST_NAME).zip
+DIST_SRC_TGZ ?= $(shell pwd)/$(DIST_NAME).tgz
+DIST_WIN32 ?= $(shell pwd)/$(DIST_NAME)-win32.zip
+
+DIST_DIR := $(shell mktemp -d /tmp/glew.XXXXXX)/$(DIST_NAME)
+
+# To disable stripping of binaries either:
+# - use STRIP= on gmake command-line
+# - edit this makefile to set STRIP to the empty string
+#
+# To disable symlinks:
+# - use LN= on gmake command-line
+
+AR ?= ar
+ARFLAGS ?= cr
+INSTALL ?= install
+STRIP ?= strip
+RM ?= rm -f
+LN ?= ln -sf
+
+ifneq (,$(filter debug,$(MAKECMDGOALS)))
+OPT = -g
+else
+OPT = $(POPT)
+endif
+INCLUDE = -Iinclude
+CFLAGS = $(OPT) $(WARN) $(INCLUDE) $(CFLAGS.EXTRA)
+
+all debug: glew.lib glew.lib.mx glew.bin
+
+# GLEW shared and static libraries
+
+LIB.LDFLAGS := $(LDFLAGS.EXTRA) $(LDFLAGS.GL)
+LIB.LIBS := $(GL_LDFLAGS)
+
+LIB.SRCS := src/glew.c
+LIB.SRCS.NAMES := $(notdir $(LIB.SRCS))
+
+LIB.OBJS := $(addprefix tmp/$(SYSTEM)/default/static/,$(LIB.SRCS.NAMES))
+LIB.OBJS := $(LIB.OBJS:.c=.o)
+LIB.SOBJS := $(addprefix tmp/$(SYSTEM)/default/shared/,$(LIB.SRCS.NAMES))
+LIB.SOBJS := $(LIB.SOBJS:.c=.o)
+
+LIB.OBJS.MX := $(addprefix tmp/$(SYSTEM)/mx/static/,$(LIB.SRCS.NAMES))
+LIB.OBJS.MX := $(LIB.OBJS.MX:.c=.o)
+LIB.SOBJS.MX := $(addprefix tmp/$(SYSTEM)/mx/shared/,$(LIB.SRCS.NAMES))
+LIB.SOBJS.MX := $(LIB.SOBJS.MX:.c=.o)
+
+glew.lib: lib lib/$(LIB.SHARED) lib/$(LIB.STATIC) glew.pc
+
+lib:
+ mkdir lib
+
+lib/$(LIB.STATIC): $(LIB.OBJS)
+ifneq ($(AR),)
+ $(AR) $(ARFLAGS) $@ $^
+else ifneq ($(LIBTOOL),)
+ $(LIBTOOL) $@ $^
+endif
+ifneq ($(STRIP),)
+ $(STRIP) -x $@
+endif
+
+lib/$(LIB.SHARED): $(LIB.SOBJS)
+ $(LD) $(LDFLAGS.SO) -o $@ $^ $(LIB.LDFLAGS) $(LIB.LIBS)
+ifneq ($(LN),)
+ $(LN) $(LIB.SHARED) lib/$(LIB.SONAME)
+ $(LN) $(LIB.SHARED) lib/$(LIB.DEVLNK)
+endif
+ifneq ($(STRIP),)
+ $(STRIP) -x $@
+endif
+
+tmp/$(SYSTEM)/default/static/glew.o: src/glew.c include/GL/glew.h include/GL/wglew.h include/GL/glxew.h
+ @mkdir -p $(dir $@)
+ $(CC) -DGLEW_NO_GLU -DGLEW_STATIC $(CFLAGS) $(CFLAGS.SO) -o $@ -c $<
+
+tmp/$(SYSTEM)/default/shared/glew.o: src/glew.c include/GL/glew.h include/GL/wglew.h include/GL/glxew.h
+ @mkdir -p $(dir $@)
+ $(CC) -DGLEW_NO_GLU -DGLEW_BUILD $(CFLAGS) $(CFLAGS.SO) -o $@ -c $<
+
+# Force re-write of glew.pc, GLEW_DEST can vary
+
+.PHONY: glew.pc
+
+glew.pc: glew.pc.in
+ sed \
+ -e "s|@prefix@|$(GLEW_PREFIX)|g" \
+ -e "s|@libdir@|$(LIBDIR)|g" \
+ -e "s|@exec_prefix@|$(BINDIR)|g" \
+ -e "s|@includedir@|$(INCDIR)|g" \
+ -e "s|@version@|$(GLEW_VERSION)|g" \
+ -e "s|@cflags@||g" \
+ -e "s|@libname@|$(NAME)|g" \
+ -e "s|@requireslib@|$(LIBGLU)|g" \
+ < $< > $@
+
+# GLEW MX static and shared libraries
+
+glew.lib.mx: lib lib/$(LIB.SHARED.MX) lib/$(LIB.STATIC.MX) glewmx.pc
+
+lib/$(LIB.STATIC.MX): $(LIB.OBJS.MX)
+ifneq ($(AR),)
+ $(AR) $(ARFLAGS) $@ $^
+else ifneq ($(LIBTOOL),)
+ $(LIBTOOL) $@ $^
+endif
+ifneq ($(STRIP),)
+ $(STRIP) -x $@
+endif
+
+lib/$(LIB.SHARED.MX): $(LIB.SOBJS.MX)
+ $(LD) $(LDFLAGS.SO.MX) -o $@ $^ $(LIB.LDFLAGS) $(LIB.LIBS)
+ifneq ($(LN),)
+ $(LN) $(LIB.SHARED.MX) lib/$(LIB.SONAME.MX)
+ $(LN) $(LIB.SHARED.MX) lib/$(LIB.DEVLNK.MX)
+endif
+ifneq ($(STRIP),)
+ $(STRIP) -x $@
+endif
+
+tmp/$(SYSTEM)/mx/static/glew.o: src/glew.c include/GL/glew.h include/GL/wglew.h include/GL/glxew.h
+ @mkdir -p $(dir $@)
+ $(CC) -DGLEW_NO_GLU -DGLEW_MX -DGLEW_STATIC $(CFLAGS) $(CFLAGS.SO) -o $@ -c $<
+
+tmp/$(SYSTEM)/mx/shared/glew.o: src/glew.c include/GL/glew.h include/GL/wglew.h include/GL/glxew.h
+ @mkdir -p $(dir $@)
+ $(CC) -DGLEW_NO_GLU -DGLEW_MX -DGLEW_BUILD $(CFLAGS) $(CFLAGS.SO) -o $@ -c $<
+
+# Force re-write of glewmx.pc, GLEW_DEST can vary
+
+.PHONY: glewmx.pc
+
+glewmx.pc: glew.pc.in
+ sed \
+ -e "s|@prefix@|$(GLEW_PREFIX)|g" \
+ -e "s|@libdir@|$(LIBDIR)|g" \
+ -e "s|@exec_prefix@|$(BINDIR)|g" \
+ -e "s|@includedir@|$(INCDIR)|g" \
+ -e "s|@version@|$(GLEW_VERSION)|g" \
+ -e "s|@cflags@|-DGLEW_MX|g" \
+ -e "s|@libname@|$(NAME)mx|g" \
+ -e "s|@requireslib@|$(LIBGLU)|g" \
+ < $< > $@
+
+# GLEW utility programs
+
+BIN.LIBS = -Llib $(LDFLAGS.DYNAMIC) -l$(NAME) $(LDFLAGS.EXTRA) $(LDFLAGS.GL)
+
+GLEWINFO.BIN := glewinfo$(BIN.SUFFIX)
+GLEWINFO.BIN.SRC := src/glewinfo.c
+GLEWINFO.BIN.OBJ := $(addprefix tmp/$(SYSTEM)/default/shared/,$(notdir $(GLEWINFO.BIN.SRC)))
+GLEWINFO.BIN.OBJ := $(GLEWINFO.BIN.OBJ:.c=.o)
+
+VISUALINFO.BIN := visualinfo$(BIN.SUFFIX)
+VISUALINFO.BIN.SRC := src/visualinfo.c
+VISUALINFO.BIN.OBJ := $(addprefix tmp/$(SYSTEM)/default/shared/,$(notdir $(VISUALINFO.BIN.SRC)))
+VISUALINFO.BIN.OBJ := $(VISUALINFO.BIN.OBJ:.c=.o)
+
+# Don't build glewinfo or visualinfo for NaCL, yet.
+
+ifneq ($(filter nacl%,$(SYSTEM)),)
+glew.bin: glew.lib bin
+else
+glew.bin: glew.lib bin bin/$(GLEWINFO.BIN) bin/$(VISUALINFO.BIN)
+endif
+
+bin:
+ mkdir bin
+
+bin/$(GLEWINFO.BIN): $(GLEWINFO.BIN.OBJ) lib/$(LIB.SHARED)
+ $(CC) $(CFLAGS) -o $@ $(GLEWINFO.BIN.OBJ) $(BIN.LIBS)
+ifneq ($(STRIP),)
+ $(STRIP) -x $@
+endif
+
+bin/$(VISUALINFO.BIN): $(VISUALINFO.BIN.OBJ) lib/$(LIB.SHARED)
+ $(CC) $(CFLAGS) -o $@ $(VISUALINFO.BIN.OBJ) $(BIN.LIBS)
+ifneq ($(STRIP),)
+ $(STRIP) -x $@
+endif
+
+$(GLEWINFO.BIN.OBJ): $(GLEWINFO.BIN.SRC) include/GL/glew.h include/GL/wglew.h include/GL/glxew.h
+ @mkdir -p $(dir $@)
+ $(CC) -DGLEW_NO_GLU $(CFLAGS) $(CFLAGS.SO) -o $@ -c $<
+
+$(VISUALINFO.BIN.OBJ): $(VISUALINFO.BIN.SRC) include/GL/glew.h include/GL/wglew.h include/GL/glxew.h
+ @mkdir -p $(dir $@)
+ $(CC) -DGLEW_NO_GLU $(CFLAGS) $(CFLAGS.SO) -o $@ -c $<
+
+# Install targets
+
+install.all: install install.mx install.bin
+
+install: install.include install.lib install.pkgconfig
+
+install.mx: install.include install.lib.mx install.pkgconfig.mx
+
+install.lib: glew.lib
+ $(INSTALL) -d -m 0755 "$(DESTDIR)$(LIBDIR)"
+# runtime
+ifeq ($(filter-out mingw% cygwin,$(SYSTEM)),)
+ $(INSTALL) -d -m 0755 "$(DESTDIR)$(BINDIR)"
+ $(INSTALL) -m 0755 lib/$(LIB.SHARED) "$(DESTDIR)$(BINDIR)/"
+else
+ $(INSTALL) -m 0644 lib/$(LIB.SHARED) "$(DESTDIR)$(LIBDIR)/"
+endif
+ifneq ($(LN),)
+ $(LN) $(LIB.SHARED) "$(DESTDIR)$(LIBDIR)/$(LIB.SONAME)"
+endif
+
+# development files
+ifeq ($(filter-out mingw% cygwin,$(SYSTEM)),)
+ $(INSTALL) -m 0644 lib/$(LIB.DEVLNK) "$(DESTDIR)$(LIBDIR)/"
+endif
+ifneq ($(LN),)
+ $(LN) $(LIB.SHARED) "$(DESTDIR)$(LIBDIR)/$(LIB.DEVLNK)"
+endif
+ $(INSTALL) -m 0644 lib/$(LIB.STATIC) "$(DESTDIR)$(LIBDIR)/"
+
+install.lib.mx: glew.lib.mx
+ $(INSTALL) -d -m 0755 "$(DESTDIR)$(LIBDIR)"
+# runtime
+ifeq ($(filter-out mingw% cygwin,$(SYSTEM)),)
+ $(INSTALL) -d -m 0755 "$(DESTDIR)$(BINDIR)"
+ $(INSTALL) -m 0755 lib/$(LIB.SHARED.MX) "$(DESTDIR)$(BINDIR)/"
+else
+ $(INSTALL) -m 0644 lib/$(LIB.SHARED.MX) "$(DESTDIR)$(LIBDIR)/"
+endif
+ifneq ($(LN),)
+ $(LN) $(LIB.SHARED.MX) "$(DESTDIR)$(LIBDIR)/$(LIB.SONAME.MX)"
+endif
+# development files
+ifeq ($(filter-out mingw% cygwin,$(SYSTEM)),)
+ $(INSTALL) -m 0644 lib/$(LIB.DEVLNK.MX) "$(DESTDIR)$(LIBDIR)/"
+endif
+ifneq ($(LN),)
+ $(LN) $(LIB.SHARED.MX) "$(DESTDIR)$(LIBDIR)/$(LIB.DEVLNK.MX)"
+endif
+ $(INSTALL) -m 0644 lib/$(LIB.STATIC.MX) "$(DESTDIR)$(LIBDIR)/"
+
+install.bin: glew.bin
+ $(INSTALL) -d -m 0755 "$(DESTDIR)$(BINDIR)"
+ $(INSTALL) -s -m 0755 bin/$(GLEWINFO.BIN) bin/$(VISUALINFO.BIN) "$(DESTDIR)$(BINDIR)/"
+
+install.include:
+ $(INSTALL) -d -m 0755 "$(DESTDIR)$(INCDIR)"
+ $(INSTALL) -m 0644 include/GL/wglew.h "$(DESTDIR)$(INCDIR)/"
+ $(INSTALL) -m 0644 include/GL/glew.h "$(DESTDIR)$(INCDIR)/"
+ $(INSTALL) -m 0644 include/GL/glxew.h "$(DESTDIR)$(INCDIR)/"
+
+install.pkgconfig: glew.pc
+ $(INSTALL) -d -m 0755 "$(DESTDIR)$(LIBDIR)"
+ $(INSTALL) -d -m 0755 "$(DESTDIR)$(LIBDIR)/pkgconfig"
+ $(INSTALL) -m 0644 glew.pc "$(DESTDIR)$(LIBDIR)/pkgconfig/"
+
+install.pkgconfig.mx: glewmx.pc
+ $(INSTALL) -d -m 0755 "$(DESTDIR)$(LIBDIR)"
+ $(INSTALL) -d -m 0755 "$(DESTDIR)$(LIBDIR)/pkgconfig"
+ $(INSTALL) -m 0644 glewmx.pc "$(DESTDIR)$(LIBDIR)/pkgconfig/"
+
+uninstall:
+ $(RM) "$(DESTDIR)$(INCDIR)/wglew.h"
+ $(RM) "$(DESTDIR)$(INCDIR)/glew.h"
+ $(RM) "$(DESTDIR)$(INCDIR)/glxew.h"
+ $(RM) "$(DESTDIR)$(LIBDIR)/$(LIB.DEVLNK)" "$(DESTDIR)$(LIBDIR)/$(LIB.DEVLNK.MX)"
+ifeq ($(filter-out mingw% cygwin,$(SYSTEM)),)
+ $(RM) "$(DESTDIR)$(BINDIR)/$(LIB.SHARED)" "$(DESTDIR)$(BINDIR)/$(LIB.SHARED.MX)"
+else
+ $(RM) "$(DESTDIR)$(LIBDIR)/$(LIB.SONAME)" "$(DESTDIR)$(LIBDIR)/$(LIB.SONAME.MX)"
+ $(RM) "$(DESTDIR)$(LIBDIR)/$(LIB.SHARED)" "$(DESTDIR)$(LIBDIR)/$(LIB.SHARED.MX)"
+endif
+ $(RM) "$(DESTDIR)$(LIBDIR)/$(LIB.STATIC)" "$(DESTDIR)$(LIBDIR)/$(LIB.STATIC.MX)"
+ $(RM) "$(DESTDIR)$(BINDIR)/$(GLEWINFO.BIN)" "$(DESTDIR)$(BINDIR)/$(VISUALINFO.BIN)"
+
+clean:
+ $(RM) -r tmp/
+ $(RM) -r lib/
+ $(RM) -r bin/
+ $(RM) glew.pc glewmx.pc
+
+distclean: clean
+ find . -name \*~ | xargs $(RM)
+ find . -name .\*.sw\? | xargs $(RM)
+
+# Distributions
+
+dist-win32:
+ $(RM) -r $(DIST_DIR)
+ mkdir -p $(DIST_DIR)
+ cp -a include $(DIST_DIR)
+ cp -a doc $(DIST_DIR)
+ cp -a *.txt $(DIST_DIR)
+ cp -a bin $(DIST_DIR)
+ cp -a lib $(DIST_DIR)
+ $(RM) -f $(DIST_DIR)/bin/*/*/*.pdb $(DIST_DIR)/bin/*/*/*.exp
+ $(RM) -f $(DIST_DIR)/bin/*/*/glewinfo-*.exe $(DIST_DIR)/bin/*/*/visualinfo-*.exe
+ $(RM) -f $(DIST_DIR)/lib/*/*/*.pdb $(DIST_DIR)/lib/*/*/*.exp
+ unix2dos $(DIST_DIR)/include/GL/*.h
+ unix2dos $(DIST_DIR)/doc/*.txt
+ unix2dos $(DIST_DIR)/doc/*.html
+ unix2dos $(DIST_DIR)/*.txt
+ rm -f $(DIST_WIN32)
+ cd $(DIST_DIR)/.. && zip -rv9 $(DIST_WIN32) $(DIST_NAME)
+ $(RM) -r $(DIST_DIR)
+
+dist-src:
+ $(RM) -r $(DIST_DIR)
+ mkdir -p $(DIST_DIR)
+ mkdir -p $(DIST_DIR)/bin
+ mkdir -p $(DIST_DIR)/lib
+ cp -a auto $(DIST_DIR)
+ $(RM) -Rf $(DIST_DIR)/auto/registry
+ cp -a build $(DIST_DIR)
+ cp -a config $(DIST_DIR)
+ cp -a src $(DIST_DIR)
+ cp -a doc $(DIST_DIR)
+ cp -a include $(DIST_DIR)
+ cp -a *.txt $(DIST_DIR)
+ cp -a Makefile $(DIST_DIR)
+ cp -a glew.pc.in $(DIST_DIR)
+ find $(DIST_DIR) -name '*.o' | xargs $(RM) -r
+ find $(DIST_DIR) -name '*~' | xargs $(RM) -r
+ find $(DIST_DIR) -name CVS -o -name .cvsignore | xargs $(RM) -r
+ find $(DIST_DIR) -name .svn | xargs $(RM) -r
+ find $(DIST_DIR) -name "*.patch" | xargs $(RM) -r
+ dos2unix $(DIST_DIR)/Makefile
+ dos2unix $(DIST_DIR)/auto/Makefile
+ dos2unix $(DIST_DIR)/config/*
+ unix2dos $(DIST_DIR)/auto/core/*
+ unix2dos $(DIST_DIR)/auto/extensions/*
+ find $(DIST_DIR) -name '*.h' | xargs unix2dos
+ find $(DIST_DIR) -name '*.c' | xargs unix2dos
+ find $(DIST_DIR) -name '*.txt' | xargs unix2dos
+ find $(DIST_DIR) -name '*.html' | xargs unix2dos
+ find $(DIST_DIR) -name '*.css' | xargs unix2dos
+ find $(DIST_DIR) -name '*.sh' | xargs unix2dos
+ find $(DIST_DIR) -name '*.pl' | xargs unix2dos
+ find $(DIST_DIR) -name 'Makefile' | xargs unix2dos
+ find $(DIST_DIR) -name '*.in' | xargs unix2dos
+ find $(DIST_DIR) -name '*.pm' | xargs unix2dos
+ find $(DIST_DIR) -name '*.rc' | xargs unix2dos
+ rm -f $(DIST_SRC_ZIP)
+ cd $(DIST_DIR)/.. && zip -rv9 $(DIST_SRC_ZIP) $(DIST_NAME)
+ dos2unix $(DIST_DIR)/Makefile
+ dos2unix $(DIST_DIR)/auto/Makefile
+ dos2unix $(DIST_DIR)/config/*
+ dos2unix $(DIST_DIR)/auto/core/*
+ dos2unix $(DIST_DIR)/auto/extensions/*
+ find $(DIST_DIR) -name '*.h' | xargs dos2unix
+ find $(DIST_DIR) -name '*.c' | xargs dos2unix
+ find $(DIST_DIR) -name '*.txt' | xargs dos2unix
+ find $(DIST_DIR) -name '*.html' | xargs dos2unix
+ find $(DIST_DIR) -name '*.css' | xargs dos2unix
+ find $(DIST_DIR) -name '*.sh' | xargs dos2unix
+ find $(DIST_DIR) -name '*.pl' | xargs dos2unix
+ find $(DIST_DIR) -name 'Makefile' | xargs dos2unix
+ find $(DIST_DIR) -name '*.in' | xargs dos2unix
+ find $(DIST_DIR) -name '*.pm' | xargs dos2unix
+ find $(DIST_DIR) -name '*.rc' | xargs dos2unix
+ rm -f $(DIST_SRC_TGZ)
+ cd $(DIST_DIR)/.. && env GZIP=-9 tar cvzf $(DIST_SRC_TGZ) $(DIST_NAME)
+ $(RM) -r $(DIST_DIR)
+
+extensions:
+ $(MAKE) -C auto
+
+.PHONY: clean distclean tardist dist-win32 dist-src