From 3abef3a2e6b77949f2e992baefd660422e3e19fe Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sat, 20 Oct 2012 12:17:45 +0000 Subject: [PATCH] Cycles OSL: some build system tweaks to avoid global includes and definitions, which ensures there is no conflict with other libraries, and avoids full rebuild when toggling OSL on/off. --- CMakeLists.txt | 28 ++----------------- intern/cycles/CMakeLists.txt | 1 + intern/cycles/kernel/osl/nodes/CMakeLists.txt | 2 +- 3 files changed, 4 insertions(+), 27 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 38e3c5b2b01..1903a2ad406 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -734,23 +734,14 @@ if(UNIX AND NOT APPLE) execute_process(COMMAND ${LLVM_CONFIG} --libdir OUTPUT_VARIABLE LLVM_LIB_DIR OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process(COMMAND ${LLVM_CONFIG} --includedir - OUTPUT_VARIABLE LLVM_INCLUDES - OUTPUT_STRIP_TRAILING_WHITESPACE) find_library(LLVM_LIBRARY NAMES libLLVMAnalysis.a # first of a whole bunch of libs to get PATHS ${LLVM_LIB_DIR}) message(STATUS "LLVM version = ${LLVM_VERSION}") message(STATUS "LLVM dir = ${LLVM_DIRECTORY}") - message(STATUS "LLVM includes = ${LLVM_INCLUDES}") message(STATUS "LLVM lib dir = ${LLVM_LIB_DIR}") - if(LLVM_LIBRARY AND LLVM_INCLUDES AND LLVM_DIRECTORY AND LLVM_LIB_DIR) - # ensure include directory is added (in case of non-standard locations - include_directories(BEFORE "${LLVM_INCLUDES}") - string(REGEX REPLACE "\\." "" OSL_LLVM_VERSION ${LLVM_VERSION}) - message(STATUS "LLVM OSL_LLVM_VERSION = ${OSL_LLVM_VERSION}") - add_definitions("-DOSL_LLVM_VERSION=${OSL_LLVM_VERSION}") + if(LLVM_LIBRARY AND LLVM_DIRECTORY AND LLVM_LIB_DIR) if(LLVM_STATIC) # if static LLVM libraries were requested, use llvm-config to generate # the list of what libraries we need, and substitute that in the right @@ -788,8 +779,6 @@ if(UNIX AND NOT APPLE) else() message(STATUS "OSL not found") endif() - - include_directories(${OSL_INCLUDES}) endif() # OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed @@ -957,8 +946,6 @@ elseif(WIN32) else() message(STATUS "OSL not found") endif() - - include_directories(${OSL_INCLUDES}) endif() if(MSVC) @@ -1640,23 +1627,14 @@ elseif(APPLE) execute_process(COMMAND ${LLVM_CONFIG} --libdir OUTPUT_VARIABLE LLVM_LIB_DIR OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process(COMMAND ${LLVM_CONFIG} --includedir - OUTPUT_VARIABLE LLVM_INCLUDES - OUTPUT_STRIP_TRAILING_WHITESPACE) find_library(LLVM_LIBRARY NAMES libLLVMAnalysis.a # first of a whole bunch of libs to get PATHS ${LLVM_LIB_DIR}) message(STATUS "LLVM version = ${LLVM_VERSION}") message(STATUS "LLVM dir = ${LLVM_DIRECTORY}") - message(STATUS "LLVM includes = ${LLVM_INCLUDES}") message(STATUS "LLVM lib dir = ${LLVM_LIB_DIR}") - if(LLVM_LIBRARY AND LLVM_INCLUDES AND LLVM_DIRECTORY AND LLVM_LIB_DIR) - # ensure include directory is added (in case of non-standard locations - include_directories(BEFORE "${LLVM_INCLUDES}") - string(REGEX REPLACE "\\." "" OSL_LLVM_VERSION ${LLVM_VERSION}) - message(STATUS "LLVM OSL_LLVM_VERSION = ${OSL_LLVM_VERSION}") - add_definitions("-DOSL_LLVM_VERSION=${OSL_LLVM_VERSION}") + if(LLVM_LIBRARY AND LLVM_DIRECTORY AND LLVM_LIB_DIR) if(LLVM_STATIC) # if static LLVM libraries were requested, use llvm-config to generate # the list of what libraries we need, and substitute that in the right @@ -1693,8 +1671,6 @@ elseif(APPLE) else() message(STATUS "OSL not found") endif() - - include_directories(${OSL_INCLUDES}) endif() set(EXETYPE MACOSX_BUNDLE) diff --git a/intern/cycles/CMakeLists.txt b/intern/cycles/CMakeLists.txt index 38daf790955..7562ee0a0a5 100644 --- a/intern/cycles/CMakeLists.txt +++ b/intern/cycles/CMakeLists.txt @@ -41,6 +41,7 @@ endif() if(WITH_CYCLES_OSL) add_definitions(-DWITH_OSL) + include_directories(${OSL_INCLUDES}) endif() if(WITH_CYCLES_PARTIO) diff --git a/intern/cycles/kernel/osl/nodes/CMakeLists.txt b/intern/cycles/kernel/osl/nodes/CMakeLists.txt index 65b8504ce43..faf7941ee5e 100644 --- a/intern/cycles/kernel/osl/nodes/CMakeLists.txt +++ b/intern/cycles/kernel/osl/nodes/CMakeLists.txt @@ -88,7 +88,7 @@ foreach(_file ${SRC_OSL}) unset(_OSO_FILE) endforeach() -add_custom_target(shader ALL DEPENDS ${SRC_OSO} ${SRC_OSL_HEADERS}) +add_custom_target(cycles_osl_shaders ALL DEPENDS ${SRC_OSO} ${SRC_OSL_HEADERS}) # CMAKE_CURRENT_SOURCE_DIR is already included in OSO paths delayed_install("" "${SRC_OSO}" ${CYCLES_INSTALL_PATH}/shader)