| 0 | 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 | 
|  | 6 VERSION=0.1 | 
|  | 7 | 
|  | 8 OUTPUTS = priv/erldc.so ebin/dyncall.beam ebin/erldc.app | 
|  | 9 | 
|  | 10 # Used by install target.  Default empty DESTDIR is for a real install to root filesystem (/). | 
|  | 11 # Override DESTDIR for testing or for a staged install | 
|  | 12 DESTDIR= | 
|  | 13 ERLANG_INST_DIR=/usr/lib64/erlang | 
|  | 14 | 
|  | 15 all: $(OUTPUTS) | 
|  | 16 | 
|  | 17 priv/erldc.so: c_src/dyncallnif.c | 
|  | 18 	[ -d priv ] || mkdir priv | 
|  | 19 	cc -o $@ -fPIC -shared \ | 
|  | 20 	$(ERLANG_INC) -I $(DYNCALL_SRC_PATH) \ | 
|  | 21 	$(DYNCALL_SRC_PATH)/dyncall/*.o \ | 
|  | 22 	c_src/dyncallnif.c | 
|  | 23 | 
|  | 24 priv/erldc_testtargets.so: c_src/erldctesttargets.c | 
|  | 25 	[ -d priv ] || mkdir priv | 
|  | 26 	cc -o $@ -shared -fPIC c_src/erldctesttargets.c | 
|  | 27 | 
|  | 28 ebin/dyncall.beam: src/dyncall.erl | 
|  | 29 	erlc +debug_info -o ebin src/dyncall.erl | 
|  | 30 | 
|  | 31 ebin/erldc.app: src/erldc.app.src | 
|  | 32 	sed -e 's/---VERSION---/$(VERSION)/' src/erldc.app.src >$@ | 
|  | 33 | 
|  | 34 # Dialyzer, credit to erlang.mk | 
|  | 35 DIALYZER_OPTS ?= -Werror_handling -Wrace_conditions \ | 
|  | 36 	-Wunmatched_returns # -Wunderspecs | 
|  | 37 | 
|  | 38 build-plt: | 
|  | 39 	rm -f test/*.beam | 
|  | 40 	dialyzer --build_plt --output_plt dyncall.plt \ | 
|  | 41 		--apps erts kernel stdlib . | 
|  | 42 | 
|  | 43 dialyze: $(OUTPUTS) | 
|  | 44 	dialyzer --src src --plt dyncall.plt --no_native $(DIALYZER_OPTS) | 
|  | 45 | 
|  | 46 tests: $(OUTPUTS) priv/erldc_testtargets.so | 
|  | 47 	mkdir -p log | 
|  | 48 	# Add priv to runtime ld path so we get test targets | 
|  | 49 	export LD_LIBRARY_PATH=$$(pwd)/priv:${LD_LIBRARY_PATH}; \ | 
|  | 50 		ct_run -pa ebin -logdir log \ | 
|  | 51 			-suite linkload_SUITE call_SUITE \ | 
|  | 52 				misc_SUITE callf_SUITE | 
|  | 53 	rm -f test/*.beam | 
|  | 54 | 
|  | 55 clean: | 
|  | 56 	rm -rf priv ebin/* test/*.beam log | 
|  | 57 | 
|  | 58 # Convention appears to be install binaries and source, but not tests or build-related things | 
|  | 59 install: $(OUTPUTS) | 
|  | 60 	appdir=$(DESTDIR)$(ERLANG_INST_DIR)/lib/erldc-$(VERSION); \ | 
|  | 61 	install -d $$appdir $$appdir/ebin $$appdir/priv $$appdir/src $$appdir/c_src $$appdir/include; \ | 
|  | 62 	install README.txt $$appdir; \ | 
|  | 63 	install src/*.erl $$appdir/src; \ | 
|  | 64 	install include/*.hrl $$appdir/include; \ | 
|  | 65 	install c_src/*.c $$appdir/c_src; \ | 
|  | 66 	install ebin/* $$appdir/ebin; \ | 
|  | 67 	install priv/erldc.so $$appdir/priv | 
|  | 68 | 
|  | 69 uninstall: | 
|  | 70 	appdir=$(DESTDIR)$(ERLANG_INST_DIR)/lib/erldc-$(VERSION); \ | 
|  | 71 	rm -rf $$appdir | 
|  | 72 | 
|  | 73 .PHONY: clean all tests build-plt dialyze install uninstall |