Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix CMake compile flags definition. #398

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
31 changes: 17 additions & 14 deletions CMakeLists.txt
Expand Up @@ -97,6 +97,9 @@ OPTION(EMBREE_TUTORIALS "Enable to build Embree tutorials" ON)
# Embree configuration
##############################################################

ADD_LIBRARY(embree_config INTERFACE)
ADD_LIBRARY(embree::config ALIAS embree_config)

GET_PROPERTY(SHARED_LIBS_SUPPORTED GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS)
IF(SHARED_LIBS_SUPPORTED)
OPTION(EMBREE_STATIC_LIB "Build Embree as a static library.")
Expand All @@ -107,7 +110,7 @@ ELSE()
ENDIF()
IF (EMBREE_STATIC_LIB)
SET(EMBREE_LIB_TYPE STATIC)
ADD_DEFINITIONS(-DEMBREE_STATIC_LIB)
TARGET_COMPILE_DEFINITIONS(embree_config INTERFACE -DEMBREE_STATIC_LIB)
ELSE()
SET(EMBREE_LIB_TYPE SHARED)
ENDIF()
Expand Down Expand Up @@ -180,19 +183,19 @@ IF (EMBREE_TASKING_SYSTEM STREQUAL "TBB")
SET(TASKING_TBB ON )
SET(TASKING_INTERNAL OFF)
SET(TASKING_PPL OFF )
ADD_DEFINITIONS(-DTASKING_TBB)
TARGET_COMPILE_DEFINITIONS(embree_config INTERFACE -DTASKING_TBB)
LIST(APPEND ISPC_DEFINITIONS -DTASKING_TBB)
ELSEIF (EMBREE_TASKING_SYSTEM STREQUAL "PPL")
SET(TASKING_PPL ON )
SET(TASKING_TBB OFF )
SET(TASKING_INTERNAL OFF)
ADD_DEFINITIONS(-DTASKING_PPL)
TARGET_COMPILE_DEFINITIONS(embree_config INTERFACE -DTASKING_PPL)
LIST(APPEND ISPC_DEFINITIONS -DTASKING_PPL)
ELSE()
SET(TASKING_INTERNAL ON )
SET(TASKING_TBB OFF)
SET(TASKING_PPL OFF )
ADD_DEFINITIONS(-DTASKING_INTERNAL)
TARGET_COMPILE_DEFINITIONS(embree_config INTERFACE -DTASKING_INTERNAL)
LIST(APPEND ISPC_DEFINITIONS -DTASKING_INTERNAL)
ENDIF()

Expand Down Expand Up @@ -240,7 +243,7 @@ ELSE (WIN32)
INCLUDE (crayprgenv)
ELSE()
GET_FILENAME_COMPONENT(CXX_COMPILER_NAME ${CMAKE_CXX_COMPILER} NAME)

STRING(TOLOWER "${CMAKE_CXX_COMPILER_ID}" _LOWER_CXX_COMPILER_ID)
STRING(REPLACE "appleclang" "clang" _LOWER_CXX_COMPILER_ID ${_LOWER_CXX_COMPILER_ID})
STRING(REPLACE "intelllvm" "dpcpp" _LOWER_CXX_COMPILER_ID ${_LOWER_CXX_COMPILER_ID})
Expand Down Expand Up @@ -293,12 +296,12 @@ ENDIF()

IF (EMBREE_ARM)
SET_PROPERTY(CACHE EMBREE_MAX_ISA PROPERTY STRINGS NONE NEON NEON2X)
ELSE()
ELSE()
SET_PROPERTY(CACHE EMBREE_MAX_ISA PROPERTY STRINGS NONE SSE2 SSE4.2 AVX AVX2 AVX512 DEFAULT)
ENDIF()

IF (EMBREE_MAX_ISA STREQUAL "NONE")

