Created
October 16, 2012 06:05
-
-
Save dbr/3897458 to your computer and use it in GitHub Desktop.
OCIO AE CMakeLists.txt stuff
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # src/aftereffects/CMakeLists.txt | |
| if(APPLE) | |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -undefined dynamic_lookup") | |
| endif() | |
| #set(AE_SDK "${CMAKE_SOURCE_DIR}/ext/Adobe After Effects CS5 SDK") | |
| set(AE_SDK "${CMAKE_SOURCE_DIR}/ext/aesdk") | |
| message("Exteranl thing: ${EXTERNAL_INCLUDE_DIRS}") | |
| # LCMS | |
| # FIXME: Duplicated from src/apps/ocio2icc/CMakeLists.txt | |
| set(LCMS_VERSION 2.1) | |
| ExternalProject_Add(LCMS_FOR_AE | |
| URL ${CMAKE_SOURCE_DIR}/ext/lcms2-${LCMS_VERSION}.tar.gz | |
| BUILD_IN_SOURCE 1 | |
| CONFIGURE_COMMAND ./configure --prefix=${PROJECT_BINARY_DIR}/ext/dist --without-jpeg --without-tiff --without-zlib | |
| BUILD_COMMAND make | |
| INSTALL_COMMAND make install | |
| ) | |
| set(LCMS_INCLUDE_DIRS ${PROJECT_BINARY_DIR}/ext/dist/include) | |
| set(LCMS_LIBRARY_DIRS ${PROJECT_BINARY_DIR}/ext/dist/lib) | |
| set(LCMS_STATIC_LIBRARIES ${PROJECT_BINARY_DIR}/ext/dist/lib/liblcms2.a) | |
| include_directories( | |
| ${CMAKE_SOURCE_DIR}/export/ | |
| ${CMAKE_BINARY_DIR}/export/ | |
| ${EXTERNAL_INCLUDE_DIRS} | |
| ${LCMS_INCLUDE_DIRS} | |
| "/Developer/Headers/FlatCarbon" | |
| "${AE_SDK}/Examples/Headers" | |
| "${AE_SDK}/Examples/Util" | |
| "${AE_SDK}/Examples/Headers/SP" | |
| "${AE_SDK}/Examples/Resources" | |
| ) | |
| file(GLOB ae_cpp "*.cpp") | |
| file(GLOB ae_mac_cpp "mac/*.cpp") | |
| add_library(OpenColorIO_AE MODULE | |
| ${ae_cpp} | |
| ${ae_mac_cpp} | |
| ) | |
| target_link_libraries(OpenColorIO_AE | |
| OpenColorIO | |
| ) | |
| add_dependencies(OpenColorIO_AE tinyxml YAML_CPP_LOCAL LCMS_FOR_AE) | |
| set_target_properties(OpenColorIO_AE | |
| PROPERTIES | |
| BUNDLE 1 | |
| BUNDLE_EXTENSION plugin | |
| XCODE_ATTRIBUTE_WRAPPER_EXTENSION plugin # Redundant? Needed for xcode project generated? | |
| XCODE_ATTRIBUTE_MACH_O_TYPE mh_bundle | |
| PREFIX "" | |
| OUTPUT_NAME "OpenColorIO" | |
| COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" | |
| LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" | |
| ) | |
| # Carbon precompiled header | |
| # From http://www.cmake.org/Bug/view.php?id=1260 | |
| include(PCHSupport) | |
| add_precompiled_header(OpenColorIO_AE /Developer/Headers/FlatCarbon/Carbon.h) | |
| ############################################################################### | |
| ### AE Target ### | |
| message("After Effects!") | |
| #add_custom_target(aeplugin | |
| # DEPENDS OpenColorIO_AE | |
| #) | |
| install(TARGETS OpenColorIO_AE | |
| DESTINATION ${CMAKE_INSTALL_EXEC_PREFIX}/plugins/aftereffects) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # share/cmake/PCHSupport.cmake | |
| # - Try to find precompiled headers support for GCC 3.4 and 4.x | |
| # Once done this will define: | |
| # | |
| # Variable: | |
| # PCHSupport_FOUND | |
| # | |
| # Macro: | |
| # ADD_PRECOMPILED_HEADER _targetName _input _dowarn | |
| # ADD_PRECOMPILED_HEADER_TO_TARGET _targetName _input _pch_output_to_use _dowarn | |
| IF(CMAKE_COMPILER_IS_GNUCXX) | |
| EXEC_PROGRAM( | |
| ${CMAKE_CXX_COMPILER} | |
| ARGS ${CMAKE_CXX_COMPILER_ARG1} -dumpversion | |
| OUTPUT_VARIABLE gcc_compiler_version) | |
| MESSAGE("GCC Version: ${gcc_compiler_version}") | |
| IF(gcc_compiler_version MATCHES "4\\.[0-9]\\.[0-9]") | |
| SET(PCHSupport_FOUND TRUE) | |
| ELSE(gcc_compiler_version MATCHES "4\\.[0-9]\\.[0-9]") | |
| IF(gcc_compiler_version MATCHES "3\\.4\\.[0-9]") | |
| SET(PCHSupport_FOUND TRUE) | |
| ENDIF(gcc_compiler_version MATCHES "3\\.4\\.[0-9]") | |
| ENDIF(gcc_compiler_version MATCHES "4\\.[0-9]\\.[0-9]") | |
| SET(_PCH_include_prefix "-I") | |
| ELSE(CMAKE_COMPILER_IS_GNUCXX) | |
| IF(WIN32) | |
| SET(PCHSupport_FOUND TRUE) # for experimental msvc support | |
| SET(_PCH_include_prefix "/I") | |
| ELSE(WIN32) | |
| SET(PCHSupport_FOUND FALSE) | |
| ENDIF(WIN32) | |
| ENDIF(CMAKE_COMPILER_IS_GNUCXX) | |
| MACRO(_PCH_GET_COMPILE_FLAGS _out_compile_flags) | |
| STRING(TOUPPER "CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}" _flags_var_name) | |
| SET(${_out_compile_flags} ${${_flags_var_name}} ) | |
| IF(CMAKE_COMPILER_IS_GNUCXX) | |
| GET_TARGET_PROPERTY(_targetType ${_PCH_current_target} TYPE) | |
| IF(${_targetType} STREQUAL SHARED_LIBRARY) | |
| LIST(APPEND ${_out_compile_flags} "${${_out_compile_flags}} -fPIC") | |
| ENDIF(${_targetType} STREQUAL SHARED_LIBRARY) | |
| ELSE(CMAKE_COMPILER_IS_GNUCXX) | |
| ## TODO ... ? or does it work out of the box | |
| ENDIF(CMAKE_COMPILER_IS_GNUCXX) | |
| GET_DIRECTORY_PROPERTY(DIRINC INCLUDE_DIRECTORIES ) | |
| FOREACH(item ${DIRINC}) | |
| LIST(APPEND ${_out_compile_flags} "${_PCH_include_prefix}${item}") | |
| ENDFOREACH(item) | |
| GET_DIRECTORY_PROPERTY(_directory_flags DEFINITIONS) | |
| #MESSAGE("_directory_flags ${_directory_flags}" ) | |
| LIST(APPEND ${_out_compile_flags} ${_directory_flags}) | |
| LIST(APPEND ${_out_compile_flags} ${CMAKE_CXX_FLAGS} ) | |
| SEPARATE_ARGUMENTS(${_out_compile_flags}) | |
| ENDMACRO(_PCH_GET_COMPILE_FLAGS) | |
| MACRO(_PCH_WRITE_PCHDEP_CXX _targetName _include_file _dephelp) | |
| SET(${_dephelp} ${CMAKE_CURRENT_BINARY_DIR}/${_targetName}_pch_dephelp.cxx) | |
| FILE(WRITE ${${_dephelp}} | |
| "#include \"${_include_file}\" | |
| int testfunction() | |
| { | |
| return 0; | |
| } | |
| " | |
| ) | |
| ENDMACRO(_PCH_WRITE_PCHDEP_CXX ) | |
| MACRO(_PCH_GET_COMPILE_COMMAND out_command _input _output) | |
| FILE(TO_NATIVE_PATH ${_input} _native_input) | |
| FILE(TO_NATIVE_PATH ${_output} _native_output) | |
| IF(CMAKE_COMPILER_IS_GNUCXX) | |
| IF(CMAKE_CXX_COMPILER_ARG1) | |
| # remove leading space in compiler argument | |
| STRING(REGEX REPLACE "^ +" "" pchsupport_compiler_cxx_arg1 ${CMAKE_CXX_COMPILER_ARG1}) | |
| SET(${out_command} | |
| ${CMAKE_CXX_COMPILER} ${pchsupport_compiler_cxx_arg1} ${_compile_FLAGS} -x c++-header -o ${_output} ${_input} | |
| ) | |
| ELSE(CMAKE_CXX_COMPILER_ARG1) | |
| SET(${out_command} | |
| ${CMAKE_CXX_COMPILER} ${_compile_FLAGS} -x c++-header -o ${_output} ${_input} | |
| ) | |
| ENDIF(CMAKE_CXX_COMPILER_ARG1) | |
| ELSE(CMAKE_COMPILER_IS_GNUCXX) | |
| SET(_dummy_str "#include <${_input}>") | |
| FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/pch_dummy.cpp ${_dummy_str}) | |
| SET(${out_command} | |
| ${CMAKE_CXX_COMPILER} ${_compile_FLAGS} /c /Fp${_native_output} /Yc${_native_input} pch_dummy.cpp | |
| ) | |
| #/out:${_output} | |
| ENDIF(CMAKE_COMPILER_IS_GNUCXX) | |
| ENDMACRO(_PCH_GET_COMPILE_COMMAND ) | |
| MACRO(_PCH_GET_TARGET_COMPILE_FLAGS _cflags _header_name _pch_path _dowarn ) | |
| FILE(TO_NATIVE_PATH ${_pch_path} _native_pch_path) | |
| message(${_native_pch_path}) | |
| IF(CMAKE_COMPILER_IS_GNUCXX) | |
| # for use with distcc and gcc >4.0.1 if preprocessed files are accessible | |
| # on all remote machines set | |
| # PCH_ADDITIONAL_COMPILER_FLAGS to -fpch-preprocess | |
| # if you want warnings for invalid header files (which is very inconvenient | |
| # if you have different versions of the headers for different build types | |
| # you may set _pch_dowarn | |
| IF (_dowarn) | |
| SET(${_cflags} "${PCH_ADDITIONAL_COMPILER_FLAGS} -include ${CMAKE_CURRENT_BINARY_DIR}/${_header_name} -Winvalid-pch " ) | |
| ELSE (_dowarn) | |
| SET(${_cflags} "${PCH_ADDITIONAL_COMPILER_FLAGS} -include ${CMAKE_CURRENT_BINARY_DIR}/${_header_name} " ) | |
| ENDIF (_dowarn) | |
| ELSE(CMAKE_COMPILER_IS_GNUCXX) | |
| set(${_cflags} "/Fp${_native_pch_path} /Yu${_header_name}" ) | |
| ENDIF(CMAKE_COMPILER_IS_GNUCXX) | |
| ENDMACRO(_PCH_GET_TARGET_COMPILE_FLAGS ) | |
| MACRO(GET_PRECOMPILED_HEADER_OUTPUT _targetName _input _output) | |
| GET_FILENAME_COMPONENT(_name ${_input} NAME) | |
| GET_FILENAME_COMPONENT(_path ${_input} PATH) | |
| SET(_output "${CMAKE_CURRENT_BINARY_DIR}/${_name}.gch/${_targetName}_${CMAKE_BUILD_TYPE}.h++") | |
| ENDMACRO(GET_PRECOMPILED_HEADER_OUTPUT _targetName _input) | |
| MACRO(ADD_PRECOMPILED_HEADER_TO_TARGET _targetName _input _pch_output_to_use ) | |
| # to do: test whether compiler flags match between target _targetName | |
| # and _pch_output_to_use | |
| GET_FILENAME_COMPONENT(_name ${_input} NAME) | |
| IF( "${ARGN}" STREQUAL "0") | |
| SET(_dowarn 0) | |
| ELSE( "${ARGN}" STREQUAL "0") | |
| SET(_dowarn 1) | |
| ENDIF("${ARGN}" STREQUAL "0") | |
| _PCH_GET_TARGET_COMPILE_FLAGS(_target_cflags ${_name} ${_pch_output_to_use} ${_dowarn}) | |
| # MESSAGE("Add flags ${_target_cflags} to ${_targetName} " ) | |
| SET_TARGET_PROPERTIES(${_targetName} | |
| PROPERTIES | |
| COMPILE_FLAGS ${_target_cflags} | |
| ) | |
| ADD_CUSTOM_TARGET(pch_Generate_${_targetName} | |
| DEPENDS ${_pch_output_to_use} | |
| ) | |
| ADD_DEPENDENCIES(${_targetName} pch_Generate_${_targetName} ) | |
| ENDMACRO(ADD_PRECOMPILED_HEADER_TO_TARGET) | |
| MACRO(ADD_PRECOMPILED_HEADER _targetName _input) | |
| SET(_PCH_current_target ${_targetName}) | |
| IF(NOT CMAKE_BUILD_TYPE) | |
| MESSAGE(FATAL_ERROR | |
| "This is the ADD_PRECOMPILED_HEADER macro. " | |
| "You must set CMAKE_BUILD_TYPE!" | |
| ) | |
| ENDIF(NOT CMAKE_BUILD_TYPE) | |
| IF( "${ARGN}" STREQUAL "0") | |
| SET(_dowarn 0) | |
| ELSE( "${ARGN}" STREQUAL "0") | |
| SET(_dowarn 1) | |
| ENDIF("${ARGN}" STREQUAL "0") | |
| GET_FILENAME_COMPONENT(_name ${_input} NAME) | |
| GET_FILENAME_COMPONENT(_path ${_input} PATH) | |
| GET_PRECOMPILED_HEADER_OUTPUT( ${_targetName} ${_input} _output) | |
| GET_FILENAME_COMPONENT(_outdir ${_output} PATH ) | |
| GET_TARGET_PROPERTY(_targetType ${_PCH_current_target} TYPE) | |
| _PCH_WRITE_PCHDEP_CXX(${_targetName} ${_input} _pch_dephelp_cxx) | |
| IF(${_targetType} STREQUAL SHARED_LIBRARY) | |
| ADD_LIBRARY(${_targetName}_pch_dephelp SHARED ${_pch_dephelp_cxx} ) | |
| ELSE(${_targetType} STREQUAL SHARED_LIBRARY) | |
| ADD_LIBRARY(${_targetName}_pch_dephelp STATIC ${_pch_dephelp_cxx}) | |
| ENDIF(${_targetType} STREQUAL SHARED_LIBRARY) | |
| FILE(MAKE_DIRECTORY ${_outdir}) | |
| _PCH_GET_COMPILE_FLAGS(_compile_FLAGS) | |
| #MESSAGE("_compile_FLAGS: ${_compile_FLAGS}") | |
| #message("COMMAND ${CMAKE_CXX_COMPILER} ${_compile_FLAGS} -x c++-header -o ${_output} ${_input}") | |
| SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_BINARY_DIR}/${_name} PROPERTIES GENERATED 1) | |
| ADD_CUSTOM_COMMAND( | |
| OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_name} | |
| COMMAND ${CMAKE_COMMAND} -E copy ${_input} ${CMAKE_CURRENT_BINARY_DIR}/${_name} # ensure same directory! Required by gcc | |
| DEPENDS ${_input} | |
| ) | |
| #message("_command ${_input} ${_output}") | |
| _PCH_GET_COMPILE_COMMAND(_command ${CMAKE_CURRENT_BINARY_DIR}/${_name} ${_output} ) | |
| #message(${_input} ) | |
| #message("_output ${_output}") | |
| ADD_CUSTOM_COMMAND( | |
| OUTPUT ${_output} | |
| COMMAND ${_command} | |
| DEPENDS ${_input} ${CMAKE_CURRENT_BINARY_DIR}/${_name} ${_targetName}_pch_dephelp | |
| ) | |
| ADD_PRECOMPILED_HEADER_TO_TARGET(${_targetName} ${_input} ${_output} ${_dowarn}) | |
| ENDMACRO(ADD_PRECOMPILED_HEADER) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
PCH issue moved to https://gitlab.kitware.com/cmake/cmake/-/issues/1260