mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-23 04:42:47 +00:00
199 lines
4 KiB
Makefile
199 lines
4 KiB
Makefile
#!/usr/bin/env make -f
|
|
|
|
## libwad: Doom WAD format interface library.
|
|
## Copyright (C) 2011 by Callum Dickinson.
|
|
#
|
|
## This program is free software; you can redistribute it and/or
|
|
## modify it under the terms of the GNU General Public License
|
|
## as published by the Free Software Foundation; either version 2
|
|
## of the License, or (at your option) any later version.
|
|
#
|
|
## This program is distributed in the hope that it will be useful,
|
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
## GNU General Public License for more details.
|
|
|
|
# Library name.
|
|
LIBNAME = wad
|
|
# Library version.
|
|
LIBVERM = 1
|
|
LIBVER = $(LIBVERM).0.0
|
|
|
|
# Library default options.
|
|
CPPFLAGS += -DLIBNAME="$(LIBNAME)" -DLIBVER="$(LIBVER)"
|
|
|
|
# Source files and directory.
|
|
SRCDIR = src
|
|
SRC = $(SRCDIR)/wad.c $(SRCDIR)/lump.c $(SRCDIR)/wad_static.c
|
|
|
|
# Compiled files directory.
|
|
BINDIR = bin
|
|
INCDIR = include
|
|
|
|
#
|
|
## Variables that shouldn't be edited unless
|
|
## you know what you are doing start here.
|
|
#
|
|
|
|
# Makefile pretty text output variables.
|
|
PRAR = AR
|
|
PRCC = CC
|
|
PRINSTALL = INSTALL
|
|
PRCLEAN = CLEAN
|
|
|
|
# Library name prefix.
|
|
LIBPFX = lib
|
|
|
|
# Library installation directory.
|
|
PREFIX ?= /usr/local
|
|
LIBDIR := $(PREFIX)/lib
|
|
INCLUDE := $(PREFIX)/include
|
|
|
|
# Variables created during compilation.
|
|
OBJ = $(SRC:.c=.o)
|
|
DEP = $(BINDIR)/$(LIBPFX)$(LIBNAME).d
|
|
ifdef MINGW
|
|
DEFN = $(LIBNAME).def
|
|
LIBN = $(LIBPFX)$(LIBNAME).lib
|
|
BIN = $(BINDIR)/$(LIBPFX)$(LIBNAME)-$(LIBVERM).dll
|
|
else
|
|
SONAME = $(LIBPFX)$(LIBNAME).so.$(LIBVERM)
|
|
BIN = $(BINDIR)/$(LIBPFX)$(LIBNAME).so.$(LIBVER)
|
|
endif
|
|
STABIN = $(BINDIR)/$(LIBPFX)$(LIBNAME).a
|
|
|
|
# Compilation programs.
|
|
ECHO := echo
|
|
RM := $(RM) -r
|
|
FIND := find
|
|
GREP := grep
|
|
INSTALL := install -m 644
|
|
MKDIR := mkdir -p
|
|
FOR := for
|
|
SED := sed
|
|
AR := $(CROSS_COMPILE)$(AR)
|
|
CC := $(CROSS_COMPILE)$(CC)
|
|
|
|
# Shell programs.
|
|
SHECHO := $(ECHO)
|
|
SHFIND := $(FIND)
|
|
SHGREP := $(GREP)
|
|
SHINSTALL := $(INSTALL)
|
|
SHSED := $(SED)
|
|
SHCC := $(CC)
|
|
|
|
# Quiet compiling programs during pretty text output.
|
|
ECHO := @$(ECHO)
|
|
ifndef V
|
|
RM := @$(RM)
|
|
LDCONFIG := @$(LDCONFIG)
|
|
FIND := @$(FIND)
|
|
GREP := @$(GREP)
|
|
INSTALL := @$(INSTALL)
|
|
MKDIR := @$(MKDIR)
|
|
FOR := @$(FOR)
|
|
SED := @$(SED)
|
|
AR := @$(AR)
|
|
CC := @$(CC)
|
|
endif
|
|
|
|
LIBS = $(BIN) $(STABIN)
|
|
HEADERS = $(shell $(SHFIND) $(CURDIR) | $(SHGREP) -e "$(INCDIR)/.*.h" | $(SHGREP) -v ".svn" | $(SHSED) "s:$(CURDIR)/::")
|
|
|
|
# Compiler default flags.
|
|
ifndef MINGW
|
|
CFLAGS += -fPIC
|
|
LDFLAGS += -fPIC
|
|
endif
|
|
ifdef DEBUG
|
|
CFLAGS += -g $(M5) -O0 -Wall
|
|
endif
|
|
|
|
# Linker flags.
|
|
LDFLAGS += -shared
|
|
ifdef MINGW
|
|
LDFLAGS += -Wl,--output-def,$(DEFN),--out-implib,$(LIBN)
|
|
else
|
|
LDFLAGS += -Wl,-soname,$(SONAME)
|
|
endif
|
|
|
|
#
|
|
## Makefile targets.
|
|
#
|
|
|
|
# all is dependent on $(BIN) to be complete
|
|
all: $(DEP) $(BIN) $(STABIN)
|
|
|
|
# $(EXE) is dependent on all of the files in $(OBJ) to exist
|
|
$(DEP): $(SRC)
|
|
ifndef V
|
|
$(ECHO) " $(PRCC)$@"
|
|
endif
|
|
-$(MKDIR) $(BINDIR) > /dev/null 2>&1
|
|
-$(RM) $@
|
|
$(FOR) f in $(SRC); do \
|
|
$(SHCC) $(CPPFLAGS) $(CFLAGS) -MM $$f >> $@; \
|
|
done
|
|
-include $@
|
|
|
|
%.o: %.c
|
|
ifndef V
|
|
$(ECHO) " $(PRCC)$@"
|
|
endif
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
|
|
|
|
$(BIN): $(OBJ)
|
|
ifndef V
|
|
$(ECHO) " $(PRCC)$@"
|
|
endif
|
|
$(CC) $(LDFLAGS) -o $@ $(OBJ) $(LIB)
|
|
|
|
$(STABIN): $(OBJ)
|
|
ifndef V
|
|
$(ECHO) " $(PRAR)$@"
|
|
endif
|
|
$(AR) rcs $@ $(OBJ)
|
|
|
|
install: all install-libs install-headers
|
|
|
|
install-libs:
|
|
$(MKDIR) $(LIBDIR)
|
|
ifndef V
|
|
$(FOR) f in $(LIBS); do \
|
|
$(SHECHO) " $(PRINSTALL)$$f"; \
|
|
$(SHINSTALL) $$f $(LIBDIR); \
|
|
done
|
|
else
|
|
$(FOR) f in $(LIBS); do \
|
|
$(SHINSTALL) $$f $(LIBDIR); \
|
|
done
|
|
endif
|
|
$(LDCONFIG)
|
|
|
|
install-headers:
|
|
$(MKDIR) $(INCLUDE)
|
|
ifndef V
|
|
$(FOR) f in $(HEADERS); do \
|
|
$(SHECHO) " $(PRINSTALL)$$f"; \
|
|
$(SHINSTALL) $$f $(INCLUDE); \
|
|
done
|
|
else
|
|
$(FOR) f in $(HEADERS); do \
|
|
$(SHINSTALL) $$f $(INCLUDE); \
|
|
done
|
|
endif
|
|
|
|
clean:
|
|
ifndef V
|
|
$(ECHO) " $(PRCLEAN)$(OBJ) $(LIBS)"
|
|
endif
|
|
-$(RM) $(OBJ) $(LIBS)
|
|
|
|
distclean:
|
|
ifndef V
|
|
$(ECHO) " $(PRCLEAN)$(BINDIR)"
|
|
endif
|
|
-$(RM) $(BINDIR)
|
|
|
|
|
|
.PHONY : all install install-libs install-headers clean
|