Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartijn Berger <martijn.berger@gmail.com>2013-12-23 02:24:47 +0400
committerMartijn Berger <martijn.berger@gmail.com>2013-12-23 02:24:47 +0400
commit98ed7fa2db1c98bcb63293b3032b67c1c0575bb8 (patch)
treec22b21ee9796332f546ec69e2331f0b10ed417bf
parent65ab2831681befa28d3a56eb62c86fb876389d94 (diff)
More CMakeLists.txt changes
Summary: I added a function that adds all libdir/* to CMAKE_PREFIX_PATH : further there where two places where if(MSVC) else (mingq) where defined after each other. I moved those into one place. The things common to MSVC and mingw are now blow the special code as we set libdir and such things depending on compiler. Besides find_package() working and some cleanups there should be no functional changes Reviewers: dingto Reviewed By: dingto Differential Revision: http://developer.blender.org/D127
-rw-r--r--CMakeLists.txt298
1 files changed, 155 insertions, 143 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2e9de83f570..86ba59297fa 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -956,117 +956,8 @@ if(UNIX AND NOT APPLE)
elseif(WIN32)
- # this file is included anyway when building under Windows with cl.exe
- # include(${CMAKE_ROOT}/Modules/Platform/Windows-cl.cmake)
-
- if(CMAKE_COMPILER_IS_GNUCC)
- include(CheckCSourceCompiles)
- # Setup 64bit and 64bit windows systems
- CHECK_C_SOURCE_COMPILES("
- #ifndef __MINGW64__
- #error
- #endif
- int main(void) { return 0; }
- "
- WITH_MINGW64)
-
- if(WITH_MINGW64)
- message(STATUS "Compiling for 64 bit with MinGW-w64.")
- set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw64)
- else()
- message(STATUS "Compiling for 32 bit with MinGW-w32.")
- set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw32)
-
- if(WITH_RAYOPTIMIZATION)
- message(WARNING "MinGW-w32 is known to be unstable with 'WITH_RAYOPTIMIZATION' option enabled.")
- endif()
- endif()
- else()
- # Setup 64bit and 64bit windows systems
- if(CMAKE_CL_64)
- message(STATUS "64 bit compiler detected.")
- if(MSVC12)
- message(STATUS "Visual C++ 2013 detected.")
- set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/win64_vc12)
- elseif(MSVC11)
- message(STATUS "Visual C++ 2012 detected.")
- set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/win64_vc11)
- else()
- set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/win64)
- endif()
- else() # Setup 32bit windows systems
- if(MSVC12)
- message(STATUS "Visual C++ 2013 detected.")
- set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows_vc12)
- elseif(MSVC11)
- message(STATUS "Visual C++ 2012 detected.")
- set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows_vc11)
- else()
- set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows)
- endif()
- endif()
- endif()
-
add_definitions(-DWIN32)
- set(JPEG "${LIBDIR}/jpeg")
- set(JPEG_INCLUDE_DIR "${JPEG}/include")
- set(JPEG_LIBPATH ${JPEG}/lib) # not cmake defined
-
- set(WINTAB_INC ${LIBDIR}/wintab/include)
-
- if(WITH_OPENAL)
- set(OPENAL ${LIBDIR}/openal)
- set(OPENALDIR ${LIBDIR}/openal)
- find_package(OPENAL)
-
- if(NOT OPENAL_FOUND)
- message(WARNING "Setting static openAL paths")
- set(OPENAL_INCLUDE_DIR ${OPENAL}/include)
- if(MSVC11 OR MSVC12)
- set(OPENAL_LIBRARY openal32)
- else()
- set(OPENAL_LIBRARY wrap_oal)
- endif()
- set(OPENAL_LIBPATH ${OPENAL}/lib)
- endif()
- endif()
-
- if(WITH_CODEC_SNDFILE)
- set(SNDFILE ${LIBDIR}/sndfile)
- set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
- set(SNDFILE_LIBRARIES libsndfile-1)
- set(SNDFILE_LIBPATH ${SNDFILE}/lib) # TODO, deprecate
- endif()
-
- if(WITH_SDL)
- set(SDL ${LIBDIR}/sdl)
- set(SDL_INCLUDE_DIR ${SDL}/include)
- set(SDL_LIBRARY SDL)
- set(SDL_LIBPATH ${SDL}/lib)
- endif()
-
- if(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
- add_definitions(-D__SSE__ -D__MMX__)
- endif()
-
- if(WITH_CYCLES_OSL)
- set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
-
- find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
- find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
- find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
- list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} ${OSL_LIB_EXEC} ${OSL_LIB_QUERY})
- find_path(OSL_INCLUDES OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
- find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
-
- if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
- set(OSL_FOUND TRUE)
- else()
- message(STATUS "OSL not found")
- endif()
- endif()
-
if(MSVC)
set(PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid psapi)
@@ -1082,25 +973,25 @@ elseif(WIN32)
add_definitions(/D_ALLOW_KEYWORD_MACROS)
endif()
- set(CMAKE_CXX_FLAGS "/nologo /J /Gd /EHsc" CACHE STRING "MSVC MT C++ flags " FORCE)
- set(CMAKE_C_FLAGS "/nologo /J /Gd" CACHE STRING "MSVC MT C++ flags " FORCE)
+ set(CMAKE_CXX_FLAGS "/nologo /J /Gd /EHsc /MP" CACHE STRING "MSVC MT C++ flags " FORCE)
+ set(CMAKE_C_FLAGS "/nologo /J /Gd /MP" CACHE STRING "MSVC MT C++ flags " FORCE)
if(CMAKE_CL_64)
- set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /Zi" CACHE STRING "MSVC MT flags " FORCE)
+ set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /Zi /MP" CACHE STRING "MSVC MT flags " FORCE)
else()
- set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /ZI" CACHE STRING "MSVC MT flags " FORCE)
+ set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /ZI /MP" CACHE STRING "MSVC MT flags " FORCE)
endif()
- set(CMAKE_CXX_FLAGS_RELEASE "/O2 /Ob2 /MT" CACHE STRING "MSVC MT flags " FORCE)
- set(CMAKE_CXX_FLAGS_MINSIZEREL "/O1 /Ob1 /MT" CACHE STRING "MSVC MT flags " FORCE)
- set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /MT /Zi" CACHE STRING "MSVC MT flags " FORCE)
+ set(CMAKE_CXX_FLAGS_RELEASE "/O2 /Ob2 /MT /MP" CACHE STRING "MSVC MT flags " FORCE)
+ set(CMAKE_CXX_FLAGS_MINSIZEREL "/O1 /Ob1 /MT /MP" CACHE STRING "MSVC MT flags " FORCE)
+ set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /MT /Zi /MP" CACHE STRING "MSVC MT flags " FORCE)
if(CMAKE_CL_64)
- set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /Zi" CACHE STRING "MSVC MT flags " FORCE)
+ set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /Zi /MP" CACHE STRING "MSVC MT flags " FORCE)
else()
- set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /ZI" CACHE STRING "MSVC MT flags " FORCE)
+ set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /ZI /MP" CACHE STRING "MSVC MT flags " FORCE)
endif()
- set(CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /MT" CACHE STRING "MSVC MT flags " FORCE)
- set(CMAKE_C_FLAGS_MINSIZEREL "/O1 /Ob1 /MT" CACHE STRING "MSVC MT flags " FORCE)
- set(CMAKE_C_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /MT /Zi" CACHE STRING "MSVC MT flags " FORCE)
+ set(CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /MT /MP" CACHE STRING "MSVC MT flags " FORCE)
+ set(CMAKE_C_FLAGS_MINSIZEREL "/O1 /Ob1 /MT /MP" CACHE STRING "MSVC MT flags " FORCE)
+ set(CMAKE_C_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /MT /Zi /MP" CACHE STRING "MSVC MT flags " FORCE)
# most msvc warnings are C & C++
set(_WARNINGS "/W3 /wd4018 /wd4244 /wd4305 /wd4800 /wd4181 /wd4065 /wd4267 /we4013 /wd4200")
@@ -1108,6 +999,47 @@ elseif(WIN32)
set(CXX_WARNINGS "${_WARNINGS}")
unset(_WARNINGS)
+ set(PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /STACK:2097152 /INCREMENTAL:NO /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcmrt.lib /NODEFAULTLIB:msvcurt.lib /NODEFAULTLIB:msvcrtd.lib")
+
+ # MSVC only, Mingw doesnt need
+ if(CMAKE_CL_64)
+ set(PLATFORM_LINKFLAGS "/MACHINE:X64 /OPT:NOREF ${PLATFORM_LINKFLAGS}")
+ else()
+ set(PLATFORM_LINKFLAGS "/MACHINE:IX86 /LARGEADDRESSAWARE ${PLATFORM_LINKFLAGS}")
+ endif()
+
+ set(PLATFORM_LINKFLAGS_DEBUG "/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib")
+
+ if(NOT DEFINED LIBDIR)
+ # Setup 64bit and 64bit windows systems
+ if(CMAKE_CL_64)
+ message(STATUS "64 bit compiler detected.")
+ set(LIBDIR_BASE ${CMAKE_SOURCE_DIR}/../lib/win64)
+ else()
+ message(STATUS "32 bit compiler detected.")
+ set(LIBDIR_BASE ${CMAKE_SOURCE_DIR}/../lib/windows)
+ endif()
+ if(MSVC12)
+ message(STATUS "Visual C++ 2013 detected.")
+ set(LIBDIR ${LIBDIR_BASE}_vc12)
+ elseif(MSVC11)
+ message(STATUS "Visual C++ 2012 detected.")
+ set(LIBDIR ${LIBDIR_BASE}_vc11)
+ else()
+ set(LIBDIR ${LIBDIR_BASE})
+ endif()
+ else()
+ message(STATUS using LIBDIR ${LIBDIR})
+ endif()
+
+ # Add each of our libraries to our cmake_prefix_path so find_package() could work
+ FILE(GLOB children RELATIVE ${LIBDIR} ${LIBDIR}/*)
+ FOREACH(child ${children})
+ IF(IS_DIRECTORY ${LIBDIR}/${child})
+ LIST(APPEND CMAKE_PREFIX_PATH ${LIBDIR}/${child})
+ ENDIF()
+ ENDFOREACH()
+
set(ZLIB_INCLUDE_DIRS ${LIBDIR}/zlib/include)
set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/libz_st.lib)
set(ZLIB_INCLUDE_DIR ${LIBDIR}/zlib/include)
@@ -1115,20 +1047,10 @@ elseif(WIN32)
set(ZLIB_DIR ${LIBDIR}/zlib)
find_package(zlib) # we want to find before finding things that depend on it like png
- if(WITH_MOD_CLOTH_ELTOPO)
- set(LAPACK ${LIBDIR}/lapack)
- # set(LAPACK_INCLUDE_DIR ${LAPACK}/include)
- set(LAPACK_LIBPATH ${LAPACK}/lib)
- set(LAPACK_LIBRARIES
- ${LIBDIR}/lapack/lib/libf2c.lib
- ${LIBDIR}/lapack/lib/clapack_nowrap.lib
- ${LIBDIR}/lapack/lib/BLAS_nowrap.lib
- )
- endif()
- set(PNG_PNG_INCLUDE_DIR ${LIBDIR}/png/include)
find_package(png)
if(NOT PNG_FOUND)
+ set(PNG_PNG_INCLUDE_DIR ${LIBDIR}/png/include)
message(WARNING "Using HARDCODED libpng locations")
set(PNG_LIBRARIES libpng)
set(PNG "${LIBDIR}/png")
@@ -1136,7 +1058,7 @@ elseif(WIN32)
set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
endif()
- set(JPEG_LIBRARIES libjpeg)
+ find_package(jpeg REQUIRED)
set(PTHREADS_INCLUDE_DIRS ${LIBDIR}/pthreads/include)
set(PTHREADS_LIBRARIES ${LIBDIR}/pthreads/lib/pthreadVC2.lib)
@@ -1147,6 +1069,7 @@ elseif(WIN32)
${LIBDIR}/freetype/include/freetype2
)
set(FREETYPE_LIBRARY ${LIBDIR}/freetype/lib/freetype2ST.lib)
+ find_package(freetype REQUIRED)
if(WITH_FFTW3)
set(FFTW3 ${LIBDIR}/fftw3)
@@ -1230,9 +1153,14 @@ elseif(WIN32)
endif()
if(WITH_IMAGE_TIFF)
+ # Try to find tiff first then complain and set static and maybe wrong paths
+ find_package(TIFF)
+ if(NOT TIFF_FOUND)
+ message(WARNING "Using HARDCODED libtiff locations")
set(TIFF_LIBRARY ${LIBDIR}/tiff/lib/libtiff.lib)
set(TIFF_INCLUDE_DIR ${LIBDIR}/tiff/include)
endif()
+ endif()
if(WITH_JACK)
set(JACK_INCLUDE_DIRS
@@ -1305,6 +1233,7 @@ elseif(WIN32)
endif()
if(WITH_OPENIMAGEIO)
+ find_package(OpenImageIO)
set(OPENIMAGEIO ${LIBDIR}/openimageio)
set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
set(OPENIMAGEIO_LIBRARIES optimized OpenImageIO debug OpenImageIO_d)
@@ -1324,23 +1253,46 @@ elseif(WIN32)
set(OPENCOLORIO_LIBPATH ${LIBDIR}/opencolorio/lib)
set(OPENCOLORIO_DEFINITIONS)
endif()
+
- set(PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /STACK:2097152 /INCREMENTAL:NO /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcmrt.lib /NODEFAULTLIB:msvcurt.lib /NODEFAULTLIB:msvcrtd.lib")
-
- # MSVC only, Mingw doesnt need
- if(CMAKE_CL_64)
- set(PLATFORM_LINKFLAGS "/MACHINE:X64 /OPT:NOREF ${PLATFORM_LINKFLAGS}")
- else()
- set(PLATFORM_LINKFLAGS "/MACHINE:IX86 /LARGEADDRESSAWARE ${PLATFORM_LINKFLAGS}")
+ if(WITH_MOD_CLOTH_ELTOPO)
+ set(LAPACK ${LIBDIR}/lapack)
+ # set(LAPACK_INCLUDE_DIR ${LAPACK}/include)
+ set(LAPACK_LIBPATH ${LAPACK}/lib)
+ set(LAPACK_LIBRARIES
+ ${LIBDIR}/lapack/lib/libf2c.lib
+ ${LIBDIR}/lapack/lib/clapack_nowrap.lib
+ ${LIBDIR}/lapack/lib/BLAS_nowrap.lib
+ )
endif()
- set(PLATFORM_LINKFLAGS_DEBUG "/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib")
-
# used in many places so include globally, like OpenGL
blender_include_dirs_sys("${PTHREADS_INCLUDE_DIRS}")
elseif(CMAKE_COMPILER_IS_GNUCC)
- # keep GCC specific stuff here
+ # keep GCC specific stuff here
+ include(CheckCSourceCompiles)
+ # Setup 64bit and 64bit windows systems
+ CHECK_C_SOURCE_COMPILES("
+ #ifndef __MINGW64__
+ #error
+ #endif
+ int main(void) { return 0; }
+ "
+ WITH_MINGW64)
+
+ if(WITH_MINGW64)
+ message(STATUS "Compiling for 64 bit with MinGW-w64.")
+ set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw64)
+ else()
+ message(STATUS "Compiling for 32 bit with MinGW-w32.")
+ set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw32)
+
+ if(WITH_RAYOPTIMIZATION)
+ message(WARNING "MinGW-w32 is known to be unstable with 'WITH_RAYOPTIMIZATION' option enabled.")
+ endif()
+ endif()
+
set(PLATFORM_LINKLIBS "-lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid -lwsock32 -lpsapi")
set(PLATFORM_CFLAGS "-pipe -funsigned-char -fno-strict-aliasing")
@@ -1373,6 +1325,10 @@ elseif(WIN32)
set(ZLIB_LIBPATH ${ZLIB}/lib)
set(ZLIB_LIBRARIES z)
+ set(JPEG "${LIBDIR}/jpeg")
+ set(JPEG_INCLUDE_DIR "${JPEG}/include")
+ set(JPEG_LIBPATH ${JPEG}/lib) # not cmake defined
+
# comes with own pthread library
if(NOT WITH_MINGW64)
set(PTHREADS ${LIBDIR}/pthreads)
@@ -1535,6 +1491,62 @@ elseif(WIN32)
# set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-libgcc -static-libstdc++")
endif()
+
+ # Things common to both mingw and MSVC should go here
+
+ set(WINTAB_INC ${LIBDIR}/wintab/include)
+
+ if(WITH_OPENAL)
+ set(OPENAL ${LIBDIR}/openal)
+ set(OPENALDIR ${LIBDIR}/openal)
+ find_package(OPENAL)
+
+ if(NOT OPENAL_FOUND)
+ message(WARNING "Setting static openAL paths")
+ set(OPENAL_INCLUDE_DIR ${OPENAL}/include)
+ if(MSVC11 OR MSVC12)
+ set(OPENAL_LIBRARY openal32)
+ else()
+ set(OPENAL_LIBRARY wrap_oal)
+ endif()
+ set(OPENAL_LIBPATH ${OPENAL}/lib)
+ endif()
+ endif()
+
+ if(WITH_CODEC_SNDFILE)
+ set(SNDFILE ${LIBDIR}/sndfile)
+ set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
+ set(SNDFILE_LIBRARIES libsndfile-1)
+ set(SNDFILE_LIBPATH ${SNDFILE}/lib) # TODO, deprecate
+ endif()
+
+ if(WITH_SDL)
+ set(SDL ${LIBDIR}/sdl)
+ set(SDL_INCLUDE_DIR ${SDL}/include)
+ set(SDL_LIBRARY SDL)
+ set(SDL_LIBPATH ${SDL}/lib)
+ endif()
+
+ if(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
+ add_definitions(-D__SSE__ -D__MMX__)
+ endif()
+
+ if(WITH_CYCLES_OSL)
+ set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
+
+ find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
+ find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
+ find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
+ list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} ${OSL_LIB_EXEC} ${OSL_LIB_QUERY})
+ find_path(OSL_INCLUDES OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
+ find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
+
+ if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
+ set(OSL_FOUND TRUE)
+ else()
+ message(STATUS "OSL not found")
+ endif()
+ endif()
elseif(APPLE)