~ubuntu-branches/ubuntu/wily/opencollada/wily-proposed

« back to all changes in this revision

Viewing changes to CMakeLists.txt

  • Committer: Package Import Robot
  • Author(s): Matteo F. Vescovi
  • Date: 2015-05-14 17:23:27 UTC
  • Revision ID: package-import@ubuntu.com-20150514172327-f862u8envms01fra
Tags: upstream-0.1.0~20140703.ddf8f47+dfsg1
ImportĀ upstreamĀ versionĀ 0.1.0~20140703.ddf8f47+dfsg1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
 
3
        if(NOT DEFINED WITH_IN_SOURCE_BUILD)
 
4
                message(FATAL_ERROR
 
5
                        "CMake generation for OpenCollada is not allowed within the source directory!"
 
6
                        "\n Remove the CMakeCache.txt file and try again from another folder, e.g.:"
 
7
                        "\n "
 
8
                        "\n rm CMakeCache.txt"
 
9
                        "\n cd .."
 
10
                        "\n mkdir cmake-make"
 
11
                        "\n cd cmake-make"
 
12
                        "\n cmake ../opencollada"
 
13
                        "\n "
 
14
                        "\n Alternately define WITH_IN_SOURCE_BUILD to force this option (not recommended!)"
 
15
                )
 
16
        endif()
 
17
endif()
 
18
 
 
19
cmake_minimum_required(VERSION 2.6)
 
20
 
 
21
 
 
22
#-----------------------------------------------------------------------------
 
23
# Set policy.
 
24
 
 
25
# see "cmake --help-policy CMP0003"
 
26
# So library linking is more sane
 
27
cmake_policy(SET CMP0003 NEW)
 
28
 
 
29
# So defines are automatically quoted
 
30
cmake_policy(SET CMP0005 NEW)
 
31
 
 
32
# So syntax problems are errors
 
33
cmake_policy(SET CMP0010 NEW)
 
34
 
 
35
# Input directories must have CMakeLists.txt
 
36
cmake_policy(SET CMP0014 NEW)
 
37
 
 
38
# avoid having empty buildtype
 
39
set(CMAKE_BUILD_TYPE_INIT "Release")
 
40
 
 
41
set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Only do Release and Debug" FORCE )
 
42
mark_as_advanced(CMAKE_CONFIGURATION_TYPES)
 
43
 
 
44
SET(CMAKE_DEBUG_POSTFIX ""  CACHE STRING "Add this string to as suffix to Debug libraries, e.g.: xml2_d.lib " )
 
45
 
 
46
#-----------------------------------------------------------------------------
 
47
# Macro's
 
48
 
 
49
macro(opencollada_add_lib
 
50
        name
 
51
        sources
 
52
        target_libs
 
53
        )
 
54
 
 
55
        link_directories(${LIBRARY_OUTPUT_PATH})
 
56
 
 
57
        if (USE_STATIC)
 
58
                add_library(${name}_static STATIC ${sources})
 
59
                set_target_properties(${name}_static PROPERTIES OUTPUT_NAME ${name})
 
60
                foreach(target_lib ${target_libs})
 
61
                        if(TARGET ${target_lib}_static)
 
62
                                target_link_libraries(${name}_static ${target_lib}_static)
 
63
                        else()
 
64
                                target_link_libraries(${name}_static ${target_lib})
 
65
                        endif()
 
66
                endforeach()
 
67
                set(CMAKE_REQUIRED_LIBRARIES "${name}_static;${CMAKE_REQUIRED_LIBRARIES}" PARENT_SCOPE)
 
68
 
 
69
                install(
 
70
                        TARGETS ${name}_static EXPORT LibraryExport
 
71
                        ARCHIVE DESTINATION ${OPENCOLLADA_INST_LIBRARY}
 
72
                )
 
73
        endif ()
 
74
 
 
75
        if (USE_SHARED)
 
76
                if (NOT UNIX)
 
77
                        message(${name} " WARNING: Shared library support implemented for UNIX-like OS only")
 
78
                endif ()
 
79
                add_library(${name}_shared SHARED ${sources})
 
80
                set_target_properties(${name}_shared PROPERTIES OUTPUT_NAME ${name})
 
81
                foreach(target_lib ${target_libs})
 
82
                        if(TARGET ${target_lib}_shared)
 
83
                                target_link_libraries(${name}_shared ${target_lib}_shared)
 
84
                        else()
 
85
                                target_link_libraries(${name}_shared ${target_lib})
 
86
                        endif()
 
87
                endforeach()
 
88
                set(CMAKE_REQUIRED_LIBRARIES "${name}_shared;${CMAKE_REQUIRED_LIBRARIES}"  PARENT_SCOPE)
 
