~jackweirdy/vidalia/680192

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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
##
##  $Id$
##
##  This file is part of Vidalia, and is subject to the license terms in the
##  LICENSE file, found in the top level directory of this distribution. If
##  you did not receive the LICENSE file with this file, you may obtain it
##  from the Vidalia source package distributed by the Vidalia Project at
##  http://www.torproject.org/projects/vidalia.html. No part of Vidalia,
##  including this file, may be copied, modified, propagated, or distributed
##  except according to the terms described in the LICENSE file.
##


set(VER_MAJOR   "0")
set(VER_MINOR   "2")
set(VER_PATCH   "21")
set(VERSION     "${VER_MAJOR}.${VER_MINOR}.${VER_PATCH}")
message(STATUS  "Configuring Vidalia ${VERSION}")
project(Vidalia)

## Specify the minimim required CMake version
cmake_minimum_required(VERSION 2.4.7)
if (COMMAND cmake_policy)
  # Force CMake 2.4 compatibility for handling linker search paths
  cmake_policy(SET CMP0003 OLD)
endif(COMMAND cmake_policy)

## We declare this option here, because it determines the minimum
## required Qt version
option(USE_MARBLE "Enable the KDE Marble-based map widget." OFF)

## Specify the minimum version of Qt required
set(QT_MIN_VERSION    "4.3.0")

## Specify the Qt libraries used
include(FindQt4)
find_package(Qt4 REQUIRED)
set(QT_USE_QTNETWORK  true)
set(QT_USE_QTXML      true)
if (USE_MARBLE)
  set(QT_USE_QTSVG    true)
  set(QT_USE_QTWEBKIT true)
  set(QT_USE_QTSCRIPT true)
  set(QT_USE_QTDBUS   true)
endif(USE_MARBLE)
include(${QT_USE_FILE})
include(${CMAKE_SOURCE_DIR}/cmake/VidaliaMacros.cmake)
include(CheckIncludeFile)
include(CheckIncludeFileCXX)
include(CheckTypeSize)
include(CheckFunctionExists)
if (WIN32)
  include(${CMAKE_SOURCE_DIR}/cmake/FindWiX.cmake)
endif(WIN32)

if(MSVC_IDE)
    set(CMAKE_SUPPRESS_REGENERATION TRUE)
    set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
    set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
endif(MSVC_IDE)

## Define Vidalia-specific CMake options
if (APPLE)
  option(OSX_TIGER_COMPAT "Build an OS X 10.4 Compatible Vidalia." OFF)
  if (OSX_TIGER_COMPAT)
    set(CMAKE_EXE_LINKER_FLAGS "-mmacosx-version-min=10.4"
      CACHE STRING "Flags used by the linker." FORCE)
    set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.4u.sdk"
      CACHE STRING "isysroot used for universal binary support" FORCE)
  endif(OSX_TIGER_COMPAT)

  option(OSX_FAT_BINARY "Build Vidalia as a Universal binary." OFF)
  if (OSX_FAT_BINARY)
    set(CMAKE_OSX_ARCHITECTURES "ppc;i386"
        CACHE STRING "OS X build architectures" FORCE)
    set(CMAKE_EXE_LINKER_FLAGS "-mmacosx-version-min=10.4"
        CACHE STRING "Flags used by the linker." FORCE)
    set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.4u.sdk"
        CACHE STRING "isysroot used for universal binary support" FORCE)
  endif(OSX_FAT_BINARY)

  option(OSX_FORCE_32BIT "Force a 32-bit build for compatibility." OFF)
  if (OSX_FORCE_32BIT)
    add_definitions(-m32)
    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m32"
        CACHE STRING "Flags used by the linker." FORCE)
  endif(OSX_FORCE_32BIT)
endif(APPLE)

## Define if compiled with Windows 2k support
option(WIN2K "Enable Windows 2k support." OFF)

## UPnP support is currently optional (enabled by default)
option(USE_MINIUPNPC "Enable UPnP support using the MiniUPnPc library." ON)

## Crash reporting via Google Breakpad is optional (disabled by default)
option(USE_BREAKPAD "Enable Google Breakpad crash reporting." OFF)
if (USE_BREAKPAD)
  include(${CMAKE_SOURCE_DIR}/cmake/FindBreakpad.cmake)
endif(USE_BREAKPAD)

## Automatic software update is optional (disabled by default)
if (WIN32)
  option(USE_AUTOUPDATE "Enable automatic software update support." OFF)
endif(WIN32)

## Find the KDE Marble library
if (USE_MARBLE)
  include(${CMAKE_SOURCE_DIR}/cmake/FindMarble.cmake)
endif(USE_MARBLE)

## Find the MaxMind GeoIP library
option(USE_GEOIP "Enable GeoIP lookups via a local MaxMind database" OFF)
if (USE_GEOIP)
  include(${CMAKE_SOURCE_DIR}/cmake/FindGeoIP.cmake)
endif(USE_GEOIP)

## Check for system header files
check_include_file("limits.h" HAVE_LIMITS_H)
check_include_file("sys/limits.h" HAVE_SYS_LIMITS_H)
check_include_file("signal.h" HAVE_SIGNAL_H)

## Check for the sizes of various data types
check_type_size(int SIZEOF_INT)

## Check for the existence of some platform-specific functions
if (HAVE_SIGNAL_H)
  set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} "signal.h")
  check_function_exists(sigaction HAVE_SIGACTION)
  check_function_exists(signal HAVE_SIGNAL)
endif(HAVE_SIGNAL_H)

## Write out a configuration file
configure_file(
  ${CMAKE_CURRENT_SOURCE_DIR}/config.h.in
  ${CMAKE_CURRENT_BINARY_DIR}/config.h
)
include_directories(${CMAKE_CURRENT_BINARY_DIR})

## Add the actual source directories
add_subdirectory(src)
add_subdirectory(doc)
add_subdirectory(pkg)