2
if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
3
if(NOT DEFINED WITH_IN_SOURCE_BUILD)
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.:"
12
"\n cmake ../opencollada"
14
"\n Alternately define WITH_IN_SOURCE_BUILD to force this option (not recommended!)"
19
cmake_minimum_required(VERSION 2.6)
22
#-----------------------------------------------------------------------------
25
# see "cmake --help-policy CMP0003"
26
# So library linking is more sane
27
cmake_policy(SET CMP0003 NEW)
29
# So defines are automatically quoted
30
cmake_policy(SET CMP0005 NEW)
32
# So syntax problems are errors
33
cmake_policy(SET CMP0010 NEW)
35
# Input directories must have CMakeLists.txt
36
cmake_policy(SET CMP0014 NEW)
38
# avoid having empty buildtype
39
set(CMAKE_BUILD_TYPE_INIT "Release")
41
set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Only do Release and Debug" FORCE )
42
mark_as_advanced(CMAKE_CONFIGURATION_TYPES)
44
SET(CMAKE_DEBUG_POSTFIX "" CACHE STRING "Add this string to as suffix to Debug libraries, e.g.: xml2_d.lib " )
46
#-----------------------------------------------------------------------------
49
macro(opencollada_add_lib
55
link_directories(${LIBRARY_OUTPUT_PATH})
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)
64
target_link_libraries(${name}_static ${target_lib})
67
set(CMAKE_REQUIRED_LIBRARIES "${name}_static;${CMAKE_REQUIRED_LIBRARIES}" PARENT_SCOPE)
70
TARGETS ${name}_static EXPORT LibraryExport
71
ARCHIVE DESTINATION ${OPENCOLLADA_INST_LIBRARY}
77
message(${name} " WARNING: Shared library support implemented for UNIX-like OS only")
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)
85
target_link_libraries(${name}_shared ${target_lib})
88
set(CMAKE_REQUIRED_LIBRARIES "${name}_shared;${CMAKE_REQUIRED_LIBRARIES}" PARENT_SCOPE)
91
TARGETS ${name}_shared EXPORT LibraryExport
92
LIBRARY DESTINATION ${OPENCOLLADA_INST_LIBRARY}
98
# ---------------------
99
# copied from blender's
100
# build_files/cmake/macros.cmake
102
macro(ADD_CHECK_C_COMPILER_FLAG
107
include(CheckCCompilerFlag)
109
CHECK_C_COMPILER_FLAG("${_FLAG}" "${_CACHE_VAR}")
111
# message(STATUS "Using CFLAG: ${_FLAG}")
112
set(${_CFLAGS} "${${_CFLAGS}} ${_FLAG}")
114
message(STATUS "Unsupported CFLAG: ${_FLAG}")
118
macro(ADD_CHECK_CXX_COMPILER_FLAG
123
include(CheckCXXCompilerFlag)
125
CHECK_CXX_COMPILER_FLAG("${_FLAG}" "${_CACHE_VAR}")
127
# message(STATUS "Using CXXFLAG: ${_FLAG}")
128
set(${_CXXFLAGS} "${${_CXXFLAGS}} ${_FLAG}")
130
message(STATUS "Unsupported CXXFLAG: ${_FLAG}")
136
#-----------------------------------------------------------------------------
137
# Initialize project.
139
project(OPENCOLLADA) # must be after setting cmake_configuration_types
141
set(EXTERNAL_LIBRARIES ${OPENCOLLADA_SOURCE_DIR}/Externals) # external libraries
142
set(CMAKE_MODULE_PATH "${EXTERNAL_LIBRARIES}/cmake-modules")
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})
150
#-----------------------------------------------------------------------------
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)
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)
174
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${C_WARNINGS}")
175
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_WARNINGS}")
178
#-----------------------------------------------------------------------------
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)
186
#-----------------------------------------------------------------------------
187
# Redirect output files
189
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin CACHE INTERNAL "" FORCE )
190
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib CACHE INTERNAL "" FORCE )
193
#-----------------------------------------------------------------------------
194
# Set default config options
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)
204
-DGENERATEDSAXPARSER_XMLPARSER_LIBXML
207
find_package(LibXml2)
209
message(STATUS "SUCCESSFUL: LibXml2 found")
210
else () # if xml2 not found building its local copy from ./Externals
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}
217
set(LIBXML2_LIBRARIES xml)
219
message("ERROR: LibXml2 not found, please install xml2 library (for Debian libxml2-dev)")
225
add_definitions(-DGENERATEDSAXPARSER_XMLPARSER_EXPAT)
226
message("FATAL: EXPAT support not implemented")
227
# TODO:: use externals
233
message(STATUS "SUCCESSFUL: PCRE found")
234
else () # if pcre not found building its local copy from ./Externals
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)
242
message("ERROR: PCRE not found, please install pcre library")
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)
252
# building OpenCOLLADA libs
253
add_subdirectory(COLLADABaseUtils)
254
add_subdirectory(COLLADAFramework)
255
add_subdirectory(GeneratedSaxParser)
256
add_subdirectory(COLLADASaxFrameworkLoader)
257
add_subdirectory(COLLADAStreamWriter)
259
# building COLLADAValidator app
260
add_subdirectory(COLLADAValidator)
264
install(EXPORT LibraryExport DESTINATION ${OPENCOLLADA_INST_CMAKECONFIG} FILE OpenCOLLADATargets.cmake)
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)
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})