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 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
|
# where are the sources? (automatically filled in by configure script)
srcdir=.
# these values filled in by "yorick -batch make.i" or configure script
Y_MAKEDIR=
Y_EXE=
Y_EXE_PKGS=
Y_EXE_HOME=
Y_EXE_SITE=
Y_HOME_PKG=
# ----------------------------------------------------- optimization flags
# options for make command line, e.g.- make COPT=-g TGT=exe
COPT=$(COPT_DEFAULT)
TGT=$(DEFAULT_TGT)
# ------------------------------------------------ macros for this package
PKG_NAME=ygsl
PKG_I=${srcdir}/gsl.i
OBJS=ygsl.o
# change to give the executable a name other than yorick
PKG_EXENAME=yorick
PREFIX=/usr/local
# PKG_DEPLIBS=-Lsomedir -lsomelib for dependencies of this package
PKG_DEPLIBS= -L$(PREFIX)/lib -lgsl -lgslcblas
# set compiler (or rarely loader) flags specific to this package
PKG_CFLAGS= -I$(PREFIX)/include
PKG_LDFLAGS=
# list of additional package names you want in PKG_EXENAME
# (typically $(Y_EXE_PKGS) should be first here)
EXTRA_PKGS=$(Y_EXE_PKGS)
# list of additional files for clean
PKG_CLEAN= cmp.tmp1 cmp.tmp2
# autoload file for this package, if any
PKG_I_START=${srcdir}/gsl-start.i
# non-pkg.i include files for this package, if any
PKG_I_EXTRA=
RELEASE_FILES = AUTHORS LICENSE Makefile NEWS README.md \
configure gsl.i gsl-start.i ygsl.c
RELEASE_NAME = $(PKG_NAME)-$(RELEASE_VERSION).tar.bz2
# -------------------------------- standard targets and rules (in Makepkg)
# set macros Makepkg uses in target and dependency names
# DLL_TARGETS, LIB_TARGETS, EXE_TARGETS
# are any additional targets (defined below) prerequisite to
# the plugin library, archive library, and executable, respectively
PKG_I_DEPS=$(PKG_I)
Y_DISTMAKE=distmake
ifeq (,$(strip $(Y_MAKEDIR)))
$(info *** WARNING: Y_MAKEDIR not defined, you may run 'yorick -batch make.i' first)
else
include $(Y_MAKEDIR)/Make.cfg
include $(Y_MAKEDIR)/Makepkg
include $(Y_MAKEDIR)/Make$(TGT)
endif
# override macros Makepkg sets for rules and other macros
# see comments in Y_HOME/Makepkg for a list of possibilities
# if this package built with mpy: 1. be sure mpy appears in EXTRA_PKGS,
# 2. set TGT=exe, and 3. uncomment following two lines
# Y_MAIN_O=$(Y_LIBEXE)/mpymain.o
# include $(Y_MAKEDIR)/Makempy
# configure script for this package may produce make macros:
# include output-makefile-from-package-configure
# reduce chance of yorick-1.5 corrupting this Makefile
MAKE_TEMPLATE = protect-against-1.5
# ------------------------------------- targets and rules for this package
# Dummy default target in case Y_MAKEDIR was not defined:
dummy-default:
@echo >&2 "*** ERROR: Y_MAKEDIR not defined, aborting..."; false
%.o: ${srcdir}/%.c
$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -c $<
# simple example:
#myfunc.o: myapi.h
# more complex example (also consider using PKG_CFLAGS above):
#myfunc.o: myapi.h myfunc.c
# $(CC) $(CPPFLAGS) $(CFLAGS) -DMY_SWITCH -o $@ -c myfunc.c
cmp-sf:
grep 'FN.gsl_sf' <${srcdir}/ygsl.c \
| sed 's/FN//g;s/[^0-9A-Za-z_]/ /g;s/ */\n/g;' \
| sort -u >cmp.tmp1
grep '^[ ]*extern[ ]' <${srcdir}/gsl.i \
| sed 's/extern//g;s/[^0-9A-Za-z_]/ /g;s/ */\n/g;' \
| grep 'gsl_sf_' \
| sort -u >cmp.tmp2
diff -B cmp.tmp1 cmp.tmp2
release: $(RELEASE_NAME)
$(RELEASE_NAME):
@if test "x$(RELEASE_VERSION)" = "x"; then \
echo >&2 "set package version: make RELEASE_VERSION=... release"; \
else \
dir=`basename "$(RELEASE_NAME)" .tar.bz2`; \
if test "x$$dir" = "x" -o "x$$dir" = "x."; then \
echo >&2 "bad directory name for archive"; \
elif test -d "$$dir"; then \
echo >&2 "directory $$dir already exists"; \
else \
mkdir -p "$$dir"; \
for file in $(RELEASE_FILES); do \
src="$(srcdir)/$$file"; \
dst="$$dir/$$file"; \
if test "$$file" = "Makefile"; then \
sed <"$$src" >"$$dst" -e 's/^\( *Y_\(MAKEDIR\|EXE\(\|_PKGS\|_HOME\|_SITE\)\|HOME_PKG\) *=\).*/\1/'; \
touch -r "$$src" "$$dst"; \
else \
cp -p "$$src" "$$dst"; \
fi; \
done; \
rm -f "$$dir"/*~ "$$dir"/*/*~; \
echo "$(RELEASE_VERSION)" > "$$dir/VERSION"; \
tar jcf "$(RELEASE_NAME)" "$$dir"; \
rm -rf "$$dir"; \
echo "$(RELEASE_NAME) created"; \
fi; \
fi;
.PHONY: clean release
# -------------------------------------------------------- end of Makefile
|