makefile 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. cc_cross=/home/wangyu/Desktop/arm-2014.05/bin/arm-none-linux-gnueabi-g++
  2. cc_local=g++
  3. cc_mips24kc_be=/toolchains/lede-sdk-17.01.2-ar71xx-generic_gcc-5.4.0_musl-1.1.16.Linux-x86_64/staging_dir/toolchain-mips_24kc_gcc-5.4.0_musl-1.1.16/bin/mips-openwrt-linux-musl-g++
  4. cc_mips24kc_le=/toolchains/lede-sdk-17.01.2-ramips-mt7621_gcc-5.4.0_musl-1.1.16.Linux-x86_64/staging_dir/toolchain-mipsel_24kc_gcc-5.4.0_musl-1.1.16/bin/mipsel-openwrt-linux-musl-g++
  5. cc_arm= /toolchains/lede-sdk-17.01.2-bcm53xx_gcc-5.4.0_musl-1.1.16_eabi.Linux-x86_64/staging_dir/toolchain-arm_cortex-a9_gcc-5.4.0_musl-1.1.16_eabi/bin/arm-openwrt-linux-c++
  6. cc_mingw_cross=i686-w64-mingw32-g++-posix
  7. cc_mac_cross=o64-clang++ -stdlib=libc++
  8. cc_x86=/toolchains/lede-sdk-17.01.2-x86-generic_gcc-5.4.0_musl-1.1.16.Linux-x86_64/staging_dir/toolchain-i386_pentium4_gcc-5.4.0_musl-1.1.16/bin/i486-openwrt-linux-c++
  9. cc_amd64=/toolchains/lede-sdk-17.01.2-x86-64_gcc-5.4.0_musl-1.1.16.Linux-x86_64/staging_dir/toolchain-x86_64_gcc-5.4.0_musl-1.1.16/bin/x86_64-openwrt-linux-c++
  10. #cc_bcm2708=/home/wangyu/raspberry/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++
  11. SOURCES0=main.cpp log.cpp common.cpp lib/fec.cpp lib/rs.cpp crc32/Crc32.cpp packet.cpp delay_manager.cpp fd_manager.cpp connection.cpp fec_manager.cpp misc.cpp tunnel_client.cpp tunnel_server.cpp
  12. SOURCES=${SOURCES0} my_ev.cpp -isystem libev
  13. NAME=speederv2
  14. FLAGS= -std=c++11 -Wall -Wextra -Wno-unused-variable -Wno-unused-parameter -Wno-missing-field-initializers ${OPT}
  15. TARGETS=amd64 arm mips24kc_be x86 mips24kc_le
  16. TAR=${NAME}_binaries.tar.gz `echo ${TARGETS}|sed -r 's/([^ ]+)/${NAME}_\1/g'` version.txt
  17. export STAGING_DIR=/tmp/ #just for supress warning of staging_dir not define
  18. # targets for nativei (non-cross) compile
  19. all:git_version
  20. rm -f ${NAME}
  21. ${cc_local} -o ${NAME} -I. ${SOURCES} ${FLAGS} -lrt -ggdb -static -O2
  22. freebsd:git_version
  23. rm -f ${NAME}
  24. ${cc_local} -o ${NAME} -I. ${SOURCES} ${FLAGS} -lrt -ggdb -static -O2
  25. mingw:git_version
  26. rm -f ${NAME}
  27. ${cc_local} -o ${NAME} -I. ${SOURCES} ${FLAGS} -ggdb -static -O2 -lws2_32
  28. mingw_wepoll:git_version #to compile you need a pacthed version of libev with wepoll backend
  29. rm -f ${NAME}
  30. ${cc_local} -o ${NAME} -I. ${SOURCES0} ${FLAGS} -ggdb -static -O2 -DNO_LIBEV_EMBED -D_WIN32 -lev -lws2_32
  31. mac:git_version
  32. rm -f ${NAME}
  33. ${cc_local} -o ${NAME} -I. ${SOURCES} ${FLAGS} -ggdb -O2
  34. cygwin:git_version
  35. rm -f ${NAME}
  36. ${cc_local} -o ${NAME} -I. ${SOURCES} ${FLAGS} -lrt -ggdb -static -O2 -D_GNU_SOURCE
  37. #targes for general cross compile
  38. cross:git_version
  39. ${cc_cross} -o ${NAME}_cross -I. ${SOURCES} ${FLAGS} -lrt -O2
  40. cross2:git_version
  41. ${cc_cross} -o ${NAME}_cross -I. ${SOURCES} ${FLAGS} -lrt -static -lgcc_eh -O2
  42. cross3:git_version
  43. ${cc_cross} -o ${NAME}_cross -I. ${SOURCES} ${FLAGS} -lrt -static -O2
  44. #targets only for debug purpose
  45. fast: git_version
  46. rm -f ${NAME}
  47. ${cc_local} -o ${NAME} -I. ${SOURCES} ${FLAGS} -lrt -ggdb
  48. debug: git_version
  49. rm -f ${NAME}
  50. ${cc_local} -o ${NAME} -I. ${SOURCES} ${FLAGS} -lrt -Wformat-nonliteral -D MY_DEBUG -ggdb
  51. debug2: git_version
  52. rm -f ${NAME}
  53. ${cc_local} -o ${NAME} -I. ${SOURCES} ${FLAGS} -lrt -Wformat-nonliteral -ggdb
  54. #targets only for 'make release'
  55. mips24kc_be: git_version
  56. ${cc_mips24kc_be} -o ${NAME}_$@ -I. ${SOURCES} ${FLAGS} -lrt -lgcc_eh -static -O2
  57. mips24kc_le: git_version
  58. ${cc_mips24kc_le} -o ${NAME}_$@ -I. ${SOURCES} ${FLAGS} -lrt -lgcc_eh -static -O2
  59. amd64:git_version
  60. ${cc_amd64} -o ${NAME}_$@ -I. ${SOURCES} ${FLAGS} -lrt -static -O2 -lgcc_eh -ggdb
  61. x86:git_version #to build this you need 'g++-multilib' installed
  62. ${cc_x86} -o ${NAME}_$@ -I. ${SOURCES} ${FLAGS} -lrt -static -O2 -lgcc_eh -ggdb
  63. arm:git_version
  64. ${cc_arm} -o ${NAME}_$@ -I. ${SOURCES} ${FLAGS} -lrt -static -O2 -lgcc_eh
  65. release: ${TARGETS}
  66. cp git_version.h version.txt
  67. tar -zcvf ${TAR}
  68. #targets for cross compile windows targets on linux
  69. mingw_cross:git_version #to build this and the below one you need 'mingw-w64' installed (the cross compile version on linux)
  70. ${cc_mingw_cross} -o ${NAME}.exe -I. ${SOURCES} ${FLAGS} -ggdb -static -O2 -lws2_32
  71. mingw_cross_wepoll:git_version #to compile you need a pacthed version of libev with wepoll backend installed
  72. ${cc_mingw_cross} -o ${NAME}_wepoll.exe -I. ${SOURCES0} ${FLAGS} -ggdb -static -O2 -DNO_LIBEV_EMBED -D_WIN32 -lev -lws2_32
  73. #targets for cross compile macos targets on linux
  74. mac_cross:git_version #need to install 'osxcross' first.
  75. ${cc_mac_cross} -o ${NAME}_mac -I. ${SOURCES} ${FLAGS} -ggdb -O2
  76. #release2 includes all binary in 'release' plus win and mac cross compile targets
  77. release2: ${TARGETS} mingw_cross mingw_cross_wepoll mac_cross
  78. cp git_version.h version.txt
  79. tar -zcvf ${TAR} ${NAME}.exe ${NAME}_wepoll.exe ${NAME}_mac
  80. clean:
  81. rm -f ${TAR}
  82. rm -f ${NAME} ${NAME}_cross ${NAME}.exe ${NAME}_wepoll.exe ${NAME}_mac
  83. rm -f git_version.h
  84. git_version:
  85. echo "const char *gitversion = \"$(shell git rev-parse HEAD)\";" > git_version.h