1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
|
# file: dll.mak
# description: Build VLFeat DLL
# author: Andrea Vedaldi
# Copyright (C) 2007-12 Andrea Vedaldi and Brian Fulkerson.
# All rights reserved.
#
# This file is part of the VLFeat library and is made available under
# the terms of the BSD license (see the COPYING file).
all: dll-all
clean: dll-clean
archclean: dll-archclean
distclean: dll-distclean
info: dll-info
# --------------------------------------------------------------------
# Configuration
# --------------------------------------------------------------------
DLL_NAME = vl
API_VERSION := 0
DLL_CFLAGS = $(STD_CFLAGS)
DLL_CFLAGS += -fvisibility=hidden -fPIC -DVL_BUILD_DLL -pthread
DLL_CFLAGS += $(call if-like,%_sse2,$*, $(if $(DISABLE_SSE2),,-msse2))
DLL_CFLAGS += $(call if-like,%_avx,$*, $(if $(DISABLE_AVX),,-mavx))
DLL_CFLAGS += $(if $(DISABLE_OPENMP),,-fopenmp)
DLL_LDFLAGS = $(STD_LDFLAGS)
DLL_LDFLAGS += -lm -lpthread
BINDIR = bin/$(ARCH)
DLL_SUFFIX := so
# --------------------------------------------------------------------
# Build
# --------------------------------------------------------------------
# On Mac OS X the library install_name is prefixed with @loader_path/.
# At run time this causes the loader to search for a local copy of the
# library for any binary which is linked against it. The install_name
# can be modified later by install_name_tool.
dll_tgt := $(BINDIR)/lib$(DLL_NAME).$(DLL_SUFFIX)
dll_src := $(wildcard $(VLDIR)/vl/*.c)
dll_hdr := $(wildcard $(VLDIR)/vl/*.h)
dll_obj := $(addprefix $(BINDIR)/objs/, $(notdir $(dll_src:.c=.o)))
dll_dep := $(dll_obj:.o=.d)
arch_bins += $(dll_tgt)
comm_bins +=
deps += $(dll_dep)
.PHONY: dll
.PHONY: dll-all dll-clean dll-archclean dll-distclean
.PHONY: dll-info
no_dep_targets += dll-dir dll-clean dll-archclean dll-distclean
no_dep_targets += dll-info
dll-all: dll
dll: $(dll_tgt)
# generate the dll-dir target
$(eval $(call gendir, dll, $(BINDIR) $(BINDIR)/objs))
$(BINDIR)/objs/%.o : $(VLDIR)/vl/%.c $(dll-dir)
$(call C,CC) $(DLL_CFLAGS) \
-c "$(<)" -o "$(@)"
$(BINDIR)/objs/%.d : $(VLDIR)/vl/%.c $(dll-dir)
$(call C,CC) $(DLL_CFLAGS) \
-M -MT '$(BINDIR)/objs/$*.o $(BINDIR)/objs/$*.d' \
"$(<)" -MF "$(@)"
$(BINDIR)/lib$(DLL_NAME).dylib : $(dll_obj)
$(call C,CC) -m64 \
-dynamiclib \
-undefined suppress \
-flat_namespace \
-install_name @loader_path/lib$(DLL_NAME).dylib \
-compatibility_version $(VER) \
-current_version $(VER) \
-isysroot $(SDKROOT) \
-mmacosx_version_min=$(MACOSX_DEPLOYMENT_TARGET) \
$(DLL_LDFLAGS) \
$(if $(DISABLE_OPENMP),,-fopenmp) \
$^ \
-o $@
$(BINDIR)/lib$(DLL_NAME).so : $(dll_obj)
$(call C,CC) -shared \
$(^) \
$(DLL_LDFLAGS) \
$(if $(DISABLE_OPENMP),,-fopenmp) \
-Wl,-soname,lib$(DLL_NAME).so.$(API_VERSION) \
-o $(@)
dll-clean:
rm -f $(dll_dep) $(dll_obj)
dll-archclean: dll-clean
rm -rf $(BINDIR)
dll-distclean:
rm -rf bin
dll-info:
$(call echo-title,VLFeat core library)
$(call dump-var,dll_hdr)
$(call dump-var,dll_src)
$(call dump-var,dll_obj)
$(call dump-var,dll_dep)
$(call echo-var,BINDIR)
$(call echo-var,DLL_NAME)
$(call echo-var,DLL_CFLAGS)
$(call echo-var,DLL_LDFLAGS)
$(call echo-var,DLL_SUFFIX)
$(call echo-var,LIBTOOL)
@echo
# Local variables:
# mode: Makefile
# End:
|