forked from glandium/radare2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
rules.mk
147 lines (113 loc) · 3.27 KB
/
rules.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
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
143
144
145
146
147
-include ../../config-user.mk
-include ../../mk/${COMPILER}.mk
-include ../../../config-user.mk
-include ../../../mk/${COMPILER}.mk
CFLAGS+=-DUSE_RIO=${USE_RIO}
CFLAGS+=${CFLAGS_APPEND}
LDFLAGS+=$(subst r_,-lr_,$(DEPS))
LDFLAGS+=$(subst r_,-L../,$(DEPS))
LDFLAGS+=$(subst r_,-lr_,$(BINDEPS))
LDFLAGS+=$(subst r_,-L../../,$(BINDEPS))
BOO=-Wl,-R../../
LDFLAGS+=$(subst r_,${BOO},$(BINDEPS))
# Compiler
#CC?=gcc
#CFLAGS+=-fPIC
#CC_LIB=${CC} -shared -o ${LIBSO}
#CC_AR=ar -r ${LIBAR}
#LINK?=
# Debug
CFLAGS+=-g -Wall
# XXX do it in configure stage
OSTYPE?=gnulinux
# Output
ifeq (${OSTYPE},windows)
EXT_AR=lib
EXT_SO=dll
endif
ifeq (${OSTYPE},gnulinux)
EXT_AR=a
EXT_SO=so
endif
ifeq (${OSTYPE},osx)
EXT_AR=a
EXT_SO=dylib
endif
LIB=lib${NAME}
LIBAR=${LIB}.${EXT_AR}
LIBSO=${LIB}.${EXT_SO}
#-------------------------------------#
# Rules for libraries
ifeq (${BINDEPS},)
ifneq ($(NAME),)
#include ../../config-user.mk
#include ../../mk/${COMPILER}.mk
CFLAGS+=-I../include
real_all all: ${LIBSO} ${EXTRA_TARGETS}
@-if [ -e t/Makefile ]; then (cd t && ${MAKE} all) ; fi
@-if [ -e p/Makefile ]; then (cd p && ${MAKE} all) ; fi
@true
SRC=$(subst .o,.c,$(OBJ))
${LIBSO}: ${OBJ}
@for a in ${OBJ} ${SRC}; do \
do=0 ; [ ! -e ${LIBSO} ] && do=1 ; \
test $$a -nt ${LIBSO} && do=1 ; \
if [ $$do = 1 ]; then \
echo "${CC_LIB} ${LDFLAGS} ${LINK} ${OBJ}" ; \
${CC_LIB} ${LDFLAGS} ${LINK} ${OBJ} ; \
if [ -f "../stripsyms.sh" ]; then sh ../stripsyms.sh ${LIBSO} ${NAME} ; fi ; \
break ; \
fi ; done
${LIBAR}: ${OBJ}
${CC_AR} ${OBJ}
pkgcfg:
@echo Generating pkgconfig stub for ${NAME}
@echo 'prefix=@PREFIX@' > ../../pkgcfg/${NAME}.pc.acr
@echo 'exec_prefix=$${prefix}' >> ../../pkgcfg/${NAME}.pc.acr
@echo 'libdir=$${exec_prefix}/lib' >> ../../pkgcfg/${NAME}.pc.acr
@echo 'includedir=$${prefix}/include' >> ../../pkgcfg/${NAME}.pc.acr
@echo >> ../../pkgcfg/${NAME}.pc.acr
@echo 'Name: ${NAME}' >> ../../pkgcfg/${NAME}.pc.acr
@echo 'Description: radare foundation libraries' >> ../../pkgcfg/${NAME}.pc.acr
@echo 'Version: ${VERSION}' >> ../../pkgcfg/${NAME}.pc.acr
@echo 'Requires:' >> ../../pkgcfg/${NAME}.pc.acr
@if [ "${NAME}" = "libr" ]; then NAME=''; else NAME=${NAME}; fi ;\
echo 'Libs: -L$${libdir} '`echo $${NAME} ${DEPS}|sed -e s,r_,-lr_,g` >> ../../pkgcfg/${NAME}.pc.acr
@echo 'Cflags: -I$${includedir}/libr' >> ../../pkgcfg/${NAME}.pc.acr
install:
cd .. && ${MAKE} install
deinstall uninstall:
cd .. && ${MAKE} uninstall
clean: ${EXTRA_CLEAN}
-rm -f ${LIBSO} ${LIBAR} ${OBJ} ${BIN} *.so a.out *.a *.exe
@if [ -e t/Makefile ]; then (cd t && ${MAKE} clean) ; fi
@if [ -e p/Makefile ]; then (cd p && ${MAKE} clean) ; fi
@true
.PHONY: all install clean ${LIBSO} ${LIBAR}
else
# somewhere else?
endif
else
#-------------------------------------#
# Rules for test programs
include ../../../config-user.mk
include ../../../mk/${COMPILER}.mk
CFLAGS+=-I../../include -DVERSION=\"${VERSION}\"
all: ${BIN}
${BIN}: ${OBJ}
@# XXX Shouldnt run always
${CC} ${LDFLAGS} ${LIBS} ${OBJ} -o ${BIN}
#Dummy myclean rule that can be overriden by the t/ Makefile
myclean:
clean: myclean
-rm -f ${OBJ} ${BIN}
.PHONY: all clean myclean ${BIN}
endif
#-------------------------------
#if RUNTIME_DEBUG
CFLAGS+=-DR_RTDEBUG
#endif
// TODO: Not working
#if STATIC_DEBUG
#CFLAGS+=-DR_DEBUG
#endif