-
Notifications
You must be signed in to change notification settings - Fork 315
/
winshlib.mk
31 lines (26 loc) · 1.07 KB
/
winshlib.mk
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
## ${R_HOME}/share/make/winshlib.mk
all: $(SHLIB)
BASE = $(shell basename $(SHLIB) .dll)
## do it with explicit rules as packages might add dependencies to this target
## (attempts to do this GNUishly failed for parallel makes,
## but we do want the link targets echoed)
$(SHLIB): $(OBJECTS)
@if test "z$(OBJECTS)" != "z"; then \
if test -e "$(BASE)-win.def"; then \
echo $(SHLIB_LD) -shared $(DLLFLAGS) -o $@ $(BASE)-win.def $(OBJECTS) $(ALL_LIBS); \
$(SHLIB_LD) -shared $(DLLFLAGS) -o $@ $(BASE)-win.def $(OBJECTS) $(ALL_LIBS); \
else \
echo EXPORTS > tmp.def; \
$(NM) $^ | $(SED) -n $(SYMPAT) $(NM_FILTER) >> tmp.def; \
echo $(SHLIB_LD) -shared $(DLLFLAGS) -o $@ tmp.def $(OBJECTS) $(ALL_LIBS); \
$(SHLIB_LD) -shared $(DLLFLAGS) -o $@ tmp.def $(OBJECTS) $(ALL_LIBS); \
$(RM) tmp.def; \
fi \
fi
.PHONY: all shlib-clean
shlib-clean:
@rm -f $(OBJECTS) symbols.rds
## FIXME: why not Rscript?
symbols.rds: $(OBJECTS)
@$(ECHO) "tools:::.shlib_objects_symbol_tables()" | \
$(R_HOME)/bin$(R_ARCH)/Rterm.exe --vanilla --slave --args $(OBJECTS)