radare2/Makefile

467 lines
16 KiB
Makefile
Raw Normal View History

-include config-user.mk
include global.mk
PREVIOUS_RELEASE=1.6.0
2016-01-20 02:44:59 +00:00
MESON?=meson
2017-07-28 12:02:27 +00:00
PYTHON?=python
R2R=radare2-regressions
R2R_URL=$(shell doc/repo REGRESSIONS)
R2BINS=$(shell cd binr ; echo r*2 r2agent r2pm r2-indent)
2017-02-05 23:08:02 +00:00
BUILDSEC=$(shell date "+__%H:%M:%S")
DATADIRS=libr/cons/d libr/bin/d libr/asm/d libr/syscall/d libr/magic/d libr/anal/d
2015-05-25 16:27:59 +00:00
USE_ZIP=YES
ZIP=zip
2016-02-27 11:33:39 +00:00
R2VC=$(shell git rev-list --all --count 2>/dev/null)
ifeq ($(R2VC),)
# release
R2VC=0
endif
2016-02-27 11:33:39 +00:00
2012-02-17 12:55:54 +00:00
STRIP?=strip
ifneq ($(shell xz --help 2>/dev/null | grep improve),)
2013-07-07 21:03:10 +00:00
TAR=tar -cvf
TAREXT=tar.xz
CZ=xz -f
else
2013-07-07 21:03:10 +00:00
TAR=bsdtar cvf
TAREXT=tar.gz
CZ=gzip -f
endif
2014-09-01 13:50:04 +00:00
PWD=$(shell pwd)
2016-01-22 19:48:34 +00:00
# For echo without quotes
2016-02-16 12:01:41 +00:00
Q='
ESC=
2016-01-22 19:48:34 +00:00
ifeq ($(BUILD_OS),windows)
2016-02-03 11:13:01 +00:00
ifeq ($(OSTYPE),mingw32)
2016-02-25 16:03:48 +00:00
ifneq (,$(findstring mingw32-make,$(MAKE)))
2016-02-16 12:01:41 +00:00
ifneq ($(APPVEYOR),True)
2016-01-22 22:15:33 +00:00
Q=
ESC=^
LC_ALL=C
export LC_ALL
2016-01-22 19:48:34 +00:00
endif
2016-02-16 12:01:41 +00:00
endif
2016-01-22 19:48:34 +00:00
endif
2016-02-25 16:03:48 +00:00
endif
2016-01-22 19:48:34 +00:00
all: plugins.cfg libr/include/r_version.h
${MAKE} -C shlr/zip
${MAKE} -C libr/util
2014-07-17 08:34:53 +00:00
${MAKE} -C libr/socket
${MAKE} -C shlr
${MAKE} -C libr
${MAKE} -C binr
* Initial import of the 'configure-plugins' script - accepts --static and --shared to setup which plugins you want to build statically in the library or dynamically - normalize .mk and plugin file names to adopt a single standard - WARNING: huge commit * Added 'mk/sloc.mk' with 'sloc' target to count lines with sloccount everywhere (yeah!) --HG-- rename : libr/asm/p/x86bea.mk => libr/asm/p/x86_bea.mk rename : libr/asm/p/x86nasm.mk => libr/asm/p/x86_nasm.mk rename : libr/asm/p/x86olly.mk => libr/asm/p/x86_olly.mk rename : libr/config.h => libr/config.h.head rename : libr/config.mk => libr/config.mk.head rename : libr/debug/p/dbg_gdb.c => libr/debug/p/debug_gdb.c rename : libr/debug/p/dbg_ptrace.c => libr/debug/p/debug_ptrace.c rename : libr/debug/p/dbg_libgdbwrap/Makefile => libr/debug/p/libgdbwrap/Makefile rename : libr/debug/p/dbg_libgdbwrap/README => libr/debug/p/libgdbwrap/README rename : libr/debug/p/dbg_libgdbwrap/client.c => libr/debug/p/libgdbwrap/client.c rename : libr/debug/p/dbg_libgdbwrap/gdbwrapper.c => libr/debug/p/libgdbwrap/gdbwrapper.c rename : libr/debug/p/dbg_libgdbwrap/include/gdbwrapper-internals.h => libr/debug/p/libgdbwrap/include/gdbwrapper-internals.h rename : libr/debug/p/dbg_libgdbwrap/include/gdbwrapper-stddef.h => libr/debug/p/libgdbwrap/include/gdbwrapper-stddef.h rename : libr/debug/p/dbg_libgdbwrap/include/gdbwrapper.h => libr/debug/p/libgdbwrap/include/gdbwrapper.h rename : libr/debug/p/dbg_libgdbwrap/include/libaspect.h => libr/debug/p/libgdbwrap/include/libaspect.h rename : libr/debug/p/dbg_libgdbwrap/include/libe2dbg.h => libr/debug/p/libgdbwrap/include/libe2dbg.h rename : libr/debug/p/dbg_libgdbwrap/include/revm.h => libr/debug/p/libgdbwrap/include/revm.h rename : libr/debug/p/dbg_libgdbwrap/interface.c => libr/debug/p/libgdbwrap/interface.c rename : libr/io/p/dbg.mk => libr/io/p/debug.mk rename : libr/io/p/io_dbg.c => libr/io/p/io_debug.c
2010-01-13 22:42:49 +00:00
2017-02-10 16:43:47 +00:00
#.PHONY: libr/include/r_version.h
2015-11-08 10:52:45 +00:00
GIT_TAP=$(shell git describe --tags --match "[0-9]*" 2>/dev/null || echo $(VERSION))
GIT_TIP=$(shell git rev-parse HEAD 2>/dev/null || echo HEAD)
R2_VER=$(shell grep VERSION configure.acr | head -n1 | awk '{print $$2}')
Debian patches (#5866) * Fix esil manpage Each manual page should start with a "NAME" section, which lists the name and a brief description of the page separated by "\-". The "NAME" section is parsed by lexgrog and used to generate a database that's queried by commands like apropos and whatis. Without this change lexgrog fails to parse the NAME section of this manual page. This was found by Debian's lintian tool (manpage-has-bad-whatis-entry). * Fix empty input line in manpages Found-By: lintian as manpage-has-errors-from-man * Fix rahash2 manpage .El (end list) is only valid after .Bl (begin list), but no list was started in this section. Found-By: lintian * Avoid build break if no static bin plugins are defined If one disables all static bin plugins, build currently fails, since R_BIN_STATIC_PLUGINS/R_BIN_XTR_STATIC_PLUGINS are not defined. This fixes the build for these kind of setups. (In Debian does not built the mach code, since the Apple Public Source License is not compatible with the Debian Free Software Guidelines. Without the mach code there is not a single binxtr plugin) * Fix implicit declaration of function 'linux_generate_corefile' on i386 Noticed by Debian build farm. * Add support for SOURCE_DATE_EPOCH SOURCE_DATE_EPOCH can be used to make builds reproducible [0]. Note: radare suffers from a second problem making the build unreproducible: It captures the full build path. This is *not* covered by this change. [0] https://reproducible-builds.org/specs/source-date-epoch/
2016-09-28 17:17:43 +00:00
ifndef SOURCE_DATE_EPOCH
GIT_NOW=$(shell date +%Y-%m-%d)
Debian patches (#5866) * Fix esil manpage Each manual page should start with a "NAME" section, which lists the name and a brief description of the page separated by "\-". The "NAME" section is parsed by lexgrog and used to generate a database that's queried by commands like apropos and whatis. Without this change lexgrog fails to parse the NAME section of this manual page. This was found by Debian's lintian tool (manpage-has-bad-whatis-entry). * Fix empty input line in manpages Found-By: lintian as manpage-has-errors-from-man * Fix rahash2 manpage .El (end list) is only valid after .Bl (begin list), but no list was started in this section. Found-By: lintian * Avoid build break if no static bin plugins are defined If one disables all static bin plugins, build currently fails, since R_BIN_STATIC_PLUGINS/R_BIN_XTR_STATIC_PLUGINS are not defined. This fixes the build for these kind of setups. (In Debian does not built the mach code, since the Apple Public Source License is not compatible with the Debian Free Software Guidelines. Without the mach code there is not a single binxtr plugin) * Fix implicit declaration of function 'linux_generate_corefile' on i386 Noticed by Debian build farm. * Add support for SOURCE_DATE_EPOCH SOURCE_DATE_EPOCH can be used to make builds reproducible [0]. Note: radare suffers from a second problem making the build unreproducible: It captures the full build path. This is *not* covered by this change. [0] https://reproducible-builds.org/specs/source-date-epoch/
2016-09-28 17:17:43 +00:00
else
GIT_NOW=$(shell date --utc --date="@$$SOURCE_DATE_EPOCH" +%Y-%m-%d)
endif
libr/include/r_version.h:
2016-01-25 12:19:41 +00:00
@echo Generating r_version.h file
2016-01-22 21:51:58 +00:00
@echo $(Q)#ifndef R_VERSION_H$(Q) > $@.tmp
@echo $(Q)#define R_VERSION_H 1$(Q) >> $@.tmp
@echo $(Q)#define R2_VERSION_COMMIT $(R2VC)$(Q) >> $@.tmp
@echo $(Q)#define R2_VERSION $(ESC)"$(R2_VER)$(ESC)"$(Q) >> $@.tmp
2016-01-22 21:51:58 +00:00
@echo $(Q)#define R2_GITTAP $(ESC)"$(GIT_TAP)$(ESC)"$(Q) >> $@.tmp
@echo $(Q)#define R2_GITTIP $(ESC)"$(GIT_TIP)$(ESC)"$(Q) >> $@.tmp
2017-02-05 23:08:02 +00:00
@echo $(Q)#define R2_BIRTH $(ESC)"$(GIT_NOW)$(BUILDSEC)$(ESC)"$(Q) >> $@.tmp
2016-01-22 21:51:58 +00:00
@echo $(Q)#endif$(Q) >> $@.tmp
2017-02-10 16:43:47 +00:00
@mv -f $@.tmp $@
2016-01-03 01:13:53 +00:00
@rm -f $@.tmp
* Initial import of the 'configure-plugins' script - accepts --static and --shared to setup which plugins you want to build statically in the library or dynamically - normalize .mk and plugin file names to adopt a single standard - WARNING: huge commit * Added 'mk/sloc.mk' with 'sloc' target to count lines with sloccount everywhere (yeah!) --HG-- rename : libr/asm/p/x86bea.mk => libr/asm/p/x86_bea.mk rename : libr/asm/p/x86nasm.mk => libr/asm/p/x86_nasm.mk rename : libr/asm/p/x86olly.mk => libr/asm/p/x86_olly.mk rename : libr/config.h => libr/config.h.head rename : libr/config.mk => libr/config.mk.head rename : libr/debug/p/dbg_gdb.c => libr/debug/p/debug_gdb.c rename : libr/debug/p/dbg_ptrace.c => libr/debug/p/debug_ptrace.c rename : libr/debug/p/dbg_libgdbwrap/Makefile => libr/debug/p/libgdbwrap/Makefile rename : libr/debug/p/dbg_libgdbwrap/README => libr/debug/p/libgdbwrap/README rename : libr/debug/p/dbg_libgdbwrap/client.c => libr/debug/p/libgdbwrap/client.c rename : libr/debug/p/dbg_libgdbwrap/gdbwrapper.c => libr/debug/p/libgdbwrap/gdbwrapper.c rename : libr/debug/p/dbg_libgdbwrap/include/gdbwrapper-internals.h => libr/debug/p/libgdbwrap/include/gdbwrapper-internals.h rename : libr/debug/p/dbg_libgdbwrap/include/gdbwrapper-stddef.h => libr/debug/p/libgdbwrap/include/gdbwrapper-stddef.h rename : libr/debug/p/dbg_libgdbwrap/include/gdbwrapper.h => libr/debug/p/libgdbwrap/include/gdbwrapper.h rename : libr/debug/p/dbg_libgdbwrap/include/libaspect.h => libr/debug/p/libgdbwrap/include/libaspect.h rename : libr/debug/p/dbg_libgdbwrap/include/libe2dbg.h => libr/debug/p/libgdbwrap/include/libe2dbg.h rename : libr/debug/p/dbg_libgdbwrap/include/revm.h => libr/debug/p/libgdbwrap/include/revm.h rename : libr/debug/p/dbg_libgdbwrap/interface.c => libr/debug/p/libgdbwrap/interface.c rename : libr/io/p/dbg.mk => libr/io/p/debug.mk rename : libr/io/p/io_dbg.c => libr/io/p/io_debug.c
2010-01-13 22:42:49 +00:00
plugins.cfg:
@if [ ! -e config-user.mk ]; then echo ; \
echo " Please, run ./configure first" ; echo ; exit 1 ; fi
$(SHELL) ./configure-plugins
w32:
sys/mingw32.sh
depgraph.png:
2016-09-02 15:13:03 +00:00
cd libr ; perl depgraph.pl dot | dot -Tpng -o../depgraph.png
android:
2016-01-22 19:53:01 +00:00
@if [ -z "$(NDK_ARCH)" ]; then echo "Set NDK_ARCH=[arm|arm64|mips|x86]" ; false; fi
sys/android-${NDK_ARCH}.sh
w32dist:
2015-03-20 12:07:56 +00:00
${MAKE} windist WINBITS=w32
w64dist:
${MAKE} windist WINBITS=w64
WINDIST=${WINBITS}dist
ZIPNAME?=radare2-${WINBITS}-${VERSION}.zip
2015-03-20 12:07:56 +00:00
2015-10-23 00:58:48 +00:00
C=$(shell printf "\033[32m")
R=$(shell printf "\033[0m")
2015-03-20 12:07:56 +00:00
windist:
2015-10-23 00:58:48 +00:00
@echo "${C}[WINDIST] Installing binaries and libraries${R}"
2015-03-20 12:07:56 +00:00
[ -n "${WINBITS}" ] || exit 1
rm -rf "radare2-${WINBITS}-${VERSION}" "${WINDIST}"
mkdir "${WINDIST}"
for FILE in `find libr | grep -e dll$$`; do cp "$$FILE" "${WINDIST}" ; done
for FILE in `find binr | grep -e exe$$`; do cp "$$FILE" "${WINDIST}" ; done
rm -f "${WINDIST}/plugin.dll"
2015-10-23 00:58:48 +00:00
@echo "${C}[WINDIST] Picking plugins from libraries${R}"
mkdir -p "${WINDIST}/libs"
2015-10-27 14:42:09 +00:00
mv "${WINDIST}/"lib*.dll "${WINDIST}/libs"
mkdir -p "${WINDIST}/plugins"
mv ${WINDIST}/*.dll "${WINDIST}/plugins"
mv ${WINDIST}/libs/* "${WINDIST}"
2015-10-23 00:58:48 +00:00
@echo "${C}[WINDIST] Do not include plugins for now${R}"
rm -rf "${WINDIST}/libs"
2015-10-23 00:58:48 +00:00
rm -rf ${WINDIST}/plugins/*
@echo "${C}[WINDIST] Copying web interface${R}"
mkdir -p "${WINDIST}/www"
cp -rf shlr/www/* "${WINDIST}/www"
mkdir -p "${WINDIST}/share/radare2/${VERSION}/magic"
cp -f libr/magic/d/default/* "${WINDIST}/share/radare2/${VERSION}/magic"
mkdir -p "${WINDIST}/share/radare2/${VERSION}/syscall"
cp -f libr/syscall/d/*.sdb "${WINDIST}/share/radare2/${VERSION}/syscall"
mkdir -p "${WINDIST}/share/radare2/${VERSION}/fcnsign"
2015-10-30 10:08:58 +00:00
cp -f libr/anal/d/*.sdb "${WINDIST}/share/radare2/${VERSION}/fcnsign"
mkdir -p "${WINDIST}/share/radare2/${VERSION}/opcodes"
cp -f libr/asm/d/*.sdb "${WINDIST}/share/radare2/${VERSION}/opcodes"
mkdir -p "${WINDIST}/share/doc/radare2"
mkdir -p "${WINDIST}/include/libr/sdb"
2016-07-10 08:56:55 +00:00
mkdir -p "${WINDIST}/include/libr/r_util"
2015-10-23 00:58:48 +00:00
@echo "${C}[WINDIST] Copying development files${R}"
cp -f libr/include/sdb/*.h "${WINDIST}/include/libr/sdb/"
2016-07-09 21:04:38 +00:00
cp -f libr/include/r_util/*.h "${WINDIST}/include/libr/r_util/"
cp -f libr/include/*.h "${WINDIST}/include/libr"
#mkdir -p "${WINDIST}/include/libr/sflib"
@cp -f doc/fortunes.* "${WINDIST}/share/doc/radare2"
2016-01-20 20:15:33 +00:00
@mkdir -p "${WINDIST}/share/radare2/${VERSION}/format/dll"
2016-06-26 02:44:59 +00:00
@cp -f libr/bin/d/elf32 "${WINDIST}/share/radare2/${VERSION}/format"
@cp -f libr/bin/d/elf64 "${WINDIST}/share/radare2/${VERSION}/format"
@cp -f libr/bin/d/elf_enums "${WINDIST}/share/radare2/${VERSION}/format"
@cp -f libr/bin/d/pe32 "${WINDIST}/share/radare2/${VERSION}/format"
@cp -f libr/bin/d/trx "${WINDIST}/share/radare2/${VERSION}/format"
2016-01-20 20:15:33 +00:00
@cp -f libr/bin/d/dll/*.sdb "${WINDIST}/share/radare2/${VERSION}/format/dll"
@mkdir -p "${WINDIST}/share/radare2/${VERSION}/cons"
@cp -af libr/cons/d/* "${WINDIST}/share/radare2/${VERSION}/cons"
@mkdir -p "${WINDIST}/share/radare2/${VERSION}/hud"
@cp -f doc/hud "${WINDIST}/share/radare2/${VERSION}/hud/main"
@mv "${WINDIST}" "radare2-${WINBITS}-${VERSION}"
@rm -f "radare2-${WINBITS}-${VERSION}.zip"
2015-05-25 16:27:59 +00:00
ifneq ($(USE_ZIP),NO)
$(ZIP) -r "${ZIPNAME}" "radare2-${WINBITS}-${VERSION}"
2015-05-25 16:27:59 +00:00
endif
clean: rmd
2017-02-18 04:10:22 +00:00
rm -f libr/libr.a
for DIR in shlr libr binr ; do (cd "$$DIR" ; ${MAKE} clean) ; done
* Initial import of the 'configure-plugins' script - accepts --static and --shared to setup which plugins you want to build statically in the library or dynamically - normalize .mk and plugin file names to adopt a single standard - WARNING: huge commit * Added 'mk/sloc.mk' with 'sloc' target to count lines with sloccount everywhere (yeah!) --HG-- rename : libr/asm/p/x86bea.mk => libr/asm/p/x86_bea.mk rename : libr/asm/p/x86nasm.mk => libr/asm/p/x86_nasm.mk rename : libr/asm/p/x86olly.mk => libr/asm/p/x86_olly.mk rename : libr/config.h => libr/config.h.head rename : libr/config.mk => libr/config.mk.head rename : libr/debug/p/dbg_gdb.c => libr/debug/p/debug_gdb.c rename : libr/debug/p/dbg_ptrace.c => libr/debug/p/debug_ptrace.c rename : libr/debug/p/dbg_libgdbwrap/Makefile => libr/debug/p/libgdbwrap/Makefile rename : libr/debug/p/dbg_libgdbwrap/README => libr/debug/p/libgdbwrap/README rename : libr/debug/p/dbg_libgdbwrap/client.c => libr/debug/p/libgdbwrap/client.c rename : libr/debug/p/dbg_libgdbwrap/gdbwrapper.c => libr/debug/p/libgdbwrap/gdbwrapper.c rename : libr/debug/p/dbg_libgdbwrap/include/gdbwrapper-internals.h => libr/debug/p/libgdbwrap/include/gdbwrapper-internals.h rename : libr/debug/p/dbg_libgdbwrap/include/gdbwrapper-stddef.h => libr/debug/p/libgdbwrap/include/gdbwrapper-stddef.h rename : libr/debug/p/dbg_libgdbwrap/include/gdbwrapper.h => libr/debug/p/libgdbwrap/include/gdbwrapper.h rename : libr/debug/p/dbg_libgdbwrap/include/libaspect.h => libr/debug/p/libgdbwrap/include/libaspect.h rename : libr/debug/p/dbg_libgdbwrap/include/libe2dbg.h => libr/debug/p/libgdbwrap/include/libe2dbg.h rename : libr/debug/p/dbg_libgdbwrap/include/revm.h => libr/debug/p/libgdbwrap/include/revm.h rename : libr/debug/p/dbg_libgdbwrap/interface.c => libr/debug/p/libgdbwrap/interface.c rename : libr/io/p/dbg.mk => libr/io/p/debug.mk rename : libr/io/p/io_dbg.c => libr/io/p/io_debug.c
2010-01-13 22:42:49 +00:00
distclean mrproper:
-rm -f `find . -type f -name '*.d'`
rm -f `find . -type f -name '*.o'`
2017-02-18 04:10:22 +00:00
rm -f libr/libr.a
for DIR in libr binr shlr ; do ( cd "$$DIR" ; ${MAKE} mrproper) ; done
rm -f config-user.mk plugins.cfg libr/config.h
rm -f libr/include/r_userconf.h libr/include/r_version.h libr/config.mk
rm -f pkgcfg/*.pc
2009-06-15 02:44:05 +00:00
pkgcfg:
cd libr && ${MAKE} pkgcfg
install-man:
mkdir -p "${DESTDIR}${MANDIR}/man1"
2016-01-20 01:22:00 +00:00
mkdir -p "${DESTDIR}${MANDIR}/man7"
for FILE in man/*.1 ; do ${INSTALL_MAN} "$$FILE" "${DESTDIR}${MANDIR}/man1" ; done
cd "${DESTDIR}${MANDIR}/man1" && ln -fs radare2.1 r2.1
2016-01-20 01:22:00 +00:00
for FILE in man/*.7 ; do ${INSTALL_MAN} "$$FILE" "${DESTDIR}${MANDIR}/man7" ; done
install-man-symlink:
mkdir -p "${DESTDIR}${MANDIR}/man1"
2016-01-20 01:22:00 +00:00
mkdir -p "${DESTDIR}${MANDIR}/man7"
2017-10-18 15:53:00 +00:00
for FILE in $(shell cd man && ls *.1) ; do \
ln -fs "${PWD}/man/$$FILE" "${DESTDIR}${MANDIR}/man1/$$FILE" ; done
cd "${DESTDIR}${MANDIR}/man1" && ln -fs radare2.1 r2.1
2016-01-20 01:22:00 +00:00
for FILE in *.7 ; do \
ln -fs "${PWD}/man/$$FILE" "${DESTDIR}${MANDIR}/man7/$$FILE" ; done
install-doc:
${INSTALL_DIR} "${DESTDIR}${DOCDIR}"
2017-10-18 15:53:00 +00:00
@echo ${DOCDIR}
2017-07-16 08:39:01 +00:00
for FILE in doc/* ; do \
2017-10-18 11:14:17 +00:00
if [ -f $$FILE ]; then ${INSTALL_DATA} $$FILE "${DESTDIR}${DOCDIR}" || true ; fi; \
2017-07-16 08:39:01 +00:00
done
install-doc-symlink:
${INSTALL_DIR} "${DESTDIR}${DOCDIR}"
2017-10-18 15:53:00 +00:00
for FILE in $(shell cd doc ; ls) ; do \
ln -fs "$(PWD)/doc/$$FILE" "${DESTDIR}${DOCDIR}" ; done
install love: install-doc install-man install-www
cd libr && ${MAKE} install PARENT=1
cd binr && ${MAKE} install
cd shlr && ${MAKE} install
for DIR in ${DATADIRS} ; do \
(cd "$$DIR" ; ${MAKE} install ); \
* Install includes in windows dist * Import linux-x86-32/64 and darwin-x86-32 sflib includedirs * Simplify data installation for magic, egg, syscall and asm * Set R2_INCDIR in r_userconf * Make ragg2-cc much smarter - use ragg2 -v to get paths and version - accept new flags -a -b -k for arch, bits and kernel - supports crosscompilation --HG-- rename : libr/magic/d/OpenBSD => libr/magic/d/default/OpenBSD rename : libr/magic/d/archive => libr/magic/d/default/archive rename : libr/magic/d/cafebabe => libr/magic/d/default/cafebabe rename : libr/magic/d/cisco => libr/magic/d/default/cisco rename : libr/magic/d/database => libr/magic/d/default/database rename : libr/magic/d/editors => libr/magic/d/default/editors rename : libr/magic/d/elf => libr/magic/d/default/elf rename : libr/magic/d/filesystems => libr/magic/d/default/filesystems rename : libr/magic/d/flash => libr/magic/d/default/flash rename : libr/magic/d/freebsd => libr/magic/d/default/freebsd rename : libr/magic/d/gimp => libr/magic/d/default/gimp rename : libr/magic/d/images => libr/magic/d/default/images rename : libr/magic/d/java => libr/magic/d/default/java rename : libr/magic/d/jpeg => libr/magic/d/default/jpeg rename : libr/magic/d/linux => libr/magic/d/default/linux rename : libr/magic/d/mail.news => libr/magic/d/default/mail.news rename : libr/magic/d/matroska => libr/magic/d/default/matroska rename : libr/magic/d/mime => libr/magic/d/default/mime rename : libr/magic/d/msdos => libr/magic/d/default/msdos rename : libr/magic/d/netbsd => libr/magic/d/default/netbsd rename : libr/magic/d/pdf => libr/magic/d/default/pdf rename : libr/magic/d/perl => libr/magic/d/default/perl rename : libr/magic/d/python => libr/magic/d/default/python rename : libr/magic/d/riff => libr/magic/d/default/riff rename : libr/magic/d/sniffer => libr/magic/d/default/sniffer rename : libr/magic/d/sql => libr/magic/d/default/sql rename : libr/magic/d/sun => libr/magic/d/default/sun rename : libr/magic/d/uuencode => libr/magic/d/default/uuencode
2011-11-29 02:14:27 +00:00
done
2015-12-03 16:02:13 +00:00
cd "$(DESTDIR)$(LIBDIR)/radare2/" ;\
rm -f last ; ln -fs $(VERSION) last
cd "$(DESTDIR)$(DATADIR)/radare2/" ;\
rm -f last ; ln -fs $(VERSION) last
rm -rf "${DESTDIR}${DATADIR}/radare2/${VERSION}/hud"
mkdir -p "${DESTDIR}${DATADIR}/radare2/${VERSION}/hud"
mkdir -p "${DESTDIR}${BINDIR}"
#${INSTALL_SCRIPT} "${PWD}/sys/indent.sh" "${DESTDIR}${BINDIR}/r2-indent"
#${INSTALL_SCRIPT} "${PWD}/sys/r1-docker.sh" "${DESTDIR}${BINDIR}/r2-docker"
cp -f doc/hud "${DESTDIR}${DATADIR}/radare2/${VERSION}/hud/main"
mkdir -p "${DESTDIR}${DATADIR}/radare2/${VERSION}/"
2017-05-14 22:57:14 +00:00
$(SHELL) sys/ldconfig.sh
2017-10-18 15:53:00 +00:00
$(SHELL) ./configure-plugins --rm-static $(DESTDIR)$(LIBDIR)/radare2/last/
# Remove make .d files. fixes build when .c files are removed
rmd:
rm -f `find . -type f -iname '*.d'`
install-www:
rm -rf "${DESTDIR}${WWWROOT}"
rm -rf "${DESTDIR}${LIBDIR}/radare2/${VERSION}/www" # old dir
mkdir -p "${DESTDIR}${WWWROOT}"
cp -rf shlr/www/* "${DESTDIR}${WWWROOT}"
symstall-www:
rm -rf "${DESTDIR}${WWWROOT}"
rm -rf "${DESTDIR}${LIBDIR}/radare2/${VERSION}/www" # old dir
mkdir -p "${DESTDIR}${WWWROOT}"
2017-10-18 15:53:00 +00:00
for FILE in $(shell cd shlr/www ; ls) ; do \
ln -fs "$(PWD)/shlr/www/$$FILE" "$(DESTDIR)$(WWWROOT)" ; done
install-pkgconfig-symlink:
@${INSTALL_DIR} "${DESTDIR}${LIBDIR}/pkgconfig"
2017-10-18 15:53:00 +00:00
for FILE in $(shell cd pkgcfg ; ls *.pc) ; do \
ln -fs "$(PWD)/pkgcfg/$$FILE" "${DESTDIR}${LIBDIR}/pkgconfig/$$FILE" ; done
symstall-sdb:
for DIR in ${DATADIRS} ; do (\
cd "$$DIR" ; \
echo "$$DIR" ; \
${MAKE} install-symlink ); \
* Install includes in windows dist * Import linux-x86-32/64 and darwin-x86-32 sflib includedirs * Simplify data installation for magic, egg, syscall and asm * Set R2_INCDIR in r_userconf * Make ragg2-cc much smarter - use ragg2 -v to get paths and version - accept new flags -a -b -k for arch, bits and kernel - supports crosscompilation --HG-- rename : libr/magic/d/OpenBSD => libr/magic/d/default/OpenBSD rename : libr/magic/d/archive => libr/magic/d/default/archive rename : libr/magic/d/cafebabe => libr/magic/d/default/cafebabe rename : libr/magic/d/cisco => libr/magic/d/default/cisco rename : libr/magic/d/database => libr/magic/d/default/database rename : libr/magic/d/editors => libr/magic/d/default/editors rename : libr/magic/d/elf => libr/magic/d/default/elf rename : libr/magic/d/filesystems => libr/magic/d/default/filesystems rename : libr/magic/d/flash => libr/magic/d/default/flash rename : libr/magic/d/freebsd => libr/magic/d/default/freebsd rename : libr/magic/d/gimp => libr/magic/d/default/gimp rename : libr/magic/d/images => libr/magic/d/default/images rename : libr/magic/d/java => libr/magic/d/default/java rename : libr/magic/d/jpeg => libr/magic/d/default/jpeg rename : libr/magic/d/linux => libr/magic/d/default/linux rename : libr/magic/d/mail.news => libr/magic/d/default/mail.news rename : libr/magic/d/matroska => libr/magic/d/default/matroska rename : libr/magic/d/mime => libr/magic/d/default/mime rename : libr/magic/d/msdos => libr/magic/d/default/msdos rename : libr/magic/d/netbsd => libr/magic/d/default/netbsd rename : libr/magic/d/pdf => libr/magic/d/default/pdf rename : libr/magic/d/perl => libr/magic/d/default/perl rename : libr/magic/d/python => libr/magic/d/default/python rename : libr/magic/d/riff => libr/magic/d/default/riff rename : libr/magic/d/sniffer => libr/magic/d/default/sniffer rename : libr/magic/d/sql => libr/magic/d/default/sql rename : libr/magic/d/sun => libr/magic/d/default/sun rename : libr/magic/d/uuencode => libr/magic/d/default/uuencode
2011-11-29 02:14:27 +00:00
done
symstall install-symlink: install-man-symlink install-doc-symlink install-pkgconfig-symlink symstall-www symstall-sdb
cd libr && ${MAKE} install-symlink
cd binr && ${MAKE} install-symlink
cd shlr && ${MAKE} install-symlink
mkdir -p "${DESTDIR}${BINDIR}"
ln -fs "${PWD}/sys/indent.sh" "${DESTDIR}${BINDIR}/r2-indent"
2017-03-10 09:24:43 +00:00
ln -fs "${PWD}/sys/r2-docker.sh" "${DESTDIR}${BINDIR}/r2-docker"
mkdir -p "${DESTDIR}${DATADIR}/radare2/${VERSION}/hud"
cd "$(DESTDIR)$(LIBDIR)/radare2/" ;\
rm -f last ; ln -fs $(VERSION) last
2015-12-03 16:02:13 +00:00
cd "$(DESTDIR)$(DATADIR)/radare2/" ;\
rm -f last ; ln -fs $(VERSION) last
ln -fs "${PWD}/doc/hud" "${DESTDIR}${DATADIR}/radare2/${VERSION}/hud/main"
mkdir -p "${DESTDIR}${DATADIR}/radare2/${VERSION}/"
2017-05-14 22:57:14 +00:00
$(SHELL) sys/ldconfig.sh
$(SHELL) ./configure-plugins --rm-static $(DESTDIR)/$(LIBDIR)/radare2/last/
deinstall uninstall:
rm -f $(DESTDIR)$(BINDIR)/r2-indent
2017-03-10 09:24:43 +00:00
rm -f $(DESTDIR)$(BINDIR)/r2-docker
cd libr && ${MAKE} uninstall PARENT=1
cd binr && ${MAKE} uninstall PARENT=1
cd shlr && ${MAKE} uninstall PARENT=1
cd libr/syscall/d && ${MAKE} uninstall PARENT=1
cd libr/anal/d && ${MAKE} uninstall PARENT=1
@echo
@echo "Run 'make purge' to also remove installed files from previous versions of r2"
@echo
purge-doc:
rm -rf "${DESTDIR}${DOCDIR}"
cd man ; for FILE in *.1 ; do rm -f "${DESTDIR}${MANDIR}/man1/$$FILE" ; done
rm -f "${DESTDIR}${MANDIR}/man1/r2.1"
user-wrap=echo "\#!/bin/sh" > ~/bin/"$1" \
; echo "${PWD}/env.sh '${PREFIX}' '$1' \"\$$@\"" >> ~/bin/"$1" \
; chmod +x ~/bin/"$1" ;
user-install:
mkdir -p ~/bin
$(foreach mod,$(R2BINS),$(call user-wrap,$(mod)))
2015-09-08 13:53:06 +00:00
cd ~/bin ; ln -fs radare2 r2
user-uninstall:
$(foreach mod,$(R2BINS),rm -f ~/bin/"$(mod)")
2015-09-08 21:47:45 +00:00
rm -f ~/bin/r2
-rmdir ~/bin
purge-dev:
rm -f "${DESTDIR}${LIBDIR}/libr_"*".${EXT_AR}"
rm -f "${DESTDIR}${LIBDIR}/pkgconfig/r_"*.pc
rm -rf "${DESTDIR}${INCLUDEDIR}/libr"
rm -f "${DESTDIR}${LIBDIR}/radare2/${VERSION}/-"*
2017-05-29 20:47:51 +00:00
# required for EXT_SO
include libr/config.mk
strip:
-for FILE in ${R2BINS} ; do ${STRIP} -s "${DESTDIR}${BINDIR}/$$FILE" 2> /dev/null ; done
-for FILE in "${DESTDIR}${LIBDIR}/libr_"*".${EXT_SO}" "${DESTDIR}${LIBDIR}/libr2.${EXT_SO}" ; do \
${STRIP} -s "$$FILE" ; done
purge: purge-doc purge-dev user-uninstall
for FILE in ${R2BINS} ; do rm -f "${DESTDIR}${BINDIR}/$$FILE" ; done
rm -f "${DESTDIR}${BINDIR}/ragg2-cc"
rm -f "${DESTDIR}${BINDIR}/r2"
rm -f "${DESTDIR}${LIBDIR}/libr_"*
rm -f "${DESTDIR}${LIBDIR}/libr2"*".${EXT_SO}"
rm -rf "${DESTDIR}${LIBDIR}/radare2"
rm -rf "${DESTDIR}${INCLUDEDIR}/libr"
rm -rf "${DESTDIR}${DATADIR}/radare2"
2017-03-09 23:16:01 +00:00
purge2:
$(MAKE) purge
ifneq ($(PREFIX),/usr)
$(MAKE) purge PREFIX=/usr
endif
ifneq ($(PREFIX),/usr/local)
$(MAKE) purge PREFIX=/usr/local
endif
2016-02-24 17:11:45 +00:00
R2V=radare2-${VERSION}
2016-02-23 01:47:49 +00:00
dist:
2016-02-24 17:11:45 +00:00
rm -rf $(R2V)
git clone . $(R2V)
2016-02-26 10:44:52 +00:00
-cd $(R2V) && [ ! -f config-user.mk -o configure -nt config-user.mk ] && ./configure "--prefix=${PREFIX}"
2016-02-24 17:11:45 +00:00
cd $(R2V) ; git log $$(git show-ref | grep ${PREVIOUS_RELEASE} | awk '{print $$1}')..HEAD > ChangeLog
2016-02-26 10:44:52 +00:00
$(MAKE) -C $(R2V)/shlr capstone-sync
2016-02-24 17:11:45 +00:00
FILES=`cd $(R2V); git ls-files | sed -e "s,^,$(R2V)/,"` ; \
CS_FILES=`cd $(R2V)/shlr/capstone ; git ls-files | grep -v pdf | grep -v xcode | grep -v msvc | grep -v suite | grep -v bindings | grep -v tests | sed -e "s,^,$(R2V)/shlr/capstone/,"` ; \
${TAR} "radare2-${VERSION}.tar" $${FILES} $${CS_FILES} "$(R2V)/ChangeLog" ; \
2016-02-23 01:47:49 +00:00
${CZ} "radare2-${VERSION}.tar"
olddist:
-[ configure -nt config-user.mk ] && ./configure "--prefix=${PREFIX}"
2016-01-20 02:44:59 +00:00
#git log $$(git show-ref `git tag |tail -n1`)..HEAD > ChangeLog
git log $$(git show-ref | grep ${PREVIOUS_RELEASE} | awk '{print $$1}')..HEAD > ChangeLog
2014-06-14 00:44:31 +00:00
cd shlr && ${MAKE} capstone-sync
DIR=`basename "$$PWD"` ; \
FILES=`git ls-files | sed -e "s,^,radare2-${VERSION}/,"` ; \
CS_FILES=`cd shlr/capstone ; git ls-files | grep -v pdf | grep -v xcode | grep -v msvc | grep -v suite | grep -v bindings | grep -v tests | sed -e "s,^,radare2-${VERSION}/shlr/capstone/,"` ; \
cd .. && mv "$${DIR}" "radare2-${VERSION}" && \
2016-01-20 02:44:59 +00:00
${TAR} "radare2-${VERSION}.tar" $${FILES} $${CS_FILES} "radare2-${VERSION}/ChangeLog" ; \
${CZ} "radare2-${VERSION}.tar" ; \
mv "radare2-${VERSION}" "$${DIR}"
shot:
DATE=`date '+%Y%m%d'` ; \
FILES=`git ls-files | sed -e "s,^,radare2-${DATE}/,"` ; \
cd .. && mv radare2 "radare2-$${DATE}" && \
${TAR} "radare2-$${DATE}.tar" $${FILES} ;\
${CZ} "radare2-$${DATE}.tar" ;\
mv "radare2-$${DATE}" radare2 && \
scp "radare2-$${DATE}.${TAREXT}" \
2013-07-07 21:03:10 +00:00
radare.org:/srv/http/radareorg/get/shot
tests:
@if [ -d $(R2R) ]; then \
cd $(R2R) ; git clean -xdf ; git pull ; \
else \
git clone --depth 1 "${R2R_URL}" "$(R2R)"; \
fi
cd $(R2R) ; ${MAKE}
osx-sign:
$(MAKE) -C binr/radare2 osx-sign
2016-01-22 19:53:01 +00:00
osx-sign-libs:
$(MAKE) -C binr/radare2 osx-sign-libs
osx-pkg:
sys/osx-pkg.sh $(VERSION)
quality:
./sys/shellcheck.sh
menu nconfig:
./sys/menu.sh || true
2016-04-04 10:16:06 +00:00
pie:
sys/pie.sh ${PREVIOUS_RELEASE}
build:
$(MESON) --prefix="${PREFIX}" build
meson-config meson-cfg meson-conf:
2017-05-09 22:05:50 +00:00
# TODO: this is wrong for each platform different plugins must be compiled
#cp -f plugins.meson.cfg plugins.cfg
#./configure --prefix="${PREFIX}"
echo TODO
meson: build
2017-07-28 12:02:27 +00:00
@echo "[ SDB Build ]"
$(PYTHON) sys/meson_sdb.py
2017-05-09 22:05:50 +00:00
cmp plugins.meson.cfg plugins.cfg || $(MAKE) meson-config
2017-07-28 12:02:27 +00:00
@echo "[ Ninja Build ]"
ninja -C build
meson-install:
cd build && DESTDIR="$(DESTDIR)" ninja install
B=$(DESTDIR)$(BINDIR)
L=$(DESTDIR)$(LIBDIR)
meson-symstall: symstall-sdb
ln -fs $(PWD)/binr/r2pm/r2pm ${B}/r2pm
ln -fs $(PWD)/build/binr/rasm2/rasm2 ${B}/rasm2
ln -fs $(PWD)/build/binr/rarun2/rarun2 ${B}/rarun2
ln -fs $(PWD)/build/binr/radare2/radare2 ${B}/radare2
ln -fs $(PWD)/build/binr/rahash2/rahash2 ${B}/rahash2
ln -fs $(PWD)/build/binr/rabin2/rabin2 ${B}/rabin2
ln -fs $(PWD)/build/binr/radare2/radare2 ${B}/radare2
ln -fs $(PWD)/build/binr/ragg2/ragg2 ${B}/ragg2
cd $(B) && ln -fs radare2 r2
2017-05-29 20:47:51 +00:00
ln -fs $(PWD)/build/libr/util/libr_util.$(EXT_SO) ${L}/libr_util.$(EXT_SO)
ln -fs $(PWD)/build/libr/bp/libr_bp.$(EXT_SO) ${L}/libr_bp.$(EXT_SO)
ln -fs $(PWD)/build/libr/syscall/libr_syscall.$(EXT_SO) ${L}/libr_syscall.$(EXT_SO)
ln -fs $(PWD)/build/libr/cons/libr_cons.$(EXT_SO) ${L}/libr_cons.$(EXT_SO)
ln -fs $(PWD)/build/libr/search/libr_search.$(EXT_SO) ${L}/libr_search.$(EXT_SO)
ln -fs $(PWD)/build/libr/magic/libr_magic.$(EXT_SO) ${L}/libr_magic.$(EXT_SO)
ln -fs $(PWD)/build/libr/flag/libr_flag.$(EXT_SO) ${L}/libr_flag.$(EXT_SO)
ln -fs $(PWD)/build/libr/reg/libr_reg.$(EXT_SO) ${L}/libr_reg.$(EXT_SO)
ln -fs $(PWD)/build/libr/bin/libr_bin.$(EXT_SO) ${L}/libr_bin.$(EXT_SO)
ln -fs $(PWD)/build/libr/config/libr_config.$(EXT_SO) ${L}/libr_config.$(EXT_SO)
ln -fs $(PWD)/build/libr/parse/libr_parse.$(EXT_SO) ${L}/libr_parse.$(EXT_SO)
ln -fs $(PWD)/build/libr/lang/libr_lang.$(EXT_SO) ${L}/libr_lang.$(EXT_SO)
ln -fs $(PWD)/build/libr/asm/libr_asm.$(EXT_SO) ${L}/libr_asm.$(EXT_SO)
ln -fs $(PWD)/build/libr/anal/libr_anal.$(EXT_SO) ${L}/libr_anal.$(EXT_SO)
ln -fs $(PWD)/build/libr/egg/libr_egg.$(EXT_SO) ${L}/libr_egg.$(EXT_SO)
ln -fs $(PWD)/build/libr/fs/libr_fs.$(EXT_SO) ${L}/libr_fs.$(EXT_SO)
ln -fs $(PWD)/build/libr/debug/libr_debug.$(EXT_SO) ${L}/libr_debug.$(EXT_SO)
ln -fs $(PWD)/build/libr/core/libr_core.$(EXT_SO) ${L}/libr_core.$(EXT_SO)
meson-uninstall:
$(MAKE) uninstall
meson-clean:
rm -rf build
MESON_FILES=$(shell find build/libr build/binr -type f| grep -v @)
meson-symstall-experimental:
for a in $(MESON_FILES) ; do echo ln -fs $(PWD)/$$a $(PWD)/$$(echo $$a|sed -e s,build/,,) ; done
$(MAKE) symstall
.PHONY: meson meson-install
include ${MKPLUGINS}
.PHONY: all clean distclean mrproper install symstall uninstall deinstall strip
.PHONY: libr binr install-man w32dist tests dist shot pkgcfg depgraph.png love