190 lines
5.3 KiB
CMake
190 lines
5.3 KiB
CMake
###| CMAKE qtermwidget/lib |###
|
|
|
|
#| 2.6 is out, but most distros only have 2.4
|
|
cmake_minimum_required ( VERSION 2.4 )
|
|
include(CheckFunctionExists)
|
|
|
|
#| Project
|
|
project ( qtermwidget )
|
|
|
|
|
|
IF (NOT LIB_SUFFIX)
|
|
MESSAGE(STATUS "")
|
|
MESSAGE(STATUS "LIB_SUFFIX variable is not defined. It will be autodetected now.")
|
|
MESSAGE(STATUS "You can set it manually with -DLIB_SUFFIX=<value> (64 for example)")
|
|
IF (NOT APPLE)
|
|
# check 64 bit
|
|
if (CMAKE_SIZEOF_VOID_P EQUAL 4)
|
|
SET (LIB_SUFFIX "")
|
|
else (CMAKE_SIZEOF_VOID_P EQUAL 4)
|
|
set (LIB_SUFFIX "64")
|
|
MESSAGE(STATUS " LIB_SUFFIX is set to '${LIB_SUFFIX}'")
|
|
endif (CMAKE_SIZEOF_VOID_P EQUAL 4)
|
|
ELSE (NOT APPLE)
|
|
message(STATUS "LIB_SUFFIX is disabled for APPLE: ${CMAKE_SYSTEM_NAME}")
|
|
SET (LIB_SUFFIX "")
|
|
ENDIF (NOT APPLE)
|
|
# BSD does not use lib64 for 64bit libs
|
|
IF (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD")
|
|
message(STATUS "LIB_SUFFIX is disabled for *BSD: ${CMAKE_SYSTEM_NAME}")
|
|
SET (LIB_SUFFIX "")
|
|
ENDIF()
|
|
#
|
|
MESSAGE(STATUS "")
|
|
ENDIF (NOT LIB_SUFFIX)
|
|
|
|
|
|
|
|
|
|
#| Sources
|
|
set ( SRCS
|
|
TerminalCharacterDecoder.cpp
|
|
KeyboardTranslator.cpp
|
|
Screen.cpp History.cpp BlockArray.cpp konsole_wcwidth.cpp
|
|
ScreenWindow.cpp
|
|
Emulation.cpp
|
|
Vt102Emulation.cpp TerminalDisplay.cpp Filter.cpp
|
|
Pty.cpp kpty.cpp k3process.cpp k3processcontroller.cpp
|
|
Session.cpp ShellCommand.cpp
|
|
qtermwidget.cpp
|
|
)
|
|
|
|
#| Headers
|
|
#| Only the Headers that need to be moc'd go here
|
|
set ( HDRS
|
|
ScreenWindow.h
|
|
Emulation.h
|
|
Vt102Emulation.h TerminalDisplay.h Filter.h
|
|
Pty.h k3process.h k3processcontroller.h
|
|
Session.h
|
|
qtermwidget.h
|
|
)
|
|
|
|
set ( HDRS_DISTRIB
|
|
${CMAKE_SOURCE_DIR}/lib/qtermwidget.h )
|
|
|
|
#| Library Output
|
|
#| CMake supports out-of-source builds, so the binary dir is not
|
|
#| necessarily the same as the source directory
|
|
set ( LIBRARY_OUTPUT_PATH
|
|
${PROJECT_BINARY_DIR}/../.
|
|
)
|
|
|
|
#| Library Versioning
|
|
#| Libraries are not versioned by default
|
|
set ( qtermwidget_VERSION_MAJOR "0" )
|
|
set ( qtermwidget_VERSION_MINOR "1" )
|
|
set ( qtermwidget_VERSION_PATCH "0" )
|
|
set ( qtermwidget_VERSION
|
|
"${qtermwidget_VERSION_MAJOR}.${qtermwidget_VERSION_MINOR}.${qtermwidget_VERSION_PATCH}"
|
|
)
|
|
|
|
#| Qt4 Required Options
|
|
add_definitions ( -Wall )
|
|
find_package ( Qt4 REQUIRED ) # Finds Qt4 on the system
|
|
include ( ${QT_USE_FILE} ) # Includes Qt4 headers and libraries (the above command is needed first)
|
|
QT4_WRAP_CPP ( MOC_SRCS ${HDRS} ) # Moc's the headers
|
|
#include ( ${CMAKE_BINARY_DIR} ) # For including the heades generated by ui files
|
|
|
|
#| qtermwidget specific
|
|
include_directories ( ${PROJECT_SOURCE_DIR} ) # You mark some of the headers as global, so I just add the source directory to the includes
|
|
|
|
|
|
# dirs
|
|
set ( SHARE_DIR ${CMAKE_INSTALL_PREFIX}/share )
|
|
message ( STATUS "Share dire: ${SHARE_DIR}" )
|
|
|
|
set ( KB_LAYOUT_DIR ${CMAKE_INSTALL_PREFIX}/share/qtermwidget/kb-layouts/ )
|
|
message ( STATUS "Keyboard layouts will be installed in: ${KB_LAYOUT_DIR}" )
|
|
add_definitions( -DKB_LAYOUT_DIR="\\"${KB_LAYOUT_DIR}\\"" )
|
|
|
|
#| Defines
|
|
add_definitions ( -DHAVE_POSIX_OPENPT )
|
|
#add_definitions( -DHAVE_GETPT )
|
|
if (APPLE)
|
|
add_definitions( -DHAVE_UTMPX -D_UTMPX_COMPAT )
|
|
endif (APPLE)
|
|
|
|
CHECK_FUNCTION_EXISTS(updwtmpx HAVE_UPDWTMPX)
|
|
if (HAVE_UPDWTMPX)
|
|
add_definitions( -DHAVE_UPDWTMPX )
|
|
endif (HAVE_UPDWTMPX)
|
|
|
|
|
|
#| Create the Library
|
|
#add_library( qtermwidget STATIC ${SRCS} ${MOC_SRCS} )
|
|
add_library ( qtermwidget SHARED ${SRCS} ${MOC_SRCS} )
|
|
|
|
if (APPLE)
|
|
# this is a must to load the lib correctly
|
|
set_target_properties( qtermwidget PROPERTIES
|
|
INSTALL_NAME_DIR ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX} )
|
|
endif (APPLE)
|
|
|
|
|
|
#| Set Build Type
|
|
if (NOT CMAKE_BUILD_TYPE)
|
|
set ( CMAKE_BUILD_TYPE
|
|
#"release"
|
|
"relwithdebinfo" # Default
|
|
#"debug"
|
|
#"debugfull"
|
|
)
|
|
endif (NOT CMAKE_BUILD_TYPE)
|
|
|
|
#| Library Properties
|
|
set_target_properties ( qtermwidget PROPERTIES
|
|
#OUTPUT_NAME "alternateName"
|
|
#PREFIX "lib"
|
|
SOVERSION ${qtermwidget_VERSION_MAJOR}
|
|
#SUFFIX "so"
|
|
VERSION ${qtermwidget_VERSION}
|
|
)
|
|
|
|
#| Link Qt4 Libraries
|
|
target_link_libraries ( qtermwidget ${QT_LIBRARIES} )
|
|
|
|
install(TARGETS qtermwidget DESTINATION lib${LIB_SUFFIX})
|
|
install(FILES ${HDRS_DISTRIB} DESTINATION include)
|
|
|
|
# keyboard layouts
|
|
install(DIRECTORY kb-layouts/ DESTINATION ${KB_LAYOUT_DIR} FILES_MATCHING PATTERN "*.keytab" )
|
|
|
|
|
|
#
|
|
# Qt4 designer plugin
|
|
#
|
|
if (BUILD_DESIGNER_PLUGIN)
|
|
message(STATUS "Building Qt designer plugin")
|
|
|
|
include_directories(designer
|
|
${QT_QTDESIGNER_INCLUDE_DIR})
|
|
|
|
set(DESIGNER_SRC designer/qtermwidgetplugin.cpp)
|
|
QT4_WRAP_CPP( DESIGNER_MOC designer/qtermwidgetplugin.h)
|
|
QT4_ADD_RESOURCES( DESIGNER_QRC designer/qtermwidgetplugin.qrc)
|
|
|
|
link_directories(${CMAKE_BINARY_DIR})
|
|
add_library( qtermwidgetplugin SHARED
|
|
${DESIGNER_MOC}
|
|
${DESIGNER_QRC}
|
|
${DESIGNER_SRC}
|
|
)
|
|
|
|
target_link_libraries( qtermwidgetplugin
|
|
${QT_QTCORE_LIBRARY}
|
|
${QT_QTDESIGNER_LIBRARY}
|
|
${QT_QTDESIGNERCOMPONENTS_LIBRARY}
|
|
qtermwidget
|
|
)
|
|
|
|
if (APPLE)
|
|
# this is a must to load the lib correctly
|
|
set_target_properties( qtermwidgetplugin PROPERTIES
|
|
INSTALL_NAME_DIR ${QT_PLUGINS_DIR}/designer )
|
|
endif (APPLE)
|
|
|
|
install( TARGETS qtermwidgetplugin DESTINATION ${QT_PLUGINS_DIR}/designer )
|
|
|
|
endif (BUILD_DESIGNER_PLUGIN)
|