Allow to cross compile for Windows with Linux/Mingw (part 3 of 3, cmake) (#1150)

* #mingw #cmake: rules for native and cross compilation

* #mingw #cmake: fix CMakeLists.txt for using with MinGW under Windows

* #mingw #cmake: fix typo (BUILD_ENV_WIN -> BUILD_ENV_MSVC)
This commit is contained in:
Ivan Mahonin 2017-05-26 13:00:05 +07:00 committed by shun-iwasawa
parent 14f0fd28bb
commit 429ee8c8e4
16 changed files with 262 additions and 129 deletions

View file

@ -1,24 +1,24 @@
project(lzotools)
if (WIN32)
if(MSVC)
# use pre-built 2.03
get_filename_component(LZO_PATH ${SDKROOT}/lzo/2.03 ABSOLUTE)
link_directories(${LZO_PATH}/LZO_lib/)
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
set(PREFIX _64)
endif (CMAKE_SIZEOF_VOID_P EQUAL 8)
else ()
else()
set(LZO_PATH ${LZO_INCLUDE_DIR})
endif ()
endif()
include_directories(${LZO_PATH} ${LZO_PATH}/include)
add_definitions(-DLZO_USE_ASM)
add_executable(lzocompress lzocompress.c)
add_executable(lzodecompress lzodecompress.c)
if (WIN32)
if(MSVC)
target_link_libraries(lzocompress lzo2${PREFIX} ${LZO_LIBRARY})
target_link_libraries(lzodecompress lzo2${PREFIX} ${LZO_LIBRARY})
else ()
else()
target_link_libraries(lzocompress ${LZO_LIBRARY})
target_link_libraries(lzodecompress ${LZO_LIBRARY})
endif()

View file

@ -11,6 +11,55 @@ project(OpenToonz)
# list of var-names
set(_init_vars)
#-----------------------------------------------------------------------------
# Select build target
set(BUILD_TARGET_WIN OFF)
set(BUILD_TARGET_APPLE OFF)
set(BUILD_TARGET_UNIX OFF)
if(WIN32)
set(BUILD_TARGET_WIN ON)
message(STATUS "Target system is WIN")
elseif(APPLE)
set(BUILD_TARGET_APPLE ON)
message(STATUS "Target system is APPLE")
elseif(UNIX)
set(BUILD_TARGET_UNIX ON)
message(STATUS "Target system is UNIX")
else()
set(BUILD_TARGET_UNIX ON)
message(WARNING "Target system unknown, set UNIX by default")
message(STATUS "Target system is UNIX (actually unknown)")
endif()
#-----------------------------------------------------------------------------
# Select build environment
set(BUILD_ENV_MSVC OFF)
set(BUILD_ENV_APPLE OFF)
set(BUILD_ENV_UNIXLIKE OFF)
if(MSVC)
set(BUILD_ENV_MSVC ON)
if(NOT BUILD_TARGET_WIN)
message(WARNING "Build environment is MSVC, but target system is not WIN")
endif()
message(STATUS "Build environment is MSVC")
elseif(CMAKE_HOST_APPLE)
set(BUILD_ENV_APPLE ON)
if(NOT BUILD_TARGET_APPLE)
message(WARNING "Build environment is APPLE, but target system is not APPLE")
endif()
message(STATUS "Build environment is APPLE")
elseif(CMAKE_HOST_UNIX OR CMAKE_COMPILER_IS_GNUCC)
set(BUILD_ENV_UNIXLIKE ON)
if(NOT BUILD_TARGET_UNIX AND NOT BUILD_TARGET_WIN)
message(WARNING "Build environment is UNIXLIKE, but target system is not UNIX or WIN")
endif()
message(STATUS "Build environment is UNIXLIKE")
else()
message(ERROR "Unsupported build environment, only MSVC, APPLE and UNIXLIKE are supported")
endif()
# initialize to ON
macro(option_defaults_init)
foreach(_var ${ARGV})
@ -35,13 +84,13 @@ option_defaults_init(
)
# customize...
if(WIN32)
if(BUILD_ENV_MSVC)
set(_init_SYSTEM_LZO OFF)
set(_init_SYSTEM_SUPERLU OFF)
elseif(APPLE)
elseif(BUILD_ENV_APPLE)
set(_init_SYSTEM_LZO OFF)
set(_init_SYSTEM_SUPERLU OFF)
elseif(UNIX)
elseif(BUILD_ENV_UNIXLIKE)
set(_init_SYSTEM_LZO ON)
set(_init_SYSTEM_SUPERLU ON)
endif()
@ -67,17 +116,15 @@ include(${CMAKE_SOURCE_DIR}/../cmake/util_compiler.cmake)
get_filename_component(SDKROOT ../../thirdparty/ ABSOLUTE)
message(STATUS "SDK Root:" ${SDKROOT})
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../cmake")
if(APPLE)
if(BUILD_ENV_APPLE)
set(THIRDPARTY_LIBS_HINTS "/usr/local/Cellar/" "/opt/include" ${SDKROOT})
elseif(WIN32 OR UNIX)
elseif(BUILD_ENV_MSVC OR BUILD_ENV_UNIXLIKE)
set(THIRDPARTY_LIBS_HINTS ${SDKROOT})
endif()
message(STATUS "Thirdpary Library Search path:" ${THIRDPARTY_LIBS_HINTS})
if(WIN32)
message(STATUS "Windows System")
if(BUILD_ENV_MSVC)
if(MSVC_VERSION GREATER 1800)
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
set(QT_PATH "C:/Qt/5.6/msvc2015" CACHE PATH "Qt instlattion directory")
@ -104,9 +151,7 @@ if(WIN32)
-DNOMINMAX
-D_USE_MATH_DEFINES
)
elseif(APPLE)
message(STATUS "Apple System")
elseif(BUILD_ENV_APPLE)
if(NOT PLATFORM)
set(PLATFORM 64)
endif()
@ -139,9 +184,7 @@ elseif(APPLE)
else()
message(FATAL_ERROR "Invalid PLATFORM:" ${PLATFORM} ". 'PLATFORM' must be 32 or 64.")
endif()
elseif(UNIX)
message(STATUS "Unix System")
elseif(BUILD_ENV_UNIXLIKE)
# Needed for correct Qt detection
cmake_minimum_required(VERSION 2.8.12)
@ -152,7 +195,7 @@ elseif(UNIX)
endif()
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
add_definitions(-DLINUX)
else()
elseif(NOT BUILD_TARGET_WIN)
message(WARNING "Support for generic Unix (Not Apple or Linux) isn't yet working!")
endif()
@ -161,8 +204,6 @@ elseif(UNIX)
find_package(Qt5Widgets)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -lstdc++ -std=c++11")
else()
message(ERROR "Unknown System")
endif()
add_definitions(
@ -175,7 +216,7 @@ add_definitions(
# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)
if(APPLE)
if(BUILD_ENV_APPLE)
set(CMAKE_MACOSX_RPATH ON)
set(CMAKE_SKIP_BUILD_RPATH FALSE)
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
@ -213,7 +254,7 @@ if(Qt5Core_VERSION VERSION_LESS QT_MINIMUM_VERSION)
endif()
unset(QT_MINIMUM_VERSION)
if(WIN32)
if(BUILD_ENV_MSVC)
include_directories(
SYSTEM
${SDKROOT}/glut/3.7.6/include
@ -234,7 +275,7 @@ macro(_find_toonz_library OUT_LIB_LIST IN_LIB_LIST)
foreach(arg ${IN_LIB_LIST})
unset(COREPATH CACHE)
# find cmake
if(APPLE)
if(BUILD_ENV_APPLE)
set(LIBPATH ${CMAKE_CURRENT_BINARY_DIR}/../${arg}/lib${arg}${CMAKE_SHARED_LIBRARY_SUFFIX})
else()
set(LIBPATH ${arg})
@ -247,7 +288,9 @@ endmacro()
set(TNZSTDFX_Location)
set(TFARM_Location)
if(WIN32)
set(QT_LIB) # avoid warning
if(BUILD_ENV_MSVC)
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
set(PLATFORM 32)
set(PLATFORM2)
@ -286,7 +329,7 @@ if(WIN32)
if(PLATFORM EQUAL 32)
set(QT_LIB ${SDKROOT}/quicktime/QT73SDK/Libraries/QTMLClient.lib)
endif()
elseif(APPLE)
elseif(BUILD_ENV_APPLE)
find_library(GLUT_LIB GLUT)
find_library(GL_LIB OpenGL)
find_library(Z_LIB z)
@ -333,10 +376,19 @@ elseif(APPLE)
find_package(LZO REQUIRED)
message("LZO:" ${LZO_INCLUDE_DIR})
elseif(UNIX)
find_library(GL_LIB GL)
find_library(GLU_LIB GLU)
find_library(GLUT_LIB glut)
elseif(BUILD_ENV_UNIXLIKE)
if(BUILD_TARGET_WIN)
if(PLATFORM EQUAL 32)
set(QT_LIB ${SDKROOT}/quicktime/QT73SDK/Libraries/QTMLClient.lib)
endif()
find_library(GL_LIB opengl32)
find_library(GLU_LIB glu32)
find_library(GLUT_LIB NAMES glut freeglut)
else()
find_library(GL_LIB GL)
find_library(GLU_LIB GLU)
find_library(GLUT_LIB glut)
endif()
find_library(Z_LIB z)
find_package(TIFF REQUIRED)
@ -371,8 +423,6 @@ elseif(UNIX)
add_definitions(-DLZ4_STATIC)
endif()
pkg_check_modules(USB_LIB REQUIRED libusb-1.0)
# TODO: check for them properly in some sane order with pkg-config
find_library(OPENBLAS_LIB NAMES cblas gslcblas openblas blas)
message("OpenBLAS:" ${OPENBLAS_LIB})
@ -383,8 +433,11 @@ elseif(UNIX)
find_package(LZO REQUIRED)
message("LZO:" ${LZO_INCLUDE_DIR})
pkg_check_modules(FREETYPE REQUIRED freetype2)
pkg_check_modules(SDL_LIB REQUIRED sdl2)
if(NOT BUILD_TARGET_WIN)
pkg_check_modules(USB_LIB REQUIRED libusb-1.0)
pkg_check_modules(FREETYPE REQUIRED freetype2)
pkg_check_modules(SDL_LIB REQUIRED sdl2)
endif()
endif()
@ -419,7 +472,7 @@ include_directories(
${PNG_INCLUDE_DIRS}
)
if(WIN32 OR APPLE)
if(BUILD_ENV_MSVC OR BUILD_ENV_APPLE)
find_path(
BOOST_ROOT
include/boost
@ -450,17 +503,17 @@ include_directories(
${JPEG_INCLUDE_DIR}
)
if(WIN32 AND PLATFORM EQUAL 64)
if(BUILD_TARGET_WIN AND PLATFORM EQUAL 64)
add_definitions(-Dx64)
endif()
if(WIN32)
if(BUILD_ENV_MSVC)
# place Toonz.exe and dlls in the same directory
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
elseif(APPLE)
elseif(BUILD_ENV_APPLE)
# pass
elseif(UNIX)
elseif(BUILD_ENV_UNIXLIKE)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
# Mirror relative bin/lib location for installation
@ -474,7 +527,7 @@ elseif(UNIX)
endif()
endif()
if(MSVC AND MSVC_VERSION EQUAL 1800)
if(BUILD_ENV_MSVC AND MSVC_VERSION EQUAL 1800)
# Visual C++ 2013 cannot handle UTF-8 without BOM
# Non-ascii characters in comments would not be a problem
add_compile_options("/wd4819")
@ -524,15 +577,15 @@ add_subdirectory(tcomposer)
add_subdirectory(tconverter)
add_subdirectory(toonzfarm)
if(APPLE)
if(BUILD_ENV_APPLE)
add_subdirectory(mousedragfilter)
endif()
if((PLATFORM EQUAL 32) AND (WIN32 OR APPLE))
if((PLATFORM EQUAL 32) AND (BUILD_TARGET_WIN OR BUILD_TARGET_APPLE))
add_subdirectory(t32bitsrv)
endif()
if(APPLE)
if(BUILD_ENV_APPLE)
add_custom_command(TARGET executable
POST_BUILD COMMAND
${CMAKE_INSTALL_NAME_TOOL} -add_rpath ${CMAKE_INSTALL_RPATH}

View file

@ -25,7 +25,7 @@ add_definitions(
-DUSE_MESA
)
if(APPLE)
if(BUILD_ENV_APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-install_name,@rpath/libcolorfx.dylib")
endif()

View file

@ -60,7 +60,7 @@ set(SOURCES
mesh/tiio_mesh.cpp
)
if(WIN32)
if(BUILD_TARGET_WIN)
set(HEADERS ${HEADERS}
avi/tiio_avi.h
mov/tiio_mov.h
@ -71,7 +71,7 @@ if(WIN32)
mov/tiio_movW.cpp
3gp/tiio_3gpW.cpp
)
elseif(APPLE)
elseif(BUILD_TARGET_APPLE)
set(HEADERS ${HEADERS}
mov/tiio_movM.h
3gp/tiio_3gpM.h
@ -80,7 +80,7 @@ elseif(APPLE)
mov/tiio_movM.cpp
3gp/tiio_3gpM.cpp
)
elseif(UNIX)
elseif(BUILD_TARGET_UNIX)
set(HEADERS ${HEADERS}
3gp/tiio_3gp_proxy.h
mov/tiio_mov_proxy.h
@ -98,7 +98,7 @@ add_definitions(
-DIMAGE_EXPORTS
)
if(APPLE)
if(BUILD_ENV_APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-install_name,@rpath/libimage.dylib")
endif()
@ -111,29 +111,29 @@ include_directories(
${SDKROOT}/LibJPEG/jpeg-9
)
if(WIN32)
if(BUILD_ENV_MSVC)
include_directories(
SYSTEM
${SDKROOT}/libpng-1.6.21
)
if(PLATFORM EQUAL 32)
include_directories(
SYSTEM
${SDKROOT}/quicktime/QT73SDK/CIncludes
)
endif()
endif()
if(BUILD_TARGET_WIN AND PLATFORM EQUAL 32)
include_directories(
SYSTEM
${SDKROOT}/quicktime/QT73SDK/CIncludes
)
endif()
_find_toonz_library(TNZLIBS "tnzcore;tnzbase;toonzlib")
if(WIN32)
if(BUILD_ENV_MSVC)
set(EXTRA_LIBS
${TNZLIBS}
vfw32.lib
)
elseif(APPLE)
elseif(BUILD_ENV_APPLE)
if(PLATFORM EQUAL 32)
find_library(CORE_SERVICES_LIB CoreServices)
set(OSX_10_6_SDK_PATH "")
@ -153,11 +153,15 @@ elseif(APPLE)
${CORE_SERVICES_LIB}
${QD_LIB}
)
else()
elseif(BUILD_ENV_UNIXLIKE)
# Generic Unix
set(EXTRA_LIBS
${TNZLIBS}
)
if(BUILD_TARGET_WIN)
set(EXTRA_LIBS ${EXTRA_LIBS} -lvfw32)
endif()
endif()
target_link_libraries(image Qt5::Core Qt5::Gui Qt5::Network ${Z_LIB} ${GLUT_LIB} ${GL_LIB} ${JPEG_LIB} ${TIFF_LIB} ${PNG_LIB} ${EXTRA_LIBS})

View file

@ -1,4 +1,4 @@
if(APPLE)
if(BUILD_ENV_APPLE)
cmake_minimum_required(VERSION 2.8.11)
project(MouseDragFilter)

View file

@ -21,7 +21,7 @@ add_definitions(
-DSOUND_EXPORTS
)
if(APPLE)
if(BUILD_ENV_APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-install_name,@rpath/libsound.dylib")
endif()

View file

@ -261,7 +261,7 @@ add_definitions(
-DTNZSTDFX_EXPORTS
)
if(APPLE)
if(BUILD_ENV_APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-install_name,@rpath/libtnzstdfx.dylib")
endif()
@ -286,7 +286,7 @@ include_directories(
_find_toonz_library(TNZLIBS "tnzcore;tnzbase;toonzlib")
if(APPLE)
if(BUILD_ENV_APPLE)
# macports 使 symbol /opt/lib
find_library(ICONV_LIB iconv HINTS /usr/lib)
if(ICONV_LIB-NOTFOUND)

View file

@ -8,7 +8,7 @@ add_executable(t32bitsrv
t32movmsg.h
)
if(WIN32)
if(BUILD_TARGET_WIN)
include_directories(
SYSTEM
${SDKROOT}/quicktime/QT73SDK/CIncludes
@ -22,7 +22,7 @@ target_link_libraries(t32bitsrv
image
)
if(APPLE AND PLATFORM EQUAL 32)
if(BUILD_ENV_APPLE AND PLATFORM EQUAL 32)
get_target_property(bin t32bitsrv LOCATION)
get_filename_component(bindir ${bin} DIRECTORY)

View file

@ -114,7 +114,7 @@ set(SOURCES
tscanner/tscannerepson.cpp
)
if(WIN32)
if(BUILD_TARGET_WIN)
set(SOURCES ${SOURCES}
tscanner/TScannerIO/TUSBScannerIO_W.cpp
)
@ -135,19 +135,19 @@ set(OBJCSOURCES
tscanner/tscannertwain.cpp
)
if(WIN32)
if(BUILD_TARGET_WIN)
set(OBJCSOURCES ${OBJCSOURCES}
../common/twain/ttwain_stateW.c
../common/twain/ttwain_utilW.c
../common/twain/ttwain_winW.c
)
elseif(APPLE)
elseif(BUILD_TARGET_APPLE)
set(OBJCSOURCES ${OBJCSOURCES}
../common/twain/ttwain_stateM.c
../common/twain/ttwain_utilM.c
../common/twain/ttwain_winM.c
)
elseif(UNIX)
elseif(BUILD_TARGET_UNIX)
set(OBJCSOURCES ${OBJCSOURCES}
../common/twain/ttwain_stateX.c
../common/twain/ttwain_utilX.c
@ -155,7 +155,7 @@ elseif(UNIX)
)
endif()
if(APPLE)
if(BUILD_ENV_APPLE)
#set_source_files_properties(${OBJCSOURCES} PROPERTIES LANGUAGE OBJCXX)
set_source_files_properties(${OBJCSOURCES} PROPERTIES COMPILE_FLAGS "-x objective-c++")
endif()
@ -164,7 +164,7 @@ qt5_wrap_cpp(SOURCES ${MOC_HEADERS})
add_library(tnzbase SHARED ${HEADERS} ${SOURCES} ${OBJCSOURCES})
if(APPLE)
if(BUILD_ENV_APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-install_name,@rpath/libtnzbase.dylib")
endif()
@ -189,11 +189,11 @@ include_directories(
${SDKROOT}/libusb/libusb-1.0.9/include
)
if(WIN32)
if(BUILD_ENV_MSVC)
set(EXTRA_LIBS
tnzcore
)
elseif(APPLE)
elseif(BUILD_ENV_APPLE)
find_library(TWAIN_LIB TWAIN)
find_library(IOKIT_LIB IOKit)
find_library(COCOA_LIB Cocoa)
@ -205,16 +205,17 @@ elseif(APPLE)
${IOKIT_LIB}
${COCOA_LIB}
)
elseif(UNIX)
elseif(BUILD_ENV_UNIXLIKE)
_find_toonz_library(EXTRA_LIBS "tnzcore")
set(EXTRA_LIBS ${EXTRA_LIBS}
${SDL_LIB_LIBRARIES}
)
include_directories(
SYSTEM
${SDL_LIB_INCLUDE_DIRS}
)
if(NOT BUILD_TARGET_WIN)
set(EXTRA_LIBS ${EXTRA_LIBS}
${SDL_LIB_LIBRARIES}
)
include_directories(
SYSTEM
${SDL_LIB_INCLUDE_DIRS}
)
endif()
endif()
target_link_libraries(tnzbase Qt5::Core Qt5::Gui ${EXTRA_LIBS})

View file

@ -245,17 +245,17 @@ set(SOURCES
../common/tmsgcore.cpp
)
if(WIN32)
if(BUILD_TARGET_WIN)
set(SOURCES ${SOURCES}
../common/tsound/tsound_nt.cpp
../common/tvrender/tfont_nt.cpp
)
elseif(APPLE)
elseif(BUILD_TARGET_APPLE)
set(SOURCES ${SOURCES}
../common/tsound/tsound_mac.cpp
../common/tvrender/tfont_mac.cpp
)
elseif(UNIX)
elseif(BUILD_TARGET_UNIX)
set(SOURCES ${SOURCES}
../common/tvrender/tfont_qt.cpp
)
@ -276,7 +276,7 @@ qt5_wrap_cpp(SOURCES ${MOC_HEADERS})
add_library(tnzcore SHARED ${HEADERS} ${SOURCES})
if(APPLE)
if(BUILD_ENV_APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-install_name,@rpath/libtnzcore.dylib")
endif()
@ -306,7 +306,8 @@ include_directories(
../common/flash
${SDKROOT}/Lz4/Lz4_131/lib/
)
if(WIN32)
if(BUILD_TARGET_WIN)
if(PLATFORM EQUAL 32)
include_directories(
SYSTEM
@ -315,7 +316,8 @@ if(WIN32)
endif()
endif()
if(WIN32)
if(BUILD_ENV_MSVC)
set(EXTRA_LIBS
netapi32.lib
mpr.lib
@ -323,7 +325,7 @@ if(WIN32)
opengl32.lib
glu32.lib
)
elseif(APPLE)
elseif(BUILD_ENV_APPLE)
find_library(AUDIOUNIT_LIB AudioUnit)
find_library(AUDIOTB_LIB AudioToolbox)
find_library(CARBON_LIB Carbon)
@ -333,15 +335,25 @@ elseif(APPLE)
${AUDIOTB_LIB}
${CARBON_LIB}
)
elseif(UNIX)
set(QT_LIB) # avoid warning
include_directories(
SYSTEM
${FREETYPE_INCLUDE_DIRS}
)
elseif(BUILD_ENV_UNIXLIKE)
if(NOT BUILD_TARGET_WIN)
include_directories(
SYSTEM
${FREETYPE_INCLUDE_DIRS}
)
endif()
set(EXTRA_LIBS
${GLU_LIB}
)
if(BUILD_TARGET_WIN)
set(EXTRA_LIBS
${EXTRA_LIBS}
-lnetapi32
-lmpr
-lwinmm
-lpsapi
)
endif()
endif()
target_link_libraries(tnzcore

View file

@ -72,14 +72,14 @@ set(SOURCES
set(OBJCSOURCES
)
if(WIN32 AND PLATFORM EQUAL 32)
if(BUILD_ENV_MSVC AND PLATFORM EQUAL 32)
# can not link libopenblas_32.lib with SAFESEH
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO")
endif()
add_library(tnzext SHARED ${HEADERS} ${SOURCES} ${OBJCSOURCES})
if(APPLE)
if(BUILD_ENV_APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-install_name,@rpath/libtnzext.dylib")
endif()
@ -90,11 +90,11 @@ add_definitions(
message("subdir: tnzext")
message("Bin: " ${CMAKE_CURRENT_BINARY_DIR})
if(APPLE)
if(BUILD_ENV_APPLE)
find_library(ACCE_LIB Accelerate)
endif()
if(WIN32 OR APPLE)
if(BUILD_ENV_MSVC OR BUILD_ENV_APPLE)
# Warning, this looks wrong,
# should _only_ use SUPERLU_INCLUDE_DIR, for now do this with Linux.
include_directories(
@ -108,13 +108,13 @@ else()
)
endif()
if(WIN32)
if(BUILD_ENV_MSVC)
target_link_libraries(tnzext
Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Network
${GLUT_LIB} ${GL_LIB} ${SUPERLU_LIB} ${OPENBLAS_LIB} ${EXTRA_LIBS}
tnzcore tnzbase
)
elseif(APPLE)
elseif(BUILD_ENV_APPLE)
set(EXTRA_LIBS
${CMAKE_CURRENT_BINARY_DIR}/../tnzcore/libtnzcore.dylib
${CMAKE_CURRENT_BINARY_DIR}/../tnzbase/libtnzbase.dylib
@ -124,13 +124,11 @@ elseif(APPLE)
Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Network
${ACCE_LIB} ${GLUT_LIB} ${GL_LIB} ${SUPERLU_LIB} ${EXTRA_LIBS}
)
elseif(UNIX)
elseif(BUILD_ENV_UNIXLIKE)
_find_toonz_library(EXTRA_LIBS "tnzcore;tnzbase")
set(EXTRA_LIBS ${EXTRA_LIBS} ${OPENBLAS_LIB})
target_link_libraries(tnzext
Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Network
${GLUT_LIB} ${GL_LIB} ${SUPERLU_LIB} ${EXTRA_LIBS}
${GLUT_LIB} ${GL_LIB} ${SUPERLU_LIB} ${OPENBLAS_LIB} ${EXTRA_LIBS}
)
endif()

View file

@ -107,7 +107,7 @@ add_definitions(
-DTNZTOOLS_EXPORTS
)
if(APPLE)
if(BUILD_ENV_APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-install_name,@rpath/libtnztools.dylib")
endif()

View file

@ -320,20 +320,20 @@ set(OBJCSOURCES filebrowsermodel.cpp)
# Resource file(s)
set(RESOURCES toonz.qrc)
if(WIN32)
if(BUILD_ENV_MSVC)
set(RC_FILE toonz.rc)
endif()
qt5_add_resources(SOURCES ${RESOURCES})
if(APPLE)
if(BUILD_ENV_APPLE)
#set_source_files_properties(${OBJCSOURCES} PROPERTIES LANGUAGE OBJCXX)
set_source_files_properties(${OBJCSOURCES} PROPERTIES COMPILE_FLAGS "-x objective-c++")
endif()
qt5_wrap_cpp(SOURCES ${MOC_HEADERS})
if(WIN32)
if(BUILD_ENV_MSVC)
add_executable(OpenToonz_${VERSION} WIN32 ${HEADERS} ${SOURCES} ${OBJCSOURCES} ${RESOURCES} ${RC_FILE})
else()
set(MACOSX_BUNDLE_ICON_FILE "OpenToonz.icns")
@ -349,7 +349,7 @@ else()
#)
endif()
if(WIN32)
if(BUILD_TARGET_WIN)
add_definitions(
-DUNICODE
-D_UNICODE
@ -367,13 +367,13 @@ include_directories(
../../sources/toonzqt
)
if(APPLE)
if(BUILD_ENV_APPLE)
include_directories(../../sources/mousedragfilter)
endif()
if(WIN32)
if(BUILD_TARGET_WIN)
if(PLATFORM EQUAL 32)
include_directories(
SYSTEM
@ -382,14 +382,14 @@ if(WIN32)
endif()
endif()
if(WIN32)
if(BUILD_ENV_MSVC)
target_link_libraries(OpenToonz_${VERSION}
Qt5::WinMain Qt5::Core Qt5::Gui Qt5::Network Qt5::OpenGL Qt5::Svg Qt5::Xml
Qt5::Script Qt5::Widgets Qt5::PrintSupport Qt5::Multimedia
${GL_LIB} ${GLUT_LIB} strmiids
tnzcore tnzbase toonzlib colorfx tnzext image sound toonzqt tnztools tnzstdfx tfarm
)
elseif(APPLE)
elseif(BUILD_ENV_APPLE)
find_library(COCOA_LIB Cocoa)
_find_toonz_library(EXTRA_LIBS "tnzcore;tnzbase;toonzlib;colorfx;tnzext;image;sound;toonzqt;tnztools")
@ -405,7 +405,7 @@ elseif(APPLE)
${COCOA_LIB} ${EXTRA_LIBS} mousedragfilter
)
elseif(UNIX)
elseif(BUILD_ENV_UNIXLIKE)
_find_toonz_library(EXTRA_LIBS "tnzcore;tnzbase;toonzlib;colorfx;tnzext;image;sound;toonzqt;tnztools")
#
@ -413,6 +413,10 @@ elseif(UNIX)
set(EXTRA_LIBS ${EXTRA_LIBS} ${Boost_LIBRARIES} ${OPENBLAS_LIB})
if(BUILD_TARGET_WIN)
set(EXTRA_LIBS ${EXTRA_LIBS} Qt5::WinMain -lstrmiids)
endif()
target_link_libraries(
OpenToonz_${VERSION} Qt5::Core Qt5::Gui Qt5::Network Qt5::OpenGL Qt5::Svg Qt5::Xml
Qt5::Script Qt5::Widgets Qt5::PrintSupport Qt5::Multimedia
@ -421,7 +425,7 @@ elseif(UNIX)
)
endif()
if(APPLE)
if(BUILD_ENV_APPLE)
# CMAKE_RUNTIME_OUTPUT_DIRECTORY should be equivalent to usage on windows despite empty
# OSX CMAKE_RUNTIME_OUTPUT_DIRECTORY Windows 使
get_target_property(bin OpenToonz_${VERSION} LOCATION)
@ -434,7 +438,7 @@ if(LZODRIVER_FOUND)
add_custom_command(TARGET OpenToonz_${VERSION} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:lzodecompress> ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} DEPENDS lzodecompress)
endif()
if(APPLE)
if(BUILD_ENV_APPLE)
get_target_property(loc OpenToonz_${VERSION} MACOSX_BUNDLE_NAME)
message(" ==> App Bundle: " ${loc})
message(" ==> Mach-o: " ${bin})
@ -456,7 +460,55 @@ if(APPLE)
add_custom_command(TARGET OpenToonz_${VERSION} POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/OpenToonz_${VERSION}.app/Contents/Resources)
add_custom_command(TARGET OpenToonz_${VERSION} POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/qss)
add_custom_command(TARGET OpenToonz_${VERSION} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../install/SystemVar.ini ${CMAKE_CURRENT_BINARY_DIR}/OpenToonz_${VERSION}.app/Contents/Resources)
elseif(UNIX)
elseif(BUILD_ENV_UNIXLIKE AND BUILD_TARGET_WIN)
# Setup files on Windows platform while cross compilation.
install(
TARGETS
OpenToonz_${VERSION}
DESTINATION bin
)
install(
PROGRAMS
"$<TARGET_FILE:tcleanup>"
"$<TARGET_FILE:tcomposer>"
"$<TARGET_FILE:tconverter>"
"$<TARGET_FILE:tfarmcontroller>"
"$<TARGET_FILE:tfarmserver>"
DESTINATION bin
)
if(LZODRIVER_FOUND)
install(
PROGRAMS
"$<TARGET_FILE:lzocompress>"
"$<TARGET_FILE:lzodecompress>"
DESTINATION bin
)
endif()
install(
FILES
"$<TARGET_FILE:tnzcore>"
"$<TARGET_FILE:tnzbase>"
"$<TARGET_FILE:toonzlib>"
"$<TARGET_FILE:colorfx>"
"$<TARGET_FILE:tnzext>"
"$<TARGET_FILE:image>"
"$<TARGET_FILE:sound>"
"$<TARGET_FILE:toonzqt>"
"$<TARGET_FILE:tnztools>"
"$<TARGET_FILE:tnzstdfx>"
"$<TARGET_FILE:tfarm>"
DESTINATION bin
)
install(
DIRECTORY
${CMAKE_SOURCE_DIR}/../../stuff
DESTINATION share/opentoonz
)
elseif(BUILD_ENV_UNIXLIKE AND NOT BUILD_TARGET_WIN)
# Setup files on Linux/Unix platform.
# not essential since the binary can run in-place,
# but useful for package managers.

View file

@ -27,7 +27,7 @@ add_definitions(
-DTFARM_EXPORTS
)
if(APPLE)
if(BUILD_ENV_APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-install_name,@rpath/libtfarm.dylib")
endif()
@ -38,19 +38,22 @@ include_directories(
../include
)
if(WIN32)
if(BUILD_ENV_MSVC)
set(EXTRA_LIBS
tnzcore tnzbase toonzlib
ws2_32.lib
)
elseif(APPLE)
elseif(BUILD_ENV_APPLE)
set(EXTRA_LIBS
${CMAKE_CURRENT_BINARY_DIR}/../../tnzcore/libtnzcore.dylib
${CMAKE_CURRENT_BINARY_DIR}/../../tnzbase/libtnzbase.dylib
${CMAKE_CURRENT_BINARY_DIR}/../../toonzlib/libtoonzlib.dylib
)
elseif(UNIX)
elseif(BUILD_ENV_UNIXLIKE)
_find_toonz_library(EXTRA_LIBS "tnzcore;tnzbase;toonzlib;tnzext")
if(BUILD_TARGET_WIN)
set(EXTRA_LIBS ${EXTRA_LIBS} -lws2_32)
endif()
endif()
target_link_libraries(tfarm

View file

@ -312,7 +312,7 @@ set(SOURCES
textureutils.cpp
)
if(WIN32)
if(BUILD_TARGET_WIN)
set(SOURCES ${SOURCES}
avicodecrestrictions.cpp
)
@ -323,7 +323,7 @@ add_translation(toonzlib ${HEADERS} ${SOURCES})
qt5_wrap_cpp(SOURCES ${MOC_HEADERS})
add_library(toonzlib SHARED ${HEADERS} ${SOURCES})
if(APPLE)
if(BUILD_ENV_APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-install_name,@rpath/libtoonzlib.dylib")
endif()
@ -342,13 +342,13 @@ include_directories(
../toonzfarm/include
)
if(WIN32)
if(BUILD_ENV_MSVC)
target_link_libraries(toonzlib
Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Script
${GLUT_LIB} ${GL_LIB} vfw32.lib
tnzcore tnzbase tnzext
)
elseif(APPLE)
elseif(BUILD_ENV_APPLE)
set(EXTRA_LIBS
${CMAKE_CURRENT_BINARY_DIR}/../tnzcore/libtnzcore.dylib
${CMAKE_CURRENT_BINARY_DIR}/../tnzbase/libtnzbase.dylib
@ -357,8 +357,12 @@ elseif(APPLE)
)
target_link_libraries(toonzlib Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Script ${GLUT_LIB} ${GL_LIB} ${EXTRA_LIBS})
elseif(UNIX)
elseif(BUILD_ENV_UNIXLIKE)
_find_toonz_library(EXTRA_LIBS "tnzcore;tnzbase;tnzext")
if(BUILD_TARGET_WIN)
set(EXTRA_LIBS ${EXTRA_LIBS} -lvfw32)
endif()
target_link_libraries(toonzlib Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Script ${GLUT_LIB} ${GL_LIB} ${EXTRA_LIBS})
endif()

View file

@ -213,7 +213,7 @@ qt5_add_resources(SOURCES ${RESOURCES})
qt5_wrap_cpp(SOURCES ${MOC_HEADERS} OPTIONS ${incs})
add_library(toonzqt SHARED ${HEADERS} ${SOURCES} ${RESOURCES})
if(APPLE)
if(BUILD_ENV_APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-install_name,@rpath/libtoonzqt.dylib")
endif()
@ -228,10 +228,16 @@ message("Bin: " ${CMAKE_CURRENT_BINARY_DIR})
_find_toonz_library(EXTRA_LIBS "tnzcore;tnzbase;tnzext;toonzlib;sound")
if(WIN32)
if(BUILD_ENV_MSVC)
set(EXTRA_LIBS ${EXTRA_LIBS}
advapi32.lib
)
elseif(BUILD_ENV_UNIXLIKE)
if(BUILD_TARGET_WIN)
set(EXTRA_LIBS ${EXTRA_LIBS}
-ladvapi32
)
endif()
endif()
target_link_libraries(toonzqt Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Network Qt5::OpenGL ${EXTRA_LIBS} ${GL_LIB})