diff --git a/3party/jansson/CMakeLists.txt b/3party/jansson/CMakeLists.txt new file mode 100644 index 0000000000..741cf615c8 --- /dev/null +++ b/3party/jansson/CMakeLists.txt @@ -0,0 +1,39 @@ +cmake_minimum_required(VERSION 3.2) + +project(jansson C CXX) + +include_directories(src ../../) + +add_compile_options( + "-Wall" + "-Wno-unused-function" +) + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + + +set( + SRC + jansson_handle.cpp + jansson_handle.hpp + myjansson.cpp + myjansson.hpp + src/dump.c + src/error.c + src/hashtable.c + src/hashtable.h + src/jansson.h + src/jansson_config.h + src/jansson_private.h + src/load.c + src/memory.c + src/strbuffer.c + src/strbuffer.h + src/strconv.c + src/utf.c + src/utf.h + src/value.c +) + +add_library(jansson ${SRC}) +set_target_properties(jansson PROPERTIES ENABLE_EXPORTS ON) diff --git a/3party/minizip/CMakeLists.txt b/3party/minizip/CMakeLists.txt index cbcee9962e..98a51deda2 100644 --- a/3party/minizip/CMakeLists.txt +++ b/3party/minizip/CMakeLists.txt @@ -4,7 +4,6 @@ project(minizip C CXX) add_compile_options( "-Wall" - "-pedantic" ) add_definitions(-DUSE_FILE32ZPI -DNOCRYPT) diff --git a/3party/succinct/CMakeLists.txt b/3party/succinct/CMakeLists.txt index 6ad024e8ac..fcfb913054 100644 --- a/3party/succinct/CMakeLists.txt +++ b/3party/succinct/CMakeLists.txt @@ -4,7 +4,6 @@ project(succinct C CXX) add_compile_options( "-Wall" - "-pedantic" "-std=c++11" ) diff --git a/3party/tomcrypt/CMakeLists.txt b/3party/tomcrypt/CMakeLists.txt index fd1c084b0f..f3c34bbcfc 100644 --- a/3party/tomcrypt/CMakeLists.txt +++ b/3party/tomcrypt/CMakeLists.txt @@ -4,7 +4,6 @@ project(tomcrypt C CXX) add_compile_options( "-Wall" - "-pedantic" ) add_definitions(-DLTC_NO_ROLC) diff --git a/CMakeLists.txt b/CMakeLists.txt index d22bcd2013..5957922f05 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,24 +2,42 @@ cmake_minimum_required(VERSION 3.2) project(omim C CXX) -add_subdirectory(3party/minizip) -add_subdirectory(3party/succinct) -add_subdirectory(3party/tomcrypt) +set(CMAKE_POSITION_INDEPENDENT_CODE ON) -add_compile_options( - "-Wall" - "-std=c++11" -) +# Add third-party subdirectories + + +# Find installed packages find_package(Threads) + +find_package(Qt5Core REQUIRED) +find_package(Qt5Network REQUIRED) +find_package(Qt5Gui REQUIRED) +find_package(Qt5Widgets REQUIRED) + +if (APPLE) + find_library(APL_SYSCON SystemConfiguration) +endif() + find_library(LIBZ NAMES z) if (LIBZ STREQUAL "LIBZ-NOTFOUND") message(FATAL_ERROR "Failed to find libz library.") endif() + get_filename_component(PROJECT_SOURCE_DIR . ABSOLUTE) -include_directories(${CMAKE_HOME_DIRECTORY} "${CMAKE_HOME_DIRECTORY}/3party/boost") +include_directories( + ${CMAKE_HOME_DIRECTORY} + ${Qt5Core_LIBRARIES} + ${Qt5Core_INCLUDE_DIRS} + ${Qt5Network_LIBRARIES} + ${Qt5Network_INCLUDE_DIRS} + "${CMAKE_HOME_DIRECTORY}/3party/boost" +) + +# Set environment variables set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}) set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}) @@ -36,6 +54,45 @@ if ("${NO_TESTS}" STREQUAL "") set(NO_TESTS FALSE) endif() +# End of setting environment variables + +# Set target platform: + +function(omim_set_platform_var PLATFORM_VAR pattern) + set(${PLATFORM_VAR} FALSE PARENT_SCOPE) + + if ("${PLATFORM}" STREQUAL "") + if (${ARGN}) + list(GET ARGN 0 default_case) + if (${default_case}) + set(${PLATFORM_VAR} TRUE PARENT_SCOPE) + message("Setting ${PLATFORM_VAR} to true") + endif() + endif() + else() + message("Platform: ${PLATFORM}") + if (${PLATFORM} MATCHES ${pattern}) + set(${PLATFORM_VAR} TRUE PARENT_SCOPE) + endif() + endif() +endfunction() + +omim_set_platform_var(PL_IPHONE "iphone-.*") +omim_set_platform_var(PL_ANDROID "android-.*") +omim_set_platform_var(PL_MAC "macx-.*" ${APPLE}) +omim_set_platform_var(PL_WIN "win32-.*" ${WIN32}) + +if (${UNIX} AND (NOT ${PL_MAC})) + set(LINUX_DETECTED TRUE) +else() + set(LINUX_DETECTED FALSE) +endif() + +omim_set_platform_var(PL_LINUX "linux-.*" ${LINUX_DETECTED}) + +# End of setting the target platform + +# Functions for using in subdirectories function(omim_add_library library) add_library(${library} ${ARGN}) @@ -62,9 +119,22 @@ function(omim_link_libraries target) endif() endfunction() +# End of functions for subdirectories + +# Include subdirectories +add_subdirectory(3party/minizip) +add_subdirectory(3party/succinct) +add_subdirectory(3party/tomcrypt) +add_subdirectory(3party/jansson) + +add_compile_options( + "-Wall" + "-std=c++11" +) add_subdirectory(base) add_subdirectory(coding) #add_subdirectory(editor) add_subdirectory(geometry) +add_subdirectory(platform) #add_subdirectory(storage) diff --git a/base/CMakeLists.txt b/base/CMakeLists.txt index 5b02583869..32c4b83408 100644 --- a/base/CMakeLists.txt +++ b/base/CMakeLists.txt @@ -1,5 +1,3 @@ -add_subdirectory(base_tests) - set( SRC SRC_FIRST.hpp @@ -80,3 +78,5 @@ set( ) omim_add_library(base ${SRC}) + +add_subdirectory(base_tests) diff --git a/base/base.hpp b/base/base.hpp index 26e1289f1d..550dd538d6 100644 --- a/base/base.hpp +++ b/base/base.hpp @@ -2,14 +2,13 @@ #include "std/cstdint.hpp" -#if defined(DEBUG) || defined(_DEBUG) || defined(NRELEASE) || defined(QT_DEBUG) +#if defined(DEBUG) || defined(_DEBUG) || defined(NRELEASE) #define MY_DEBUG_DEFINED 1 #else #define MY_DEBUG_DEFINED 0 #endif -#if defined(RELEASE) || defined(_RELEASE) || defined(NDEBUG) || defined(_NDEBUG) || \ - defined(QT_NO_DEBUG) +#if defined(RELEASE) || defined(_RELEASE) || defined(NDEBUG) || defined(_NDEBUG) #define MY_RELEASE_DEFINED 1 #else #define MY_RELEASE_DEFINED 0 diff --git a/platform/CMakeLists.txt b/platform/CMakeLists.txt new file mode 100644 index 0000000000..498dee1666 --- /dev/null +++ b/platform/CMakeLists.txt @@ -0,0 +1,108 @@ +include_directories(${CMAKE_HOME_DIRECTORY}/3party/jansson/src ${PROJECT_SOURCE_DIR}/platform) + +set( + SRC + chunks_download_strategy.cpp + chunks_download_strategy.hpp + constants.hpp + country_defines.cpp + country_defines.hpp + country_file.cpp + country_file.hpp + file_logging.cpp + file_logging.hpp + get_text_by_id.cpp + get_text_by_id.hpp + http_request.cpp + http_request.hpp + http_thread_callback.hpp + local_country_file.cpp + local_country_file.hpp + local_country_file_utils.cpp + local_country_file_utils.hpp + location.hpp + measurement_utils.cpp + measurement_utils.hpp + mwm_traits.cpp + mwm_traits.hpp + mwm_version.cpp + mwm_version.hpp + platform.cpp + platform.hpp + preferred_languages.cpp + preferred_languages.hpp + servers_list.cpp + servers_list.hpp + settings.cpp + settings.hpp +) + + +if(${PL_IPHONE}) + set( + SRC + ${SRC} + http_thread_apple.h + http_thread_apple.mm + platform_ios.mm + platform_unix_impl.cpp + platform_unix_impl.hpp + ) +elseif(${PL_ANDROID}) + set( + SRC + ${SRC} + platform_android.cpp + platform_unix_impl.cpp + platform_unix_impl.hpp + ) +else() # neither iPhone nor Android + set( + SRC + ${SRC} + location_service.cpp + location_service.hpp + platform_qt.cpp + wifi_info.hpp + wifi_location_service.cpp + ) + + if (${PL_WIN}) + set( + SRC + ${SRC} + http_thread_qt.cpp + http_thread_qt.hpp + platform_win.cpp + wifi_info_windows.cpp + ) + elseif(${PL_MAC}) + set( + SRC + ${SRC} + apple_location_service.mm + http_thread_apple.h + http_thread_apple.mm + platform_mac.mm + platform_unix_impl.cpp + platform_unix_impl.hpp + ) + elseif(${PL_LINUX}) + set( + SRC + ${SRC} + http_thread_qt.cpp + http_thread_qt.hpp + platform_linux.cpp + platform_unix_impl.cpp + platform_unix_impl.hpp + ) + endif() +endif() + + +add_subdirectory(platform_tests_support) + +omim_add_library(platform ${SRC}) + +add_subdirectory(platform_tests) diff --git a/platform/platform_tests/CMakeLists.txt b/platform/platform_tests/CMakeLists.txt new file mode 100644 index 0000000000..5a664e20a3 --- /dev/null +++ b/platform/platform_tests/CMakeLists.txt @@ -0,0 +1,33 @@ +add_definitions(-DOMIM_UNIT_TEST_WITH_QT_EVENT_LOOP) +include_directories(${APL_SYSCON}) + +set( + SRC + apk_test.cpp + country_file_tests.cpp + get_text_by_id_tests.cpp + jansson_test.cpp + language_test.cpp + local_country_file_tests.cpp + location_test.cpp + measurement_tests.cpp + mwm_version_test.cpp + platform_test.cpp +) + +omim_add_test(platform_tests ${SRC}) +omim_link_libraries(platform_tests platform_tests_support platform coding base jansson minizip tomcrypt ${LIBZ}) + + +if (${PL_MAC}) + target_link_libraries(platform_tests ${Qt5Widgets_LIBRARIES} + "-framework Cocoa" + "-framework IOKit" + "-framework QuartzCore" + "-framework SystemConfiguration" + ) +endif() + +if (${PL_WIN} OR ${PL_LINUX}) + target_link_libraries(platform_tests ${Qt5Network_LIBRARIES}) +endif() diff --git a/platform/platform_tests_support/CMakeLists.txt b/platform/platform_tests_support/CMakeLists.txt new file mode 100644 index 0000000000..9fe444f1d7 --- /dev/null +++ b/platform/platform_tests_support/CMakeLists.txt @@ -0,0 +1,13 @@ +set( + SRC + scoped_dir.cpp + scoped_dir.hpp + scoped_file.cpp + scoped_file.hpp + scoped_mwm.cpp + scoped_mwm.hpp + writable_dir_changer.cpp + writable_dir_changer.hpp +) + +omim_add_library(platform_tests_support ${SRC})