Mercurial > pub > dyncall > bindings
comparison erlang/erldc/Makefile @ 12:079718588eb6
made erlang binding work with system *installed* dyncall:
- made build use static libraries (used .o files directly)
- removed custom flags for include path and relying on CFLAGS now
- change cc to $(CC)
- readme update with build instructions, etc.
author | cslag |
---|---|
date | Sat, 26 Mar 2016 15:55:50 +0100 |
parents | 0cfcc391201f |
children | 7752fcb107e7 |
comparison
equal
deleted
inserted
replaced
11:8070dae59227 | 12:079718588eb6 |
---|---|
1 # ERLANG_INC is used for -I, below, so add paths where it might be on linux, freebsd, etc. | |
2 ERLANG_INC=-I /usr/lib64/erlang/usr/include -I /usr/local/lib/erlang/usr/include | |
3 DYNCALL_SRC_PATH=../../../dyncall | |
4 | |
5 # Be sure to 'make clean' after changing the version | 1 # Be sure to 'make clean' after changing the version |
6 VERSION=0.1 | 2 VERSION=0.9 |
7 | 3 |
8 OUTPUTS = priv/erldc.so ebin/dyncall.beam ebin/erldc.app | 4 OUTPUTS = priv/erldc.so ebin/dyncall.beam ebin/erldc.app |
9 | 5 |
10 # Used by install target. Default empty DESTDIR is for a real install to root filesystem (/). | 6 # Used by install target. Default empty PREFIX is for a real install to root filesystem (/). |
11 # Override DESTDIR for testing or for a staged install | 7 # Override PREFIX for testing or for a staged install |
12 DESTDIR= | 8 PREFIX= |
13 ERLANG_INST_DIR=/usr/lib64/erlang | 9 ERLANG_INST_DIR=/usr/lib64/erlang |
14 | 10 |
15 all: $(OUTPUTS) | 11 all: $(OUTPUTS) |
16 | 12 |
17 priv/erldc.so: c_src/dyncallnif.c | 13 priv/erldc.so: c_src/dyncallnif.c |
18 [ -d priv ] || mkdir priv | 14 [ -d priv ] || mkdir priv |
19 cc -o $@ -fPIC -shared \ | 15 $(CC) -o $@ -shared -fPIC $(CFLAGS) -ldyncall_s c_src/dyncallnif.c |
20 $(ERLANG_INC) -I $(DYNCALL_SRC_PATH) \ | |
21 $(DYNCALL_SRC_PATH)/dyncall/*.o \ | |
22 c_src/dyncallnif.c | |
23 | 16 |
24 priv/erldc_testtargets.so: c_src/erldctesttargets.c | 17 priv/erldc_testtargets.so: c_src/erldctesttargets.c |
25 [ -d priv ] || mkdir priv | 18 [ -d priv ] || mkdir priv |
26 cc -o $@ -shared -fPIC c_src/erldctesttargets.c | 19 $(CC) -o $@ -shared -fPIC c_src/erldctesttargets.c |
27 | 20 |
28 ebin/dyncall.beam: src/dyncall.erl | 21 ebin/dyncall.beam: src/dyncall.erl |
22 [ -d ebin ] || mkdir ebin | |
29 erlc +debug_info -o ebin src/dyncall.erl | 23 erlc +debug_info -o ebin src/dyncall.erl |
30 | 24 |
31 ebin/erldc.app: src/erldc.app.src | 25 ebin/erldc.app: src/erldc.app.src |
26 [ -d ebin ] || mkdir ebin | |
32 sed -e 's/---VERSION---/$(VERSION)/' src/erldc.app.src >$@ | 27 sed -e 's/---VERSION---/$(VERSION)/' src/erldc.app.src >$@ |
33 | 28 |
34 # Dialyzer, credit to erlang.mk | 29 # Dialyzer, credit to erlang.mk |
35 DIALYZER_OPTS ?= -Werror_handling -Wrace_conditions \ | 30 DIALYZER_OPTS ?= -Werror_handling -Wrace_conditions \ |
36 -Wunmatched_returns # -Wunderspecs | 31 -Wunmatched_returns # -Wunderspecs |
51 -suite linkload_SUITE call_SUITE \ | 46 -suite linkload_SUITE call_SUITE \ |
52 misc_SUITE callf_SUITE | 47 misc_SUITE callf_SUITE |
53 rm -f test/*.beam | 48 rm -f test/*.beam |
54 | 49 |
55 clean: | 50 clean: |
56 rm -rf priv ebin/* test/*.beam log | 51 rm -rf priv ebin test/*.beam log |
57 | 52 |
58 # Convention appears to be install binaries and source, but not tests or build-related things | 53 # Convention appears to be install binaries and source, but not tests or build-related things |
59 install: $(OUTPUTS) | 54 install: $(OUTPUTS) |
60 appdir=$(DESTDIR)$(ERLANG_INST_DIR)/lib/erldc-$(VERSION); \ | 55 appdir=$(PREFIX)$(ERLANG_INST_DIR)/lib/erldc-$(VERSION); \ |
61 install -d $$appdir $$appdir/ebin $$appdir/priv $$appdir/src $$appdir/c_src $$appdir/include; \ | 56 install -d $$appdir $$appdir/ebin $$appdir/priv $$appdir/src $$appdir/c_src $$appdir/include; \ |
62 install README.txt $$appdir; \ | 57 install README.txt $$appdir; \ |
63 install src/*.erl $$appdir/src; \ | 58 install src/*.erl $$appdir/src; \ |
64 install include/*.hrl $$appdir/include; \ | 59 install include/*.hrl $$appdir/include; \ |
65 install c_src/*.c $$appdir/c_src; \ | 60 install c_src/*.c $$appdir/c_src; \ |
66 install ebin/* $$appdir/ebin; \ | 61 install ebin/* $$appdir/ebin; \ |
67 install priv/erldc.so $$appdir/priv | 62 install priv/erldc.so $$appdir/priv |
68 | 63 |
69 uninstall: | 64 uninstall: |
70 appdir=$(DESTDIR)$(ERLANG_INST_DIR)/lib/erldc-$(VERSION); \ | 65 appdir=$(PREFIX)$(ERLANG_INST_DIR)/lib/erldc-$(VERSION); \ |
71 rm -rf $$appdir | 66 rm -rf $$appdir |
72 | 67 |
73 .PHONY: clean all tests build-plt dialyze install uninstall | 68 .PHONY: clean all tests build-plt dialyze install uninstall |
69 |