-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCMakeLists.txt
118 lines (97 loc) · 3.51 KB
/
CMakeLists.txt
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
cmake_minimum_required(VERSION 2.8.8)
project(NuSMV-ZChaff)
set(ZCHAFF_CONFIG_FILE "" CACHE PATH "Custom config file for ZChaff")
if(EXISTS "${ZCHAFF_CONFIG_FILE}")
include("${ZCHAFF_CONFIG_FILE}")
else()
include(zchaff-default.cmake)
endif()
find_program(MAKE make)
if(NOT MAKE)
message(FATAL_ERROR "Make not found")
endif()
find_program(PATCH patch)
if(NOT PATCH)
message(FATAL_ERROR "Patch not found")
endif()
# download the archive first
if(NOT EXISTS "${PROJECT_BINARY_DIR}/${zchaff_zip}")
if(EXISTS "${PROJECT_SOURCE_DIR}/${zchaff_zip}")
message("Using ZChaff from archive ${zchaff_zip}")
file(COPY "${PROJECT_SOURCE_DIR}/${zchaff_zip}"
DESTINATION "${PROJECT_BINARY_DIR}")
else()
message("Downloading ZChaff from ${zchaff_url} --> ${PROJECT_BINARY_DIR}/${zchaff_zip}")
file(DOWNLOAD ${zchaff_url} "${PROJECT_BINARY_DIR}/${zchaff_zip}"
STATUS dwnres
SHOW_PROGRESS
LOG dwnlog)
list(GET dwnres 0 status_code)
list(GET dwnres 1 status_string)
if(NOT status_code EQUAL 0)
message(FATAL_ERROR "error: downloading '${zchaff_url}' failed
status_code: ${status_code}
status_string: ${status_string}
log: ${dwnlog}
You can try downloading the archive manually, and then retry.
")
endif()
endif()
endif()
# extract the file
add_custom_command(OUTPUT "${PROJECT_BINARY_DIR}/${patched_tag}"
COMMAND ${CMAKE_COMMAND} -E tar xzf ${zchaff_zip}
COMMAND ${CMAKE_COMMAND} -E touch "${PROJECT_BINARY_DIR}/${patched_tag}"
WORKING_DIRECTORY "${PROJECT_BINARY_DIR}"
DEPENDS "${PROJECT_BINARY_DIR}/${zchaff_zip}"
)
add_custom_command(
OUTPUT "${PROJECT_BINARY_DIR}/${zchaff_dir}/${zchaff_ifcname}"
COMMAND ${PATCH} -p1 -N < "${PROJECT_SOURCE_DIR}/${zchaff_patch}"
COMMAND ${MAKE} ${zchaff_ifcname}
WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/${zchaff_dir}"
DEPENDS "${PROJECT_BINARY_DIR}/${patched_tag}"
"${PROJECT_SOURCE_DIR}/${zchaff_patch}"
)
if (MSVC)
set(zchaff_lib_name
"${PROJECT_BINARY_DIR}/${zchaff_dir}/${zchaff_libname}.lib")
else()
set(zchaff_lib_name "${PROJECT_BINARY_DIR}/${zchaff_dir}/${CMAKE_STATIC_LIBRARY_PREFIX}${zchaff_libname}${CMAKE_STATIC_LIBRARY_SUFFIX}")
endif()
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64" AND BUILD32)
set(_xcompiling True)
else()
set(_xcompiling False)
endif()
if(CMAKE_TOOLCHAIN_FILE OR _xcompiling)
set(_toolchain
CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} AR=${CMAKE_AR} RANLIB=${CMAKE_RANLIB} CFLAGS=${CMAKE_C_FLAGS} CXXFLAGS=${CMAKE_CXX_FLAGS})
else()
set(_toolchain)
endif()
add_custom_command(
OUTPUT "${zchaff_lib_name}"
COMMAND ${MAKE} libsat.a ${_toolchain}
WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/${zchaff_dir}"
DEPENDS "${PROJECT_BINARY_DIR}/${zchaff_dir}/${zchaff_ifcname}"
)
add_custom_target(
ZCHAFF_BUILD ALL
SOURCES "${PROJECT_BINARY_DIR}/${zchaff_dir}/${zchaff_ifcname}"
"${zchaff_lib_name}"
)
set(ZCHAFF_INCLUDE_DIR "${PROJECT_BINARY_DIR}/${zchaff_dir}" CACHE INTERNAL "")
add_library(ZCHAFF_LIB STATIC IMPORTED GLOBAL)
set_target_properties(ZCHAFF_LIB PROPERTIES
IMPORTED_LOCATION "${zchaff_lib_name}")
install(FILES "${zchaff_lib_name}" DESTINATION lib)
# write the configuration file
message("writing ZChaff config file")
file(WRITE "${PROJECT_BINARY_DIR}/zchaff-config.cmake"
"set(ZCHAFF_INCLUDE_DIR \"${ZCHAFF_INCLUDE_DIR}\")
set(ZCHAFF_COMPILE_FLAGS \"\")
set(ZCHAFF_LINK_FLAGS \"\")
set(ZCHAFF_LINK_LIBRARIES \"\")
set(ZCHAFF_LIB \"${zchaff_lib_name}\")
")