Skip to content

Commit 258d029

Browse files
committed
Update to build against clang-3.5
1 parent cc8ada6 commit 258d029

11 files changed

+58
-44
lines changed

CMakeLists.txt

+28-20
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,47 @@
11
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
22
PROJECT(demacrofier)
33

4-
##############################################################################
4+
###############################################################################
55
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
66
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
77
SET(HEADER_OUTPUT_PATH ${PROJECT_BINARY_DIR}/include)
88

99
#SET(CFE_PREFIX_PATH "/home/hiraditya/Documents/llvm/llvm-3.1/install")
10-
SET(CFE_PREFIX_PATH "/media/space/opt_149739_build")
10+
#SET(CFE_PREFIX_PATH "/media/space/opt_149739_build")
11+
SET(CFE_PREFIX_PATH "/home/hiraditya/work/llvm/install")
12+
#SET(LLVM_PATH "/home/hiraditya/work/llvm/install")
13+
#SET(LLVM_PATH2 "/home/hiraditya/work/llvm/build")
1114
#SET(CFE_PREFIX_PATH "/home/hiraditya/Documents/llvm/install")
1215

1316
SET(UTILITIES_PREFIX_PATH ".")
1417

1518
INCLUDE_DIRECTORIES("${UTILITIES_PREFIX_PATH}/general_utilities")
1619
INCLUDE_DIRECTORIES("${CFE_PREFIX_PATH}/include")
17-
##############################################################################
20+
#INCLUDE_DIRECTORIES("${LLVM_PATH2}/include")
21+
#INCLUDE_DIRECTORIES("${LLVM_PATH}/include")
22+
###############################################################################
1823
#THIS HAS TO BE ADDED BEFORE SUPPLYING THE COMPILER FLAGS FOR THIS DIRECTORY FILES
1924
#THE CLANG LIBRARIES COMPILE WITH THE -fno-rtti FLAGS
2025
#AFTER THE LIBRARY HAS BEEN BUILT WE NEED TO SET THE COMPILER FLAGS ONCE AGAIN
2126
#BECAUSE THE BOOST LIBRARIES USE rtti
2227
ADD_SUBDIRECTORY(ClangInterface)
23-
##############################################################################
28+
###############################################################################
2429

2530
#SET(CMAKE_CXX_COMPILER "g++-4.5")
2631
#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -v -da -Q -std=c++0x")
2732

28-
##############################################################################
33+
###############################################################################
2934
# Compiler options
35+
SET(LLVM_CXXFLAGS "-fPIC -fvisibility-inlines-hidden -Wall -W -Wno-unused-parameter -Wwrite-strings -Wno-missing-field-initializers -pedantic -Wno-long-long -Wno-maybe-uninitialized -Wnon-virtual-dtor -Wno-comment -std=c++11 -ffunction-sections -fdata-sections -g")
3036
IF(CMAKE_COMPILER_IS_GNUCXX)
31-
MESSAGE(STATUS "GCC detected - Adding compiler flags: -pedantic -O2 -std=c++0x")
32-
SET(CMAKE_CXX_FLAGS "-pedantic -Wall -std=c++0x")
37+
SET(CMAKE_CXX_FLAGS "-pedantic -Wall -std=c++11 -g ${LLVM_CXXFLAGS}")
38+
MESSAGE(STATUS "GCC detected - Adding compiler flags ${CMAKE_CXX_FLAGS}")
3339
ELSEIF(MSVC)
3440
MESSAGE(STATUS "MSVC detected - Adding compiler flags")
3541
ENDIF(CMAKE_COMPILER_IS_GNUCXX)
3642

