-
Notifications
You must be signed in to change notification settings - Fork 21
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add CMake install target along with build options
Following CMake options have been added with the defaults specified: * -DWITH_PIC=OFF (Compile static library as PIC too) * -DBUILD_STATIC_LIBS=ON * -DBUILD_SHARED_LIBS=ON * -DBUILD_MANUAL_TEST=ON * -DBUILD_MACOS_FATLIB=ON
- Loading branch information
Showing
11 changed files
with
137 additions
and
101 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,41 +1,93 @@ | ||
cmake_minimum_required(VERSION 2.8.4) | ||
project(XInputSimulator) | ||
set(PROJECT_VERSION 0.1) | ||
|
||
option(WITH_PIC "Compile static library as position-independent code" OFF) # Shared library is always PIC | ||
option(BUILD_STATIC_LIBS "Build the static library" ON) | ||
option(BUILD_SHARED_LIBS "Build the shared library" ON) | ||
option(BUILD_MACOS_FATLIB "Build Fat library for both i386 and x86_64 on macOS" ON) | ||
option(BUILD_MANUAL_TEST "Build the test application" ON) | ||
|
||
if(BUILD_MACOS_FATLIB) | ||
if (CMAKE_OSX_ARCHITECTURES) | ||
message(FATAL_ERROR "User supplied -DCMAKE_OSX_ARCHITECTURES overrides BUILD_MACOS_FATLIB=ON") | ||
else() | ||
SET(CMAKE_OSX_ARCHITECTURES "x86_64;i386") | ||
endif() | ||
endif() | ||
|
||
# Linux | ||
if(UNIX AND NOT APPLE) | ||
find_library(X_11 X11) | ||
find_library(X_TST Xtst) | ||
set(EXTRA_LIBS ${X_11} ${X_TST}) | ||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") | ||
set(PLATFORM_SOURCE_FILES xinputsimulatorimpllinux.cpp xinputsimulatorimpllinux.h) | ||
find_library(X_11 X11) | ||
find_library(X_TST Xtst) | ||
set(EXTRA_LIBS ${X_11} ${X_TST}) | ||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") | ||
# Not nice, but I don't know how to have CMake generate all dependencies | ||
# One could run ldd(1) on the .so and extract all deps... | ||
set(PKG_CONFIG_EXTRA_LIBS "-lX11 -lXtst -lXext -lxcb -lXau -pthread -lXdmcp -lrt") | ||
set(PLATFORM_SOURCE_FILES xinputsimulatorimpllinux.cpp xinputsimulatorimpllinux.h) | ||
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") | ||
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) | ||
endif(UNIX AND NOT APPLE) | ||
|
||
# Apple | ||
if(APPLE) | ||
find_library(APP_SERVICES ApplicationServices) | ||
find_library(CARBON Carbon) | ||
find_library(CORE_FOUNDATION CoreFoundation) | ||
set(EXTRA_LIBS ${APP_SERVICES_LIBRARY} ${CARBON} ${CORE_FOUNDATION}) | ||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") | ||
set(PLATFORM_SOURCE_FILES xinputsimulatorimplmacos.cpp xinputsimulatorimplmacos.h) | ||
set(EXTRA_LIBS ${CARBON} ${CORE_FOUNDATION}) | ||
set(PKG_CONFIG_EXTRA_LIBS "-framework CoreFoundation -framework Carbon") | ||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") | ||
set(PLATFORM_SOURCE_FILES xinputsimulatorimplmacos.cpp xinputsimulatorimplmacos.h) | ||
set(CMAKE_MACOSX_RPATH ON) | ||
endif(APPLE) | ||
|
||
# Windows | ||
if(WIN32) | ||
#find_library(USER_32 User32.Lib) | ||
#set(EXTRA_LIBS ${USER_32}) | ||
set(PLATFORM_SOURCE_FILES xinputsimulatorimplwin.cpp xinputsimulatorimplwin.h) | ||
endif(WIN32) | ||
|
||
set(SOURCE_FILES | ||
main.cpp | ||
notimplementedexception.cpp | ||
notimplementedexception.h | ||
xinputsimulator.cpp | ||
xinputsimulator.h | ||
xinputsimulatorimpl.cpp | ||
xinputsimulatorimpl.h | ||
${PLATFORM_SOURCE_FILES}) | ||
|
||
add_executable(XInputSimulator ${SOURCE_FILES}) | ||
target_link_libraries(XInputSimulator ${EXTRA_LIBS} ) | ||
|
||
# Windows | ||
if(WIN32) | ||
#find_library(USER_32 User32.Lib) | ||
#set(EXTRA_LIBS ${USER_32}) | ||
set(PLATFORM_SOURCE_FILES xinputsimulatorimplwin.cpp xinputsimulatorimplwin.h) | ||
endif(WIN32) | ||
|
||
set(SOURCE_FILES | ||
notimplementedexception.cpp | ||
xinputsimulator.cpp | ||
xinputsimulator.h | ||
xinputsimulatorimpl.cpp | ||
xinputsimulatorimpl.h | ||
${PLATFORM_SOURCE_FILES}) | ||
|
||
link_libraries(${EXTRA_LIBS} ) | ||
configure_file(XInputSimulator.pc.in XInputSimulator.pc @ONLY) | ||
|
||
if (BUILD_SHARED_LIBS) | ||
add_library(XInputSimulator SHARED ${SOURCE_FILES}) | ||
set_property(TARGET XInputSimulator PROPERTY POSITION_INDEPENDENT_CODE ON) | ||
endif() | ||
if (BUILD_STATIC_LIBS) | ||
add_library(XInputSimulator_static STATIC ${SOURCE_FILES}) | ||
if (WITH_PIC) | ||
set_property(TARGET XInputSimulator_static PROPERTY POSITION_INDEPENDENT_CODE ON) | ||
endif() | ||
if(NOT WIN32) # Keep lib*.(a|dll) name, but avoid *.lib files overwriting each other on Windows | ||
set_target_properties(XInputSimulator_static PROPERTIES OUTPUT_NAME XInputSimulator) | ||
endif() | ||
endif() | ||
|
||
|
||
|
||
IF (NOT (BUILD_STATIC_LIBS OR BUILD_SHARED_LIBS)) | ||
MESSAGE(FATAL_ERROR "Both -DBUILD_SHARED_LIBS=OFF and -DBUILD_STATIC_LIBS=OFF supplied. Nothing to do...") | ||
ENDIF() | ||
|
||
if (BUILD_MANUAL_TEST) | ||
add_executable(XInputSimulator_bin main.cpp) | ||
target_link_libraries(XInputSimulator_bin XInputSimulator) | ||
set_target_properties(XInputSimulator_bin PROPERTIES OUTPUT_NAME "XInputSimulator") | ||
endif() | ||
|
||
install(FILES ${CMAKE_BINARY_DIR}/XInputSimulator.pc DESTINATION lib/pkgconfig) | ||
install(TARGETS XInputSimulator XInputSimulator_static | ||
LIBRARY DESTINATION lib | ||
ARCHIVE DESTINATION lib) | ||
install(FILES xinputsimulator.h DESTINATION include) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
prefix=@CMAKE_INSTALL_PREFIX@ | ||
exec_prefix=${prefix} | ||
libdir=${exec_prefix}/lib | ||
includedir=${prefix}/include | ||
|
||
Name: XInputSimulator | ||
Description: Cross-Platform Simulator mouse and keyboard input | ||
URL: https://github.com/pythoneer/XInputSimulator | ||
Version: @PROJECT_VERSION@ | ||
Requires: | ||
Libs: -L${libdir} -lXInputSimulator | ||
Libs.private: @PKG_CONFIG_EXTRA_LIBS@ | ||
Cflags: -I${includedir} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters