radare2/libr/Makefile

172 lines
5.0 KiB
Makefile
Raw Normal View History

include ../global.mk
include config.mk
PREFIX?=${PWD}/../prefix
PFX=${DESTDIR}${PREFIX}
#PREFIX=${PFX}
# Libraries
LIBLIST=util line cons line lib io meta lang flags bin hash config syscall socket
LIBLIST+=cmd asm anal print parse search diff bp reg sign vm th db debug core diff
# Under development
#LIBLIST+=print
#LIBLIST+=util
#LIBLIST+=search
# TODO : generate single library linking against the rest
#LIBSO=libr.so
#LIBAR=libr.a
all: libs libr
libs:
@for lib in ${LIBLIST}; do ( cd $${lib} && ${MAKE} all ); done
@echo Build done for: ${LIBLIST}
2010-03-25 10:18:59 +01:00
ifeq ($(ONELIB),1)
libr: .objs libr2.${EXT_SO} libr2.${EXT_AR}
2010-03-25 10:18:59 +01:00
else
libr:
endif
ifeq ($(WITHPIC),1)
libr2.${EXT_SO}:
ifeq ($(OSTYPE),darwin)
@echo Linkage of libr2.dylib is broken on OSX because of dupped .o in .objs extraction
else
${CC} ${LDFLAGS_SONAME}libr2.${EXT_SO} ${LDFLAGS_LIB} ${PIC_CFLAGS} .objs/*.o -o libr2.${EXT_SO}
endif
libr2.${EXT_AR}:
@echo No archive libr.a. Try --without-pic in configure
else
libr2.${EXT_SO}:
libr2.${EXT_AR}:
ar -r libr2.${EXT_AR} .objs/*.o
endif
# XXX needs autodetection of deps to remake and so..
.objs:
mkdir -p .objs
-for a in ${LIBLIST} ; do \
(cd .objs && ar x ../$$a/libr_$$a.a) ; \
done
pkgcfg:
for lib in ${LIBLIST}; do ( cd $${lib} && ${MAKE} pkgcfg ); done
cd asm && ${MAKE} pkgcfg NAME=libr DEPS="r_`echo ${LIBLIST}|sed -e 's, , r_,g'`"
# TODO: Magically generate libr.pc.acr here using LIBLIST and so :)
install-pkgconfig:
@${INSTALL_DIR} ${PFX}/lib/pkgconfig
for a in ../pkgcfg/*.pc ; do ${INSTALL_DATA} $$a ${PFX}/lib/pkgconfig ; done
install-includes:
@${INSTALL_DIR} ${PFX}/include/libr
(cd include && ${INSTALL_DATA} * ${PFX}/include/libr)
install-bins:
# programs
@${INSTALL_DIR} ${PFX}/bin
@for a in `find */t -perm -u+x -type f | grep 2`; \
do echo "$$a ${PFX}/bin"; \
2010-03-19 13:57:21 +01:00
${INSTALL_PROGRAM} $$a ${PFX}/bin ; \
done
# shortcut
-cd ${PFX}/bin && rm -f r2 ; ln -fs radare2 r2
install-test-bins:
# test programs
@${INSTALL_DIR} ${PFX}/lib/radare2/test
@for a in `find */t -perm -u+x -type f | grep -v 2`; \
do echo "$$a ${PFX}/lib/radare2/test" ; \
2010-03-19 13:57:21 +01:00
${INSTALL_PROGRAM} $$a ${PFX}/lib/radare2/test ; \
done
install-symlink:
mkdir -p ${PFX}/bin
mkdir -p ${PFX}/include
mkdir -p ${PFX}/lib/radare2
ln -fs ${PWD}/include ${PFX}/include/libr
ln -fs ${PWD}/asm/t/rasm2 ${PFX}/bin/rasm2
ln -fs ${PWD}/hash/t/rahash2 ${PFX}/bin/rahash2
ln -fs ${PWD}/util/t/rax2 ${PFX}/bin/rax2
ln -fs ${PWD}/diff/t/radiff2 ${PFX}/bin/radiff2
ln -fs ${PWD}/bin/t/rabin2 ${PFX}/bin/rabin2
ln -fs ${PWD}/core/t/radare2 ${PFX}/bin/radare2
for a in ${LIBLIST} ; do \
ln -fs ${PWD}/$${a}/libr_$${a}.${EXT_SO} ${PFX}/lib/libr_$${a}.${EXT_SO} ; \
ln -fs ${PWD}/$${a}/libr_$${a}.${EXT_AR} ${PFX}/lib/libr_$${a}.${EXT_AR} ; \
for b in $${a}/p/*.${EXT_SO} ; do \
ln -fs ${PWD}/$${b} ${PFX}/lib/radare2/ ; \
done ; \
done
* Move vapi directory into swig/ - Two splitted distribution files: - radare2 and radare2-swig - Making it more debian friendly for packaging --HG-- rename : libr/vapi/libr.deps => swig/vapi/libr.deps rename : libr/vapi/libr.vapi => swig/vapi/libr.vapi rename : libr/vapi/r_anal.vapi => swig/vapi/r_anal.vapi rename : libr/vapi/r_asm.vapi => swig/vapi/r_asm.vapi rename : libr/vapi/r_bin.deps => swig/vapi/r_bin.deps rename : libr/vapi/r_bin.vapi => swig/vapi/r_bin.vapi rename : libr/vapi/r_bp.vapi => swig/vapi/r_bp.vapi rename : libr/vapi/r_config.vapi => swig/vapi/r_config.vapi rename : libr/vapi/r_cons.vapi => swig/vapi/r_cons.vapi rename : libr/vapi/r_core.vapi => swig/vapi/r_core.vapi rename : libr/vapi/r_crypto.vapi => swig/vapi/r_crypto.vapi rename : libr/vapi/r_db.vapi => swig/vapi/r_db.vapi rename : libr/vapi/r_debug.deps => swig/vapi/r_debug.deps rename : libr/vapi/r_debug.vapi => swig/vapi/r_debug.vapi rename : libr/vapi/r_diff.vapi => swig/vapi/r_diff.vapi rename : libr/vapi/r_hash.vapi => swig/vapi/r_hash.vapi rename : libr/vapi/r_io.deps => swig/vapi/r_io.deps rename : libr/vapi/r_io.vapi => swig/vapi/r_io.vapi rename : libr/vapi/r_lang.vapi => swig/vapi/r_lang.vapi rename : libr/vapi/r_lib.vapi => swig/vapi/r_lib.vapi rename : libr/vapi/r_line.vapi => swig/vapi/r_line.vapi rename : libr/vapi/r_parse.vapi => swig/vapi/r_parse.vapi rename : libr/vapi/r_reg.vapi => swig/vapi/r_reg.vapi rename : libr/vapi/r_search.vapi => swig/vapi/r_search.vapi rename : libr/vapi/r_socket.vapi => swig/vapi/r_socket.vapi rename : libr/vapi/r_syscall.vapi => swig/vapi/r_syscall.vapi rename : libr/vapi/r_util.vapi => swig/vapi/r_util.vapi rename : libr/vapi/t/Makefile => swig/vapi/t/Makefile rename : libr/vapi/t/array.vala => swig/vapi/t/array.vala rename : libr/vapi/t/asm.gs => swig/vapi/t/asm.gs rename : libr/vapi/t/asm.vala => swig/vapi/t/asm.vala rename : libr/vapi/t/bin.vala => swig/vapi/t/bin.vala rename : libr/vapi/t/bintest.vala => swig/vapi/t/bintest.vala rename : libr/vapi/t/core.vala => swig/vapi/t/core.vala rename : libr/vapi/t/db.vala => swig/vapi/t/db.vala rename : libr/vapi/t/hash.vala => swig/vapi/t/hash.vala rename : libr/vapi/t/io.vala => swig/vapi/t/io.vala rename : libr/vapi/t/lang.vala => swig/vapi/t/lang.vala rename : libr/vapi/t/list.vala => swig/vapi/t/list.vala rename : libr/vapi/t/list.vapi => swig/vapi/t/list.vapi rename : libr/vapi/t/regs.vala => swig/vapi/t/regs.vala rename : libr/vapi/t/sc.vala => swig/vapi/t/sc.vala rename : libr/vapi/t/search.gs => swig/vapi/t/search.gs rename : libr/vapi/t/search.vala => swig/vapi/t/search.vala rename : libr/vapi/t/socket.vala => swig/vapi/t/socket.vala
2010-03-14 19:36:44 +01:00
install: install-includes install-pkgconfig install-bins install-test-bins
# TODO :Use INSTALL_DATA_DIR instead of mkdir
# libraries
@${INSTALL_DIR} ${PFX}/lib
@for a in `find * | grep -e '\.${EXT_SO}$$' | grep -v lib/t | grep lib` ; do \
2010-03-19 13:57:21 +01:00
echo "$$a ${PFX}/lib"; \
${INSTALL_DATA} $$a ${PFX}/lib ; \
done
# object archives
@for a in `find * | grep -e '\.a$$'` ; do \
echo "$$a ${PFX}/lib"; ${INSTALL_DATA} $$a ${PFX}/lib ; done
# plugins
#${INSTALL_DATA} libr.pc ${PFX}/lib/pkgconfig
@${INSTALL_DIR} ${PFX}/lib/radare2
@for a in `find */p -perm -u+x -type f`; \
do echo "$$a ${PFX}/lib/radare2"; \
${INSTALL_DATA} $$a ${PFX}/lib/radare2 ; done
${INSTALL_DATA} lang/p/radare.* ${PFX}/lib/radare2
echo "lang/p/radare.* ${PFX}/lib/radare2"
# strip rpath from ALL bins
./rpathstrip.sh ${PFX}
deinstall uninstall:
# libraries
-@for a in `find * | grep -e '\.${EXT_SO}$$' | grep -v 'lib/t' | grep lib` ; do \
a=`echo $$a | awk -F / '{ print $$NF; }'`; \
echo ${PREFIX}/lib/$$a ; rm -f ${PREFIX}/lib/$$a ; done
### object archives
-@for a in `find * | grep -e '\.a$$'` ; do \
a=`echo $$a | awk -F / '{ print $$NF; }'`; \
echo ${PREFIX}/lib/$$a ; rm -f ${PREFIX}/lib/$$a ; done
### includes
-(cd include && for a in * ; do rm -f ${PREFIX}/libr/$$a ; done)
### programs
-@for a in `find */t -perm -u+x -type f | grep 2`; do \
a=`echo $$a|awk -F / '{ print $$NF; }'`; \
echo ${PREFIX}/bin/$$a ; rm -f ${PREFIX}/bin/$$a ; done
# plugins
-@for a in `find */p -perm -u+x -type f`; do \
a="${PREFIX}/lib/radare2/`echo $$a|awk -F / '{ print $$NF; }'`"; \
echo $$a ; rm -f $$a ; done
rm -rf ${PREFIX}/lib/radare2
rm -f ${PREFIX}/lib/pkgconfig/libr.pc
rm -f ${PREFIX}/lib/pkgconfig/r_*.pc
# test programs
-@for a in `find */t -perm -u+x -type f | grep -v 2`; do \
a="${PREFIX}/bin/libr-test/`echo $$a|awk -F / '{ print $$NF; }'`"; \
echo $$a ; rm -f $$a ; done
rm -rf ${PREFIX}/bin/libr-test
@echo libr aka radare2 has been uninstalled from PREFIX=${PREFIX}
todo:
grep -re TODO -e XXX *
clean:
for lib in ${LIBLIST}; do ( cd $${lib} && ${MAKE} clean ); done
rm -rf .objs
2009-06-15 02:44:05 +00:00
mrproper: clean
2009-03-10 12:21:46 +01:00
rm -f libr.pc
* 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 23:42:49 +01:00
sloc:
${MAKE} -C .. sloc SLOCDIR=libr
.PHONY: sloc mrproper clean todo all pkgcfg install deinstall uninstall libr