89
 
 
90
                install(
 
91
                        TARGETS ${name}_shared EXPORT LibraryExport
 
92
                        LIBRARY DESTINATION ${OPENCOLLADA_INST_LIBRARY}
 
93
                )
 
94
        endif ()
 
95
endmacro()
 
96
 
 
97
 
 
98
# ---------------------
 
99
# copied from blender's
 
100
# build_files/cmake/macros.cmake
 
101
 
 
102
macro(ADD_CHECK_C_COMPILER_FLAG
 
103
        _CFLAGS
 
104
        _CACHE_VAR
 
105
        _FLAG)
 
106
 
 
107
        include(CheckCCompilerFlag)
 
108
 
 
109
        CHECK_C_COMPILER_FLAG("${_FLAG}" "${_CACHE_VAR}")
 
110
        if(${_CACHE_VAR})
 
111
                # message(STATUS "Using CFLAG: ${_FLAG}")
 
112
                set(${_CFLAGS} "${${_CFLAGS}} ${_FLAG}")
 
113
        else()
 
114
                message(STATUS "Unsupported CFLAG: ${_FLAG}")
 
115
        endif()
 
116
endmacro()
 
117
 
 
118
macro(ADD_CHECK_CXX_COMPILER_FLAG
 
119
        _CXXFLAGS
 
120
        _CACHE_VAR
 
121
        _FLAG)
 
122
 
 
123
        include(CheckCXXCompilerFlag)
 
124
 
 
125
        CHECK_CXX_COMPILER_FLAG("${_FLAG}" "${_CACHE_VAR}")
 
126
        if(${_CACHE_VAR})
 
127
                # message(STATUS "Using CXXFLAG: ${_FLAG}")
 
128
                set(${_CXXFLAGS} "${${_CXXFLAGS}} ${_FLAG}")
 
129
        else()
 
130
                message(STATUS "Unsupported CXXFLAG: ${_FLAG}")
 
131
        endif()
 
132
endmacro()
 
133
# end copy
 
134
# --------
 
135
 
 
136
#-----------------------------------------------------------------------------
 
137
# Initialize project.
 
138
 
 
139
project(OPENCOLLADA)  # must be after setting cmake_configuration_types
 
140
 
 
141
set(EXTERNAL_LIBRARIES             ${OPENCOLLADA_SOURCE_DIR}/Externals)  # external libraries
 
142
set(CMAKE_MODULE_PATH "${EXTERNAL_LIBRARIES}/cmake-modules")
 
143
 
 
144
set(OPENCOLLADA_VERSION_MAJOR 0)
 
145
set(OPENCOLLADA_VERSION_MINOR 1)
 
146
set(OPENCOLLADA_VERSION_PATCH 0)
 
147
set(OPENCOLLADA_VERSION ${OPENCOLLADA_VERSION_MAJOR}.${OPENCOLLADA_VERSION_MINOR}.${OPENCOLLADA_VERSION_PATCH})
 
148
 
 
149
 
 
150
#-----------------------------------------------------------------------------
 
151
# Compiler warnings.
 
152
 
 
153
set(C_WARNINGS   "")
 
154
set(CXX_WARNINGS "")
 
155
 
 
156
if (CMAKE_COMPILER_IS_GNUCC)
 
157
        ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
 
158
        ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_EXTRA -Wextra)
 
159
        ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
 
160
        ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_SWITCH -Wno-switch)
 
161
        ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
 
162
        ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_IGNORED_QUALIFIERS -Wno-ignored-qualifiers)
 
163
endif ()
 
164
if (CMAKE_COMPILER_IS_GNUCXX)
 
165
        ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
 
166
        ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_EXTRA -Wextra)
 
167
        ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
 
168
        ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SWITCH -Wno-switch)
 
169
        ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_REORDER -Wno-reorder)  # could be re-ordered but for now this is just noise.
 
170
        ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
 
171
        ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_IGNORED_QUALIFIERS -Wno-ignored-qualifiers)
 
172
endif ()
 
173
 
 
174
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${C_WARNINGS}")
 
175
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_WARNINGS}")
 
176
 
 
177
 
 
178
#-----------------------------------------------------------------------------
 
179
# Install vars
 
180
 
 
181
set(OPENCOLLADA_INST_INCLUDE ${CMAKE_INSTALL_PREFIX}/include/opencollada)
 
182
set(OPENCOLLADA_INST_LIBRARY ${CMAKE_INSTALL_PREFIX}/lib/opencollada)
 
183
set(OPENCOLLADA_INST_CMAKECONFIG ${OPENCOLLADA_INST_LIBRARY}/cmake)
 
184
 
 
185
 
 
186
#-----------------------------------------------------------------------------
 
187
# Redirect output files
 
188
 
 
189
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin CACHE INTERNAL "" FORCE )
 
