8ffc11dbcb
This cleans up the OpenGL build flags and linking. It additionally also removes some dead code. One of these dead code paths is WITH_X11_ALPHA which actually never was active even with the build flag on. The call to use this was never called because the default initializer for GHOST was set to have it off per default. Nothing called this function with a boolean value to enable it. These cleanups are needed to support true headless OpenGL rendering. Without these cleanups libepoxy will fail to load the correct OpenGL Libraries as we have already linked them to the blender binary. Reviewed By: Brecht, Campbell, Jeroen Differential Revision: http://developer.blender.org/D15554
280 lines
8.0 KiB
CMake
280 lines
8.0 KiB
CMake
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
# see "cmake --help-policy CMP0003"
|
|
# So library linking is more sane
|
|
cmake_policy(SET CMP0003 NEW)
|
|
|
|
# So BUILDINFO and BLENDERPATH strings are automatically quoted
|
|
cmake_policy(SET CMP0005 NEW)
|
|
|
|
# So syntax problems are errors
|
|
cmake_policy(SET CMP0010 NEW)
|
|
|
|
# Input directories must have CMakeLists.txt
|
|
cmake_policy(SET CMP0014 NEW)
|
|
|
|
cmake_minimum_required(VERSION 3.5)
|
|
|
|
project(GhostMultiTest)
|
|
|
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../../../build_files/cmake/Modules")
|
|
|
|
set(WITH_GUARDEDALLOC ON)
|
|
|
|
add_executable(datatoc
|
|
"${CMAKE_SOURCE_DIR}/../../../source/blender/datatoc/datatoc.c")
|
|
|
|
# Fake the current source dir for includes.
|
|
set(_CMAKE_CURRENT_SOURCE_DIR_INIT "${CMAKE_CURRENT_SOURCE_DIR}")
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Macros
|
|
|
|
# For data_to_c macro.
|
|
# include(../../../build_files/cmake/macros.cmake)
|
|
|
|
# stub macro, does nothing
|
|
macro(blender_add_lib
|
|
name
|
|
sources
|
|
includes
|
|
includes_sys
|
|
library_deps # ignored.
|
|
)
|
|
|
|
endmacro()
|
|
|
|
# suffix relative paths so we can use external cmake files
|
|
macro(suffix_relpaths
|
|
new_files files prefix)
|
|
|
|
set(${new_files})
|
|
foreach(_file ${files})
|
|
if(IS_ABSOLUTE "${_file}")
|
|
list(APPEND ${new_files} ${_file})
|
|
else()
|
|
set(_file_to "${prefix}${_file}")
|
|
list(APPEND ${new_files} ${_file_to})
|
|
get_source_file_property(_is_generated ${_file} GENERATED)
|
|
set_source_files_properties(${_file_to} PROPERTIES GENERATED ${_is_generated})
|
|
unset(_file_to)
|
|
unset(_is_generated)
|
|
endif()
|
|
endforeach()
|
|
unset(_file)
|
|
endmacro()
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Defines
|
|
|
|
# set the endian define
|
|
if(MSVC)
|
|
# for some reason this fails on msvc
|
|
add_definitions(-D__LITTLE_ENDIAN__)
|
|
else()
|
|
include(TestBigEndian)
|
|
test_big_endian(_SYSTEM_BIG_ENDIAN)
|
|
if(_SYSTEM_BIG_ENDIAN)
|
|
add_definitions(-D__BIG_ENDIAN__)
|
|
else()
|
|
add_definitions(-D__LITTLE_ENDIAN__)
|
|
endif()
|
|
unset(_SYSTEM_BIG_ENDIAN)
|
|
endif()
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Libraries
|
|
|
|
if(UNIX AND NOT APPLE)
|
|
set(WITH_GHOST_X11 ON)
|
|
endif()
|
|
|
|
# BLF needs this to ignore GPU library
|
|
add_definitions(-DBLF_STANDALONE)
|
|
|
|
# ghost
|
|
include(${CMAKE_SOURCE_DIR}/../CMakeLists.txt)
|
|
suffix_relpaths(INC_NEW "${INC}" "../")
|
|
suffix_relpaths(SRC_NEW "${SRC}" "../")
|
|
include_directories(${INC_NEW})
|
|
add_library(ghost_lib ${SRC_NEW})
|
|
|
|
# string
|
|
include(${CMAKE_SOURCE_DIR}/../../string/CMakeLists.txt)
|
|
suffix_relpaths(INC_NEW "${INC}" "../../string/")
|
|
suffix_relpaths(SRC_NEW "${SRC}" "../../string/")
|
|
include_directories(${INC_NEW})
|
|
add_library(string_lib ${SRC_NEW})
|
|
|
|
# numaapi (for 'bli_lib')
|
|
include(${CMAKE_SOURCE_DIR}/../../numaapi/CMakeLists.txt)
|
|
suffix_relpaths(INC_NEW "${INC}" "../../numaapi/")
|
|
suffix_relpaths(SRC_NEW "${SRC}" "../../numaapi/")
|
|
include_directories(${INC_NEW})
|
|
add_library(numaapi_lib ${SRC_NEW})
|
|
|
|
# guardedalloc
|
|
include(${CMAKE_SOURCE_DIR}/../../guardedalloc/CMakeLists.txt)
|
|
suffix_relpaths(INC_NEW "${INC}" "../../guardedalloc/")
|
|
suffix_relpaths(SRC_NEW "${SRC}" "../../guardedalloc/")
|
|
include_directories(${INC_NEW})
|
|
add_library(guardedalloc_lib ${SRC_NEW})
|
|
|
|
# gpu (used by blenfont)
|
|
add_definitions(-DGPU_STANDALONE)
|
|
set(CMAKE_CURRENT_SOURCE_DIR "${CMAKE_SOURCE_DIR}/../../../source/blender/gpu")
|
|
include(${CMAKE_SOURCE_DIR}/../../../source/blender/gpu/CMakeLists.txt)
|
|
suffix_relpaths(INC_NEW "${INC}" "../../../source/blender/gpu/")
|
|
suffix_relpaths(SRC_NEW "${SRC}" "../../../source/blender/gpu/")
|
|
include_directories(${INC_NEW})
|
|
add_library(gpu_lib ${SRC_NEW})
|
|
set(CMAKE_CURRENT_SOURCE_DIR "${_CMAKE_CURRENT_SOURCE_DIR_INIT}")
|
|
|
|
# imbuf (used by )
|
|
# set(CMAKE_CURRENT_SOURCE_DIR "${CMAKE_SOURCE_DIR}/../../../source/blender/imbuf")
|
|
# include(${CMAKE_SOURCE_DIR}/../../../source/blender/imbuf/CMakeLists.txt)
|
|
# suffix_relpaths(INC_NEW "${INC}" "../../../source/blender/imbuf/")
|
|
# suffix_relpaths(SRC_NEW "${SRC}" "../../../source/blender/imbuf/")
|
|
# include_directories(${INC_NEW})
|
|
# add_library(imbuf_lib ${SRC_NEW})
|
|
# set(CMAKE_CURRENT_SOURCE_DIR "${_CMAKE_CURRENT_SOURCE_DIR_INIT}")
|
|
|
|
# blenfont
|
|
include(${CMAKE_SOURCE_DIR}/../../../source/blender/blenfont/CMakeLists.txt)
|
|
suffix_relpaths(INC_NEW "${INC}" "../../../source/blender/blenfont/")
|
|
suffix_relpaths(SRC_NEW "${SRC}" "../../../source/blender/blenfont/")
|
|
include_directories(${INC_NEW})
|
|
add_library(blenfont_lib ${SRC_NEW})
|
|
|
|
# wcwidth
|
|
include(${CMAKE_SOURCE_DIR}/../../../extern/wcwidth/CMakeLists.txt)
|
|
suffix_relpaths(INC_NEW "${INC}" "../../../extern/wcwidth/")
|
|
suffix_relpaths(SRC_NEW "${SRC}" "../../../extern/wcwidth/")
|
|
include_directories(${INC_NEW})
|
|
add_library(wcwidth_lib ${SRC_NEW})
|
|
|
|
# grr, blenfont needs BLI
|
|
include_directories(
|
|
"../../../source/blender/blenlib"
|
|
)
|
|
|
|
# Needed for math_matrix.c to avoid eigen_capi.h dep.
|
|
add_definitions(-DMATH_STANDALONE)
|
|
|
|
add_library(bli_lib
|
|
"../../../source/blender/blenlib/intern/fileops.c"
|
|
"../../../source/blender/blenlib/intern/gsqueue.c"
|
|
"../../../source/blender/blenlib/intern/rct.c"
|
|
"../../../source/blender/blenlib/intern/string.c"
|
|
"../../../source/blender/blenlib/intern/string_utf8.c"
|
|
"../../../source/blender/blenlib/intern/listbase.c"
|
|
"../../../source/blender/blenlib/intern/math_color.c"
|
|
"../../../source/blender/blenlib/intern/math_geom.c"
|
|
"../../../source/blender/blenlib/intern/math_matrix.c"
|
|
"../../../source/blender/blenlib/intern/math_rotation.c"
|
|
"../../../source/blender/blenlib/intern/math_vector.c"
|
|
"../../../source/blender/blenlib/intern/storage.c"
|
|
"../../../source/blender/blenlib/intern/task.c"
|
|
"../../../source/blender/blenlib/intern/threads.c"
|
|
"../../../source/blender/blenlib/intern/time.c"
|
|
"../../../source/blender/blenlib/intern/path_util.c"
|
|
"../../../source/blender/blenlib/intern/BLI_dynstr.c"
|
|
"../../../source/blender/blenlib/intern/BLI_ghash.c"
|
|
"../../../source/blender/blenlib/intern/BLI_ghash_utils.c"
|
|
"../../../source/blender/blenlib/intern/BLI_linklist.c"
|
|
"../../../source/blender/blenlib/intern/BLI_memarena.c"
|
|
"../../../source/blender/blenlib/intern/BLI_mempool.c"
|
|
"../../../source/blender/blenlib/intern/hash_mm2a.c"
|
|
"../../../source/blender/blenlib/intern/string_utils.c"
|
|
"../../../source/blender/blenlib/intern/system.c"
|
|
)
|
|
|
|
set(PLATFORM_CGLAGS)
|
|
|
|
find_package(OpenGL REQUIRED)
|
|
|
|
find_package(Freetype REQUIRED)
|
|
|
|
find_package(ZLIB REQUIRED)
|
|
|
|
include_directories(${CMAKE_SOURCE_DIR}/../)
|
|
include_directories(${OPENGL_INCLUDE_DIR})
|
|
include_directories(${FREETYPE_INCLUDE_DIRS})
|
|
include_directories(${CMAKE_SOURCE_DIR}/../../../source/blender/blenfont)
|
|
|
|
if(CMAKE_COMPILER_IS_GNUCC)
|
|
set(PLATFORM_CFLAGS "-funsigned-char")
|
|
endif()
|
|
|
|
if(UNIX AND NOT APPLE)
|
|
find_package(X11 REQUIRED)
|
|
|
|
set(PLATFORM_LINKLIBS
|
|
${X11_X11_LIB}
|
|
${X11_Xinput_LIB}
|
|
-lpthread
|
|
)
|
|
endif()
|
|
|
|
string(APPEND CMAKE_C_FLAGS " ${PLATFORM_CFLAGS}")
|
|
string(APPEND CMAKE_CXX_FLAGS " ${PLATFORM_CFLAGS}")
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Executables
|
|
|
|
# Gears (C)
|
|
add_executable(gears_c
|
|
${CMAKE_SOURCE_DIR}/gears/GHOST_C-Test.c)
|
|
|
|
target_link_libraries(gears_c
|
|
ghost_lib
|
|
string_lib
|
|
${OPENGL_gl_LIBRARY}
|
|
${CMAKE_DL_LIBS}
|
|
${PLATFORM_LINKLIBS}
|
|
)
|
|
|
|
|
|
# Gears (C++)
|
|
add_executable(gears_cpp
|
|
${CMAKE_SOURCE_DIR}/gears/GHOST_Test.cpp)
|
|
|
|
target_link_libraries(gears_cpp
|
|
ghost_lib
|
|
string_lib
|
|
${OPENGL_gl_LIBRARY}
|
|
${CMAKE_DL_LIBS}
|
|
${PLATFORM_LINKLIBS}
|
|
)
|
|
|
|
|
|
# MultiTest (C)
|
|
add_executable(multitest_c
|
|
${CMAKE_SOURCE_DIR}/multitest/Basic.c
|
|
${CMAKE_SOURCE_DIR}/multitest/EventToBuf.c
|
|
${CMAKE_SOURCE_DIR}/multitest/MultiTest.c
|
|
${CMAKE_SOURCE_DIR}/multitest/ScrollBar.c
|
|
${CMAKE_SOURCE_DIR}/multitest/Util.c
|
|
${CMAKE_SOURCE_DIR}/multitest/WindowData.c
|
|
${CMAKE_SOURCE_DIR}/multitest/stubs.c
|
|
)
|
|
|
|
|
|
target_link_libraries(multitest_c
|
|
blenfont_lib
|
|
bli_lib
|
|
gpu_lib
|
|
# imbuf_lib
|
|
ghost_lib
|
|
bli_lib # again...
|
|
string_lib
|
|
numaapi_lib
|
|
guardedalloc_lib
|
|
wcwidth_lib
|
|
${OPENGL_gl_LIBRARY}
|
|
${FREETYPE_LIBRARIES} ${BROTLI_LIBRARIES}
|
|
${ZLIB_LIBRARIES}
|
|
${CMAKE_DL_LIBS}
|
|
${PLATFORM_LINKLIBS}
|
|
)
|