1-
21# Copyright Disney Enterprises, Inc. All rights reserved.
32#
43# Licensed under the Apache License, Version 2.0 (the "License");
1615
1716## CMake compatibility issues: don't modify this, please!
1817CMAKE_MINIMUM_REQUIRED ( VERSION 2.4.6 )
18+ PROJECT (SeExpr2)
1919MARK_AS_ADVANCED (CMAKE_BACKWARDS_COMPATIBILITY )
2020## allow more human readable "if then else" constructs
2121SET ( CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE )
2222## Use verbose make file
2323SET ( CMAKE_VERBOSE_MAKEFILE TRUE )
2424
25-
25+ # Configuration options
26+ # TODO: find GTEST and boost and python the proper ways
27+ SET (LIBDIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH "lib or lib64" ) # defaults to lib but if it s lib64 ok
28+ SET (BOOST_DIR $ENV{RP_boost_disney} CACHE PATH "where boost is located" )
29+ SET (BOOST_PYTHON_LIBNAME boost_python CACHE STRING "what library name for boost python" )
30+ SET (GTEST_DIR /usr/include CACHE PATH "Where to find GTEST" ) # /usr/include/gtest)
31+ SET (ENABLE_LLVM_BACKEND ON CACHE BOOL "Whether to build with LLVM backend" )
32+ SET (USE_PYTHON ON CACHE BOOL "Whether to compile python libraries" )
33+
34+ if (ENABLE_LLVM_BACKEND)
35+ SET (LLVM_DIR /usr/share/llvm/cmake CACHE PATH "Where to search for LLVM i.e. " )
36+
37+ FIND_PACKAGE (LLVM CONFIG NAMES LLVM CONFIGS LLVM-Config.cmake )
38+ if (LLVM_FOUND)
39+ set (SEEXPR_ENABLE_LLVM_BACKEND 1)
40+ message (STATUS "Using LLVM-Config.cmake in: ${LLVM_DIR} " )
41+ find_program (LLVM_CONFIG_EXECUTABLE NAMES llvm-config )
42+
43+ # Uncomment to use clang++
44+ #set(CMAKE_CXX_COMPILER clang++)
45+ #set(CMAKE_C_COMPILER clang)
46+
47+ set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${LLVM_DIR} " )
48+ include (LLVM-Config )
49+ include (HandleLLVMOptions )
50+
51+ add_definitions ( ${LLVM_DEFINITIONS} )
52+ message (STATUS "LLVM_DEFINITIONS =" ${LLVM_DEFINITIONS} )
53+
54+ execute_process (
55+ COMMAND ${LLVM_CONFIG_EXECUTABLE} --ldflags
56+ OUTPUT_VARIABLE LLVM_LDFLAGS
57+ OUTPUT_STRIP_TRAILING_WHITESPACE
58+ )
59+ message (STATUS "LLVM_LDFLAGS = " ${LLVM_LDFLAGS} )
60+
61+ include_directories (${LLVM_INCLUDE_DIRS} )
62+ message (status "LLVM_LIBRARY_DIR=" ${LLVM_LIBRARY_DIRS} )
63+ link_directories (${LLVM_LIBRARY_DIR} )
64+ set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LLVM_LDFLAGS} " )
65+ set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LLVM_LDFLAGS} " )
66+ else (LLVM_FOUND )
67+ set (ENABLE_LLVM_BACKEND off )
68+ set (SEEXPR_ENABLE_LLVM_BACKEND 0)
69+ endif (LLVM_FOUND )
70+ endif (ENABLE_LLVM_BACKEND )
2671
2772## project name & version
2873PROJECT ( SeExpr )
@@ -43,10 +88,15 @@ IF(WIN32)
4388 include (GenerateExportHeader )
4489 ADD_DEFINITIONS (-DSEEXPR_WIN32 )
4590ELSE (WIN32 )
46- ADD_DEFINITIONS (-Wall -Wextra )
91+ ADD_DEFINITIONS (-Wall -Wextra -Wno-unused-parameter )
4792 ADD_DEFINITIONS (-pthread )
4893
49- SET ( CMAKE_CXX_FLAGS "-fPIC -msse4.1" )
94+ SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -g -std=c++11 -msse4.1" )
95+ if (NOT APPLE )
96+ SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -rdynamic" )
97+ else ()
98+ SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-date-time" )
99+ endif ()
50100ENDIF (WIN32 )
51101
52102## Choose build options
@@ -57,13 +107,23 @@ ENDIF("$ENV{FLAVOR}" STREQUAL "optimize")
57107IF ("$ENV{FLAVOR} " STREQUAL "debug" )
58108 SET (CMAKE_BUILD_TYPE "Debug" CACHE STRING "type of build" FORCE )
59109ENDIF ("$ENV{FLAVOR} " STREQUAL "debug" )
110+
60111# Set to release if nothing else defined
61112IF (NOT CMAKE_BUILD_TYPE )
62113 SET (CMAKE_BUILD_TYPE "Release" CACHE STRING
63114 "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel."
64115 FORCE )
65116ENDIF (NOT CMAKE_BUILD_TYPE )
66117
118+ # --- DISNEY INTERNAL --- (use custom color picker)
119+ IF (DEFINED ENV{RP_qdgui})
120+ ADD_DEFINITIONS (-DSEEXPR_USE_QDGUI )
121+ ENDIF (DEFINED ENV{RP_qdgui} )
122+
123+ IF (DEFINED ENV{RP_animlib})
124+ ADD_DEFINITIONS (-DSEEXPR_USE_ANIMLIB )
125+ ENDIF (DEFINED ENV{RP_animlib} )
126+
67127IF (CMAKE_BUILD_TYPE STREQUAL "Release" )
68128 SET (FLAVORDIR "optimize" )
69129ELSE (CMAKE_BUILD_TYPE STREQUAL "Release" )
@@ -78,25 +138,57 @@ IF (NOT DEFINED CMAKE_INSTALL_PREFIX)
78138 SET (CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR} /${VARIANT_DIRECTORY} -${FLAVORDIR} " )
79139ENDIF (NOT DEFINED CMAKE_INSTALL_PREFIX )
80140
141+ ## Install location for html documentation
142+ SET ( SEEXPR_HTML_DOC_PATH "share/doc/SeExpr" )
143+
81144## Make modules able to see seexpr library
82145# Setup environment variable to link seexpr
83- SET ( SEEXPR_LIBRARIES SeExpr )
84- SET ( SEEXPR_EDITOR_LIBRARIES SeExprEditor )
146+ SET ( SEEXPR_LIBRARIES SeExpr2 )
147+ SET ( SEEXPR_LLVM_LIBRARIES SeExpr2LLVM )
148+ SET ( SEEXPR_EDITOR_LIBRARIES SeExpr2Editor )
149+
85150# make it so seexpr can be found
86- INCLUDE_DIRECTORIES ( ${CMAKE_SOURCE_DIR} /src/SeExpr )
87- INCLUDE_DIRECTORIES ( ${CMAKE_SOURCE_DIR} /src/SeExprEditor )
88-
89- # The library directory is configured by setting CMAKE_INSTALL_LIBDIR.
90- # Otherwise, the defaults set here are used.
91- IF (EXISTS "/usr/lib64" AND NOT IS_SYMLINK "/usr/lib64" )
92- SET (CMAKE_INSTALL_LIBDIR "lib64" CACHE STRING "Library Directory Basename" )
93- ELSE ()
94- SET (CMAKE_INSTALL_LIBDIR "lib" CACHE STRING "Library Directory Basename" )
151+ INCLUDE_DIRECTORIES (BEFORE ${CMAKE_BINARY_DIR} /include )
152+ INCLUDE_DIRECTORIES (BEFORE ${CMAKE_BINARY_DIR} /src/SeExpr )
153+ INCLUDE_DIRECTORIES (BEFORE ${CMAKE_SOURCE_DIR} /src/SeExpr )
154+ INCLUDE_DIRECTORIES (BEFORE ${CMAKE_SOURCE_DIR} /src/EditorUI )
155+
156+ # Allowing to use lib64
157+ IF (NOT DEFINED CMAKE_INSTALL_LIBDIR)
158+ SET (CMAKE_INSTALL_LIBDIR "lib" )
95159ENDIF ()
96160
161+ set (LLVM_LIB "" )
162+ IF (ENABLE_LLVM_BACKEND AND LLVM_FOUND)
163+ #todo infinite loop in this?
164+ #llvm_map_components_to_libraries(REQ_LLVM_LIBRARIES jit native)
165+
166+ # construct library name
167+ execute_process (
168+ COMMAND ${LLVM_CONFIG_EXECUTABLE} --version
169+ OUTPUT_VARIABLE LLVM_VERSION
170+ OUTPUT_STRIP_TRAILING_WHITESPACE
171+ )
172+ #set(LLVM_LIB "-lLLVM-${LLVM_VERSION}")
173+ link_directories (${LLVM_LIBRARY_DIRS} )
174+ #set(LLVM_LIB ${LLVM_AVAILABLE_LIBS} -lLLVMSupport -lLLVMCodeGen -lLLVMCore) #"-lLLVMCore -lLLVMMCJIT -lLLVMExecutionEngine -lLL")
175+ set (LLVM_LIB LLVM)
176+ message (STATUS "LLVM library " ${LLVM_LIB} )
177+ message (STATUS "LLVM version " ${LLVM_VERSION} )
178+ if (LLVM_VERSION VERSION_LESS 3.8.0)
179+ set (ENABLE_LLVM_BACKEND off )
180+ set (SEEXPR_ENABLE_LLVM_BACKEND 0)
181+ message (STATUS "Not building with LLVM, version must be >= 3.8.0" )
182+ endif (LLVM_VERSION VERSION_LESS 3.8.0 )
183+ ENDIF (ENABLE_LLVM_BACKEND AND LLVM_FOUND )
184+
185+
97186## Traverse subdirectories
98187ADD_SUBDIRECTORY (src/SeExpr )
99- ADD_SUBDIRECTORY (src/SeExprEditor )
100- ADD_SUBDIRECTORY (src/doc )
101- ADD_SUBDIRECTORY (src/demos )
188+ ADD_SUBDIRECTORY (src/ui )
102189ADD_SUBDIRECTORY (src/tests )
190+ #TODO: put this back
191+ ADD_SUBDIRECTORY (src/py )
192+ ADD_SUBDIRECTORY (src/utils )
193+ ADD_SUBDIRECTORY (src/demos )
194+ ADD_SUBDIRECTORY (src/doc )
0 commit comments