Files
CoolProp/wrappers/Lua/lualib.mk

91 lines
3.4 KiB
Makefile

# Lua pkg-config utilities for GNU Make.
# Copyright (c) 2013-2015, Craig Barnes.
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-include local.mk
CC ?= gcc
LDFLAGS ?= $(if $(ISDARWIN), -bundle -undefined dynamic_lookup, -shared)
XLDFLAGS += $(if $(ISLINUX), $(NOASNEEDED))
NOASNEEDED = -Wl,--no-as-needed
PKGCONFIG ?= pkg-config --silence-errors 2>/dev/null
MKDIR ?= mkdir -p
INSTALL ?= install -p -m 0644
INSTALLX ?= install -p -m 0755
RM ?= rm -f
LUA ?= $(or $(LUA_WHICH), $(error No Lua interpreter found))
PC_EXISTS = $(PKGCONFIG) --exists $(1) && echo $(1)
FIND_PC = $(shell for P in $(1); do $(call PC_EXISTS, $$P) && break; done)
EQUAL = $(and $(findstring $(1),$(2)),$(findstring $(2),$(1)))
UNAME = $(shell uname)
ISDARWIN = $(call EQUAL, $(UNAME), Darwin)
ISLINUX = $(call EQUAL, $(UNAME), Linux)
CCOPTIONS = $(XCFLAGS) $(CPPFLAGS) $(CFLAGS)
LDOPTIONS = $(XLDFLAGS) $(LDFLAGS) $(LDLIBS)
# The naming of Lua pkg-config files across distributions is a mess:
# - Fedora and Arch use lua.pc
# - Debian uses lua5.2.pc and lua5.1.pc
# - OpenBSD ports uses lua52.pc and lua51.pc
# - FreeBSD uses lua-5.2.pc and lua-5.1.pc
LUA_NAMES = lua52 lua5.2 lua-5.2 lua51 lua5.1 lua-5.1 lua luajit
LUA_WHICH = $(firstword $(shell which $(_LUA_PC) $(LUA_NAMES) 2>/dev/null))
LUA_PC ?= $(or \
$(call FIND_PC, $(LUA_NAMES)), \
$(error No pkg-config file found for Lua) \
)
# The $(LUA_PC) variable may be set to a non-existant name via the
# command-line, so we must check that it exists (possibly twice).
_LUA_PC = $(or \
$(shell $(call PC_EXISTS, $(LUA_PC))), \
$(error No pkg-config file found with name '$(LUA_PC)') \
)
# Some distros put the Lua headers in versioned sub-directories
# and thus require extra CFLAGS
LUA_CFLAGS ?= $(shell $(PKGCONFIG) --cflags $(_LUA_PC))
# Some pkg-config files have convenient variables for module paths
LUA_PC_LMOD = $(shell $(PKGCONFIG) --variable=INSTALL_LMOD $(_LUA_PC))
LUA_PC_CMOD = $(shell $(PKGCONFIG) --variable=INSTALL_CMOD $(_LUA_PC))
# Others force us to piece them together from parts...
LUA_PREFIX ?= $(shell $(PKGCONFIG) --variable=prefix $(_LUA_PC))
LUA_LIBDIR ?= $(shell $(PKGCONFIG) --variable=libdir $(_LUA_PC))
LUA_INCDIR ?= $(shell $(PKGCONFIG) --variable=includedir $(_LUA_PC))
LUA_VERSION ?= $(shell $(PKGCONFIG) --modversion $(_LUA_PC) | grep -o '^.\..')
LUA_LMOD_DIR ?= $(strip $(if $(LUA_PC_LMOD), $(LUA_PC_LMOD), \
$(LUA_PREFIX)/share/lua/$(LUA_VERSION)))
LUA_CMOD_DIR ?= $(strip $(if $(LUA_PC_CMOD), $(LUA_PC_CMOD), \
$(LUA_LIBDIR)/lua/$(LUA_VERSION)))
LUA_HEADERS ?= $(addprefix $(LUA_INCDIR)/, lua.h lauxlib.h)
%.so: %.o
$(CC) $(LDOPTIONS) -o $@ $<
%.o: %.c
$(CC) $(CCOPTIONS) -c -o $@ $<
.DELETE_ON_ERROR:
.SECONDARY: