Skip to content

Commit

Permalink
Ensure targets have consistent build options
Browse files Browse the repository at this point in the history
  • Loading branch information
hasselmm committed Sep 7, 2024
1 parent 32098a9 commit f0220f3
Show file tree
Hide file tree
Showing 6 changed files with 48 additions and 50 deletions.
27 changes: 27 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ if (CMAKE_CXX_COMPILER_ID MATCHES GNU|Clang)
-Werror=switch -Werror=uninitialized -Werror=unused)
endif()

set(QNC_COMPILE_DEFINITIONS
-DQT_DISABLE_DEPRECATED_BEFORE=0x050f00
-DQT_NO_CAST_FROM_ASCII=1
-DQT_NO_URL_CAST_FROM_STRING=1)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
Expand Down Expand Up @@ -47,6 +52,28 @@ else()
endif()
endif()

function(qnc_add_library NAME)
qt_add_library("${NAME}" ${ARGN})

target_include_directories("${NAME}" PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_compile_definitions("${NAME}" PRIVATE ${QNC_COMPILE_DEFINITIONS})
target_compile_options ("${NAME}" PRIVATE ${QNC_COMPILE_OPTIONS})
endfunction()

function(qnc_add_executable NAME)
cmake_parse_arguments(EXECUTABLE "" "TYPE" "" ${ARGN})
qt_add_executable("${NAME}" ${EXECUTABLE_UNPARSED_ARGUMENTS})

target_compile_definitions("${NAME}" PRIVATE ${QNC_COMPILE_DEFINITIONS})
target_compile_options ("${NAME}" PRIVATE ${QNC_COMPILE_OPTIONS})

set_target_properties(
"${NAME}" PROPERTIES
MACOSX_BUNDLE "de.taschenorakel.qnc.${NAME}"
XCODE_PRODUCT_TYPE "com.apple.product-type.bundle.${EXECUTABLE_TYPE}"
)
endfunction()

add_custom_target(metadata SOURCES LICENSE README.md)

add_subdirectory(.github)
Expand Down
9 changes: 1 addition & 8 deletions http/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,4 @@
if (NOT IOS) # FIXME Figure out code signing on Github
add_executable(HttpCompressingServer compressingserver.cpp)
target_compile_options(HttpCompressingServer PRIVATE ${QNC_COMPILE_OPTIONS})
qnc_add_executable(HttpCompressingServer TYPE tool compressingserver.cpp)
target_link_libraries(HttpCompressingServer PUBLIC Qt::Network QtNetworkCrumbs::Zlib)

set_target_properties(
HttpCompressingServer PROPERTIES
MACOSX_BUNDLE "de.taschenorakel.qnc.HttpCompressingServer"
XCODE_PRODUCT_TYPE "com.apple.product-type.bundle.unit-test"
)
endif()
21 changes: 3 additions & 18 deletions mdns/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,35 +1,20 @@
add_library(
qnc_add_library(
MDNSResolver STATIC
mdnsmessage.cpp
mdnsmessage.h
mdnsresolver.cpp
mdnsresolver.h
)

target_include_directories(MDNSResolver PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_compile_options(MDNSResolver PRIVATE ${QNC_COMPILE_OPTIONS})
target_link_libraries(MDNSResolver PUBLIC QtNetworkCrumbs)

target_compile_definitions(
MDNSResolver PRIVATE
-DQT_DISABLE_DEPRECATED_BEFORE=0x050f00
-DQT_NO_CAST_FROM_ASCII=1
-DQT_NO_URL_CAST_FROM_STRING=1
)

if (NOT IOS) # FIXME Figure out code signing on Github
add_executable(MDNSResolverDemo mdnsresolverdemo.cpp)
qnc_add_executable(MDNSResolverDemo TYPE tool mdnsresolverdemo.cpp)
target_link_libraries(MDNSResolverDemo PRIVATE MDNSResolver)

set_target_properties(
MDNSResolverDemo PROPERTIES
MACOSX_BUNDLE "de.taschenorakel.qnc.MDNSResolverDemo"
XCODE_PRODUCT_TYPE "com.apple.product-type.bundle.unit-test"
)
endif()

#if (WIN32)
# add_executable(WinDNSTest windnstest.cpp)
# target_compile_definitions(WinDNSTest PRIVATE -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP)
# qnc_add_executable(WinDNSTest TYPE tool windnstest.cpp)
# target_link_libraries(WinDNSTest dnsapi.lib)
#endif()
3 changes: 2 additions & 1 deletion mdns/mdnsresolverdemo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ class ResolverDemo : public QCoreApplication

int run()
{
const auto timeout = QCommandLineOption{{"t", "timeout"}, tr("Timeout after which to quit"), tr("SECONDS")};
const auto timeout = QCommandLineOption{{"t"_L1, "timeout"_L1},
tr("Timeout after which to quit"), tr("SECONDS")};

auto commandLine = QCommandLineParser{};
commandLine.addOption(timeout);
Expand Down
12 changes: 1 addition & 11 deletions qnc/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,17 +1,7 @@
add_library(
qnc_add_library(
QtNetworkCrumbs STATIC
qncliterals.h
qncliterals.cpp
)

target_include_directories(QtNetworkCrumbs PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_compile_options(QtNetworkCrumbs PRIVATE ${QNC_COMPILE_OPTIONS})
target_link_libraries(QtNetworkCrumbs PUBLIC Qt::Network)

target_compile_definitions(
QtNetworkCrumbs PRIVATE
-DQT_DISABLE_DEPRECATED_BEFORE=0x050f00
-DQT_NO_CAST_FROM_ASCII=1
-DQT_NO_URL_CAST_FROM_STRING=1
)

26 changes: 14 additions & 12 deletions tests/auto/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
if (MINGW)
get_filename_component(CXX_RUNTIME_BINDIR ${CMAKE_CXX_COMPILER} DIRECTORY)
configure_file(test-runner.cmd.in test-runner.cmd NEWLINE_STYLE WIN32)
set(TEST_RUNNER ${CMAKE_CURRENT_BINARY_DIR}/test-runner.cmd)
set(TEST_RUNNER "${CMAKE_CURRENT_BINARY_DIR}/test-runner.cmd")
else()
unset(TEST_RUNNER)
endif()

function(add_testcase NAME)
add_executable(${NAME} ${NAME}.cpp)
target_compile_options(${NAME} PRIVATE ${QNC_COMPILE_OPTIONS})
target_link_libraries(${NAME} PRIVATE MDNSResolver Qt::Test)
function(add_testcase SOURCE_FILENAME) # [SOURCES...]
cmake_parse_arguments(TESTCASE "" "NAME" "LIBRARIES;SOURCES" ${ARGN})

set_target_properties(
${NAME} PROPERTIES
MACOSX_BUNDLE "de.taschenorakel.qnc.${NAME}"
XCODE_PRODUCT_TYPE "com.apple.product-type.bundle.unit-test")
if (NOT TESTCASE_NAME)
cmake_path(GET SOURCE_FILENAME STEM TESTCASE_NAME)
endif()

add_test(NAME ${NAME} COMMAND ${TEST_RUNNER} $<TARGET_FILE:${NAME}>)
list(PREPEND TESTCASE_SOURCES "${SOURCE_FILENAME}")
list(APPEND TESTCASE_SOURCES ${TESTCASE_UNPARSED_ARGUMENTS})

qnc_add_executable("${TESTCASE_NAME}" TYPE "unit-test" ${TESTCASE_SOURCES})
target_link_libraries("${TESTCASE_NAME}" PRIVATE Qt::Test ${TESTCASE_LIBRARIES})
add_test(NAME "${TESTCASE_NAME}" COMMAND ${TEST_RUNNER} "$<TARGET_FILE:${TESTCASE_NAME}>")
endfunction()

add_testcase(tst_mdnsmessages)
add_testcase(tst_mdnsresolver)
add_testcase(tst_mdnsmessages.cpp LIBRARIES MDNSResolver)
add_testcase(tst_mdnsresolver.cpp LIBRARIES MDNSResolver)

0 comments on commit f0220f3

Please sign in to comment.