1 file(GLOB chipmunk_source_files "*.c")
2 file(GLOB chipmunk_public_header "${chipmunk_SOURCE_DIR}/include/chipmunk/*.h")
4 include_directories(BEFORE ${chipmunk_SOURCE_DIR}/include)
7 set(CHIPMUNK_VERSION_MAJOR 7)
8 set(CHIPMUNK_VERSION_MINOR 0)
9 set(CHIPMUNK_VERSION_PATCH 3)
10 set(CHIPMUNK_VERSION "${CHIPMUNK_VERSION_MAJOR}.${CHIPMUNK_VERSION_MINOR}.${CHIPMUNK_VERSION_PATCH}")
11 message("Configuring Chipmunk2D version ${CHIPMUNK_VERSION}")
13 set(prefix ${CMAKE_INSTALL_PREFIX})
14 option(ENABLE_PKG_CONFIGURE "Use pkgconfig" ON)
16 if(ENABLE_PKG_CONFIGURE)
17 find_package(PkgConfig REQUIRED)
19 # Configure the pkg-config file
20 # Requires the following variables to be setup:
21 # @PREFIX@ @EXEC_PREFIX@ @CHIPMUNK_VERSION@ @LIB_DIR@ @DEV_INCLUDE_PATH@
22 set( LIB_DIR $ENV{libdir} )
24 set( LIB_DIR ${CMAKE_INSTALL_LIBDIR} )
27 set( LIB_DIR ${prefix}/lib )
31 set(EXEC_PREFIX ${CMAKE_INSTALL_PREFIX})
32 set(DEV_INCLUDE_PATH ${INCLUDE_DIR})
34 set(chipmunk_pkg_cfg_file chipmunk2d.pc)
35 configure_file(${CMAKE_CURRENT_LIST_DIR}/${chipmunk_pkg_cfg_file}.in ${chipmunk_pkg_cfg_file} @ONLY)
36 endif(ENABLE_PKG_CONFIGURE)
39 FIND_LIBRARY(LOGLIB log)
42 # If you want to reduce the size of the library slightly, uncomment this section
45 # add_definitions( "-DCP_SPACE_DISABLE_DEBUG_API")
49 add_library(chipmunk SHARED
50 ${chipmunk_source_files}
52 # Tell MSVC to compile the code as C++.
54 set_source_files_properties(${chipmunk_source_files} PROPERTIES LANGUAGE CXX)
55 set_target_properties(chipmunk PROPERTIES LINKER_LANGUAGE CXX)
57 # set the lib's version number
58 # But avoid on Android because symlinks to version numbered .so's don't work with Android's Java-side loadLibrary.
60 set_target_properties(chipmunk PROPERTIES
61 SOVERSION ${CHIPMUNK_VERSION_MAJOR}
62 VERSION ${CHIPMUNK_VERSION})
64 target_compile_options(chipmunk PRIVATE -fvisibility=default)
66 # need to explicitly link to the math library because the CMake/Android toolchains may not do it automatically
67 target_link_libraries(chipmunk m ${COVERAGE})
68 endif(ANDROID OR UNIX)
70 target_link_libraries(chipmunk ${LOGLIB})
72 install(TARGETS chipmunk EXPORT chipmunk-targets
73 RUNTIME DESTINATION ${BIN_INSTALL_DIR}
74 LIBRARY DESTINATION ${LIB_INSTALL_DIR}
75 ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
80 add_library(chipmunk_static STATIC
81 ${chipmunk_source_files}
83 # Tell MSVC to compile the code as C++.
85 set_source_files_properties(${chipmunk_source_files} PROPERTIES LANGUAGE CXX)
86 set_target_properties(chipmunk_static PROPERTIES LINKER_LANGUAGE CXX)
88 # Sets chipmunk_static to output "libchipmunk.a" not "libchipmunk_static.a"
89 set_target_properties(chipmunk_static PROPERTIES OUTPUT_NAME chipmunk)
90 target_compile_options(chipmunk PRIVATE -fvisibility=default)
91 target_link_libraries(chipmunk m ${COVERAGE})
93 target_link_libraries(chipmunk ${LOGLIB})
96 install(TARGETS chipmunk_static EXPORT chipmunk-targets ARCHIVE DESTINATION ${LIB_INSTALL_DIR})
100 if(BUILD_SHARED OR INSTALL_STATIC)
101 # FIXME: change to PUBLIC_HEADER to allow building frameworks
102 install(FILES ${chipmunk_public_header} DESTINATION include/chipmunk)
103 install(FILES ${chipmunk_constraint_header} DESTINATION include/chipmunk/constraints)
105 if(INSTALL_CMAKE_MODULES)
107 EXPORT chipmunk-targets
109 FILE chipmunk-targets.cmake
110 DESTINATION share/chipmunk
113 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/chipmunk-config.cmake "
114 include(CMakeFindDependencyMacro)
115 include(\${CMAKE_CURRENT_LIST_DIR}/chipmunk-targets.cmake)
117 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/chipmunk-config.cmake DESTINATION share/chipmunk)
119 endif(BUILD_SHARED OR INSTALL_STATIC)
121 if (ENABLE_PKG_CONFIGURE)
122 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${chipmunk_pkg_cfg_file}
123 DESTINATION ${LIB_DIR}/pkgconfig