2017-10-04 17:14:29 -07:00
|
|
|
cmake_minimum_required (VERSION 2.6)
|
2017-10-04 18:00:01 -07:00
|
|
|
set(CMAKE_CXX_STANDARD 11)
|
2017-10-04 17:14:29 -07:00
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
2017-10-05 14:31:51 -07:00
|
|
|
|
2018-10-27 12:47:52 -07:00
|
|
|
if( CMAKE_SIZEOF_VOID_P EQUAL 8 )
|
|
|
|
|
MESSAGE( "64 bits compiler detected" )
|
|
|
|
|
SET( EX_PLATFORM 64 )
|
|
|
|
|
SET( EX_PLATFORM_NAME "x64" )
|
|
|
|
|
else( CMAKE_SIZEOF_VOID_P EQUAL 8 )
|
|
|
|
|
MESSAGE( "32 bits compiler detected" )
|
|
|
|
|
SET( EX_PLATFORM 32 )
|
|
|
|
|
SET( EX_PLATFORM_NAME "x86" )
|
|
|
|
|
endif( CMAKE_SIZEOF_VOID_P EQUAL 8 )
|
|
|
|
|
|
2017-10-05 21:56:29 -07:00
|
|
|
if (NOT WIN32)
|
2017-10-05 14:31:51 -07:00
|
|
|
set(CMAKE_CXX_COMPILER "clang++")
|
|
|
|
|
endif()
|
|
|
|
|
|
2017-10-04 17:55:09 -07:00
|
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++ -lc++abi")
|
2017-10-04 18:00:01 -07:00
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
2017-10-04 17:14:29 -07:00
|
|
|
|
|
|
|
|
project (Kraken)
|
|
|
|
|
|
|
|
|
|
macro (add_sources)
|
|
|
|
|
file (RELATIVE_PATH _relPath "${PROJECT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}")
|
|
|
|
|
foreach (_src ${ARGN})
|
|
|
|
|
if (_relPath)
|
|
|
|
|
list (APPEND SRCS "${_relPath}/${_src}")
|
|
|
|
|
else()
|
|
|
|
|
list (APPEND SRCS "${_src}")
|
|
|
|
|
endif()
|
|
|
|
|
endforeach()
|
|
|
|
|
if (_relPath)
|
|
|
|
|
# propagate SRCS to parent directory
|
|
|
|
|
set (SRCS ${SRCS} PARENT_SCOPE)
|
|
|
|
|
endif()
|
|
|
|
|
endmacro()
|
|
|
|
|
|
2017-10-04 21:21:29 -07:00
|
|
|
macro (add_public_header)
|
|
|
|
|
file (RELATIVE_PATH _relPath "${PROJECT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}")
|
|
|
|
|
foreach (_src ${ARGN})
|
|
|
|
|
if (_relPath)
|
|
|
|
|
list (APPEND KRAKEN_PUBLIC_HEADERS "${_relPath}/${_src}")
|
|
|
|
|
else()
|
|
|
|
|
list (APPEND KRAKEN_PUBLIC_HEADERS "${_src}")
|
|
|
|
|
endif()
|
|
|
|
|
endforeach()
|
|
|
|
|
if (_relPath)
|
|
|
|
|
# propagate KRAKEN_PUBLIC_HEADERS to parent directory
|
|
|
|
|
set (KRAKEN_PUBLIC_HEADERS ${KRAKEN_PUBLIC_HEADERS} PARENT_SCOPE)
|
|
|
|
|
endif()
|
|
|
|
|
endmacro()
|
|
|
|
|
|
|
|
|
|
IF(APPLE)
|
|
|
|
|
# SET(GUI_TYPE MACOSX_BUNDLE)
|
|
|
|
|
# INCLUDE_DIRECTORIES ( /Developer/Headers/FlatCarbon )
|
2017-11-05 21:27:09 -08:00
|
|
|
FIND_LIBRARY(APPKIT_LIBRARY AppKit)
|
2017-10-04 21:21:29 -07:00
|
|
|
FIND_LIBRARY(OPENGL_LIBRARY OpenGL)
|
|
|
|
|
FIND_LIBRARY(AUDIO_TOOLBOX_LIBRARY AudioToolbox)
|
2017-11-05 23:41:22 -08:00
|
|
|
FIND_LIBRARY(ACCELERATE_LIBRARY Accelerate)
|
2017-11-05 21:27:09 -08:00
|
|
|
MARK_AS_ADVANCED (APPKIT_LIBRARY
|
|
|
|
|
OPENGL_LIBRARY
|
2017-11-05 23:41:22 -08:00
|
|
|
AUDIO_TOOLBOX_LIBRARY
|
|
|
|
|
ACCELERATE_LIBRARY)
|
|
|
|
|
SET(EXTRA_LIBS ${APPKIT_LIBRARY} ${OPENGL_LIBRARY} ${AUDIO_TOOLBOX_LIBRARY} ${ACCELERATE_LIBRARY})
|
2017-10-04 21:21:29 -07:00
|
|
|
FIND_PATH(COCOA_INCLUDE_DIR OpenGL/gl3.h)
|
|
|
|
|
ENDIF (APPLE)
|
2017-10-04 17:14:29 -07:00
|
|
|
|
|
|
|
|
add_subdirectory(kraken)
|
|
|
|
|
|
2018-07-29 23:37:41 -07:00
|
|
|
add_public_header(hydra/include/aabb.h)
|
|
|
|
|
add_public_header(hydra/include/hitinfo.h)
|
|
|
|
|
add_public_header(hydra/include/hydra.h)
|
|
|
|
|
add_public_header(hydra/include/matrix2.h)
|
|
|
|
|
add_public_header(hydra/include/matrix2x3.h)
|
|
|
|
|
add_public_header(hydra/include/matrix4.h)
|
|
|
|
|
add_public_header(hydra/include/quaternion.h)
|
|
|
|
|
add_public_header(hydra/include/scalar.h)
|
|
|
|
|
add_public_header(hydra/include/triangle3.h)
|
|
|
|
|
add_public_header(hydra/include/vector2.h)
|
|
|
|
|
add_public_header(hydra/include/vector3.h)
|
|
|
|
|
add_public_header(hydra/include/vector4.h)
|
|
|
|
|
add_public_header(hydra/include/vector2i.h)
|
|
|
|
|
|
2017-10-30 20:58:14 -07:00
|
|
|
set(Boost_USE_STATIC_LIBS ON) # only find static libs
|
|
|
|
|
set(Boost_USE_MULTITHREADED ON)
|
|
|
|
|
set(Boost_USE_STATIC_RUNTIME OFF)
|
2017-11-06 00:44:31 -08:00
|
|
|
find_package(Boost 1.54.0)
|
2017-10-30 20:58:14 -07:00
|
|
|
if(Boost_FOUND)
|
|
|
|
|
include_directories(${Boost_INCLUDE_DIRS})
|
2018-10-27 12:47:52 -07:00
|
|
|
list (APPEND EXTRA_LIBS "${Boost_LIBRARIES}")
|
2017-10-30 20:58:14 -07:00
|
|
|
endif()
|
|
|
|
|
|
2018-04-22 23:27:20 -07:00
|
|
|
# ---- Hydra ----
|
|
|
|
|
add_subdirectory(hydra)
|
|
|
|
|
include_directories(hydra/include)
|
2018-10-27 12:47:52 -07:00
|
|
|
list (APPEND EXTRA_LIBS hydra)
|
2018-04-22 23:27:20 -07:00
|
|
|
|
2018-08-06 21:34:16 -07:00
|
|
|
# ---- Vulkan ----
|
|
|
|
|
find_package(Vulkan REQUIRED)
|
2018-10-27 12:47:52 -07:00
|
|
|
target_link_libraries(krakenstatic )
|
|
|
|
|
list (APPEND EXTRA_LIBS Vulkan::Vulkan)
|
2018-07-29 23:37:41 -07:00
|
|
|
|
2018-04-22 23:27:20 -07:00
|
|
|
# ---- OpenGL ----
|
|
|
|
|
find_package(OpenGL REQUIRED)
|
|
|
|
|
include_directories( ${OPENGL_INCLUDE_DIRS} )
|
2018-10-27 12:47:52 -07:00
|
|
|
list (APPEND EXTRA_LIBS "${OPENGL_LIBRARIES}")
|
2018-04-22 23:27:20 -07:00
|
|
|
|
|
|
|
|
# ---- GLAD ----
|
2018-07-29 23:37:41 -07:00
|
|
|
set(GLAD_EXTENSIONS "GL_EXT_texture_filter_anisotropic,GL_EXT_texture_compression_s3tc, GL_S3_s3tc" CACHE STRING "Gl exts" FORCE)
|
2018-04-22 23:27:20 -07:00
|
|
|
add_subdirectory(3rdparty/glad)
|
|
|
|
|
include_directories(${GLAD_INCLUDE_DIRS})
|
2018-10-27 12:47:52 -07:00
|
|
|
list (APPEND EXTRA_LIBS "glad")
|
2018-04-22 23:27:20 -07:00
|
|
|
|
|
|
|
|
# ---- GLFW ----
|
|
|
|
|
set(GLFW_BUILD_EXAMPLES OFF CACHE INTERNAL "Build the GLFW example programs")
|
|
|
|
|
set(GLFW_BUILD_TESTS OFF CACHE INTERNAL "Build the GLFW test programs")
|
|
|
|
|
set(GLFW_BUILD_DOCS OFF CACHE INTERNAL "Build the GLFW documentation")
|
|
|
|
|
set(GLFW_INSTALL OFF CACHE INTERNAL "Generate installation target")
|
|
|
|
|
add_subdirectory(3rdparty/glfw)
|
|
|
|
|
include_directories(3rdparty/glfw/include)
|
2018-10-27 12:47:52 -07:00
|
|
|
list (APPEND EXTRA_LIBS "${GLFW_LIBRARIES}")
|
2018-04-22 23:27:20 -07:00
|
|
|
|
2018-10-27 12:47:52 -07:00
|
|
|
|
|
|
|
|
add_library(krakendynamic MODULE ${SRCS} ${KRAKEN_PUBLIC_HEADERS})
|
|
|
|
|
TARGET_LINK_LIBRARIES( krakendynamic ${EXTRA_LIBS} )
|
2018-07-27 01:09:03 -07:00
|
|
|
SET_TARGET_PROPERTIES(
|
2018-10-27 12:47:52 -07:00
|
|
|
krakendynamic
|
2018-07-27 01:09:03 -07:00
|
|
|
PROPERTIES
|
|
|
|
|
FRAMEWORK ON
|
|
|
|
|
SOVERSION 0
|
|
|
|
|
VERSION 0.1.0
|
|
|
|
|
PUBLIC_HEADER "${KRAKEN_PUBLIC_HEADERS}"
|
|
|
|
|
PRIVATE_HEADER "${PRIVATE_HEADER_FILES}"
|
|
|
|
|
ARCHIVE_OUTPUT_DIRECTORY "archive"
|
2018-07-29 23:37:41 -07:00
|
|
|
LIBRARY_OUTPUT_DIRECTORY "lib${LIB_SUFFIX}"
|
2018-07-27 01:09:03 -07:00
|
|
|
OUTPUT_NAME kraken
|
|
|
|
|
)
|
|
|
|
|
|
2018-10-27 12:47:52 -07:00
|
|
|
add_library(krakenstatic STATIC ${SRCS} ${KRAKEN_PUBLIC_HEADERS})
|
|
|
|
|
TARGET_LINK_LIBRARIES( krakenstatic ${EXTRA_LIBS} )
|
|
|
|
|
SET_TARGET_PROPERTIES(
|
|
|
|
|
krakenstatic
|
|
|
|
|
PROPERTIES
|
|
|
|
|
LIBRARY_OUTPUT_DIRECTORY "lib${LIB_SUFFIX}"
|
|
|
|
|
OUTPUT_NAME kraken
|
|
|
|
|
)
|
2018-07-29 23:37:41 -07:00
|
|
|
|
2017-10-06 00:11:32 -07:00
|
|
|
# add_custom_target(package
|
|
|
|
|
# COMMENT "Compressing..."
|
|
|
|
|
# WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/archive"
|
|
|
|
|
# COMMAND ${CMAKE_COMMAND} -E tar "cfvz" "kraken.tgz" "*"
|
|
|
|
|
# )
|
2018-10-27 12:47:52 -07:00
|
|
|
|
|
|
|
|
install(TARGETS krakenstatic krakendynamic
|
|
|
|
|
RUNTIME DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/export/${CMAKE_BUILD_TYPE}/bin${EX_PLATFORM}
|
|
|
|
|
PUBLIC_HEADER DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/export/include
|
|
|
|
|
ARCHIVE DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/export/${CMAKE_BUILD_TYPE}/lib${EX_PLATFORM}
|
|
|
|
|
LIBRARY DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/export/${CMAKE_BUILD_TYPE}/lib${EX_PLATFORM}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
IF(CMAKE_BUILD_TYPE MATCHES DEBUG)
|
|
|
|
|
install (FILES $<TARGET_PDB_FILE:krakendynamic>
|
|
|
|
|
DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/export/lib${EX_PLATFORM})
|
|
|
|
|
ENDIF(CMAKE_BUILD_TYPE MATCHES DEBUG)
|