IF (EMBREE_ARM)
IF (APPLE)
OPTION(EMBREE_ISA_NEON "Enables NEON ISA." OFF)
Expand All @@ -311,7 +314,7 @@ IF (EMBREE_MAX_ISA STREQUAL "NONE")
TRY_COMPILE(COMPILER_SUPPORTS_AVX "${CMAKE_BINARY_DIR}" "${PROJECT_SOURCE_DIR}/common/cmake/check_isa.cpp" COMPILE_DEFINITIONS ${FLAGS_AVX})
TRY_COMPILE(COMPILER_SUPPORTS_AVX2 "${CMAKE_BINARY_DIR}" "${PROJECT_SOURCE_DIR}/common/cmake/check_isa.cpp" COMPILE_DEFINITIONS ${FLAGS_AVX2})
TRY_COMPILE(COMPILER_SUPPORTS_AVX512 "${CMAKE_BINARY_DIR}" "${PROJECT_SOURCE_DIR}/common/cmake/check_isa.cpp" COMPILE_DEFINITIONS ${FLAGS_AVX512})

OPTION(EMBREE_ISA_SSE2 "Enables SSE2 ISA." ON)
OPTION(EMBREE_ISA_SSE42 "Enables SSE4.2 ISA." ON)
OPTION(EMBREE_ISA_AVX "Enables AVX ISA." ${COMPILER_SUPPORTS_AVX})
Expand Down Expand Up @@ -352,7 +355,7 @@ ELSE()
UNSET(EMBREE_ISA_AVX CACHE)
UNSET(EMBREE_ISA_AVX2 CACHE)
UNSET(EMBREE_ISA_AVX512 CACHE)

IF(EMBREE_MAX_ISA STREQUAL "NEON")
SET(ISA 1)
ELSEIF(EMBREE_MAX_ISA STREQUAL "NEON2X")
Expand Down Expand Up @@ -480,7 +483,7 @@ IF (EMBREE_ISA_NEON2X)
ENDIF()

IF (EMBREE_ISA_SSE2)
ADD_DEFINITIONS(-DEMBREE_TARGET_SSE2)
TARGET_COMPILE_DEFINITIONS(embree_config INTERFACE -DEMBREE_TARGET_SSE2)
IF (NOT EMBREE_ARM)
LIST(APPEND ISPC_TARGETS "sse2")
ENDIF()
Expand All @@ -491,7 +494,7 @@ IF (EMBREE_ISA_SSE2)
ENDIF()

IF (EMBREE_ISA_SSE42)
ADD_DEFINITIONS(-DEMBREE_TARGET_SSE42)
TARGET_COMPILE_DEFINITIONS(embree_config INTERFACE -DEMBREE_TARGET_SSE42)
IF (NOT EMBREE_ARM)
LIST(APPEND ISPC_TARGETS "sse4")
ENDIF()
Expand All @@ -502,7 +505,7 @@ IF (EMBREE_ISA_SSE42)
ENDIF ()

IF (EMBREE_ISA_AVX)
ADD_DEFINITIONS(-DEMBREE_TARGET_AVX)
TARGET_COMPILE_DEFINITIONS(embree_config INTERFACE -DEMBREE_TARGET_AVX)
IF (NOT EMBREE_ARM)
LIST(APPEND ISPC_TARGETS "avx")
ENDIF()
Expand All @@ -514,7 +517,7 @@ IF (EMBREE_ISA_AVX)
ENDIF ()

IF (EMBREE_ISA_AVX2)
ADD_DEFINITIONS(-DEMBREE_TARGET_AVX2)
TARGET_COMPILE_DEFINITIONS(embree_config INTERFACE -DEMBREE_TARGET_AVX2)
IF (NOT EMBREE_ARM)
LIST(APPEND ISPC_TARGETS "avx2")
ENDIF()
Expand All @@ -526,7 +529,7 @@ IF (EMBREE_ISA_AVX2)
ENDIF ()

IF (EMBREE_ISA_AVX512)
ADD_DEFINITIONS(-DEMBREE_TARGET_AVX512)
TARGET_COMPILE_DEFINITIONS(embree_config INTERFACE -DEMBREE_TARGET_AVX512)
IF (NOT EMBREE_ARM)
LIST(APPEND ISPC_TARGETS "avx512skx-i32x16")
ENDIF()
Expand Down
2 changes: 1 addition & 1 deletion common/lexers/CMakeLists.txt
Expand Up @@ -5,7 +5,7 @@ ADD_LIBRARY(lexers STATIC
stringstream.cpp
tokenstream.cpp
)
TARGET_LINK_LIBRARIES(lexers sys math)
TARGET_LINK_LIBRARIES(lexers sys math embree::config)
SET_PROPERTY(TARGET lexers PROPERTY FOLDER common)
SET_PROPERTY(TARGET lexers APPEND PROPERTY COMPILE_FLAGS " ${FLAGS_LOWEST}")

