From 928f60d5727cfbf9b1fbb92142c4405ae251c7e5 Mon Sep 17 00:00:00 2001 From: tijl Date: Fri, 22 Mar 2013 16:54:51 +0000 Subject: Fix build with boost 1.52. Approved by: crees Obtained from: sdcc revision 8145 --- lang/sdcc/Makefile | 6 ----- lang/sdcc/files/patch-boost | 55 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 6 deletions(-) create mode 100644 lang/sdcc/files/patch-boost (limited to 'lang') diff --git a/lang/sdcc/Makefile b/lang/sdcc/Makefile index edd839051cbd..ef051d8e5fa3 100644 --- a/lang/sdcc/Makefile +++ b/lang/sdcc/Makefile @@ -1,9 +1,4 @@ -# New ports collection makefile for: sdcc -# Date created: 3 May 2004 -# Whom: Tijl Coosemans -# # $FreeBSD$ -# PORTNAME= sdcc PORTVERSION= 3.2.0 @@ -23,7 +18,6 @@ CONFLICTS_INSTALL= sdcc-[0-9]* GNU_CONFIGURE= yes USE_BZIP2= yes USE_GMAKE= yes -USE_GCC= 4.6+ OPTIONS_DEFINE= DEVLIB DOCS HC08 MCS51 PIC UCSIM Z80 OPTIONS_DEFAULT=${OPTIONS_DEFINE:NDOCS} diff --git a/lang/sdcc/files/patch-boost b/lang/sdcc/files/patch-boost new file mode 100644 index 000000000000..e06c27eba0ea --- /dev/null +++ b/lang/sdcc/files/patch-boost @@ -0,0 +1,55 @@ +--- src/SDCCtree_dec.hpp.orig ++++ src/SDCCtree_dec.hpp +@@ -53,6 +53,14 @@ + #include + #include + ++struct forget_properties ++{ ++ template ++ void operator()(const T1&, const T2&) const ++ { ++ } ++}; ++ + // Thorup algorithm D. + // The use of the multimap makes the complexity of this O(|I|log|I|), which could be reduced to O(|I|). + template +@@ -152,7 +160,7 @@ + { + // Should we do this? Or just use G as J? The Thorup paper seems unclear, it speaks of statements that contain jumps to other statements, but does it count as a jump, when they're just subsequent? + boost::adjacency_list J; +- boost::copy_graph(G, J); ++ boost::copy_graph(G, J, boost::vertex_copy(forget_properties()).edge_copy(forget_properties())); + for (unsigned int i = 0; i < boost::num_vertices(J) - 1; i++) + remove_edge(i, i + 1, J); + +@@ -256,7 +264,7 @@ + + // Todo: Implement a graph adaptor for boost that allows to treat directed graphs as undirected graphs. + boost::adjacency_list G_sym; +- boost::copy_graph(G, G_sym); ++ boost::copy_graph(G, G_sym, boost::vertex_copy(forget_properties()).edge_copy(forget_properties())); + + std::vector active(boost::num_vertices(G), true); + +--- src/SDCCralloc.hpp.orig ++++ src/SDCCralloc.hpp +@@ -419,7 +419,7 @@ + for (var_t i = boost::num_vertices(con) - 1; i >= 0; i--) + { + cfg_sym_t cfg2; +- boost::copy_graph(cfg, cfg2); ++ boost::copy_graph(cfg, cfg2, boost::vertex_copy(forget_properties()).edge_copy(forget_properties())); + for (int j = boost::num_vertices(cfg) - 1; j >= 0; j--) + { + if (cfg[j].alive.find(i) == cfg[j].alive.end()) +@@ -436,7 +436,7 @@ + #endif + // Non-connected CFGs shouldn't exist either. Another problem with dead code eliminarion. + cfg_sym_t cfg2; +- boost::copy_graph(cfg, cfg2); ++ boost::copy_graph(cfg, cfg2, boost::vertex_copy(forget_properties()).edge_copy(forget_properties())); + std::vector::vertices_size_type> component(num_vertices(cfg2)); + boost::connected_components(cfg2, &component[0]); + -- cgit