1- #
2- # Copyright (c) 2013 Pantazis Deligiannis (p.deligiannis@imperial.ac.uk)
1+ #
32# This file is distributed under the MIT License. See LICENSE for details.
4- #
3+ #
54
65cmake_minimum_required (VERSION 2.8 )
76project (smack)
87
98if (NOT WIN32 OR MSYS OR CYGWIN )
109 find_program (LLVM_CONFIG_EXECUTABLE NAMES llvm-config PATHS ${LLVM_CONFIG} NO_DEFAULT_PATH DOC "llvm-config" )
11-
10+
1211 if (LLVM_CONFIG_EXECUTABLE STREQUAL "LLVM_CONFIG_EXECUTABLE-NOTFOUND" )
1312 message (FATAL_ERROR "llvm-config could not be found!" )
1413 endif ()
15-
14+
1615 execute_process (
1716 COMMAND ${LLVM_CONFIG_EXECUTABLE} --cxxflags
1817 OUTPUT_VARIABLE LLVM_CXXFLAGS
1918 OUTPUT_STRIP_TRAILING_WHITESPACE
2019 )
21-
20+
2221 set (LLVM_CXXFLAGS "${LLVM_CXXFLAGS} -fno-exceptions -fno-rtti" )
23-
22+
2423 execute_process (
2524 COMMAND ${LLVM_CONFIG_EXECUTABLE} --libs
2625 OUTPUT_VARIABLE LLVM_LIBS
2726 OUTPUT_STRIP_TRAILING_WHITESPACE
2827 )
29-
28+
29+ execute_process (
30+ COMMAND ${LLVM_CONFIG_EXECUTABLE} --system-libs
31+ OUTPUT_VARIABLE LLVM_SYSTEM_LIBS
32+ OUTPUT_STRIP_TRAILING_WHITESPACE
33+ )
34+
3035 execute_process (
3136 COMMAND ${LLVM_CONFIG_EXECUTABLE} --ldflags
3237 OUTPUT_VARIABLE LLVM_LDFLAGS
3338 OUTPUT_STRIP_TRAILING_WHITESPACE
3439 )
35-
40+
3641else ()
3742 set (LLVM_SRC "" CACHE PATH "LLVM source directory" )
3843 set (LLVM_BUILD "" CACHE PATH "LLVM build directory" )
5055 set (LLVM_CXXFLAGS "\" /I${LLVM_SRC} /include\" \" /I${LLVM_BUILD} /include\" -D_SCL_SECURE_NO_WARNINGS -wd4146 -wd4244 -wd4355 -wd4482 -wd4800" )
5156 set (LLVM_LDFLAGS "" )
5257 set (LLVM_LIBS "${LLVM_LIBDIR} /LLVMTransformUtils.lib" "${LLVM_LIBDIR} /LLVMipa.lib" "${LLVM_LIBDIR} /LLVMAnalysis.lib" "${LLVM_LIBDIR} /LLVMTarget.lib" "${LLVM_LIBDIR} /LLVMMC.lib" "${LLVM_LIBDIR} /LLVMObject.lib" "${LLVM_LIBDIR} /LLVMBitReader.lib" "${LLVM_LIBDIR} /LLVMCore.lib" "${LLVM_LIBDIR} /LLVMSupport.lib" )
53-
58+
5459endif ()
5560
5661include_directories (include )
@@ -136,26 +141,29 @@ add_library(dsa STATIC
136141)
137142
138143add_library (smackTranslator STATIC
139- include /smack/smack.h
140144 include /smack/BoogieAst.h
141145 include /smack/BplFilePrinter.h
142146 include /smack/BplPrinter.h
147+ include /smack/Contracts.h
143148 include /smack/DSAAliasAnalysis.h
149+ include /smack/Naming.h
150+ include /smack/Slicing.h
144151 include /smack/SmackInstGenerator.h
145152 include /smack/SmackModuleGenerator.h
146153 include /smack/SmackOptions.h
147154 include /smack/SmackRep.h
148- include /smack/SmackRep2dMem.h
149155 include /smack/SmackRepFlatMem.h
150156 lib/smack/BoogieAst.cpp
151157 lib/smack/BplFilePrinter.cpp
152158 lib/smack/BplPrinter.cpp
159+ lib/smack/Contracts.cpp
153160 lib/smack/DSAAliasAnalysis.cpp
161+ lib/smack/Naming.cpp
162+ lib/smack/Slicing.cpp
154163 lib/smack/SmackInstGenerator.cpp
155164 lib/smack/SmackModuleGenerator.cpp
156165 lib/smack/SmackOptions.cpp
157166 lib/smack/SmackRep.cpp
158- lib/smack/SmackRep2dMem.cpp
159167 lib/smack/SmackRepFlatMem.cpp
160168)
161169
@@ -166,22 +174,28 @@ add_executable(smack
166174set_target_properties (smack smackTranslator assistDS dsa
167175 PROPERTIES COMPILE_FLAGS "${LLVM_CXXFLAGS} " )
168176
169- target_link_libraries (smackTranslator ${LLVM_LIBS} ${LLVM_LDFLAGS} )
177+ target_link_libraries (smackTranslator ${LLVM_LIBS} ${LLVM_SYSTEM_LIBS} ${ LLVM_LDFLAGS} )
170178target_link_libraries (smack smackTranslator assistDS dsa )
171179
172- INSTALL (TARGETS smack smackTranslator assistDS dsa
180+ INSTALL (TARGETS smack
173181 RUNTIME DESTINATION bin
174- LIBRARY DESTINATION lib
175- ARCHIVE DESTINATION lib
176182)
177183
178184INSTALL (FILES ${CMAKE_CURRENT_SOURCE_DIR} /bin/boogie
179- ${CMAKE_CURRENT_SOURCE_DIR} /bin/corral
180- ${CMAKE_CURRENT_SOURCE_DIR} /bin/llvm2bpl.py
181- ${CMAKE_CURRENT_SOURCE_DIR} /bin/smackgen.py
182- ${CMAKE_CURRENT_SOURCE_DIR} /bin/smackverify.py
183- PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
184- GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
185+ ${CMAKE_CURRENT_SOURCE_DIR} /bin/corral
186+ ${CMAKE_CURRENT_SOURCE_DIR} /bin/llvm2bpl.py
187+ ${CMAKE_CURRENT_SOURCE_DIR} /bin/smackgen.py
188+ ${CMAKE_CURRENT_SOURCE_DIR} /bin/smackverify.py
189+ PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
190+ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
185191 DESTINATION bin
186192)
187-
193+
194+ INSTALL (FILES ${CMAKE_CURRENT_SOURCE_DIR} /include/smack/smack.h
195+ ${CMAKE_CURRENT_SOURCE_DIR} /include/smack/smack-contracts.h
196+ ${CMAKE_CURRENT_SOURCE_DIR} /include/smack/smack-svcomp.h
197+ PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
198+ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
199+ DESTINATION include/smack
200+ )
201+
0 commit comments