summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt579
1 files changed, 579 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 00000000..96a5c626
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,579 @@
+project(facetracknoir)
+cmake_minimum_required(VERSION 2.8)
+set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_SOURCE_DIR}/cmake/")
+SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
+SET(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX})
+SET(CMAKE_SKIP_RPATH FALSE)
+
+SET(SDK_FACEAPI_ONLY FALSE CACHE BOOL "FaceAPI only (MSVC 2005)")
+IF(WIN32)
+ SET(SDK_SM_FACEAPI_PATH "" CACHE PATH "SeeingMachines FaceAPI SDK path")
+ENDIF()
+
+file(GLOB ftnoir-faceapi-wrapper-c "faceapi/*.cpp")
+include_directories(${CMAKE_SOURCE_DIR})
+
+if(NOT SDK_FACEAPI_ONLY)
+ find_package(OpenCV REQUIRED)
+ find_package(Qt4 COMPONENTS QtCore QtGui QtXml QtOpenGL QtNetwork REQUIRED)
+ macro(QT4_WRAP_CPP outfiles)
+ # get include dirs
+ QT4_GET_MOC_FLAGS(moc_flags)
+ QT4_EXTRACT_OPTIONS(moc_files moc_options ${ARGN})
+
+ foreach(it ${moc_files})
+ get_filename_component(it ${it} ABSOLUTE)
+ QT4_MAKE_OUTPUT_FILE(${it} moc_ cxx outfile)
+ SET(moc_options ${moc_options} -nn)
+ QT4_CREATE_MOC_COMMAND(${it} ${outfile} "${moc_flags}" "${moc_options}")
+ set(${outfiles} ${${outfiles}} ${outfile})
+ endforeach()
+ endmacro()
+
+ find_package(OpenGL REQUIRED)
+
+ if(WIN32 AND NOT CMAKE_COMPILER_IS_GNUCC)
+ add_definitions(/D FTNOIR_FILTER_BASE_LIB /D FTNOIR_TRACKER_BASE_LIB /D FTNOIR_PROTOCOL_BASE_LIB)
+ else(MSVC)
+ add_definitions(-DFTNOIR_FILTER_BASE_LIB -DFTNOIR_TRACKER_BASE_LIB -DFTNOIR_PROTOCOL_BASE_LIB)
+ endif(WIN32 AND NOT CMAKE_COMPILER_IS_GNUCC)
+
+ if(NOT WIN32)
+ if(NOT QXT_QXTGUI_LIB_RELEASE)
+ find_package(Qxt COMPONENTS QxtGui REQUIRED)
+ endif()
+
+ if(NOT QXT_QXTGUI_INCLUDE_DIR OR QXT_QXTGUI_INCLUDE_DIR STREQUAL "QXT_QXTGUI_INCLUDE_DIR-NOTFOUND")
+ message(FATAL_ERROR "Qxt not found, required for keybindings, get from http://libqxt.org")
+ endif()
+
+ include_directories(${QXT_QXTGUI_INCLUDE_DIR})
+ include_directories(${QXT_QXTCORE_INCLUDE_DIR})
+ if(EXISTS "${QXT_QXTCORE_INCLUDE_DIR}/QxtCore/")
+ include_directories(${QXT_QXTCORE_INCLUDE_DIR}/QxtCore)
+ endif()
+ if(EXISTS "${QXT_QXTGUI_INCLUDE_DIR}/QxtGui/")
+ include_directories(${QXT_QXTGUI_INCLUDE_DIR}/QxtGui)
+ endif()
+ endif()
+ if(NOT WIN32)
+ INCLUDE_DIRECTORIES(${QT_QTDESIGNER_INCLUDE_DIR})
+ endif()
+
+ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
+ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/qfunctionconfigurator)
+
+ SET(SDK_OPENCV_STATIC FALSE CACHE BOOL "Whether OpenCV is statically linked")
+ if (WIN32)
+ SET(SDK_SM_FACEAPI_PATH "" CACHE PATH "SeeingMachines FaceAPI SDK path")
+ set(SDK_MINGW_PATH "" CACHE PATH "MinGW path")
+ set(SDK_SIMCONNECT "" CACHE PATH "Path to SimConnect SDK")
+ set(SDK_DIRECTX "" CACHE PATH "Path to DirectX SDK")
+ if(SDK_DIRECTX)
+ include_directories("${SDK_DIRECTX}/Include")
+ link_directories("${SDK_DIRECTX}/Lib")
+ endif()
+ endif()
+
+ if(NOT WIN32)
+ set(SDK_WINE_PREFIX "" CACHE PATH "Path where Wine is installed")
+ set(SDK_WINE_NO_WRAPPER FALSE CACHE BOOL "Don't build wrapper, for instance X-Plane is native Linux app")
+ endif()
+ IF("${CMAKE_SYSTEM}" MATCHES "Linux")
+ set(SDK_XPLANE "" CACHE PATH "Path to X-Plane SDK")
+ endif()
+
+ if(SDK_XPLANE)
+ INCLUDE_DIRECTORIES("${SDK_XPLANE}/CHeaders" "${SDK_XPLANE}/CHeaders/XPLM")
+ endif()
+
+ if(WIN32)
+ set(CMAKE_RC_COMPILER_INIT windres)
+ ENABLE_LANGUAGE(RC)
+ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC)
+ SET(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> <FLAGS> -O coff <DEFINES> -i <SOURCE> -o <OBJECT>")
+ endif()
+ endif(WIN32)
+
+if(NOT SDK_FACEAPI_ONLY)
+# main app
+
+ file(GLOB ftnoir-bin-c "facetracknoir/*.cpp" "facetracknoir/*.rc")
+ file(GLOB ftnoir-bin-h "facetracknoir/*.h")
+ QT4_WRAP_CPP(ftnoir-bin-moc ${ftnoir-bin-h})
+ file(GLOB ftnoir-bin-ui "facetracknoir/*.ui")
+ file(GLOB ftnoir-bin-rc "facetracknoir/*.qrc")
+ QT4_WRAP_UI(ftnoir-bin-uih ${ftnoir-bin-ui})
+ QT4_ADD_RESOURCES(ftnoir-bin-rcc ${ftnoir-bin-rc})
+
+ file(GLOB ftnoir-pose-widget-c "ftnoir_posewidget/*.cpp")
+ file(GLOB ftnoir-pose-widget-h "ftnoir_posewidget/*.h")
+ QT4_WRAP_CPP(ftnoir-pose-widget-moc ${ftnoir-pose-widget-h})
+ file(GLOB ftnoir-pose-widget-rc "ftnoir_posewidget/*.qrc")
+ QT4_ADD_RESOURCES(ftnoir-pose-widget-rcc ${ftnoir-pose-widget-rc})
+
+ file(GLOB ftnoir-spline-widget-c "qfunctionconfigurator/*.cpp")
+ file(GLOB ftnoir-spline-widget-h "qfunctionconfigurator/*.h")
+ QT4_WRAP_CPP(ftnoir-spline-widget-moc ${ftnoir-spline-widget-h})
+
+# filters
+
+ file(GLOB ftnoir-filter-accela-c "ftnoir_filter_accela/*.cpp")
+ file(GLOB ftnoir-filter-accela-h "ftnoir_filter_accela/*.h")
+ QT4_WRAP_CPP(ftnoir-filter-accela-moc ${ftnoir-filter-accela-h})
+ file(GLOB ftnoir-filter-accela-ui "ftnoir_filter_accela/*.ui")
+ file(GLOB ftnoir-filter-accela-rc "ftnoir_filter_accela/*.qrc")
+ QT4_WRAP_UI(ftnoir-filter-accela-uih ${ftnoir-filter-accela-ui})
+ QT4_ADD_RESOURCES(ftnoir-filter-accela-rcc ${ftnoir-filter-accela-rc})
+
+ file(GLOB ftnoir-filter-kalman-c "ftnoir_filter_kalman/*.cpp")
+ file(GLOB ftnoir-filter-kalman-h "ftnoir_filter_kalman/*.h")
+ QT4_WRAP_CPP(ftnoir-filter-kalman-moc ${ftnoir-filter-kalman-h})
+ file(GLOB ftnoir-filter-kalman-ui "ftnoir_filter_kalman/*.ui")
+ file(GLOB ftnoir-filter-kalman-rc "ftnoir_filter_kalman/*.qrc")
+ QT4_WRAP_UI(ftnoir-filter-kalman-uih ${ftnoir-filter-kalman-ui})
+ QT4_ADD_RESOURCES(ftnoir-kalman-accela-rcc ${ftnoir-filter-kalman-rc})
+
+ file(GLOB ftnoir-filter-ewma-c "ftnoir_filter_ewma2/*.cpp")
+ file(GLOB ftnoir-filter-ewma-h "ftnoir_filter_ewma2/*.h")
+ QT4_WRAP_CPP(ftnoir-filter-ewma-moc ${ftnoir-filter-ewma-h})
+ file(GLOB ftnoir-filter-ewma-ui "ftnoir_filter_ewma2/*.ui")
+ file(GLOB ftnoir-filter-ewma-rc "ftnoir_filter_ewma2/*.qrc")
+ QT4_WRAP_UI(ftnoir-filter-ewma-uih ${ftnoir-filter-ewma-ui})
+ QT4_ADD_RESOURCES(ftnoir-filter-ewma-rcc ${ftnoir-filter-ewma-rc})
+
+# protocols
+
+ file(GLOB ftnoir-proto-fgfs-c "ftnoir_protocol_fg/*.cpp")
+ file(GLOB ftnoir-proto-fgfs-h "ftnoir_protocol_fg/*.h")
+ QT4_WRAP_CPP(ftnoir-proto-fgfs-moc ${ftnoir-proto-fgfs-h})
+ file(GLOB ftnoir-proto-fgfs-ui "ftnoir_protocol_fg/*.ui")
+ file(GLOB ftnoir-proto-fgfs-rc "ftnoir_protocol_fg/*.qrc")
+ QT4_WRAP_UI(ftnoir-proto-fgfs-uih ${ftnoir-proto-fgfs-ui})
+ QT4_ADD_RESOURCES(ftnoir-proto-fgfs-rcc ${ftnoir-proto-fgfs-rc})
+
+ file(GLOB ftnoir-proto-fsuipc-c "ftnoir_protocol_fsuipc/*.cpp")
+ file(GLOB ftnoir-proto-fsuipc-h "ftnoir_protocol_fsuipc/*.h")
+ QT4_WRAP_CPP(ftnoir-proto-fsuipc-moc ${ftnoir-proto-fsuipc-h})
+ file(GLOB ftnoir-proto-fsuipc-ui "ftnoir_protocol_fsuipc/*.ui")
+ file(GLOB ftnoir-proto-fsuipc-rc "ftnoir_protocol_fsuipc/*.qrc")
+ QT4_WRAP_UI(ftnoir-proto-fsuipc-uih ${ftnoir-proto-fsuipc-ui})
+ QT4_ADD_RESOURCES(ftnoir-proto-fsuipc-rcc ${ftnoir-proto-fsuipc-rc})
+
+ file(GLOB ftnoir-proto-freetrack-c "ftnoir_protocol_ft/*.cpp")
+ file(GLOB ftnoir-proto-freetrack-h "ftnoir_protocol_ft/*.h")
+ QT4_WRAP_CPP(ftnoir-proto-freetrack-moc ${ftnoir-proto-freetrack-h})
+ file(GLOB ftnoir-proto-freetrack-ui "ftnoir_protocol_ft/*.ui")
+ file(GLOB ftnoir-proto-freetrack-rc "ftnoir_protocol_ft/*.qrc")
+ QT4_WRAP_UI(ftnoir-proto-freetrack-uih ${ftnoir-proto-freetrack-ui})
+ QT4_ADD_RESOURCES(ftnoir-proto-freetrack-rcc ${ftnoir-proto-freetrack-rc})
+
+ file(GLOB ftnoir-proto-udp-c "ftnoir_protocol_ftn/*.cpp")
+ file(GLOB ftnoir-proto-udp-h "ftnoir_protocol_ftn/*.h")
+ QT4_WRAP_CPP(ftnoir-proto-udp-moc ${ftnoir-proto-udp-h})
+ file(GLOB ftnoir-proto-udp-ui "ftnoir_protocol_ftn/*.ui")
+ file(GLOB ftnoir-proto-udp-rc "ftnoir_protocol_ftn/*.qrc")
+ QT4_WRAP_UI(ftnoir-proto-udp-uih ${ftnoir-proto-udp-ui})
+ QT4_ADD_RESOURCES(ftnoir-proto-udp-rcc ${ftnoir-proto-udp-rc})
+
+ file(GLOB ftnoir-proto-wine-c "ftnoir_protocol_wine/*.cpp")
+ file(GLOB ftnoir-proto-wine-h "ftnoir_protocol_wine/*.h")
+ QT4_WRAP_CPP(ftnoir-proto-wine-moc ${ftnoir-proto-wine-h})
+ file(GLOB ftnoir-proto-wine-ui "ftnoir_protocol_wine/*.ui")
+ file(GLOB ftnoir-proto-wine-rc "ftnoir_protocol_wine/*.qrc")
+ QT4_WRAP_UI(ftnoir-proto-wine-uih ${ftnoir-proto-wine-ui})
+ QT4_ADD_RESOURCES(ftnoir-proto-wine-rcc ${ftnoir-proto-wine-rc})
+
+ file(GLOB ftnoir-proto-win32-mouse-c "ftnoir_protocol_mouse/*.cpp")
+ file(GLOB ftnoir-proto-win32-mouse-h "ftnoir_protocol_mouse/*.h")
+ QT4_WRAP_CPP(ftnoir-proto-win32-mouse-moc ${ftnoir-proto-win32-mouse-h})
+ file(GLOB ftnoir-proto-win32-mouse-ui "ftnoir_protocol_mouse/*.ui")
+ file(GLOB ftnoir-proto-win32-mouse-rc "ftnoir_protocol_mouse/*.qrc")
+ QT4_WRAP_UI(ftnoir-proto-win32-mouse-uih ${ftnoir-proto-win32-mouse-ui})
+ QT4_ADD_RESOURCES(ftnoir-proto-win32-mouse-rcc ${ftnoir-proto-win32-mouse-rc})
+
+# TODO manifest problems :(
+ file(GLOB ftnoir-proto-simconnect-c "ftnoir_protocol_sc/*.cpp")
+ file(GLOB ftnoir-proto-simconnect-h "ftnoir_protocol_sc/*.h")
+ QT4_WRAP_CPP(ftnoir-proto-simconnect-moc ${ftnoir-proto-simconnect-h})
+ file(GLOB ftnoir-proto-simconnect-ui "ftnoir_protocol_sc/*.ui")
+ file(GLOB ftnoir-proto-simconnect-rc "ftnoir_protocol_sc/*.qrc")
+ QT4_WRAP_UI(ftnoir-proto-simconnect-uih ${ftnoir-proto-simconnect-ui})
+ QT4_ADD_RESOURCES(ftnoir-proto-simconnect-rcc ${ftnoir-proto-simconnect-rc})
+
+# trackers
+
+ file(GLOB ftnoir-tracker-ht-c "ftnoir_tracker_ht/*.cpp")
+ file(GLOB ftnoir-tracker-ht-h "ftnoir_tracker_ht/*.h")
+ QT4_WRAP_CPP(ftnoir-tracker-ht-moc ${ftnoir-tracker-ht-h})
+ file(GLOB ftnoir-tracker-ht-ui "ftnoir_tracker_ht/*.ui")
+ file(GLOB ftnoir-tracker-ht-rc "ftnoir_tracker_ht/*.qrc")
+ QT4_WRAP_UI(ftnoir-tracker-ht-uih ${ftnoir-tracker-ht-ui})
+ QT4_ADD_RESOURCES(ftnoir-tracker-ht-rcc ${ftnoir-tracker-ht-rc})
+
+ file(GLOB ftnoir-tracker-pt-c "ftnoir_tracker_pt/*.cpp")
+ file(GLOB ftnoir-tracker-pt-h "ftnoir_tracker_pt/*.h")
+ QT4_WRAP_CPP(ftnoir-tracker-pt-moc ${ftnoir-tracker-pt-h})
+ file(GLOB ftnoir-tracker-pt-ui "ftnoir_tracker_pt/*.ui")
+ file(GLOB ftnoir-tracker-pt-rc "ftnoir_tracker_pt/*.qrc")
+ QT4_WRAP_UI(ftnoir-tracker-pt-uih ${ftnoir-tracker-pt-ui})
+ QT4_ADD_RESOURCES(ftnoir-tracker-pt-rcc ${ftnoir-tracker-pt-rc})
+
+ file(GLOB ftnoir-tracker-udp-c "ftnoir_tracker_udp/*.cpp")
+ file(GLOB ftnoir-tracker-udp-h "ftnoir_tracker_udp/*.h")
+ QT4_WRAP_CPP(ftnoir-tracker-udp-moc ${ftnoir-tracker-udp-h})
+ file(GLOB ftnoir-tracker-udp-ui "ftnoir_tracker_udp/*.ui")
+ file(GLOB ftnoir-tracker-udp-rc "ftnoir_tracker_udp/*.qrc")
+ QT4_WRAP_UI(ftnoir-tracker-udp-uih ${ftnoir-tracker-udp-ui})
+ QT4_ADD_RESOURCES(ftnoir-tracker-udp-rcc ${ftnoir-tracker-udp-rc})
+
+ file(GLOB ftnoir-tracker-faceapi-c "ftnoir_tracker_sm/*.cpp")
+ file(GLOB ftnoir-tracker-faceapi-h "ftnoir_tracker_sm/*.h")
+ QT4_WRAP_CPP(ftnoir-tracker-faceapi-moc ${ftnoir-tracker-faceapi-h})
+ file(GLOB ftnoir-tracker-faceapi-ui "ftnoir_tracker_sm/*.ui")
+ file(GLOB ftnoir-tracker-faceapi-rc "ftnoir_tracker_sm/*.qrc")
+ QT4_WRAP_UI(ftnoir-tracker-faceapi-uih ${ftnoir-tracker-faceapi-ui})
+ QT4_ADD_RESOURCES(ftnoir-tracker-faceapi-rcc ${ftnoir-tracker-faceapi-rc})
+
+# compat lib for POSIX/win32
+
+ file(GLOB ftnoir-compat-c "compat/*.cpp")
+
+# x-plane plugin
+ file(GLOB ftnoir-xplane-plugin-c "x-plane-plugin/*.c")
+
+ if(SDK_XPLANE)
+ # probably librt already included
+ add_library(ftnoir-xplane-plugin SHARED ${ftnoir-xplane-plugin-c})
+ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC)
+ SET_TARGET_PROPERTIES(ftnoir-xplane-plugin
+ PROPERTIES LINK_FLAGS
+ "-Wl,--version-script=${CMAKE_SOURCE_DIR}/x-plane-plugin/version-script.txt -shared -rdynamic -nodefaultlibs -undefined_warning -fPIC"
+ COMPILE_FLAGS "-Wall -O2 -pipe -fPIC -DLIN -DXPLM210"
+ LIBRARY_OUTPUT_NAME "facetracknoir.xpl"
+ PREFIX "" SUFFIX "")
+ endif()
+ endif()
+endif()
+
+# some boilerplate
+
+ if(QT_USE_FILE)
+ INCLUDE(${QT_USE_FILE})
+ endif()
+
+ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
+ SET (CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS_INIT} -rdynamic CACHE STRING "Flags used by the linker during the creation of dll's.")
+ SET (CMAKE_MODULE_LINKER_FLAGS ${CMAKE_MODULE_LINKER_FLAGS_INIT} -rdynamic CACHE STRING "Flags used by the linker during the creation of modules.")
+ SET (CMAKE_MODULE_LINKER_FLAGS ${CMAKE_MODULE_LINKER_FLAGS_INIT} -rdynamic CACHE STRING "Flags used by the linker during the creation of modules.")
+ endif()
+
+
+ add_library(ftnoir-compat SHARED ${ftnoir-compat-c})
+ if(NOT WIN32)
+ target_link_libraries(ftnoir-compat rt)
+ endif()
+
+
+ IF(CMAKE_BUILD_TYPE MATCHES DEBUG)
+ SET(MY_QT_LIBS ${QT_QTCORE_LIBRARY_DEBUG} ${QT_QTGUI_LIBRARY_DEBUG} ${QT_QTNETWORK_LIBRARY_DEBUG} ${QT_QTXML_LIBRARY_DEBUG} ${QT_QTOPENGL_LIBRARY_DEBUG})
+ ELSE()
+ SET(MY_QT_LIBS ${QT_QTCORE_LIBRARY_RELEASE} ${QT_QTGUI_LIBRARY_RELEASE} ${QT_QTNETWORK_LIBRARY_RELEASE} ${QT_QTXML_LIBRARY_RELEASE} ${QT_QTOPENGL_LIBRARY_RELEASE})
+ ENDIF()
+ add_library(ftnoir-pose-widget SHARED ${ftnoir-pose-widget-c} ${ftnoir-pose-widget-moc} ${ftnoir-pose-widget-rcc})
+ target_link_libraries(ftnoir-pose-widget ${MY_QT_LIBS} ${OPENGL_gl_LIBRARY})
+ add_library(ftnoir-spline-widget SHARED ${ftnoir-spline-widget-c} ${ftnoir-spline-widget-moc} ${MY_QT_LIBS})
+ target_link_libraries(ftnoir-spline-widget ${MY_QT_LIBS})
+
+ add_library(ftnoir-filter-accela SHARED ${ftnoir-filter-accela-c} ${ftnoir-filter-accela-moc} ${ftnoir-filter-accela-uih} ${ftnoir-filter-accela-rcc})
+ target_link_libraries(ftnoir-filter-accela ${MY_QT_LIBS} ftnoir-spline-widget)
+
+ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC)
+ SET_TARGET_PROPERTIES(ftnoir-filter-accela
+ PROPERTIES LINK_FLAGS "-Wl,--version-script=${CMAKE_SOURCE_DIR}/facetracknoir/posix-version-script.txt")
+ endif()
+
+ if(OpenCV_FOUND)
+ include_directories("${OpenCV_DIR}/include")
+ include_directories("${OpenCV_CONFIG_PATH}/include")
+ add_library(ftnoir-filter-kalman SHARED ${ftnoir-filter-kalman-c} ${ftnoir-filter-kalman-moc} ${ftnoir-filter-kalman-uih} ${ftnoir-filter-kalman-rcc})
+ target_link_libraries(ftnoir-filter-kalman ${MY_QT_LIBS} ${OpenCV_LIBS})
+ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC)
+ SET_TARGET_PROPERTIES(ftnoir-filter-kalman
+ PROPERTIES LINK_FLAGS "-Wl,--version-script=${CMAKE_SOURCE_DIR}/facetracknoir/posix-version-script.txt")
+ endif()
+ endif()
+
+ add_library(ftnoir-filter-ewma SHARED ${ftnoir-filter-ewma-uih} ${ftnoir-filter-ewma-c} ${ftnoir-filter-ewma-moc} ${ftnoir-filter-ewma-rcc})
+ target_link_libraries(ftnoir-filter-ewma ${MY_QT_LIBS})
+
+ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC)
+ SET_TARGET_PROPERTIES(ftnoir-filter-ewma
+ PROPERTIES LINK_FLAGS "-Wl,--version-script=${CMAKE_SOURCE_DIR}/facetracknoir/posix-version-script.txt")
+ endif()
+
+ add_library(ftnoir-proto-fgfs SHARED ${ftnoir-proto-fgfs-c} ${ftnoir-proto-fgfs-moc} ${ftnoir-proto-fgfs-uih} ${ftnoir-proto-fgfs-rcc})
+ target_link_libraries(ftnoir-proto-fgfs ${MY_QT_LIBS})
+ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC)
+ SET_TARGET_PROPERTIES(ftnoir-proto-fgfs
+ PROPERTIES LINK_FLAGS "-Wl,--version-script=${CMAKE_SOURCE_DIR}/facetracknoir/posix-version-script.txt")
+ endif()
+
+ if(WIN32)
+ #add_library(ftnoir-proto-fsuipc SHARED ${ftnoir-proto-fsuipc-c} ${ftnoir-proto-fsuipc-moc} ${ftnoir-proto-fsuipc-uih} ${ftnoir-proto-fsuipc-rcc})
+ #target_link_libraries(ftnoir-proto-fsuipc ${MY_QT_LIBS})
+
+ if(SDK_SIMCONNECT)
+ add_library(ftnoir-proto-simconnect SHARED ${ftnoir-proto-simconnect-c} ${ftnoir-proto-simconnect-moc} ${ftnoir-proto-simconnect-uih} ${ftnoir-proto-simconnect-rcc})
+ target_link_libraries(ftnoir-proto-simconnect ${MY_QT_LIBS})
+ include_directories("${SDK_SIMCONNECT}/inc")
+ target_link_libraries(ftnoir-proto-simconnect "${SDK_SIMCONNECT}/lib/simconnect.lib")
+ endif()
+
+ add_library(ftnoir-proto-freetrack SHARED ${ftnoir-proto-freetrack-c} ${ftnoir-proto-freetrack-moc} ${ftnoir-proto-freetrack-uih} ${ftnoir-proto-freetrack-rcc})
+ target_link_libraries(ftnoir-proto-freetrack ${MY_QT_LIBS})
+
+ add_library(ftnoir-proto-win32-mouse SHARED ${ftnoir-proto-win32-mouse-c} ${ftnoir-proto-win32-mouse-moc} ${ftnoir-proto-win32-mouse-uih} ${ftnoir-proto-win32-mouse-rcc})
+ target_link_libraries(ftnoir-proto-win32-mouse ${MY_QT_LIBS})
+ endif()
+
+ add_library(ftnoir-proto-udp SHARED ${ftnoir-proto-udp-c} ${ftnoir-proto-udp-moc} ${ftnoir-proto-udp-uih} ${ftnoir-proto-udp-rcc})
+ target_link_libraries(ftnoir-proto-udp ${MY_QT_LIBS})
+ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC)
+ SET_TARGET_PROPERTIES(ftnoir-proto-udp
+ PROPERTIES LINK_FLAGS "-Wl,--version-script=${CMAKE_SOURCE_DIR}/facetracknoir/posix-version-script.txt")
+ endif()
+
+ if(NOT WIN32 AND SDK_WINE_PREFIX)
+ add_library(ftnoir-proto-wine SHARED ${ftnoir-proto-wine-c} ${ftnoir-proto-wine-moc} ${ftnoir-proto-wine-uih} ${ftnoir-proto-wine-rcc})
+ target_link_libraries(ftnoir-proto-wine ${MY_QT_LIBS} ftnoir-compat)
+ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC)
+ SET_TARGET_PROPERTIES(ftnoir-proto-wine
+ PROPERTIES LINK_FLAGS "-Wl,--version-script=${CMAKE_SOURCE_DIR}/facetracknoir/posix-version-script.txt")
+ endif()
+ if(NOT SDK_WINE_NO_WRAPPER)
+ add_custom_command( TARGET ftnoir-proto-wine
+ COMMAND
+ "${SDK_WINE_PREFIX}/bin/wineg++" -g -O2 -m32 -o
+ ftnoir-wrapper-wine.exe -I "${CMAKE_SOURCE_DIR}"
+ "${CMAKE_SOURCE_DIR}/ftnoir_protocol_wine/ftnoir-wrapper-wine-main.cxx"
+ "${CMAKE_SOURCE_DIR}/ftnoir_protocol_wine/ftnoir-wrapper-wine-posix.cxx"
+ "${CMAKE_SOURCE_DIR}/ftnoir_protocol_wine/ftnoir-wrapper-wine-windows.cxx"
+ -lrt)
+ endif()
+ endif()
+
+ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC)
+ SET_TARGET_PROPERTIES(ftnoir-proto-fgfs
+ PROPERTIES LINK_FLAGS "-Wl,--version-script=${CMAKE_SOURCE_DIR}/facetracknoir/posix-version-script.txt")
+ endif()
+
+ add_library(ftnoir-tracker-ht SHARED ${ftnoir-tracker-ht-c} ${ftnoir-tracker-ht-moc} ${ftnoir-tracker-ht-uih} ${ftnoir-tracker-ht-rcc})
+ target_link_libraries(ftnoir-tracker-ht ${MY_QT_LIBS} ${OPENGL_gl_LIBRARY} ftnoir-compat)
+ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC)
+ SET_TARGET_PROPERTIES(ftnoir-tracker-ht
+ PROPERTIES LINK_FLAGS "-Wl,--version-script=${CMAKE_SOURCE_DIR}/facetracknoir/posix-version-script.txt")
+ endif()
+
+ if(WIN32 AND NOT CMAKE_COMPILER_IS_GNUCC)
+ target_link_libraries(ftnoir-tracker-ht
+ "${CMAKE_SOURCE_DIR}/dinput/dinput8.lib"
+ "${CMAKE_SOURCE_DIR}/dinput/dxguid.lib"
+ "${CMAKE_SOURCE_DIR}/dinput/strmiids.lib")
+ endif()
+
+ if(OpenCV_FOUND)
+ add_library(ftnoir-tracker-pt SHARED ${ftnoir-tracker-pt-c} ${ftnoir-tracker-pt-moc} ${ftnoir-tracker-pt-uih} ${ftnoir-tracker-pt-rcc})
+ target_link_libraries(ftnoir-tracker-pt ${MY_QT_LIBS} ${OpenCV_LIBS} ${OPENGL_gl_LIBRARY})
+ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC)
+ SET_TARGET_PROPERTIES(ftnoir-tracker-pt
+ PROPERTIES LINK_FLAGS "-Wl,--version-script=${CMAKE_SOURCE_DIR}/facetracknoir/posix-version-script.txt")
+ endif()
+ endif()
+
+ add_library(ftnoir-tracker-udp SHARED ${ftnoir-tracker-udp-c} ${ftnoir-tracker-udp-moc} ${ftnoir-tracker-udp-uih} ${ftnoir-tracker-udp-rcc})
+ target_link_libraries(ftnoir-tracker-udp ${MY_QT_LIBS})
+ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC)
+ SET_TARGET_PROPERTIES(ftnoir-tracker-udp
+ PROPERTIES LINK_FLAGS "-Wl,--version-script=${CMAKE_SOURCE_DIR}/facetracknoir/posix-version-script.txt")
+ endif()
+
+ add_executable(ftnoir ${ftnoir-bin-c} ${ftnoir-bin-moc} ${ftnoir-bin-uih} ${ftnoir-bin-rcc})
+ if(WIN32)
+ target_link_libraries(ftnoir ftnoir-pose-widget ftnoir-spline-widget ${MY_QT_LIBS} "${CMAKE_SOURCE_DIR}/dinput/dinput8.lib" "${CMAKE_SOURCE_DIR}/dinput/dxguid.lib" "${CMAKE_SOURCE_DIR}/dinput/strmiids.lib")
+ endif()
+ target_link_libraries(ftnoir ftnoir-pose-widget ftnoir-spline-widget ${MY_QT_LIBS} ${QXT_QXTCORE_LIB_RELEASE} ${QXT_QXTGUI_LIB_RELEASE})
+ if(NOT WIN32)
+ target_link_libraries(ftnoir dl)
+ endif()
+
+ if(WIN32)
+ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC)
+ SET_TARGET_PROPERTIES(ftnoir PROPERTIES LINK_FLAGS "-Wl,--subsystem,windows")
+ endif()
+ endif()
+endif()
+
+# make install
+
+if(SDK_SM_FACEAPI_PATH)
+ include_directories("${SDK_SM_FACEAPI_PATH}/include")
+endif()
+if(WIN32 AND NOT SDK_FACEAPI_ONLY)
+ add_library(ftnoir-tracker-faceapi SHARED ${ftnoir-tracker-faceapi-c} ${ftnoir-tracker-faceapi-moc} ${ftnoir-tracker-faceapi-uih} ${ftnoir-tracker-faceapi-rcc})
+ target_link_libraries(ftnoir-tracker-faceapi ${MY_QT_LIBS})
+endif()
+if(MSVC80 AND SDK_SM_FACEAPI_PATH)
+ add_executable(ftnoir-faceapi-wrapper ${ftnoir-faceapi-wrapper-c})
+ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
+ target_link_libraries(ftnoir-faceapi-wrapper "${SDK_SM_FACEAPI_PATH}/bin/smft32.lib" "${SDK_MSVC80_PATH}/lib/msvcrt.lib")
+ else()
+ target_link_libraries(ftnoir-faceapi-wrapper "${SDK_SM_FACEAPI_PATH}/bin/smft32.lib")
+ endif()
+else()
+ MESSAGE(WARNING "Cannot build FaceAPI without MSVC 2005!")
+endif()
+
+if(NOT SDK_FACEAPI_ONLY)
+ if(SDK_XPLANE)
+ install(TARGETS ftnoir-xplane-plugin LIBRARY DESTINATION . NAMELINK_SKIP)
+ endif()
+ if(WIN32)
+ install(DIRECTORY "${CMAKE_SOURCE_DIR}/bin/tracker-ht" DESTINATION .)
+ endif()
+
+ install(FILES "${CMAKE_SOURCE_DIR}/bin/npclient.dll" "${CMAKE_SOURCE_DIR}/bin/npclient64.dll" DESTINATION .)
+ install(DIRECTORY "${CMAKE_SOURCE_DIR}/bin/settings" DESTINATION .)
+
+ if(NOT WIN32 AND SDK_WINE_PREFIX)
+ install(FILES "${CMAKE_BINARY_DIR}/ftnoir-wrapper-wine.exe.so"
+ DESTINATION .)
+ install(TARGETS ftnoir-proto-wine DESTINATION .)
+ endif()
+
+ install(TARGETS
+ ftnoir-compat
+ ftnoir-pose-widget
+ ftnoir-spline-widget
+ ftnoir-filter-accela
+ ftnoir-filter-ewma
+ ftnoir-proto-fgfs
+ ftnoir-proto-udp
+ ftnoir-tracker-ht
+ ftnoir-tracker-udp
+ ftnoir
+ RUNTIME DESTINATION .
+ LIBRARY DESTINATION .
+ NAMELINK_SKIP
+ )
+
+ if(OpenCV_FOUND)
+ install(TARGETS
+ ftnoir-tracker-pt
+ ftnoir-filter-kalman
+ RUNTIME DESTINATION .
+ LIBRARY DESTINATION .
+ NAMELINK_SKIP
+ )
+ endif()
+
+ if(WIN32)
+ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC)
+ file(GLOB mingw-libgcc-s "${SDK_MINGW_PATH}/bin/libgcc_s_*.dll")
+ install(FILES
+ "${mingw-libgcc-s}"
+ "${SDK_MINGW_PATH}/lib32/libstdc++-6.dll"
+ DESTINATION .
+ )
+ endif()
+ install(FILES "${CMAKE_SOURCE_DIR}/bin/cleye.config" DESTINATION .)
+ install(FILES "${CMAKE_SOURCE_DIR}/bin/freetrackclient.dll" DESTINATION .)
+ if(SDK_SIMCONNECT)
+ install(TARGETS ftnoir-proto-simconnect
+ RUNTIME DESTINATION .
+ LIBRARY DESTINATION .
+ NAMELINK_SKIP)
+ endif()
+ if(OpenCV_FOUND AND NOT SDK_OPENCV_STATIC)
+ get_filename_component(ftnoir-opencv-dir "${OpenCV_LIB_DIR_OPT}" PATH)
+ if(WIN32 AND NOT CMAKE_COMPILER_IS_GNUCC)
+ set(LIB-PREFIX "../bin/Release/")
+ else()
+ set(LIB-PREFIX "lib")
+ endif()
+ file(GLOB ftnoir-opencv-files
+ "${ftnoir-opencv-dir}/${LIB-PREFIX}opencv_calib3d*.dll"
+ "${ftnoir-opencv-dir}/${LIB-PREFIX}opencv_core*.dll"
+ "${ftnoir-opencv-dir}/${LIB-PREFIX}opencv_highgui*.dll"
+ "${ftnoir-opencv-dir}/${LIB-PREFIX}opencv_imgproc*.dll"
+ "${ftnoir-opencv-dir}/${LIB-PREFIX}opencv_flann*.dll"
+ "${ftnoir-opencv-dir}/${LIB-PREFIX}opencv_features2d*.dll"
+ )
+ install(FILES ${ftnoir-opencv-files} DESTINATION .)
+ endif()
+ get_filename_component(ftnoir-qt-bin "${QT_QMAKE_EXECUTABLE}" PATH)
+ if(WIN32 AND NOT CMAKE_COMPILER_IS_GNUCC)
+ GET_FILENAME_COMPONENT(qt-dirname "${QT_QTCORE_LIBRARY_RELEASE}" PATH)
+ SET(qt-dirname "${qt-dirname}/../bin/")
+ if(NOT EXISTS "${qt-dirname}/../bin/")
+ GET_FILENAME_COMPONENT(qt-dirname "${QT_QTCORE_LIBRARY_RELEASE}" PATH)
+ SET(qt-dirname "${qt-dirname}/../bin/")
+ endif()
+ install(FILES
+ "${qt-dirname}/QtCore4.dll"
+ "${qt-dirname}/QtGui4.dll"
+ "${qt-dirname}/QtNetwork4.dll"
+ "${qt-dirname}/QtOpenGL4.dll"
+ "${qt-dirname}/QtSvg4.dll"
+ "${qt-dirname}/QtXml4.dll"
+ DESTINATION .
+ )
+ endif()
+ install(TARGETS
+ ftnoir-proto-freetrack
+ ftnoir-proto-win32-mouse
+ #ftnoir-proto-fsuipc
+ #ftnoir-proto-simconnect
+ RUNTIME DESTINATION .
+ LIBRARY DESTINATION .
+ NAMELINK_SKIP
+ )
+ endif()
+endif()
+if(WIN32 AND NOT SDK_FACEAPI_ONLY)
+ install(TARGETS ftnoir-tracker-faceapi
+ RUNTIME DESTINATION .
+ LIBRARY DESTINATION .
+ NAMELINK_SKIP
+ )
+endif()
+
+if(WIN32 AND SDK_SM_FACEAPI_PATH)
+ if(MSVC80)
+ install(TARGETS ftnoir-faceapi-wrapper
+ RUNTIME DESTINATION faceapi
+ LIBRARY DESTINATION faceapi
+ NAMELINK_SKIP
+ )
+ endif()
+ install(FILES "${CMAKE_SOURCE_DIR}/bin/cleye.config" DESTINATION faceapi)
+ install(FILES
+ "${SDK_SM_FACEAPI_PATH}/bin/computation6.0.dll"
+ "${SDK_SM_FACEAPI_PATH}/bin/foundation6.0.dll"
+ "${SDK_SM_FACEAPI_PATH}/bin/image6.0.dll"
+ "${SDK_SM_FACEAPI_PATH}/bin/libpng13.dll"
+ "${SDK_SM_FACEAPI_PATH}/bin/pgrflycapturegui.dll"
+ "${SDK_SM_FACEAPI_PATH}/bin/QtCore0.dll"
+ "${SDK_SM_FACEAPI_PATH}/bin/qt-mt334.dll"
+ "${SDK_SM_FACEAPI_PATH}/bin/QtXml4.dll"
+ "${SDK_SM_FACEAPI_PATH}/bin/smft32.dll"
+ "${SDK_SM_FACEAPI_PATH}/bin/zlib1.dll"
+ "${SDK_SM_FACEAPI_PATH}/doc/RELEASE NOTES.txt"
+ DESTINATION faceapi
+ )
+ install(DIRECTORY
+ "${SDK_SM_FACEAPI_PATH}/bin/cal"
+ "${SDK_SM_FACEAPI_PATH}/bin/resources"
+ DESTINATION faceapi
+ )
+endif()