Blame view

buildroot/buildroot-2016.08.1/package/fastd/0001-cmake-use-INTERPROCEDURAL_OPTIMIZATION-target-proper.patch 2.5 KB
6b13f685e   김민수   BSP 최초 추가
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
  From: Alexander Dahl <alex@netz39.de>
  Date: Wed, 28 Oct 2015 16:04:13 +0100
  Subject: [PATCH] cmake: use INTERPROCEDURAL_OPTIMIZATION target property
  
  Instead of hacking on compiler flags use the cmake way for handling
  interprocedural optimization. Tests showed cmake currently ignores this
  for gcc and clang, at least on Debian Wheezy and Jessie. This actually
  results in no interprocedural optimization for the moment. However it
  allows to compile fastd against a toolchain without LTO support, which
  was broken because of a hack included here for finding binutils.
  
  According to the upstream author of fastd the main reason for enabling
  LTO was binary size on an OpenWRT target for Freifunk Gluon, where they
  have very few space left on devices with only 4 MB flash memory.
  
  Signed-off-by: Alexander Dahl <post@lespocky.de>
  ---
   cmake/checks.cmake | 14 --------------
   src/CMakeLists.txt |  9 +++++++++
   2 files changed, 9 insertions(+), 14 deletions(-)
  
  diff --git a/cmake/checks.cmake b/cmake/checks.cmake
  index 27c073f..8a671a1 100644
  --- a/cmake/checks.cmake
  +++ b/cmake/checks.cmake
  @@ -10,20 +10,6 @@ if(ARCH_X86 OR ARCH_X86_64)
   endif(ARCH_X86 OR ARCH_X86_64)
   
   
  -
  -if(ENABLE_LTO)
  -  set(CFLAGS_LTO "-flto")
  -  set(CFLAGS_NO_LTO "-fno-lto")
  -
  -  check_c_compiler_flag("-fwhole-program" HAVE_FLAG_WHOLE_PROGRAM)
  -  if(HAVE_FLAG_WHOLE_PROGRAM)
  -    set(LDFLAGS_LTO "-flto -fwhole-program")
  -  else(HAVE_FLAG_WHOLE_PROGRAM)
  -    set(LDFLAGS_LTO "-flto")
  -  endif(HAVE_FLAG_WHOLE_PROGRAM)
  -endif(ENABLE_LTO)
  -
  -
   check_c_source_compiles("
   #include <sys/types.h>
   #include <sys/socket.h>
  diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
  index 829b3ab..7612b40 100644
  --- a/src/CMakeLists.txt
  +++ b/src/CMakeLists.txt
  @@ -48,6 +48,15 @@ add_executable(fastd
   set_property(TARGET fastd PROPERTY COMPILE_FLAGS "${FASTD_CFLAGS}")
   set_property(TARGET fastd PROPERTY LINK_FLAGS "${PTHREAD_LDFLAGS} ${LIBUECC_LDFLAGS_OTHER} ${NACL_LDFLAGS_OTHER} ${JSON_C_LDFLAGS_OTHER} ${LDFLAGS_LTO}")
   set_property(TARGET fastd APPEND PROPERTY INCLUDE_DIRECTORIES ${LIBCAP_INCLUDE_DIR} ${NACL_INCLUDE_DIRS} ${JSON_C_INCLUDE_DIR})
  +if(ENABLE_LTO)
  +	set_target_properties(fastd PROPERTIES
  +		INTERPROCEDURAL_OPTIMIZATION ON
  +	)
  +else(ENABLE_LTO)
  +	set_target_properties(fastd PROPERTIES
  +		INTERPROCEDURAL_OPTIMIZATION OFF
  +	)
  +endif(ENABLE_LTO)
   target_link_libraries(fastd protocols methods ciphers macs ${RT_LIBRARY} ${LIBCAP_LIBRARY} ${LIBUECC_LIBRARIES} ${NACL_LIBRARIES} ${OPENSSL_CRYPTO_LIBRARY} ${JSON_C_LIBRARIES})
   
   add_dependencies(fastd version)
  -- 
  2.1.4