|
|
@@ -31,36 +31,27 @@ ENDMACRO()
|
|
|
#
|
|
|
# Arch
|
|
|
#
|
|
|
-SET(ARCH 64 CACHE STRING "The architecture")
|
|
|
+SET(ARCH 64 CACHE STRING "The architecture (-mXX)")
|
|
|
|
|
|
-SET(CMAKE_CXX_FLAGS "-m${ARCH} ")
|
|
|
-SET(CMAKE_C_FLAGS "-m${ARCH} ")
|
|
|
-SET(CMAKE_EXE_LINKER_FLAGS "-m${ARCH} ")
|
|
|
+MESSAGE("++ Arch: ${ARCH}")
|
|
|
+
|
|
|
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m${ARCH} ")
|
|
|
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m${ARCH} ")
|
|
|
+SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m${ARCH} ")
|
|
|
|
|
|
#
|
|
|
# Install
|
|
|
#
|
|
|
SET(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include/" CACHE PATH "The subdirectory to the header prefix")
|
|
|
SET(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Library install path")
|
|
|
-
|
|
|
-#
|
|
|
-# Doxygen
|
|
|
-#
|
|
|
-FIND_PACKAGE(Doxygen)
|
|
|
-IF(DOXYGEN_FOUND)
|
|
|
- CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/docs/doxyfile ${CMAKE_CURRENT_BINARY_DIR}/doxyfile @ONLY)
|
|
|
-
|
|
|
- ADD_CUSTOM_TARGET(doc ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/doxyfile WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Generating API documentation with Doxygen" VERBATIM)
|
|
|
-ENDIF()
|
|
|
+
|
|
|
+MESSAGE("++ Include install dir: ${INCLUDE_INSTALL_DIR}")
|
|
|
+MESSAGE("++ Lib install dir: ${LIB_INSTALL_DIR}")
|
|
|
|
|
|
#
|
|
|
-# Valgrind hacks
|
|
|
+# First the extern
|
|
|
#
|
|
|
-OPTION(VALGRIND_HAPPY "Make valgrind happy" OFF)
|
|
|
-
|
|
|
-IF(VALGRIND_HAPPY)
|
|
|
- ADD_DEFINITIONS("-DGLIBCXX_FORCE_NEW")
|
|
|
-ENDIF()
|
|
|
+ADD_SUBDIRECTORY(extern)
|
|
|
|
|
|
#
|
|
|
# Libraries
|
|
|
@@ -78,28 +69,116 @@ ENDIF()
|
|
|
#
|
|
|
# Freetype
|
|
|
#
|
|
|
-SET(FREETYPE_INCLUDE_DIR "/usr/include/freetype2"
|
|
|
- CACHE PATH "The directory that contains the Freetype headers")
|
|
|
-SET(FREETYPE_LIBRARY_DIR "/usr/lib"
|
|
|
- CACHE PATH "The directory that contains the libfreetype.so")
|
|
|
+SET(FREETYPE_INCLUDE_DIR "/usr/include/freetype2" CACHE PATH "The directory that contains the Freetype headers")
|
|
|
+SET(FREETYPE_LIBRARY_DIR "/usr/lib" CACHE PATH "The directory that contains the libfreetype.so")
|
|
|
|
|
|
ANKI_ADD_LIB(${FREETYPE_INCLUDE_DIR} ${FREETYPE_LIBRARY_DIR} ${FREETYPE_INCLUDE_DIR}/freetype/freetype.h)
|
|
|
|
|
|
#
|
|
|
# Bullet (Because FIND_PACKAGE(Bullet) sucks)
|
|
|
#
|
|
|
-SET(BULLET_INCLUDE_DIR "${ANKI_PROJ_SOURCE_DIR}/extern/include/" CACHE PATH
|
|
|
- "The directory that contains the bullet directory with the header files")
|
|
|
-SET(BULLET_LIBRARY_DIR "${ANKI_PROJ_SOURCE_DIR}/extern/lib${ARCH}" CACHE PATH
|
|
|
- "The directory that contains the Bullet (static) libraries")
|
|
|
+SET(BULLET_INCLUDE_DIR "${ANKI_PROJ_SOURCE_DIR}/extern/include/" CACHE PATH "The directory that contains the bullet directory with the header files")
|
|
|
+SET(BULLET_LIBRARY_DIR "${ANKI_PROJ_SOURCE_DIR}/extern/lib${ARCH}" CACHE PATH "The directory that contains the Bullet (static) libraries")
|
|
|
|
|
|
-ANKI_ADD_LIB(${BULLET_INCLUDE_DIR}/bullet ${BULLET_LIBRARY_DIR}
|
|
|
- ${BULLET_INCLUDE_DIR}/bullet/btBulletCollisionCommon.h)
|
|
|
+ANKI_ADD_LIB(${BULLET_INCLUDE_DIR}/bullet ${BULLET_LIBRARY_DIR} ${BULLET_INCLUDE_DIR}/bullet/btBulletCollisionCommon.h)
|
|
|
|
|
|
#
|
|
|
-# Add subdirs
|
|
|
+# Doxygen
|
|
|
+#
|
|
|
+FIND_PACKAGE(Doxygen)
|
|
|
+IF(DOXYGEN_FOUND)
|
|
|
+ CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/docs/doxyfile ${CMAKE_CURRENT_BINARY_DIR}/doxyfile @ONLY)
|
|
|
+
|
|
|
+ ADD_CUSTOM_TARGET(doc ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/doxyfile WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Generating API documentation with Doxygen" VERBATIM)
|
|
|
+ENDIF()
|
|
|
+
|
|
|
+#
|
|
|
+# Revision
|
|
|
+#
|
|
|
+FIND_PACKAGE(Subversion 1.6 REQUIRED)
|
|
|
+
|
|
|
+IF(Subversion_FOUND)
|
|
|
+ Subversion_WC_INFO(${CMAKE_CURRENT_SOURCE_DIR} ER)
|
|
|
+ ADD_DEFINITIONS("-DANKI_REVISION=${ER_WC_REVISION}")
|
|
|
+ SET(ANKI_REVISION ${ER_WC_REVISION})
|
|
|
+ELSE()
|
|
|
+ ADD_DEFINITIONS("-DANKI_REVISION=-1")
|
|
|
+ SET(ANKI_REVISION "-1")
|
|
|
+ENDIF()
|
|
|
+
|
|
|
+#
|
|
|
+# Version
|
|
|
+#
|
|
|
+SET(ANKI_VERSION_MINOR 0)
|
|
|
+SET(ANKI_VERSION_MAJOR 1)
|
|
|
+ADD_DEFINITIONS("-DANKI_VERSION_MINOR=${ANKI_VERSION_MINOR}")
|
|
|
+ADD_DEFINITIONS("-DANKI_VERSION_MAJOR=${ANKI_VERSION_MAJOR}")
|
|
|
+
|
|
|
+CONFIGURE_FILE("include/anki/Version.h.cmake" "${CMAKE_CURRENT_BINARY_DIR}/anki/Version.h")
|
|
|
+
|
|
|
+INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/anki/Version.h" DESTINATION "${INCLUDE_INSTALL_DIR}/anki")
|
|
|
+
|
|
|
+#
|
|
|
+# Defines
|
|
|
+#
|
|
|
+ADD_DEFINITIONS("-DANKI_MATH_INTEL_SIMD")
|
|
|
+ADD_DEFINITIONS("-Dthread_local=__thread")
|
|
|
+
|
|
|
+IF(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
|
|
+ ADD_DEFINITIONS("-DANKI_PLATFORM_LINUX")
|
|
|
+ELSEIF(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
|
|
+ ADD_DEFINITIONS("-DANKI_PLATFORM_WINDOWS")
|
|
|
+ENDIF()
|
|
|
+
|
|
|
+#
|
|
|
+# Window backend
|
|
|
+#
|
|
|
+SET(ANKI_WINDOW_BACKEND "GLXX11" CACHE STRING "The window backend (GLXX11 or EGLX11)")
|
|
|
+ADD_DEFINITIONS("-DANKI_WINDOW_BACKEND_${ANKI_WINDOW_BACKEND}")
|
|
|
+
|
|
|
+MESSAGE("++ Window backend: ${ANKI_WINDOW_BACKEND}")
|
|
|
+
|
|
|
+#
|
|
|
+# Compiler flags
|
|
|
+#
|
|
|
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic-errors -pedantic -ansi -Wall -W -Wwrite-strings -Wno-unused -Werror -Wno-long-long -msse4 -std=c++11 ")
|
|
|
+
|
|
|
+IF(CMAKE_BUILD_TYPE STREQUAL Debug)
|
|
|
+ # Removed because they do not work with boost::regexpr and who knows what
|
|
|
+ # else
|
|
|
+ #ADD_DEFINITIONS("-D_GLIBCXX_DEBUG -D_GLIBXX_DEBUG_PEDANTIC")
|
|
|
+ELSE()
|
|
|
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=core2 -ffast-math ")
|
|
|
+ENDIF()
|
|
|
+
|
|
|
+#
|
|
|
+# Include & lib directories
|
|
|
+#
|
|
|
+INCLUDE_DIRECTORIES("extern/GLEW/include" "extern/tinyxml2/include" "extern/lua" "include")
|
|
|
+INCLUDE_DIRECTORIES("extern/include") # XXX Remove that some day
|
|
|
+LINK_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/extern/lib64") # XXX Remove that some day
|
|
|
+
|
|
|
+# Add a few compiler specific stuff
|
|
|
+IF(${CMAKE_CXX_COMPILER} MATCHES ".*clang\\+\\+$")
|
|
|
+ INCLUDE_DIRECTORIES("/opt/libcxx/include/c++/v1")
|
|
|
+ LINK_DIRECTORIES("/opt/libcxx/lib")
|
|
|
+ELSE()
|
|
|
+ # Dont use it. It produces warnings with -std=c++0x
|
|
|
+ #ADD_DEFINITIONS("-fsingle-precision-constant")
|
|
|
+ENDIF()
|
|
|
+
|
|
|
+#
|
|
|
+# Valgrind hacks
|
|
|
+#
|
|
|
+OPTION(VALGRIND_HAPPY "Make valgrind happy" OFF)
|
|
|
+
|
|
|
+IF(VALGRIND_HAPPY)
|
|
|
+ ADD_DEFINITIONS("-DGLIBCXX_FORCE_NEW")
|
|
|
+ENDIF()
|
|
|
+
|
|
|
+#
|
|
|
+# Add anki related dirs
|
|
|
#
|
|
|
-ADD_SUBDIRECTORY(extern)
|
|
|
ADD_SUBDIRECTORY(src)
|
|
|
|
|
|
OPTION(BUILD_TESTS "Build Unit Tests" OFF)
|