mirror of
https://github.com/radareorg/radare2
synced 2026-08-22 20:23:32 -04:00
321 lines
7.4 KiB
Makefile
321 lines
7.4 KiB
Makefile
include ../config-user.mk
|
|
include ../global.mk
|
|
include ../libr/config.mk
|
|
include ../mk/platform.mk
|
|
_INCLUDE_MK_GCC_=
|
|
include ../mk/${COMPILER}.mk
|
|
include ../mk/darwin.mk
|
|
|
|
.DEFAULT_GOAL := all
|
|
|
|
|
|
CAPSTONE_CFLAGS=
|
|
# CAPSTONE_MAKEFLAGS?=CAPSTONE_ARCHS="arm aarch64"
|
|
|
|
GIT?=git
|
|
ifeq ($(shell type wget 2> /dev/null && echo 1),1)
|
|
WGET?=wget -c --no-check-certificate -O
|
|
else
|
|
WGET?=curl -o
|
|
endif
|
|
|
|
ifeq ($(CS_RELEASE),1)
|
|
else
|
|
ifeq ($(USE_CSNEXT),1)
|
|
CS_ROOT=../subprojects/capstone-next
|
|
else
|
|
ifeq ($(USE_CS4),1)
|
|
CS_ROOT=../subprojects/capstone-v4
|
|
else
|
|
CS_ROOT=../subprojects/capstone-v5
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
.PHONY: capstone-sync capstone-build zydis-build all clean mrproper libgdbr libwinkd bochs sdbs
|
|
|
|
ifeq ($(shell gcc -v > /dev/null 2>&1 && echo works),works)
|
|
HOST_CC?=gcc
|
|
endif
|
|
SHLR?=$(shell pwd)
|
|
AR?=ar
|
|
RANLIB?=ranlib
|
|
include zip/deps.mk
|
|
MODS=zip java
|
|
MODS+=gdb qnx
|
|
# lz4
|
|
SPP_URL=https://github.com/trufae/spp
|
|
PWD=$(shell pwd)
|
|
|
|
CFLAGS_SHARED=${PIC_CFLAGS}
|
|
|
|
ifeq (${EXT_SO},)
|
|
all:
|
|
echo EXT_SO not defined
|
|
exit 1
|
|
endif
|
|
|
|
preall: libwinkd bochs capstone-build zydis-build sdbs
|
|
@for MOD in ${MODS} ; do \
|
|
echo $(MAKE) -C $$MOD ; \
|
|
$(MAKE) -C $$MOD HAVE_VALA= ROOT="${PWD}/../" CC="${CC}" ; \
|
|
done
|
|
|
|
ifeq ($(BUILD_OS),windows)
|
|
BUILD_EXT_EXE=.exe
|
|
else
|
|
BUILD_EXT_EXE=
|
|
endif
|
|
|
|
PIC=
|
|
ifneq ($(CC),cccl)
|
|
PIC=-fPIC
|
|
endif
|
|
|
|
SDB_ROOT=../subprojects/sdb
|
|
SDB_HOST=$(SDB_ROOT)/sdb$(BUILD_EXT_EXE)
|
|
SDB_LIBA=$(SDB_ROOT)/src/libsdb.$(EXT_AR)
|
|
|
|
SDBFILES=$(SDB_ROOT)/src/.sdb${EXT_EXE} $(SDB_ROOT)/sdb${EXT_EXE} $(SDB_ROOT)/src/.sdb $(SDB_ROOT)/sdb
|
|
PREMODS=capstone gdb winkd sdb bochs ar
|
|
|
|
clean mrproper:
|
|
rm -f ${SDBFILES}
|
|
@for MOD in ${PREMODS} ${MODS} ; do $(MAKE) -C $$MOD clean ; done
|
|
|
|
$(SDB_HOST): $(SDB_ROOT)
|
|
$(MAKE) sdb-host HOST_CC=$(HOST_CC) CC=$(HOST_CC)
|
|
|
|
$(SDB_LIBA):
|
|
$(MAKE) sdb-target RANLIB="$(RANLIB)"
|
|
|
|
sdbs: $(SDB_HOST)
|
|
$(MAKE) $(SDB_LIBA) RANLIB="$(RANLIB)"
|
|
|
|
$(SDB_ROOT):
|
|
$(MAKE) -C ../subprojects
|
|
|
|
sdb-host:
|
|
@echo
|
|
@echo ">>>>>>>>"
|
|
@echo "HOST SDB"
|
|
@echo ">>>>>>>>"
|
|
@echo
|
|
$(MAKE) -C $(SDB_ROOT) clean ; rm -f $(SDB_ROOT)/src/*.o $(SDB_ROOT)/include/sdb/version.h
|
|
$(MAKE) -C $(SDB_ROOT)/src "CC=${HOST_CC}" LDFLAGS='${HOST_LDFLAGS}' CPPFLAGS='-I$(SDB_ROOT)/include' CFLAGS='${HOST_CFLAGS} -DUSE_MMAN=0 ${PIC}' bin
|
|
cp -f $(SDB_ROOT)/src/sdb${BUILD_EXT_EXE} $(SDB_ROOT)/src/.sdb${BUILD_EXT_EXE}
|
|
cp -f $(SDB_ROOT)/src/sdb${BUILD_EXT_EXE} $(SDB_ROOT)/sdb$(BUILD_EXT_EXE)
|
|
rm -f $(SDB_LIBA)
|
|
-file $(SDB_ROOT)/sdb$(BUILD_EXT_EXE)
|
|
|
|
sdb-target:
|
|
@echo
|
|
@echo ">>>>>>>>>>"
|
|
@echo "TARGET SDB"
|
|
@echo ">>>>>>>>>>"
|
|
@echo
|
|
rm -f src/libsdb.$(EXT_AR)
|
|
$(MAKE) -C $(SDB_ROOT) clean ; rm -f $(SDB_ROOT)/src/*.o ../include/sdb/version.h
|
|
$(MAKE) -C $(SDB_ROOT)/src ../include/sdb/version.h
|
|
ifeq ($(EXT_EXE),.wasm)
|
|
$(MAKE) -C $(SDB_ROOT)/src ARCH=xxx EXT_AR=.$(EXT_AR) RANLIB="${RANLIB}" CPPFLAGS=-I$(SDB_ROOT)/include \
|
|
CFLAGS_SHARED="${CFLAGS_SHARED} -DHAVE_MMAN=0" \
|
|
CC="${CC}" AR="${AR}" ARCH=undefined CFLAGS='${CFLAGS} -DHAVE_MMAN=0' LDFLAGS='${LDFLAGS}' libsdb.$(EXT_AR)
|
|
else
|
|
$(MAKE) -C $(SDB_ROOT)/src ARCH=xxx EXT_AR=.$(EXT_AR) RANLIB="${RANLIB}" CPPFLAGS="-I$(SDB_ROOT)/include -DHAVE_SYSTEM=0" \
|
|
CFLAGS_SHARED="${CFLAGS_SHARED}" \
|
|
CC="${CC}" AR="${AR}" ARCH=undefined LDFLAGS='${LDFLAGS}' libsdb.$(EXT_AR)
|
|
endif
|
|
$(RANLIB) $(SDB_ROOT)/src/libsdb.$(EXT_AR)
|
|
|
|
.PHONY: sdb-sync sync-sdb sdbclean sdb-native sdb-target
|
|
SDB_F=README.md config.mk src include Makefile meson.build wasi.mk wasi.sh
|
|
SDB_SYNCFILES=$(addprefix sdb.vc/,${SDB_F})
|
|
I=../libr/include
|
|
|
|
libgdbr:
|
|
$(MAKE) -C gdb all
|
|
|
|
libwinkd:
|
|
$(MAKE) -C winkd all
|
|
|
|
bochs:
|
|
$(MAKE) -C bochs all
|
|
|
|
sdb-clean clean-sdb:
|
|
$(MAKE) -C $(SDB_ROOT) clean
|
|
rm -f $(SDB_ROOT)/sdb.exe
|
|
rm -f $(SDB_ROOT)/src/libsdb.${EXT_AR}
|
|
|
|
ifeq ($(WITH_LIBR),1)
|
|
install: libr_shlr.${EXT_AR}
|
|
mkdir -p ${DESTDIR}/${LIBDIR}
|
|
cp -f libr_shlr.${EXT_AR} ${DESTDIR}/${LIBDIR}
|
|
@if [ -f ../subprojects/otezip/libotezip.${EXT_AR} ]; then \
|
|
cp -f ../subprojects/otezip/libotezip.${EXT_AR} ${DESTDIR}/${LIBDIR}; \
|
|
fi
|
|
else
|
|
install:
|
|
endif
|
|
|
|
install-symlink symstall:
|
|
mkdir -p "${DESTDIR}${LIBDIR}"
|
|
ln -fs "$(PWD)/libr_shlr.${EXT_AR}" "${DESTDIR}${LIBDIR}/libr_shlr.${EXT_AR}"
|
|
@if [ -f ../subprojects/otezip/libotezip.${EXT_AR} ]; then \
|
|
ln -fs "$(PWD)/../subprojects/otezip/libotezip.${EXT_AR}" "${DESTDIR}${LIBDIR}/libotezip.${EXT_AR}"; \
|
|
fi
|
|
|
|
uninstall deinstall:
|
|
rm -f ${DESTDIR}${LIBDIR}/libr_shlr.${EXT_AR}
|
|
rm -f ${DESTDIR}${LIBDIR}/libotezip.${EXT_AR}
|
|
|
|
.PHONY: capstone capstone-sync capstone-build
|
|
|
|
|
|
ifeq ($(WANT_CAPSTONE),0)
|
|
capstone:
|
|
|
|
capstone-sync:
|
|
|
|
capstone-build:
|
|
else
|
|
ifeq ($(USE_CAPSTONE),1)
|
|
# Do nothing here
|
|
capstone:
|
|
|
|
capstone-sync:
|
|
|
|
capstone-build:
|
|
|
|
else
|
|
|
|
ifeq ($(CS_RELEASE),1)
|
|
|
|
|
|
|
|
.PHONY: capstone capstone-sync
|
|
endif
|
|
|
|
ifeq (${EXT_AR},)
|
|
all:
|
|
echo EXT_AR is not defined
|
|
exit 1
|
|
endif
|
|
|
|
capstone-build: capstone
|
|
ifeq ($(CAPSTONE_LDFLAGS),)
|
|
cd $(CS_ROOT) && CFLAGS="${CAPSTONE_CFLAGS} $(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
|
|
$(MAKE) $(CAPSTONE_MAKEFLAGS) CC="$(CC)" AR_EXT=a IS_CYGWIN=0 CAPSTONE_STATIC=yes CAPSTONE_SHARED=no \
|
|
RANLIB="$(RANLIB)" LIBARCHS="" AR="$(AR)" IS_MINGW=0 libcapstone.a
|
|
ifneq (${EXT_AR},a)
|
|
-cp -f $(CS_ROOT)/libcapstone.a $(CS_ROOT)/libcapstone.${EXT_AR}
|
|
endif
|
|
else
|
|
echo "Using capstone from system"
|
|
endif
|
|
|
|
endif
|
|
endif
|
|
|
|
ZYDIS_SHLR_LIB=
|
|
ifneq ($(filter p/x86_zydis.mk,$(STATIC_ARCH_PLUGINS)),)
|
|
ifeq ($(WANT_ZYDIS),1)
|
|
ifeq ($(USE_ZYDIS),0)
|
|
ZYDIS_SHLR_LIB=$(ZYDIS_ROOT)/libzydis.a
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
.PHONY: zydis-build
|
|
ifneq ($(ZYDIS_SHLR_LIB),)
|
|
zydis-build:
|
|
$(MAKE) -C ../subprojects zydis CC="$(CC)" AR="$(AR)" CFLAGS="$(CFLAGS)"
|
|
else
|
|
zydis-build:
|
|
endif
|
|
|
|
../../radare2-webui:
|
|
cd ../.. ; git clone --depth 1 https://github.com/radareorg/radare2-webui
|
|
|
|
../../radare2-webui/dist/m: ../../radare2-webui
|
|
ifeq ($(WITHOUT_PULL),1)
|
|
cd ../../radare2-webui/www/m && npm i ; $(MAKE) release
|
|
else
|
|
cd ../../radare2-webui/www/m && git pull ; npm i ; $(MAKE) release
|
|
endif
|
|
|
|
www-sync-m sync-www-m: ../../radare2-webui/dist/m
|
|
cp -rf ../../radare2-webui/dist/m www/m.tmp
|
|
rm -rf www/m
|
|
mv www/m.tmp www/m
|
|
git add www/m
|
|
|
|
www-sync-p sync-www-p:
|
|
cp -rf ../../radare2-webui/dist/p www/p.tmp
|
|
rm -rf www/p
|
|
mv www/p.tmp www/p
|
|
git add www/p
|
|
|
|
www-sync-t sync-www-t:
|
|
cp -rf ../../radare2-webui/dist/t www/t.tmp
|
|
rm -rf www/t
|
|
mv www/t.tmp www/t
|
|
git add www/p
|
|
|
|
sync-www www-sync: www-sync-m www-sync-p www-sync-t
|
|
@echo webui sync done
|
|
|
|
spp-sync sync-spp:
|
|
-git rm -r spp
|
|
rm -rf spp
|
|
git clone --depth 1 ${SPP_URL} spp
|
|
rm -rf spp/.git*
|
|
rm -rf spp/t
|
|
git add spp
|
|
|
|
spp: spp-sync
|
|
export CFLAGS="-DUSE_R2=1 -I../../libr/include -DHAVE_FORK=${HAVE_FORK} -fPIC"; $(MAKE) -C spp r2lib
|
|
|
|
SHLRS+=ar/libr_ar.a
|
|
SHLRS+=bochs/lib/libbochs.a
|
|
# a stale libcapstone.a from a previous build must not be merged in
|
|
ifneq ($(WANT_CAPSTONE),0)
|
|
SHLRS+=$(CS_ROOT)/libcapstone.a
|
|
endif
|
|
SHLRS+=$(ZYDIS_SHLR_LIB)
|
|
SHLRS+=gdb/lib/libgdbr.a
|
|
SHLRS+=java/libr_java.a
|
|
SHLRS+=qnx/lib/libqnxr.a
|
|
SHLRS+=winkd/libr_winkd.a
|
|
SHLRS+=$(OTEZIP_LIBA)
|
|
# librz.a removed from SHLRS - it's now conditionally built only when USE_LIB_ZIP=0
|
|
# When USE_LIB_ZIP=1, system libzip is used instead
|
|
# See shlr/zip/Makefile for build rules
|
|
|
|
all: libr_shlr.${EXT_AR}
|
|
|
|
libr_shlr.${EXT_AR}: preall $(OTEZIP_LIBA)
|
|
ifeq ($(OSTYPE),darwin)
|
|
@LIBS=""; \
|
|
for LIB in $(SHLRS); do \
|
|
if [ -f "$${LIB}" ]; then \
|
|
LIBS="$${LIBS} $${LIB}"; \
|
|
fi; \
|
|
done; \
|
|
xcrun libtool -static -o $@ $${LIBS}
|
|
else
|
|
rm -f $@ .libr.mri
|
|
echo "create $@" > .libr.mri
|
|
for LIB in ${SHLRS} ; do \
|
|
if [ -f "$${LIB}" ]; then \
|
|
echo "addlib $${LIB}" >> .libr.mri; \
|
|
fi ; \
|
|
done
|
|
echo "save" >> .libr.mri
|
|
echo "end" >> .libr.mri
|
|
${AR} -M < .libr.mri
|
|
rm -f .libr.mri
|
|
$(RANLIB) $@
|
|
endif
|
|
|
|
.PHONY: spp
|