37-
##############################################################################
38-
############## DEBUG MACROS #########################
43+
###############################################################################
44+
############################ DEBUG MACROS #####################################
3945
#ADD_DEFINITIONS(-DBUILD_NEW_MACRO_LIST)
4046
#ADD_DEFINITIONS(-DDEBUG_MACRO_USE_CASE)
4147
#ADD_DEFINITIONS(-DDEBUG_PARSER)
@@ -58,21 +64,21 @@ ENDIF(CMAKE_COMPILER_IS_GNUCXX)
5864
#ADD_DEFINITIONS(-DDEBUG_SUGGESTION)
5965
#ADD_DEFINITIONS(-DGMACROS="${HEADER_OUTPUT_PATH}/gMacros.dat")
6066
#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++0x -D BUILD_NEW_MACRO_LIST")
61-
##############################################################################
67+
###############################################################################
6268

6369

6470

65-
############## INCLUDE DIRECTORIES RELATED TO CLANG #########################
71+
############## INCLUDE DIRECTORIES RELATED TO CLANG ###########################
6672

6773
INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}")
6874
INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}/ClangInterface")
6975

70-
############## DEFINITIONS RELATED TO CLANG #########################
76+
############## DEFINITIONS RELATED TO CLANG ###################################
7177
ADD_DEFINITIONS(-D__STDC_CONSTANT_MACROS)
7278
ADD_DEFINITIONS(-D__STDC_FORMAT_MACROS)
7379
ADD_DEFINITIONS(-D__STDC_LIMIT_MACROS)
7480
ADD_DEFINITIONS(-D_GNU_SOURCE)
75-
##############################################################################
81+
###############################################################################
7682
ADD_LIBRARY(cpp2cxx-core SHARED
7783
RlCategory.cpp
7884
ReplacementList.cpp
@@ -89,7 +95,7 @@ ADD_LIBRARY(cpp2cxx-core SHARED
8995
ConfigScheme.cpp
9096
)
9197

92-
############## SPECIFYING THE LINK DIRECTORIES #########################
98+
#################### SPECIFYING THE LINK DIRECTORIES ##########################
9399
# Library directory paths
94100
LINK_DIRECTORIES(
95101
"/usr/lib"
@@ -98,7 +104,7 @@ LINK_DIRECTORIES(
98104
"${CFE_PREFIX_PATH}/lib"
99105
)
100106

101-
##############################################################################
107+
###############################################################################
102108
ADD_EXECUTABLE(cpp2cxx-suggest
103109
MainSuggest.cpp
104110
)
@@ -108,11 +114,13 @@ ADD_EXECUTABLE(cpp2cxx-finalize
108114
)
109115
FILE(COPY "cpp2cxx-validate.py" DESTINATION ${EXECUTABLE_OUTPUT_PATH})
110116
FILE(COPY "gMacros.dat" DESTINATION ${HEADER_OUTPUT_PATH})
111-
#############################################################################
117+
###############################################################################
112118
#ADD_LIBRARY()
113119
#FIND_LIBRARY()
114-
TARGET_LINK_LIBRARIES(cpp2cxx-suggest cpp2cxx-core boost_wave boost_program_options ASTConsumer
115-
libclang)
120+
TARGET_LINK_LIBRARIES(cpp2cxx-suggest cpp2cxx-core boost_system boost_wave
121+
boost_program_options ASTConsumer clang
122+
)
116123

117-
TARGET_LINK_LIBRARIES(cpp2cxx-finalize cpp2cxx-core boost_wave boost_program_options ASTConsumer
118-
libclang)
124+
TARGET_LINK_LIBRARIES(cpp2cxx-finalize cpp2cxx-core boost_system boost_wave
125+
boost_program_options ASTConsumer clang
126+
)

ClangInterface/ASTConsumer.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -86,24 +86,24 @@ int MyASTConsumer::InitializeCI(CompilerInstance& ci,
8686
std::cout<<"\n\nSearch paths output from ASTConsumer:\n"<<search_paths;
8787
// if(ci.hasSema())
8888
// std::cout<<"Sema from start";
89-
ci.createDiagnostics(0,NULL);
89+
ci.createDiagnostics(0,nullptr);
9090
TargetOptions to;
9191
/// set the language to c++98
92-
ci.getInvocation().setLangDefaults(clang::InputKind::IK_CXX,
92+
ci.getInvocation().setLangDefaults(ci.getLangOpts(), clang::InputKind::IK_CXX,
9393
clang::LangStandard::lang_cxx11);
9494

9595
// if(ci.getInvocation().getLangOpts()->CPlusPlus)
9696
// std::cout<<"c++ is defined now";
9797

9898
to.Triple = llvm::sys::getDefaultTargetTriple();
99-
TargetInfo *pti = TargetInfo::CreateTargetInfo(ci.getDiagnostics(), to);
99+
TargetInfo *pti = TargetInfo::CreateTargetInfo(ci.getDiagnostics(), &to);
100100
ci.setTarget(pti);
101101

102102
ci.createFileManager();
103103
// if(ci.hasSema())
104104
// std::cout<<"Sema before source manager";
105105
ci.createSourceManager(ci.getFileManager());
106-
ci.createPreprocessor();
106+
ci.createPreprocessor(clang::TranslationUnitKind::TU_Complete);
107107

108108
/// \brief to enable parsing of exceptions by the clang front end
109109
ci.getLangOpts().CXXExceptions = 1;
@@ -141,7 +141,7 @@ int MyASTConsumer::InitializeCI(CompilerInstance& ci,
141141
std::for_each(search_paths.begin(), search_paths.end(),
142142
[&HSOpts](std::string const& search_path) {
143143
HSOpts.AddPath(search_path, clang::frontend::Angled,
144-
false, false, false);
144+
false, false);
145145
});
146146

147147
/// clang specific include
@@ -463,7 +463,7 @@ int MyASTConsumer::InitializeCI(CompilerInstance& ci,
463463
FrontendOptions& FEOpts = ci.getFrontendOpts();
464464

465465
PP.getBuiltinInfo().InitializeBuiltins(PP.getIdentifierTable(),
466-
PP.getLangOptions());
466+
PP.getLangOpts());
467467
clang::InitializePreprocessor(PP, PPOpts, HSOpts, FEOpts);
468468
//astConsumer = new MyASTConsumer();
469469
ci.setASTConsumer(this);

ClangInterface/ASTConsumer.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include "clang/Basic/TargetOptions.h"
1616
#include "clang/Basic/TargetInfo.h"
1717
#include "clang/Basic/FileManager.h"
18+
#include "clang/Basic/LangOptions.h"
1819
#include "clang/Basic/SourceManager.h"
1920
#include "clang/Basic/Diagnostic.h"
2021
#include "clang/Basic/SourceLocation.h"

ClangInterface/CMakeLists.txt

+9-4
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ add_definitions(-D__STDC_LIMIT_MACROS)
99
ADD_DEFINITIONS(-D_GNU_SOURCE)
1010
#add_definitions(-DCLANG_AST_DEBUG)
1111

12-
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-std=c++0x -fno-rtti -g")
12+
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-std=c++11 -fno-rtti -g")
1313
#set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-cc1")
1414

1515
link_directories("${CFE_PREFIX_PATH}/lib")
@@ -19,7 +19,12 @@ add_library(ASTConsumer SHARED
1919
ASTConsumer.cpp
2020
)
2121

22-
target_link_libraries(ASTConsumer
23-
libclang
22+
target_link_libraries(ASTConsumer
23+
LLVMLTO LLVMObjCARCOpts LLVMLinker LLVMipo LLVMVectorize LLVMBitWriter LLVMIRReader LLVMAsmParser LLVMXCoreDisassembler LLVMXCoreCodeGen LLVMXCoreDesc LLVMXCoreInfo LLVMXCoreAsmPrinter LLVMSystemZDisassembler LLVMSystemZCodeGen LLVMSystemZAsmParser LLVMSystemZDesc LLVMSystemZInfo LLVMSystemZAsmPrinter LLVMSparcDisassembler LLVMSparcCodeGen LLVMSparcAsmParser LLVMSparcDesc LLVMSparcInfo LLVMSparcAsmPrinter LLVMR600CodeGen LLVMR600Desc LLVMR600Info LLVMR600AsmPrinter LLVMPowerPCDisassembler LLVMPowerPCCodeGen LLVMPowerPCAsmParser LLVMPowerPCDesc LLVMPowerPCInfo LLVMPowerPCAsmPrinter LLVMNVPTXCodeGen LLVMNVPTXDesc LLVMNVPTXInfo LLVMNVPTXAsmPrinter LLVMMSP430CodeGen LLVMMSP430Desc LLVMMSP430Info LLVMMSP430AsmPrinter LLVMMipsDisassembler LLVMMipsCodeGen LLVMMipsAsmParser LLVMMipsDesc LLVMMipsInfo LLVMMipsAsmPrinter LLVMHexagonCodeGen LLVMHexagonAsmPrinter LLVMHexagonDesc LLVMHexagonInfo LLVMCppBackendCodeGen LLVMCppBackendInfo LLVMARMDisassembler LLVMARMCodeGen LLVMARMAsmParser LLVMARMDesc LLVMARMInfo LLVMARMAsmPrinter LLVMARM64Disassembler LLVMARM64CodeGen LLVMARM64AsmParser LLVMARM64Desc LLVMARM64Info LLVMARM64AsmPrinter LLVMARM64Utils LLVMAArch64Disassembler LLVMAArch64CodeGen LLVMAArch64AsmParser LLVMAArch64Desc LLVMAArch64Info LLVMAArch64AsmPrinter LLVMAArch64Utils LLVMTableGen LLVMDebugInfo LLVMOption LLVMX86Disassembler LLVMX86AsmParser LLVMX86CodeGen LLVMSelectionDAG LLVMAsmPrinter LLVMMCParser LLVMX86Desc LLVMX86Info LLVMX86AsmPrinter LLVMX86Utils LLVMJIT LLVMLineEditor LLVMMCDisassembler LLVMInstrumentation LLVMInterpreter LLVMCodeGen LLVMScalarOpts LLVMInstCombine LLVMTransformUtils LLVMipa LLVMAnalysis LLVMProfileData LLVMMCJIT LLVMTarget LLVMRuntimeDyld LLVMExecutionEngine LLVMMC LLVMObject LLVMBitReader LLVMCore LLVMSupport
24+
clangFrontendTool clangFrontend clangDriver clangSerialization clangCodeGen
25+
clangParse clangSema clangStaticAnalyzerFrontend clangStaticAnalyzerCheckers
26+
clangStaticAnalyzerCore clangAnalysis clangARCMigrate clangRewriteFrontend clangRewriteCore
27+
clangEdit clangAST clangLex clangBasic
28+
#clangAnalysis clangAST clangASTMatchers clangBasic clangCodeGen clangDriver clangDynamicASTMatchers clangEdit clangFrontend clangLex clangParse clangSema clangTooling clang
29+
pthread z dl
2430
)
25-

ClangInterface/TrackMacro.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ void TrackMacro::MacroExpands(const Token &MacroNameTok, const MacroInfo* MI,
2727
//std::cout<<"Macro "<<tok::getTokenName(MacroNameTok.getKind())<< " has expanded here\n\t";
2828
/// testing if the macro is defined in the same file
2929
/// so that global macros can be skipped
30-
if(sm->isFromMainFile(MI->getDefinitionLoc())) {
30+
if(sm->isInMainFile(MI->getDefinitionLoc())) {
3131
PresumedLoc presumed = sm->getPresumedLoc(Range.getBegin());
3232
#ifdef CLANG_AST_DEBUG
3333
std::cout<<"\nMacro "<<MacroNameTok.getIdentifierInfo()->getNameStart()
@@ -92,7 +92,7 @@ void TrackMacro::MacroDefined(const Token &MacroNameTok, const MacroInfo* MI)
9292
{
9393
//if(MacroIsLocal(MI->getDefinitionLoc())) {
9494
CollectedMacroInfo cmi;
95-
if(sm->isFromMainFile(MI->getDefinitionLoc())) {
95+
if(sm->isInMainFile(MI->getDefinitionLoc())) {
9696
PresumedLoc presumed = sm->getPresumedLoc(MI->getDefinitionLoc());
9797

9898
#ifdef CLANG_AST_DEBUG

ConfigScheme.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@ void ConfigScheme::SetDemacroficationScheme(std::string const& demac_gran,
7676
pDemacroficationScheme->globalMacrosRaw = global_mac_raw;
7777
pDemacroficationScheme->globalMacrosFormatted = global_mac_formatted;
7878
std::for_each(mac_prev_demac.begin(),mac_prev_demac.end(),
79-
[&pDemacroficationScheme](std::string const& str) {
80-
pDemacroficationScheme->macrosPreventingDemacrofication.insert(str);
79+
[this](std::string const& str) {
80+
this->pDemacroficationScheme->macrosPreventingDemacrofication.insert(str);
8181
});
8282
pDemacroficationScheme->multipleDefinitions = multiple_definitions;
8383
pDemacroficationScheme->performCleanup = cleanup;

DepAnalyzer.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,8 @@ void DepAnalyzer<Vertex_t>::DoTopologicalSort(std::vector<Vertex_t*>& v)
132132
typename std::vector<Vd_t> topo_order;
133133
boost::topological_sort(depGraph,std::back_inserter(topo_order));
134134
std::for_each(topo_order.begin(),topo_order.end(),
135-
[&v,&depGraph](Vd_t vd) {
136-
v.push_back(depGraph[vd]);
135+
[&v, this](Vd_t vd) {
136+
v.push_back(this->depGraph[vd]);
137137
});
138138
#ifdef DEBUG_MACRO_DEPENDENCY
139139
std::cout<<"Printing the total order:\n";

DepGraph.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ struct Node {
6969
~Node()
7070
{
7171
std::for_each(vecMacro.begin(),vecMacro.end(),
72-
[&vecMacro](PPMacro* mac) {
72+
[](PPMacro* mac) {
7373
delete mac;
7474
mac=NULL;
7575
});

Parser.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -698,9 +698,9 @@ void Parser::Demacrofy(std::ostream& stat, bool multiple_definitions_allowed)
698698
pm_iter = pTree->GetMacro(*it);
699699
/// to be looked for exact macro
700700
std::for_each(pm_iter.first,pm_iter.second,
701-
[it,&m_ptr,&defn_counter](std::pair<token_type,PPMacro*> tm_pair) {
701+
[this,&m_ptr,&defn_counter](std::pair<token_type,PPMacro*> tm_pair) {
702702
++defn_counter;
703-
if(tm_pair.first.get_position() == it->get_position())
703+
if(tm_pair.first.get_position() == this->it->get_position())
704704
m_ptr = tm_pair.second;
705705
});
706706
// if there was no match then throw error, although it is unlikely

ReplacementList.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ void ReplacementList::set_replacement_list_str(std::string const& str,
4747
rl_str = str;
4848
if(!argId.empty()) {
4949
std::for_each(argId.begin(),argId.end(),
50-
[&funArgId](std::pair<token_type,int> p_ti) {
51-
funArgId.push_back(p_ti.first);
50+
[this](std::pair<token_type,int> p_ti) {
51+
this->funArgId.push_back(p_ti.first);
5252
});
5353
}
5454
// std::cout<<"repl_string: "<<replacement_list_str<<std::endl;

RlParser.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -439,9 +439,9 @@ void RlParser::Expression8()
439439
//post increment operator
440440
rl_dcat = RlDCat::dependent;
441441
std::for_each(funArgId.begin(),funArgId.end(),
442-
[&rl_dcat,it](token_type tok) {
443-
if(*it == tok)
444-
rl_dcat = RlDCat::independent;
442+
[this](token_type tok) {
443+
if(*this->it == tok)
444+
this->rl_dcat = RlDCat::independent;
445445
});
446446
Match(T_IDENTIFIER);
447447
rl_ttype.reject_type = IsRejectPredefinedMacro(id_value.str());

0 commit comments

Comments
 (0)