From 1295e1bbca68c9dd73719436319324a75d9a68a1 Mon Sep 17 00:00:00 2001
From: Rex Dieter <rdieter@math.unl.edu>
Date: Sun, 8 Nov 2015 07:26:57 -0600
Subject: [PATCH] support QJSON_SUFFIX, to be parallel-installable
Support full parallel-installability of Qt4/Qt5 builds. Besides,
Qt5 builds are binary incompatible anyway, so should not be using
the same library soname.
---
CMakeLists.txt | 17 +++++++++--------
src/CMakeLists.txt | 16 ++++++++--------
tests/benchmarks/CMakeLists.txt | 2 +-
tests/cmdline_tester/CMakeLists.txt | 2 +-
tests/parser/CMakeLists.txt | 2 +-
tests/qobjecthelper/CMakeLists.txt | 2 +-
tests/scanner/CMakeLists.txt | 2 +-
tests/serializer/CMakeLists.txt | 2 +-
8 files changed, 23 insertions(+), 22 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a7c9e60..64e6ee0 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -51,6 +51,7 @@ IF (Qt5Core_FOUND)
INCLUDE_DIRECTORIES(${Qt5Core_INCLUDE_DIRS})
ADD_DEFINITIONS(${Qt5Core_DEFINITIONS})
SET(PC_Requires "Qt5Core")
+ set(QJSON_SUFFIX "-qt5")
# Tell CMake to run moc when necessary:
set(CMAKE_AUTOMOC ON)
# As moc files are generated in the binary dir, tell CMake
@@ -75,7 +76,7 @@ ENDIF()
SET (LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" )
SET (LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE STRING "Directory where lib will install")
SET (INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "The directory the headers are installed in")
-SET (CMAKECONFIG_INSTALL_DIR "${LIB_INSTALL_DIR}/cmake/${CMAKE_PROJECT_NAME}" CACHE PATH "Directory where to install QJSONConfig.cmake")
+SET (CMAKECONFIG_INSTALL_DIR "${LIB_INSTALL_DIR}/cmake/${CMAKE_PROJECT_NAME}${QJSON_SUFFIX}" CACHE PATH "Directory where to install QJSONConfig.cmake")
set(QJSON_LIB_MAJOR_VERSION "0")
set(QJSON_LIB_MINOR_VERSION "8")
@@ -88,9 +89,9 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" )
# pkg-config
IF (NOT WIN32)
CONFIGURE_FILE (${CMAKE_CURRENT_SOURCE_DIR}/QJson.pc.in
- ${CMAKE_CURRENT_BINARY_DIR}/QJson.pc
+ ${CMAKE_CURRENT_BINARY_DIR}/QJson${QJSON_SUFFIX}.pc
@ONLY)
- INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR}/QJson.pc
+ INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR}/QJson${QJSON_SUFFIX}.pc
DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
ENDIF (NOT WIN32)
@@ -106,7 +107,7 @@ CONFIGURE_FILE(
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
IMMEDIATE @ONLY)
-INSTALL(EXPORT qjson-export DESTINATION ${CMAKECONFIG_INSTALL_DIR} FILE QJSONTargets.cmake)
+INSTALL(EXPORT qjson-export DESTINATION ${CMAKECONFIG_INSTALL_DIR} FILE QJSON${QJSON_SUFFIX}Targets.cmake)
# figure out the relative path from the installed Config.cmake file to the install prefix (which may be at
# runtime different from the chosen CMAKE_INSTALL_PREFIX if under Windows the package was installed anywhere)
@@ -115,13 +116,13 @@ file(RELATIVE_PATH relInstallDir ${CMAKE_INSTALL_PREFIX}/${CMAKECONFIG_INSTALL_D
# cmake-modules
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/QJSONConfig.cmake.in
- ${CMAKE_CURRENT_BINARY_DIR}/QJSONConfig.cmake
+ ${CMAKE_CURRENT_BINARY_DIR}/QJSON${QJSON_SUFFIX}Config.cmake
@ONLY)
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/QJSONConfigVersion.cmake.in
- ${CMAKE_CURRENT_BINARY_DIR}/QJSONConfigVersion.cmake
+ ${CMAKE_CURRENT_BINARY_DIR}/QJSON${QJSON_SUFFIX}ConfigVersion.cmake
@ONLY)
-INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/QJSONConfig.cmake
- ${CMAKE_CURRENT_BINARY_DIR}/QJSONConfigVersion.cmake
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/QJSON${QJSON_SUFFIX}Config.cmake
+ ${CMAKE_CURRENT_BINARY_DIR}/QJSON${QJSON_SUFFIX}ConfigVersion.cmake
DESTINATION "${CMAKECONFIG_INSTALL_DIR}")
ADD_CUSTOM_TARGET(uninstall
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index df560a6..0ae7c40 100755
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -30,36 +30,36 @@ if(WIN32 AND QJSON_BUILD_TESTS AND BUILD_SHARED_LIBS)
add_library(qjson_scanner STATIC json_scanner.cpp)
endif()
-add_library (qjson ${qjson_SRCS} ${qjson_MOC_SRCS} ${qjson_HEADERS})
+add_library (qjson${QJSON_SUFFIX} ${qjson_SRCS} ${qjson_MOC_SRCS} ${qjson_HEADERS})
IF (Qt5Core_FOUND)
- target_link_libraries( qjson ${Qt5Core_LIBRARIES})
+ target_link_libraries( qjson${QJSON_SUFFIX} ${Qt5Core_LIBRARIES})
ELSE()
- target_link_libraries( qjson ${QT_LIBRARIES})
+ target_link_libraries( qjson${QJSON_SUFFIX} ${QT_LIBRARIES})
ENDIF()
if(NOT ANDROID)
- set_target_properties(qjson PROPERTIES
+ set_target_properties(qjson${QJSON_SUFFIX} PROPERTIES
VERSION ${QJSON_LIB_MAJOR_VERSION}.${QJSON_LIB_MINOR_VERSION}.${QJSON_LIB_PATCH_VERSION}
SOVERSION ${QJSON_LIB_MAJOR_VERSION}
)
endif()
if(NOT BUILD_SHARED_LIBS)
- set_target_properties( qjson PROPERTIES COMPILE_DEFINITIONS "QJSON_STATIC")
+ set_target_properties( qjson${QJSON_SUFFIX} PROPERTIES COMPILE_DEFINITIONS "QJSON_STATIC")
endif()
-set_target_properties(qjson PROPERTIES
+set_target_properties(qjson${QJSON_SUFFIX} PROPERTIES
DEFINE_SYMBOL QJSON_MAKEDLL
PUBLIC_HEADER "${qjson_HEADERS}"
FRAMEWORK ${OSX_FRAMEWORK}
)
-INSTALL(TARGETS qjson EXPORT qjson-export
+INSTALL(TARGETS qjson${QJSON_SUFFIX} EXPORT qjson-export
LIBRARY DESTINATION ${LIB_INSTALL_DIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
FRAMEWORK DESTINATION ${FRAMEWORK_INSTALL_DIR}
- PUBLIC_HEADER DESTINATION ${INCLUDE_INSTALL_DIR}/qjson
+ PUBLIC_HEADER DESTINATION ${INCLUDE_INSTALL_DIR}/qjson${QJSON_SUFFIX}
)
if(MSVC)
diff --git a/tests/benchmarks/CMakeLists.txt b/tests/benchmarks/CMakeLists.txt
index 824b56e..9132309 100644
--- a/tests/benchmarks/CMakeLists.txt
+++ b/tests/benchmarks/CMakeLists.txt
@@ -27,7 +27,7 @@ FOREACH(test ${UNIT_TESTS})
${test}
${QT_LIBRARIES}
${TEST_LIBRARIES}
- qjson
+ qjson${QJSON_SUFFIX}
)
if (QJSON_TEST_OUTPUT STREQUAL "xml")
# produce XML output
diff --git a/tests/cmdline_tester/CMakeLists.txt b/tests/cmdline_tester/CMakeLists.txt
index c7cf4cd..12c72cf 100644
--- a/tests/cmdline_tester/CMakeLists.txt
+++ b/tests/cmdline_tester/CMakeLists.txt
@@ -31,5 +31,5 @@ TARGET_LINK_LIBRARIES(
cmdline_tester
${QT_LIBRARIES}
${Qt5Widgets_LIBRARIES}
- qjson
+ qjson${QJSON_SUFFIX}
)
diff --git a/tests/parser/CMakeLists.txt b/tests/parser/CMakeLists.txt
index bd86cee..b280a38 100644
--- a/tests/parser/CMakeLists.txt
+++ b/tests/parser/CMakeLists.txt
@@ -35,7 +35,7 @@ FOREACH(test ${UNIT_TESTS})
${test}
${QT_LIBRARIES}
${TEST_LIBRARIES}
- qjson
+ qjson${QJSON_SUFFIX}
)
if (QJSON_TEST_OUTPUT STREQUAL "xml")
# produce XML output
diff --git a/tests/qobjecthelper/CMakeLists.txt b/tests/qobjecthelper/CMakeLists.txt
index d1636e6..e474ffd 100644
--- a/tests/qobjecthelper/CMakeLists.txt
+++ b/tests/qobjecthelper/CMakeLists.txt
@@ -43,7 +43,7 @@ FOREACH(test ${UNIT_TESTS})
${test}
${QT_LIBRARIES}
${TEST_LIBRARIES}
- qjson
+ qjson${QJSON_SUFFIX}
qjson_test_support
)
if (QJSON_TEST_OUTPUT STREQUAL "xml")
diff --git a/tests/scanner/CMakeLists.txt b/tests/scanner/CMakeLists.txt
index 48c1c18..e263577 100644
--- a/tests/scanner/CMakeLists.txt
+++ b/tests/scanner/CMakeLists.txt
@@ -40,7 +40,7 @@ FOREACH(test ${UNIT_TESTS})
${test}
${QT_LIBRARIES}
${TEST_LIBRARIES}
- qjson
+ qjson${QJSON_SUFFIX}
${QJSON_SCANNER}
)
if (QJSON_TEST_OUTPUT STREQUAL "xml")
diff --git a/tests/serializer/CMakeLists.txt b/tests/serializer/CMakeLists.txt
index c3411bc..7222fc7 100644
--- a/tests/serializer/CMakeLists.txt
+++ b/tests/serializer/CMakeLists.txt
@@ -35,7 +35,7 @@ FOREACH(test ${UNIT_TESTS})
${test}
${QT_LIBRARIES}
${TEST_LIBRARIES}
- qjson
+ qjson${QJSON_SUFFIX}
)
if (QJSON_TEST_OUTPUT STREQUAL "xml")
# produce XML output
--
2.5.0