]> git.openstreetmap.org Git - nominatim.git/commitdiff
Merge remote-tracking branch 'upstream/master'
authorSarah Hoffmann <lonvia@denofr.de>
Sun, 10 May 2020 14:11:20 +0000 (16:11 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Sun, 10 May 2020 14:11:20 +0000 (16:11 +0200)
1  2 
CMakeLists.txt

diff --combined CMakeLists.txt
index 17b5cd7229000864ac9e09003409f4edcc84a428,2596c1041f740a0ebf23c6dbd7c8967a897ca62b..13ee60b363f7d1a023e8e9c84b4c1afc2cace61d
@@@ -28,29 -28,39 +28,39 @@@ add_definitions(-DNOMINATIM_VERSION="${
  
  
  #-----------------------------------------------------------------------------
- #
- #  Find external dependencies
- #
+ #  Configuration
  #-----------------------------------------------------------------------------
  
- set(BUILD_TESTS off CACHE BOOL "Build test suite" FORCE)
- set(WITH_LUA off CACHE BOOL "Build with lua support" FORCE)
- set(ONLY_DOCS off CACHE BOOL "Build documentation only")
+ set(BUILD_IMPORTER on CACHE BOOL "Build everything for importing/updating the database")
+ set(BUILD_API on CACHE BOOL "Build everything for the API server")
+ set(BUILD_MODULE on CACHE BOOL "Build PostgreSQL module")
+ set(BUILD_TESTS on CACHE BOOL "Build test suite")
+ set(BUILD_DOCS on CACHE BOOL "Build documentation")
+ set(BUILD_OSM2PGSQL on CACHE BOOL "Build osm2pgsql (expert only)")
+ #-----------------------------------------------------------------------------
+ #  osm2pgsql (imports/updates only)
+ #-----------------------------------------------------------------------------
  
- if (NOT ONLY_DOCS)
+ if (BUILD_IMPORTER AND BUILD_OSM2PGSQL)
      if (NOT EXISTS "${CMAKE_SOURCE_DIR}/osm2pgsql/CMakeLists.txt")
          message(FATAL_ERROR "The osm2pgsql directory is empty.\
          Did you forget to check out Nominatim recursively?\
          \nTry updating submodules with: git submodule update --init")
      endif()
+     set(BUILD_TESTS_SAVED "${BUILD_TESTS}")
+     set(BUILD_TESTS off)
+     set(WITH_LUA off CACHE BOOL "")
      add_subdirectory(osm2pgsql)
+     set(BUILD_TESTS ${BUILD_TESTS_SAVED})
+ endif()
  
-     unset(PostgreSQL_TYPE_INCLUDE_DIR CACHE)
-     set(PostgreSQL_TYPE_INCLUDE_DIR "/usr/include/")
-     find_package(PostgreSQL REQUIRED)
-     include_directories(${PostgreSQL_INCLUDE_DIRS})
-     link_directories(${PostgreSQL_LIBRARY_DIRS})
  
+ #-----------------------------------------------------------------------------
+ #  python and pyosmium (imports/updates only)
+ #-----------------------------------------------------------------------------
+ if (BUILD_IMPORTER)
      find_package(PythonInterp 3)
  
      find_program(PYOSMIUM pyosmium-get-changes)
          set(PYOSMIUM_PATH "${PYOSMIUM}")
          message(STATUS "Using pyosmium-get-changes at ${PYOSMIUM_PATH}")
      endif()
+ endif()
  
+ #-----------------------------------------------------------------------------
+ # PHP
+ #-----------------------------------------------------------------------------
  
-     find_program(PG_CONFIG pg_config)
-     execute_process(COMMAND ${PG_CONFIG} --pgxs
-                     OUTPUT_VARIABLE PGXS
-                     OUTPUT_STRIP_TRAILING_WHITESPACE)
+ # Setting PHP binary variable as to command line (prevailing) or auto detect
  
-     if (NOT EXISTS "${PGXS}")
-         message(FATAL_ERROR "Postgresql server package not found.")
-     endif()
+ if (NOT PHP_BIN)
+      find_program (PHP_BIN php)
+ endif()
+ # sanity check if PHP binary exists
+ if (NOT EXISTS ${PHP_BIN})
+     message(FATAL_ERROR "PHP binary not found. Install php or provide location with -DPHP_BIN=/path/php ")
+ endif()
+ message (STATUS "Using PHP binary " ${PHP_BIN})
  
-     # Setting PHP binary variable as to command line (prevailing) or auto detect
-     if (NOT PHP_BIN)
-          find_program (PHP_BIN php)
-     endif()
-     # sanity check if PHP binary exists
-     if (NOT EXISTS ${PHP_BIN})
-         message(FATAL_ERROR "PHP binary not found. Install php or provide location with -DPHP_BIN=/path/php ")
-     endif()
-     message (STATUS "Using PHP binary " ${PHP_BIN})
+ #-----------------------------------------------------------------------------
+ # import scripts and utilities (importer only)
+ #-----------------------------------------------------------------------------
+ if (BUILD_IMPORTER)
+    set(CUSTOMSCRIPTS
+        utils/check_import_finished.php
+        utils/country_languages.php
+        utils/importWikipedia.php
+        utils/export.php
+        utils/query.php
+        utils/setup.php
+        utils/specialphrases.php
+        utils/update.php
+        utils/warm.php
+       )
+    foreach (script_source ${CUSTOMSCRIPTS})
+        configure_file(${PROJECT_SOURCE_DIR}/cmake/script.tmpl
+                       ${PROJECT_BINARY_DIR}/${script_source})
+    endforeach()
  endif()
  
  #-----------------------------------------------------------------------------
- #
- # Setup settings and paths
- #
+ # webserver scripts (API only)
  #-----------------------------------------------------------------------------
  
- set(WEBSITESCRIPTS
-     website/deletable.php
-     website/details.php
-     website/hierarchy.php
-     website/lookup.php
-     website/polygons.php
-     website/reverse.php
-     website/search.php
-     website/status.php
- )
- set(WEBSITEFILES
-     403.html
-     509.html
-     crossdomain.xml
-     favicon.ico
-     nominatim.xml
-     robots.txt
-     taginfo.json
- )
- set(CUSTOMSCRIPTS
-     utils/check_import_finished.php
-     utils/country_languages.php
-     utils/export.php
-     utils/query.php
-     utils/setup.php
-     utils/specialphrases.php
-     utils/update.php
-     utils/warm.php
+ if (BUILD_API)
+    set(WEBSITESCRIPTS
+        website/deletable.php
+        website/details.php
+        website/hierarchy.php
+        website/lookup.php
+        website/polygons.php
+        website/reverse.php
+        website/search.php
+        website/status.php
     )
  
- foreach (script_source ${CUSTOMSCRIPTS})
-     configure_file(${PROJECT_SOURCE_DIR}/cmake/script.tmpl
-                    ${PROJECT_BINARY_DIR}/${script_source})
- endforeach()
++   set(WEBSITEFILES
++       403.html
++       509.html
++       crossdomain.xml
++       favicon.ico
++       nominatim.xml
++       robots.txt
++       taginfo.json
++   )
 +
- foreach (script_source ${WEBSITESCRIPTS})
-     configure_file(${PROJECT_SOURCE_DIR}/cmake/website.tmpl
-                    ${PROJECT_BINARY_DIR}/${script_source})
- endforeach()
   foreach (script_source ${WEBSITESCRIPTS})
+        configure_file(${PROJECT_SOURCE_DIR}/cmake/website.tmpl
+                       ${PROJECT_BINARY_DIR}/${script_source})
   endforeach()
  
- foreach (webfile ${WEBSITEFILES})
-     configure_file(${PROJECT_SOURCE_DIR}/website/${webfile}
-                    ${PROJECT_BINARY_DIR}/website/${webfile})
- endforeach()
+    set(WEBPATHS css images js)
  
- configure_file(${PROJECT_SOURCE_DIR}/settings/defaults.php
-                ${PROJECT_BINARY_DIR}/settings/settings.php)
++   foreach (webfile ${WEBSITEFILES})
++       configure_file(${PROJECT_SOURCE_DIR}/website/${webfile}
++                      ${PROJECT_BINARY_DIR}/website/${webfile})
++   endforeach()
 +
- set(WEBPATHS css images js)
+    foreach (wp ${WEBPATHS})
+        execute_process(
+            COMMAND ln -sf ${PROJECT_SOURCE_DIR}/website/${wp} ${PROJECT_BINARY_DIR}/website/
+        )
+    endforeach()
+ endif()
  
- foreach (wp ${WEBPATHS})
-     execute_process(
-         COMMAND ln -sf ${PROJECT_SOURCE_DIR}/website/${wp} ${PROJECT_BINARY_DIR}/website/
-     )
- endforeach()
+ #-----------------------------------------------------------------------------
+ # default settings
+ #-----------------------------------------------------------------------------
  
+ configure_file(${PROJECT_SOURCE_DIR}/settings/defaults.php
+                ${PROJECT_BINARY_DIR}/settings/settings.php)
  
  #-----------------------------------------------------------------------------
- #
  # Tests
- #
  #-----------------------------------------------------------------------------
  
- if (NOT ONLY_DOCS)
+ if (BUILD_TESTS)
      include(CTest)
  
      set(TEST_BDD db osm2pgsql api)
  
      foreach (test ${TEST_BDD})
          add_test(NAME bdd_${test}
-                  COMMAND lettuce features/${test}
-                  WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/tests)
+                  COMMAND behave ${test}
+                  WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/test/bdd)
          set_tests_properties(bdd_${test}
              PROPERTIES ENVIRONMENT "NOMINATIM_DIR=${PROJECT_BINARY_DIR}")
      endforeach()
  
      add_test(NAME php
               COMMAND phpunit ./
-              WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/tests-php)
+              WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/test/php)
+     add_test(NAME phpcs
+              COMMAND phpcs --report-width=120 --colors lib website utils
+              WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
  endif()
  
+ #-----------------------------------------------------------------------------
+ # Postgres module
  #-----------------------------------------------------------------------------
  
- if (NOT ONLY_DOCS)
+ if (BUILD_MODULE)
      add_subdirectory(module)
  endif()
- add_subdirectory(docs)
  
  #-----------------------------------------------------------------------------
+ # Documentation
+ #-----------------------------------------------------------------------------
+ if (BUILD_DOCS)
+    add_subdirectory(docs)
+ endif()