~tapaal-ltl/verifypn/rule-D-fix

213.1.30 by Peter G. Jensen
commit removing old files, swithing to propper CMAKE
1
cmake_minimum_required(VERSION 3.9)
2
cmake_policy(SET CMP0048 NEW)
3
cmake_policy(SET CMP0069 NEW)
4
5
set(CMAKE_CXX_STANDARD 17)
6
if (NOT CMAKE_BUILD_TYPE)
7
        set(CMAKE_BUILD_TYPE Release)
8
endif (NOT CMAKE_BUILD_TYPE)
9
213.1.42 by Peter G. Jensen
switching to glpk instead of lpsolve
10
if (CMAKE_BUILD_TYPE MATCHES Release)
213.1.146 by srba.jiri at gmail
allowed compilation for Mac
11
    if (NOT APPLE)
12
    	set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
13
    endif ()
213.1.42 by Peter G. Jensen
switching to glpk instead of lpsolve
14
endif ()
213.1.30 by Peter G. Jensen
commit removing old files, swithing to propper CMAKE
15
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
16
213.1.39 by Peter G. Jensen
more cmake hacking, adding versioning and conditional
17
231.1.15 by srba.jiri at gmail
increased version number to 4.1.0 (new unfolding approach and added heuristic search for LTL)
18
set(VERIFYPN_VERSION 4.1.0)
213.1.39 by Peter G. Jensen
more cmake hacking, adding versioning and conditional
19
add_compile_definitions(VERIFYPN_VERSION=\"${VERIFYPN_VERSION}\")
20
21
project(verifypn VERSION ${VERIFYPN_VERSION} LANGUAGES CXX C)
213.1.30 by Peter G. Jensen
commit removing old files, swithing to propper CMAKE
22
230.1.20 by Peter G. Jensen
readded static compilation
23
option(VERIFYPN_Static "Link libraries statically" ON)
24
option(VERIFYPN_MC_Simplification "Enables multicore simplification, incompatible with static linking" OFF)
213.1.30 by Peter G. Jensen
commit removing old files, swithing to propper CMAKE
25
option(VERIFYPN_GetDependencies "Fetch external dependencies from web." ON)
26
230.1.20 by Peter G. Jensen
readded static compilation
27
28
if (VERIFYPN_Static)
29
    set(BUILD_SHARED_LIBS OFF)
30
    if (VERIFYPN_MC_Simplification)
31
        message( FATAL_ERROR "Multicore Simplification is not compatible with static linking" )
32
    endif(VERIFYPN_MC_Simplification)
33
    if (NOT APPLE)
34
        set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static")
35
    endif(NOT APPLE)
36
endif (VERIFYPN_Static)
197.3.20 by Andreas Klostergaard
Added CMake support.
37
213.1.39 by Peter G. Jensen
more cmake hacking, adding versioning and conditional
38
if (VERIFYPN_MC_Simplification)
39
    add_compile_definitions(VERIFYPN_MC_Simplification)
40
endif(VERIFYPN_MC_Simplification)
41
209.1.1 by Andreas Klostergaard
First attempt at improving unfolding
42
if (UNIX AND NOT APPLE)
213.1.30 by Peter G. Jensen
commit removing old files, swithing to propper CMAKE
43
    set(ARCH_TYPE "linux64")
197.3.20 by Andreas Klostergaard
Added CMake support.
44
elseif(APPLE)
213.1.30 by Peter G. Jensen
commit removing old files, swithing to propper CMAKE
45
    set(ARCH_TYPE "osx64")
230.1.26 by srba.jiri at gmail
updated CMake files to compile for mac
46
    set(CMAKE_OSX_DEPLOYMENT_TARGET 10.8)
47
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64 ")
48
    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m64 ")
197.3.20 by Andreas Klostergaard
Added CMake support.
49
else()
213.1.30 by Peter G. Jensen
commit removing old files, swithing to propper CMAKE
50
    set(ARCH_TYPE "win64")
197.3.20 by Andreas Klostergaard
Added CMake support.
51
endif ()
52
230.2.4 by Peter G. Jensen
simplifying spot/bddx linking
53
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s -Wall -pedantic-errors -O3 -DNDEBUG")
226.9.1 by Nikolaj Jensen Ulrik
Enable trace generation in Tarjan (still buggy), fix some (final?) incorrect answers
54
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -fno-omit-frame-pointer")
230.2.6 by Peter G. Jensen
better compile options for spot
55
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -O3 -DNDEBUG")
230.1.20 by Peter G. Jensen
readded static compilation
56
if (VERIFYPN_Static AND NOT APPLE)
57
    set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -static")
58
endif()
213.1.30 by Peter G. Jensen
commit removing old files, swithing to propper CMAKE
59
60
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
61
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
62
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
63
64
if (VERIFYPN_GetDependencies)
65
    # setup for external imports
66
    include(ExternalProject)
67
    set(EXTERNAL_INSTALL_LOCATION ${CMAKE_BINARY_DIR}/external)
68
213.1.35 by Peter G. Jensen
using ptries from official distribution-chan
69
    ExternalProject_add(ptrie-ext
70
        GIT_REPOSITORY https://github.com/petergjoel/ptrie
213.1.37 by Peter G. Jensen
better handling in cmake
71
        GIT_TAG 230b3640bfbe2ed5befdafbaf17bd3804231b50f
213.1.35 by Peter G. Jensen
using ptries from official distribution-chan
72
        CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_INSTALL_LOCATION} -DPTRIE_BuildTest=OFF -DCMAKE_BUILD_TYPE=Release
73
    )