190
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib CACHE INTERNAL "" FORCE )
 
191
 
 
192
 
 
193
#-----------------------------------------------------------------------------
 
194
# Set default config options
 
195
 
 
196
option(USE_STATIC "Build static libraries"  ON)
 
197
option(USE_SHARED "Build shared libraries"  OFF)
 
198
option(USE_LIBXML "Use LibXml2 parser"      ON)
 
199
option(USE_EXPAT  "Use expat parser"        OFF)
 
200
 
 
201
#adding xml2
 
202
if (USE_LIBXML)
 
203
        add_definitions(
 
204
                -DGENERATEDSAXPARSER_XMLPARSER_LIBXML
 
205
                -DXMLPARSER_LIBXML
 
206
        )
 
207
        find_package(LibXml2)
 
208
        if (LIBXML2_FOUND)
 
209
                message(STATUS "SUCCESSFUL: LibXml2 found")
 
210
        else ()  # if xml2 not found building its local copy from ./Externals
 
211
                if (WIN32)
 
212
                        message("WARNING: Native LibXml2 not found, taking LibXml from ./Externals")
 
213
                        add_subdirectory(${EXTERNAL_LIBRARIES}/LibXML)
 
214
                        set(LIBXML2_INCLUDE_DIR
 
215
                                ${libxml_include_dirs}
 
216
                        )
 
217
                        set(LIBXML2_LIBRARIES xml)
 
218
                else ()
 
219
                        message("ERROR: LibXml2 not found, please install xml2 library (for Debian libxml2-dev)")
 
220
                endif ()
 
221
        endif ()
 
222
endif ()
 
223
 
 
224
if (USE_EXPAT)
 
225
        add_definitions(-DGENERATEDSAXPARSER_XMLPARSER_EXPAT)
 
226
        message("FATAL: EXPAT support not implemented")
 
227
        # TODO:: use externals
 
228
endif ()
 
229
 
 
230
#adding PCRE
 
231
find_package(PCRE)
 
232
if (PCRE_FOUND)
 
233
        message(STATUS "SUCCESSFUL: PCRE found")
 
234
else ()  # if pcre not found building its local copy from ./Externals
 
235
        if (WIN32 OR APPLE)
 
236
                message("WARNING: Native PCRE not found, taking PCRE from ./Externals")
 
237
                add_definitions(-DPCRE_STATIC)
 
238
                add_subdirectory(${EXTERNAL_LIBRARIES}/pcre)
 
239
                set(PCRE_INCLUDE_DIR ${libpcre_include_dirs})
 
240
                set(PCRE_LIBRARIES pcre)
 
241
        else ()
 
242
                message("ERROR: PCRE not found, please install pcre library")
 
243
        endif ()
 
244
endif ()
 
245
 
 
246
# building required libs
 
247
add_subdirectory(common/libftoa)
 
248
add_subdirectory(common/libBuffer)
 
249
add_subdirectory(${EXTERNAL_LIBRARIES}/UTF)
 
250
add_subdirectory(${EXTERNAL_LIBRARIES}/MathMLSolver)
 
251
 
 
252
# building OpenCOLLADA libs
 
253
add_subdirectory(COLLADABaseUtils)
 
254
add_subdirectory(COLLADAFramework)
 
255
add_subdirectory(GeneratedSaxParser)
 
256
add_subdirectory(COLLADASaxFrameworkLoader)
 
257
add_subdirectory(COLLADAStreamWriter)
 
258
 
 
259
# building COLLADAValidator app
 
260
add_subdirectory(COLLADAValidator)
 
261
 
 
262
 
 
263
# Library export
 
264
install(EXPORT LibraryExport DESTINATION ${OPENCOLLADA_INST_CMAKECONFIG} FILE OpenCOLLADATargets.cmake)
 
265
 
 
266
# Create the configuration files
 
267
include(CMakePackageConfigHelpers)
 
268
configure_package_config_file(OpenCOLLADAConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/OpenCOLLADAConfig.cmake
 
269
                              INSTALL_DESTINATION ${OPENCOLLADA_INST_CMAKECONFIG}
 
270
                              PATH_VARS OPENCOLLADA_INST_INCLUDE OPENCOLLADA_INST_CMAKECONFIG
 
271
                              NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO)
 
272
write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/OpenCOLLADAConfigVersion.cmake
 
273
                                 VERSION ${OPENCOLLADA_VERSION}
 
274
                                 COMPATIBILITY SameMajorVersion)
 
275
 
 
276
# Install the configuration files
 
277
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/OpenCOLLADAConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/OpenCOLLADAConfigVersion.cmake
 
278
        DESTINATION ${OPENCOLLADA_INST_CMAKECONFIG})