aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt57
-rw-r--r--cmake/Makefile.am1
-rw-r--r--cmake/ProjReadme.cmake28
-rwxr-xr-xtravis/install.sh14
4 files changed, 99 insertions, 1 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 67a8d2e1..bb1fdf93 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -333,3 +333,60 @@ if(UNIX OR MINGW)
${CMAKE_CURRENT_BINARY_DIR}/proj.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
endif()
+
+################################################################################
+# "make dist" workalike
+################################################################################
+
+set(CPACK_SOURCE_GENERATOR "TGZ;ZIP")
+set(CPACK_SOURCE_PACKAGE_FILE_NAME "proj-${PROJ_VERSION}")
+set(CPACK_PACKAGE_VENDOR "OSGeo")
+set(CPACK_PACKAGE_VERSION_MAJOR ${PROJ_VERSION_MAJOR})
+set(CPACK_PACKAGE_VERSION_MINOR ${PROJ_VERSION_MINOR})
+set(CPACK_PACKAGE_VERSION_PATCH ${PROJ_VERSION_PATCH})
+set(CPACK_VERBATIM_VARIABLES TRUE)
+set(CPACK_SOURCE_IGNORE_FILES
+ /\\..* # any file/directory starting with .
+ /.*\\.yml
+ /.*\\.gz
+ /.*\\.zip
+ /.*build.*/
+ \\.deps
+ /autogen\\.sh
+ /autom4te\\.cache
+ /CODE_OF_CONDUCT.md
+ /CONTRIBUTING.md
+ /Dockerfile
+ /docs/
+ /Doxyfile
+ /examples/
+ /HOWTO-RELEASE
+ /m4/lt*
+ /m4/libtool*
+ /media/
+ /schemas/
+ /scripts/
+ /test/fuzzers/
+ /test/gigs/.*gie\\.failing
+ /test/postinstall/
+ /travis/
+ ${PROJECT_BINARY_DIR}
+)
+
+include(CPack)
+
+# Simplify README.md to README
+add_custom_target(README
+ COMMAND ${CMAKE_COMMAND}
+ -D PROJ_SOURCE_DIR=${PROJ_SOURCE_DIR}
+ -P ${PROJ_SOURCE_DIR}/cmake/ProjReadme.cmake
+)
+
+get_property(_is_multi_config_generator GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
+if(NOT _is_multi_config_generator)
+ add_custom_target(dist
+ COMMAND ${CMAKE_MAKE_PROGRAM} package_source
+ DEPENDS README
+ )
+ message(STATUS "PROJ: Configured 'dist' target")
+endif()
diff --git a/cmake/Makefile.am b/cmake/Makefile.am
index 1ecd784e..cdad1ff8 100644
--- a/cmake/Makefile.am
+++ b/cmake/Makefile.am
@@ -4,6 +4,7 @@ EXTRA_DIST = CMakeLists.txt \
proj_config.cmake.in \
ProjConfig.cmake \
ProjMac.cmake \
+ ProjReadme.cmake \
ProjTest.cmake \
ProjVersion.cmake \
policies.cmake \
diff --git a/cmake/ProjReadme.cmake b/cmake/ProjReadme.cmake
new file mode 100644
index 00000000..7071a381
--- /dev/null
+++ b/cmake/ProjReadme.cmake
@@ -0,0 +1,28 @@
+#
+# CMake script to modify README.md to create simpler README file
+#
+# This is equivalent to: fgrep -v "[!["
+#
+
+set(SourceFile "${PROJ_SOURCE_DIR}/README.md")
+set(DestFile "${PROJ_SOURCE_DIR}/README")
+
+# Below is based on https://stackoverflow.com/a/30227627
+
+file(READ ${SourceFile} Contents)
+
+# Set the variable "Esc" to the ASCII value 27 as a special escape value
+string(ASCII 27 Esc)
+
+# Turn the contents into a list of strings, each ending with Esc
+string(REGEX REPLACE "\n" "${Esc};" ContentsAsList "${Contents}")
+
+unset(ModifiedContents)
+foreach(Line ${ContentsAsList})
+ if(NOT "${Line}" MATCHES "\\[!\\[")
+ # Swap the appended Esc character back out in favour of a line feed
+ string(REGEX REPLACE "${Esc}" "\n" Line ${Line})
+ set(ModifiedContents "${ModifiedContents}${Line}")
+ endif()
+endforeach()
+file(WRITE ${DestFile} ${ModifiedContents})
diff --git a/travis/install.sh b/travis/install.sh
index ea271d92..a07e7784 100755
--- a/travis/install.sh
+++ b/travis/install.sh
@@ -28,7 +28,19 @@ make dist-all >/dev/null
TAR_FILENAME=`ls *.tar.gz`
TAR_DIRECTORY=`basename $TAR_FILENAME .tar.gz`
tar xvzf $TAR_FILENAME
-cd $TAR_DIRECTORY
+cd ..
+
+# compare with CMake's dist
+mkdir build_cmake
+cd build_cmake
+cmake -DBUILD_TESTING=OFF ..
+make dist
+tar xzf $TAR_FILENAME
+cd ..
+diff -qr build_autoconf/$TAR_DIRECTORY build_cmake/$TAR_DIRECTORY || true
+
+# continue build from autoconf
+cd build_autoconf/$TAR_DIRECTORY
# There's a nasty #define CS in a Solaris system header. Avoid being caught about that again
CXXFLAGS="-DCS=do_not_use_CS_for_solaris_compat $CXXFLAGS"