213.1.30 by Peter G. Jensen
commit removing old files, swithing to propper CMAKE
74
    ExternalProject_add(rapidxml-ext
75
        URL https://downloads.sourceforge.net/project/rapidxml/rapidxml/rapidxml%201.13/rapidxml-1.13.zip
76
        URL_HASH SHA512=6c10583e6631ccdb0217d0a5381172cb4c1046226de6ef1acf398d85e81d145228e14c3016aefcd7b70a1db8631505b048d8b4f5d4b0dbf1811d2482eefdd265
77
        BUILD_COMMAND ""
78
        CONFIGURE_COMMAND mkdir -p ${CMAKE_BINARY_DIR}/external/include
79
        INSTALL_COMMAND cd ../rapidxml-ext && ${CMAKE_COMMAND} -E copy rapidxml.hpp rapidxml_iterators.hpp rapidxml_print.hpp rapidxml_utils.hpp ${EXTERNAL_INSTALL_LOCATION}/include    
80
    )
230.1.25 by Peter G. Jensen
trying to compile on mac
81
    if (UNIX AND NOT APPLE)
82
        ExternalProject_add(spot-ext
83
            URL http://www.lrde.epita.fr/dload/spot/spot-2.9.6.tar.gz
84
            URL_HASH SHA512=69ec8a3ce84b2c069bf40b8d2127e5085724c8e4ba88ffdefc3e2225f6334955959afd17bcfcde29fd6826d78d49a7f1303bd07ba756a8695473ff6cc5ade3a2
230.1.27 by srba.jiri at gmail
removed -j8 optino
85
            BUILD_COMMAND make
230.2.27 by Simon Virenfeldt
Merge lp:verifypn
86
            CONFIGURE_COMMAND CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} <SOURCE_DIR>/configure --prefix ${EXTERNAL_INSTALL_LOCATION} --disable-python --disable-devel --disable-debug --disable-shared --enable-static --enable-c++17 CFLAGS=-flto CXXFLAGS=-flto LDFLAGS=-fuse-linker-plugin
230.1.25 by Peter G. Jensen
trying to compile on mac
87
            INSTALL_COMMAND make install
88
        )
89
    else ()
90
        ExternalProject_add(spot-ext
91
            URL http://www.lrde.epita.fr/dload/spot/spot-2.9.6.tar.gz
92
            URL_HASH SHA512=69ec8a3ce84b2c069bf40b8d2127e5085724c8e4ba88ffdefc3e2225f6334955959afd17bcfcde29fd6826d78d49a7f1303bd07ba756a8695473ff6cc5ade3a2
230.1.27 by srba.jiri at gmail
removed -j8 optino
93
            BUILD_COMMAND make 
230.2.27 by Simon Virenfeldt
Merge lp:verifypn
94
            CONFIGURE_COMMAND CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} <SOURCE_DIR>/configure --prefix ${EXTERNAL_INSTALL_LOCATION} --disable-python --disable-devel --disable-debug --disable-shared --enable-static --enable-c++17 CFLAGS=${CMAKE_CXX_FLAGS} LDFLAGS=${CMAKE_LINKER_FLAGS}
230.1.25 by Peter G. Jensen
trying to compile on mac
95
            INSTALL_COMMAND make install
96
        )
97
    endif ()
226.4.2 by Nikolaj Jensen Ulrik
complete BuchiSuccessorGenerator
98
213.3.1 by Kenneth Yrke Jørgensen
Added depend on glpk and switch for setting windows switch when cross compiling
99
    if (WIN32) #If windows 32 or 64 
213.1.148 by Kenneth Yrke Jørgensen
Updated argeument for cross compile glpk for windows
100
      set(GLPK_CFLAGS "-D __WOE__ -O3" )
213.1.122 by Peter G. Jensen
fixing compile flags for glpk
101
    else(WIN32)
213.1.148 by Kenneth Yrke Jørgensen
Updated argeument for cross compile glpk for windows
102
      set(GLPK_CFLAGS "-O3" )
213.3.1 by Kenneth Yrke Jørgensen
Added depend on glpk and switch for setting windows switch when cross compiling
103
    endif(WIN32)
213.1.61 by Peter G. Jensen
added glpk as external dependency
104
    ExternalProject_add(glpk-ext
105
        URL https://ftp.gnu.org/gnu/glpk/glpk-4.65.tar.gz
106
        URL_HASH SHA512=997e8e599ff1718a08c66b86eadd0e01f4644899f1e95920f8ae91d66b4d8361021766b346845f4dcbcfe667b41ab72ea3d377017a0ebf85d7ece091cfd81375
213.1.148 by Kenneth Yrke Jørgensen
Updated argeument for cross compile glpk for windows
107
	CONFIGURE_COMMAND CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} <SOURCE_DIR>/configure --enable-shared=no --prefix=${EXTERNAL_INSTALL_LOCATION} CFLAGS=${GLPK_CFLAGS}
213.1.122 by Peter G. Jensen
fixing compile flags for glpk
108
	BUILD_COMMAND make
213.1.61 by Peter G. Jensen
added glpk as external dependency
109
        INSTALL_COMMAND make install
213.1.118 by Peter G. Jensen
added patch to supress glpk warning
110
        PATCH_COMMAND patch -p1 < ${PROJECT_SOURCE_DIR}/glpk-warning.patch
213.1.61 by Peter G. Jensen
added glpk as external dependency
111
    )
112
113
    link_directories(${EXTERNAL_INSTALL_LOCATION}/lib)
114
    link_directories(${EXTERNAL_INSTALL_LOCATION}/lib64)
115
213.1.30 by Peter G. Jensen
commit removing old files, swithing to propper CMAKE
116
    # we can now include external libraries
117
    include_directories(${EXTERNAL_INSTALL_LOCATION}/include)
118
endif (VERIFYPN_GetDependencies)
119
include_directories(include)
120
121
add_subdirectory(${CMAKE_SOURCE_DIR}/src/)