Expand Down
1 change: 1 addition & 0 deletions common/math/CMakeLists.txt
Expand Up @@ -2,6 +2,7 @@
## SPDX-License-Identifier: Apache-2.0

ADD_LIBRARY(math STATIC constants.cpp)
TARGET_LINK_LIBRARIES(math embree::config)
SET_PROPERTY(TARGET math PROPERTY FOLDER common)
SET_PROPERTY(TARGET math APPEND PROPERTY COMPILE_FLAGS " ${FLAGS_LOWEST}")

Expand Down
1 change: 1 addition & 0 deletions common/simd/CMakeLists.txt
Expand Up @@ -2,6 +2,7 @@
## SPDX-License-Identifier: Apache-2.0

ADD_LIBRARY(simd STATIC sse.cpp)
TARGET_LINK_LIBRARIES(simd embree::config)
SET_PROPERTY(TARGET simd PROPERTY FOLDER common)
SET_PROPERTY(TARGET simd APPEND PROPERTY COMPILE_FLAGS " ${FLAGS_LOWEST}")

Expand Down
2 changes: 1 addition & 1 deletion common/sys/CMakeLists.txt
Expand Up @@ -20,7 +20,7 @@ ADD_LIBRARY(sys STATIC
SET_PROPERTY(TARGET sys PROPERTY FOLDER common)
SET_PROPERTY(TARGET sys APPEND PROPERTY COMPILE_FLAGS " ${FLAGS_LOWEST}")

TARGET_LINK_LIBRARIES(sys ${CMAKE_THREAD_LIBS_INIT} ${CMAKE_DL_LIBS})
TARGET_LINK_LIBRARIES(sys embree::config ${CMAKE_THREAD_LIBS_INIT} ${CMAKE_DL_LIBS})

IF (EMBREE_STATIC_LIB)
INSTALL(TARGETS sys EXPORT sys-targets ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT devel)
Expand Down
3 changes: 2 additions & 1 deletion common/tasking/CMakeLists.txt
Expand Up @@ -14,7 +14,8 @@ ELSEIF (TASKING_TBB)
endif()

ADD_LIBRARY(tasking STATIC taskschedulertbb.cpp)

TARGET_LINK_LIBRARIES(tasking PUBLIC embree::config)

if (TARGET TBB::${EMBREE_TBB_COMPONENT})
message("-- TBB: reuse existing TBB::${TBB_COMPONENT} target")
TARGET_LINK_LIBRARIES(tasking PUBLIC TBB::${EMBREE_TBB_COMPONENT})
Expand Down
36 changes: 18 additions & 18 deletions kernels/CMakeLists.txt
Expand Up @@ -2,7 +2,7 @@
## SPDX-License-Identifier: Apache-2.0

IF (EMBREE_CONFIG)
ADD_DEFINITIONS(-DEMBREE_CONFIG="${EMBREE_CONFIG}")
TARGET_COMPILE_DEFINITIONS(embree_config INTERFACE -DEMBREE_CONFIG="${EMBREE_CONFIG}")
ENDIF()

MACRO(DISABLE_STACK_PROTECTOR_FOR_INTERSECTORS)
Expand All @@ -23,7 +23,7 @@ SOURCE_GROUP("Source Files\\algorithms" "/algorithms/")
SOURCE_GROUP("" FILES embree.rc)

SET(EMBREE_LIBRARY_FILES

embree.rc

common/device.cpp
Expand Down Expand Up @@ -86,7 +86,7 @@ IF (EMBREE_GEOMETRY_SUBDIVISION)
subdiv/tessellation_cache.cpp
subdiv/subdivpatch1base.cpp
subdiv/catmullclark_coefficients.cpp
geometry/grid_soa.cpp
geometry/grid_soa.cpp
subdiv/subdivpatch1base_eval.cpp
bvh/bvh_builder_subdiv.cpp)
ENDIF()
Expand All @@ -100,7 +100,7 @@ IF (EMBREE_RAY_PACKETS)
ENDIF()

MACRO(embree_files TARGET ISA)

SET(${TARGET}
geometry/instance_intersector.cpp
geometry/curve_intersector_virtual_4v.cpp
Expand All @@ -113,15 +113,15 @@ MACRO(embree_files TARGET ISA)

IF (${ISA} EQUAL ${ISA_LOWEST_AVX})
LIST(APPEND ${TARGET} geometry/primitive8.cpp)
ENDIF()
ENDIF()

IF (${ISA} EQUAL ${SSE2} OR ${ISA} EQUAL ${AVX} OR ${ISA} EQUAL ${AVX2} OR ${ISA} EQUAL ${AVX512} OR ${ISA_LOWEST} EQUAL ${ISA})

LIST(APPEND ${TARGET}
common/scene_user_geometry.cpp
common/scene_instance.cpp
common/scene_triangle_mesh.cpp
common/scene_quad_mesh.cpp
common/scene_quad_mesh.cpp
common/scene_curves.cpp
common/scene_line_segments.cpp
common/scene_grid_mesh.cpp
Expand All @@ -148,7 +148,7 @@ MACRO(embree_files TARGET ISA)
bvh/bvh_rotate.cpp
builders/primrefgen.cpp)
ENDIF()

IF (${ISA} GREATER ${SSE42})
LIST(APPEND ${TARGET} bvh/bvh_intersector1_bvh8.cpp)
ENDIF()
Expand All @@ -165,7 +165,7 @@ MACRO(embree_files TARGET ISA)
geometry/grid_soa.cpp
subdiv/subdivpatch1base_eval.cpp)
ENDIF()

IF (EMBREE_RAY_PACKETS)
LIST(APPEND ${TARGET}
bvh/bvh_intersector_hybrid4_bvh4.cpp
Expand All @@ -186,7 +186,7 @@ MACRO(embree_files TARGET ISA)
bvh/bvh_intersector_hybrid16_bvh4.cpp)
ENDIF()
ENDIF()

ENDMACRO()

#embree_files(EMBREE_LIBRARY_FILES_SSE2 ${SSE2})
Expand All @@ -210,7 +210,7 @@ MACRO (CreateISADummyFiles list isa)
SET(dst_file "${CMAKE_BINARY_DIR}/${src}.${isa}.cpp")
SET(${list} ${${list}} ${dst_file})
ADD_CUSTOM_COMMAND(OUTPUT ${dst_file}
COMMAND ${CMAKE_COMMAND}
COMMAND ${CMAKE_COMMAND}
-D src=${src_file}
-D dst=${dst_file}
-P "${PROJECT_SOURCE_DIR}/common/cmake/create_isa_dummy_file.cmake"
Expand Down Expand Up @@ -252,7 +252,7 @@ ENDIF()
IF (EMBREE_ISA_SSE42 AND EMBREE_LIBRARY_FILES_SSE42)
DISABLE_STACK_PROTECTOR_FOR_INTERSECTORS(${EMBREE_LIBRARY_FILES_SSE42})
ADD_LIBRARY(embree_sse42 STATIC ${EMBREE_LIBRARY_FILES_SSE42})
TARGET_LINK_LIBRARIES(embree_sse42 PRIVATE tasking)
TARGET_LINK_LIBRARIES(embree_sse42 PRIVATE tasking PUBLIC embree::config)
SET_TARGET_PROPERTIES(embree_sse42 PROPERTIES COMPILE_FLAGS "${FLAGS_SSE42}")
SET_PROPERTY(TARGET embree_sse42 PROPERTY FOLDER kernels)
SET(EMBREE_LIBRARIES ${EMBREE_LIBRARIES} embree_sse42)
Expand All @@ -266,7 +266,7 @@ ENDIF ()
IF (EMBREE_ISA_AVX AND EMBREE_LIBRARY_FILES_AVX)
DISABLE_STACK_PROTECTOR_FOR_INTERSECTORS(${EMBREE_LIBRARY_FILES_AVX})
ADD_LIBRARY(embree_avx STATIC ${EMBREE_LIBRARY_FILES_AVX})
TARGET_LINK_LIBRARIES(embree_avx PRIVATE tasking)
TARGET_LINK_LIBRARIES(embree_avx PRIVATE tasking PUBLIC embree::config)
SET_TARGET_PROPERTIES(embree_avx PROPERTIES COMPILE_FLAGS "${FLAGS_AVX}")
SET_PROPERTY(TARGET embree_avx PROPERTY FOLDER kernels)
SET(EMBREE_LIBRARIES ${EMBREE_LIBRARIES} embree_avx)
Expand All @@ -280,7 +280,7 @@ ENDIF()
IF (EMBREE_ISA_AVX2 AND EMBREE_LIBRARY_FILES_AVX2)
DISABLE_STACK_PROTECTOR_FOR_INTERSECTORS(${EMBREE_LIBRARY_FILES_AVX2})
ADD_LIBRARY(embree_avx2 STATIC ${EMBREE_LIBRARY_FILES_AVX2})
TARGET_LINK_LIBRARIES(embree_avx2 PRIVATE tasking)
TARGET_LINK_LIBRARIES(embree_avx2 PRIVATE tasking PUBLIC embree::config)
SET_TARGET_PROPERTIES(embree_avx2 PROPERTIES COMPILE_FLAGS "${FLAGS_AVX2}")
SET_PROPERTY(TARGET embree_avx2 PROPERTY FOLDER kernels)
SET(EMBREE_LIBRARIES ${EMBREE_LIBRARIES} embree_avx2)
Expand All @@ -294,7 +294,7 @@ ENDIF()
IF (EMBREE_ISA_AVX512 AND EMBREE_LIBRARY_FILES_AVX512)
DISABLE_STACK_PROTECTOR_FOR_INTERSECTORS(${EMBREE_LIBRARY_FILES_AVX512})
ADD_LIBRARY(embree_avx512 STATIC ${EMBREE_LIBRARY_FILES_AVX512})
TARGET_LINK_LIBRARIES(embree_avx512 PRIVATE tasking)
TARGET_LINK_LIBRARIES(embree_avx512 PRIVATE tasking PUBLIC embree::config)
SET_TARGET_PROPERTIES(embree_avx512 PROPERTIES COMPILE_FLAGS "${FLAGS_AVX512}")
SET_PROPERTY(TARGET embree_avx512 PROPERTY FOLDER kernels)
SET(EMBREE_LIBRARIES ${EMBREE_LIBRARIES} embree_avx512)
Expand All @@ -305,7 +305,7 @@ IF (EMBREE_ISA_AVX512 AND EMBREE_LIBRARY_FILES_AVX512)
ENDIF()
ENDIF()

TARGET_LINK_LIBRARIES(embree PRIVATE ${EMBREE_LIBRARIES} sys math simd lexers tasking)
TARGET_LINK_LIBRARIES(embree PRIVATE ${EMBREE_LIBRARIES} sys math simd lexers tasking PUBLIC embree::config)
SET_TARGET_PROPERTIES(embree PROPERTIES OUTPUT_NAME ${EMBREE_LIBRARY_NAME})
target_include_directories(embree PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include>
Expand All @@ -323,7 +323,7 @@ ENDIF()
IF (WIN32)
ELSEIF (APPLE)
SET_TARGET_PROPERTIES(embree PROPERTIES LINK_FLAGS -Wl,-exported_symbols_list,"${PROJECT_SOURCE_DIR}/kernels/export.macosx.map")
SET_SOURCE_FILES_PROPERTIES(common/rtcore.cpp PROPERTIES OBJECT_DEPENDS "${PROJECT_SOURCE_DIR}/kernels/export.macosx.map")
SET_SOURCE_FILES_PROPERTIES(common/rtcore.cpp PROPERTIES OBJECT_DEPENDS "${PROJECT_SOURCE_DIR}/kernels/export.macosx.map")
ELSE()
SET_TARGET_PROPERTIES(embree PROPERTIES LINK_FLAGS -Wl,--version-script="${PROJECT_SOURCE_DIR}/kernels/export.linux.map")
SET_SOURCE_FILES_PROPERTIES(common/rtcore.cpp PROPERTIES OBJECT_DEPENDS "${PROJECT_SOURCE_DIR}/kernels/export.linux.map")
Expand All @@ -335,7 +335,7 @@ ELSE()
SET_TARGET_PROPERTIES(embree PROPERTIES VERSION ${EMBREE_VERSION} SOVERSION ${EMBREE_VERSION_MAJOR})
ENDIF()

INSTALL(TARGETS embree EXPORT embree-targets
INSTALL(TARGETS embree embree_config EXPORT embree-targets
LIBRARY NAMELINK_SKIP DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT lib
# on Windows put the dlls into bin
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT examples
Expand Down