Initial Commit

This commit is contained in:
Jordan Sherer
2018-02-08 21:28:33 -05:00
commit 678c1d3966
14352 changed files with 3176737 additions and 0 deletions
+37
View File
@@ -0,0 +1,37 @@
set (SAMPLE_FILES
FT8/170709_135615.wav
ISCAT/ISCAT-A/VK7MO_110401_235515.wav
ISCAT/ISCAT-B/K0AWU_100714_115000.wav
JT4/JT4A/DF2ZC_070926_040700.WAV
JT4/JT4F/OK1KIR_141105_175700.WAV
JT65/JT65B/DL7UAE_040308_002400.wav
JT9+JT65/130610_2343.wav
JT9/130418_1742.wav
MSK144/160915_113100.wav
MSK144/160915_113230.wav
QRA64/QRA64C/161113_0111.wav
WSPR/150426_0918.wav
)
set (contents_file_name contents_${WSJTX_VERSION_MAJOR}.${WSJTX_VERSION_MINOR}.json)
set (contents_file ${CMAKE_CURRENT_BINARY_DIR}/${contents_file_name})
set (web_tree ${CMAKE_CURRENT_BINARY_DIR}/web)
set_source_files_properties (${contents_file} PROPERTIES GENERATED ON)
add_custom_command (
OUTPUT ${contents_file}
COMMAND ${CMAKE_COMMAND} ARGS -Dcontents_file=${contents_file} -DFILES="${SAMPLE_FILES}" -DDEST=${CMAKE_CURRENT_BINARY_DIR} -P make_contents.cmake
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS ${SAMPLE_FILES} make_contents.cmake
)
find_program (RSYNC_EXECUTABLE rsync)
add_custom_command (
OUTPUT upload.timestamp
COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${contents_file} ${web_tree}/samples/${contents_file_name}
COMMAND ${RSYNC_EXECUTABLE} ARGS -avz --progress ${CMAKE_CURRENT_BINARY_DIR}/web/samples ${PROJECT_SAMPLES_UPLOAD_DEST}
COMMAND ${CMAKE_COMMAND} ARGS -E touch upload.timestamp
DEPENDS ${contents_file}
COMMENT "Uploading WSJT-X samples to web server"
)
add_custom_target (upload-samples DEPENDS upload.timestamp)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+20
View File
@@ -0,0 +1,20 @@
This directory contains the resources necessary to build the WSJT-X
samples database. The CMake build script creates a directory structure
ready for upload to the project samples web or ftp file server. The
CMake script also defines a build target 'upload-samples' which
uploads the sample database to the the destination defined by the
project CMake variable PROJECT_SAMPLES_UPLOAD_DEST (defined in the
project root CMake script). A suitably authorized user may use this
target to update the server with the latest samples.
The samples database includes a JSON contents file for each
major/minor version combination of WSJT-X, this file is generated by
CMake and should not be manually edited.
To add new samples simply add the files here and update the
SAMPLE_FILES list variable in the CMakeLists.txt file in this
directory. Sample files must be checked into source control. A
meaningful directory structure is advisable, the same directory
structure will be replicated by the WSJT-X sample downloader dialog
allowing WSJT-X users to easily identify wath each sample file
contains.
Binary file not shown.
+107
View File
@@ -0,0 +1,107 @@
string (REPLACE " " ";" FILES ${FILES}) # make back into a list
function(JOIN VALUES GLUE OUTPUT)
string (REGEX REPLACE "([^\\]|^);" "\\1${GLUE}" _TMP_STR "${VALUES}")
string (REGEX REPLACE "[\\](.)" "\\1" _TMP_STR "${_TMP_STR}") #fixes escaping
set (${OUTPUT} "${_TMP_STR}" PARENT_SCOPE)
endfunction()
function (indent)
foreach (temp RANGE ${level})
file (APPEND ${contents_file} " ")
endforeach ()
endfunction ()
function (end_entry)
file (APPEND ${contents_file} "\n")
set(first 0 PARENT_SCOPE)
math (EXPR level "${level} - 1")
indent ()
file (APPEND ${contents_file} "]\n")
math (EXPR level "${level} - 2")
indent ()
file (APPEND ${contents_file} "}")
string (FIND "${dirs}" "${cwd}" pos)
set (level ${level} PARENT_SCOPE)
endfunction ()
file (WRITE ${contents_file} "[")
set (cwd)
set (level 0)
set (first 1)
list (SORT FILES)
foreach (file IN LISTS FILES)
string (REGEX MATCHALL "[^/]*/" dirs "${file}")
string (REPLACE "/" "" dirs "${dirs}")
string (REGEX MATCH "[^/]*$" name "${file}")
string (FIND "${dirs}" "${cwd}" pos)
list (LENGTH cwd cwd_count)
if (${pos} EQUAL 0)
# same root
while (${cwd_count} GREATER 0)
list (REMOVE_AT dirs 0)
math (EXPR cwd_count "${cwd_count} - 1")
endwhile ()
else ()
# reduce cwd until matched
while ((NOT ${pos} EQUAL 0) AND ${cwd_count} GREATER 0)
math (EXPR cwd_count "${cwd_count} - 1")
list (REMOVE_AT cwd ${cwd_count})
string (FIND "${dirs}" "${cwd}" pos)
end_entry ()
endwhile ()
# back to same root
while (${cwd_count} GREATER 0)
list (REMOVE_AT dirs 0)
math (EXPR cwd_count "${cwd_count} - 1")
endwhile ()
endif ()
list (LENGTH cwd cwd_count)
list (LENGTH dirs path_count)
while (${path_count} GREATER 0)
list (GET dirs 0 dir)
list (APPEND cwd "${dir}")
list (REMOVE_AT dirs 0)
if (${first})
file (APPEND ${contents_file} "\n")
set (first 0)
else ()
file (APPEND ${contents_file} ",\n")
endif ()
indent ()
file (APPEND ${contents_file} "{\n")
math (EXPR level "${level} + 1")
indent ()
file (APPEND ${contents_file} "\"type\": \"directory\",\n")
indent ()
file (APPEND ${contents_file} "\"name\": \"${dir}\",\n")
indent ()
file (APPEND ${contents_file} "\"entries\": [")
set (first 1)
math (EXPR level "${level} + 2")
math (EXPR path_count "${path_count} - 1")
endwhile ()
JOIN ("${cwd}" "/" path)
file (COPY "${file}" DESTINATION "${DEST}/web/samples/${path}")
if (${first})
file (APPEND ${contents_file} "\n")
set (first 0)
else ()
file (APPEND ${contents_file} ",\n")
endif ()
indent ()
file (APPEND ${contents_file} "{\n")
math (EXPR level "${level} + 1")
indent ()
file (APPEND ${contents_file} "\"type\": \"file\",\n")
indent ()
file (APPEND ${contents_file} "\"name\": \"${name}\"\n")
math (EXPR level "${level} - 1")
indent ()
file (APPEND ${contents_file} "}")
set (first 0)
endforeach ()
if (${level} GREATER 1)
end_entry ()
endif ()
file (APPEND ${contents_file} "\n]\n")