From 3d7935f34f9cabae48b7bebc692b610bdee74d4d Mon Sep 17 00:00:00 2001 From: "Fletcher T. Penney" Date: Sat, 25 Feb 2017 16:02:04 -0500 Subject: [PATCH] ADDED: Add support for Swift Package Maker; CHANGED: Restructure source directory --- .gitignore | 4 + CMakeLists.txt | 85 ++++++++++--------- Makefile | 10 +++ Package.swift | 9 ++ {src => Sources/libMultiMarkdown}/beamer.c | 0 {src => Sources/libMultiMarkdown}/beamer.h | 0 {src => Sources/libMultiMarkdown}/char.c | 0 {src => Sources/libMultiMarkdown}/char.h | 0 .../libMultiMarkdown}/char_lookup.c | 0 {src => Sources/libMultiMarkdown}/d_string.c | 0 {src => Sources/libMultiMarkdown}/html.c | 0 {src => Sources/libMultiMarkdown}/html.h | 0 {src => Sources/libMultiMarkdown}/i18n.h | 0 .../libMultiMarkdown/include}/d_string.h | 0 .../include}/libMultiMarkdown.h | 0 .../libMultiMarkdown/include}/token.h | 0 {src => Sources/libMultiMarkdown}/latex.c | 0 {src => Sources/libMultiMarkdown}/latex.h | 0 {src => Sources/libMultiMarkdown}/lexer.c | 0 {src => Sources/libMultiMarkdown}/lexer.h | 0 {src => Sources/libMultiMarkdown}/lexer.re | 0 {src => Sources/libMultiMarkdown}/memoir.c | 0 {src => Sources/libMultiMarkdown}/memoir.h | 0 {src => Sources/libMultiMarkdown}/mmd.c | 0 {src => Sources/libMultiMarkdown}/mmd.h | 0 .../libMultiMarkdown}/object_pool.c | 0 .../libMultiMarkdown}/object_pool.h | 0 {src => Sources/libMultiMarkdown}/parser.c | 0 {src => Sources/libMultiMarkdown}/parser.h | 0 {src => Sources/libMultiMarkdown}/parser.out | 0 {src => Sources/libMultiMarkdown}/parser.y | 0 {src => Sources/libMultiMarkdown}/rng.c | 0 {src => Sources/libMultiMarkdown}/scanners.c | 0 {src => Sources/libMultiMarkdown}/scanners.h | 0 {src => Sources/libMultiMarkdown}/scanners.re | 0 {src => Sources/libMultiMarkdown}/stack.c | 0 {src => Sources/libMultiMarkdown}/stack.h | 0 {src => Sources/libMultiMarkdown}/token.c | 0 .../libMultiMarkdown}/token_pairs.c | 0 .../libMultiMarkdown}/token_pairs.h | 0 .../libMultiMarkdown}/transclude.c | 0 .../libMultiMarkdown}/transclude.h | 0 {src => Sources/libMultiMarkdown}/uthash.h | 0 {src => Sources/libMultiMarkdown}/writer.c | 0 {src => Sources/libMultiMarkdown}/writer.h | 0 Sources/mmd-swift/main.swift | 25 ++++++ {src => Sources/multimarkdown}/argtable3.c | 0 {src => Sources/multimarkdown}/argtable3.h | 0 {src => Sources/multimarkdown}/main.c | 0 49 files changed, 91 insertions(+), 42 deletions(-) create mode 100644 Package.swift rename {src => Sources/libMultiMarkdown}/beamer.c (100%) rename {src => Sources/libMultiMarkdown}/beamer.h (100%) rename {src => Sources/libMultiMarkdown}/char.c (100%) rename {src => Sources/libMultiMarkdown}/char.h (100%) rename {src => Sources/libMultiMarkdown}/char_lookup.c (100%) rename {src => Sources/libMultiMarkdown}/d_string.c (100%) rename {src => Sources/libMultiMarkdown}/html.c (100%) rename {src => Sources/libMultiMarkdown}/html.h (100%) rename {src => Sources/libMultiMarkdown}/i18n.h (100%) rename {src => Sources/libMultiMarkdown/include}/d_string.h (100%) rename {src => Sources/libMultiMarkdown/include}/libMultiMarkdown.h (100%) rename {src => Sources/libMultiMarkdown/include}/token.h (100%) rename {src => Sources/libMultiMarkdown}/latex.c (100%) rename {src => Sources/libMultiMarkdown}/latex.h (100%) rename {src => Sources/libMultiMarkdown}/lexer.c (100%) rename {src => Sources/libMultiMarkdown}/lexer.h (100%) rename {src => Sources/libMultiMarkdown}/lexer.re (100%) rename {src => Sources/libMultiMarkdown}/memoir.c (100%) rename {src => Sources/libMultiMarkdown}/memoir.h (100%) rename {src => Sources/libMultiMarkdown}/mmd.c (100%) rename {src => Sources/libMultiMarkdown}/mmd.h (100%) rename {src => Sources/libMultiMarkdown}/object_pool.c (100%) rename {src => Sources/libMultiMarkdown}/object_pool.h (100%) rename {src => Sources/libMultiMarkdown}/parser.c (100%) rename {src => Sources/libMultiMarkdown}/parser.h (100%) rename {src => Sources/libMultiMarkdown}/parser.out (100%) rename {src => Sources/libMultiMarkdown}/parser.y (100%) rename {src => Sources/libMultiMarkdown}/rng.c (100%) rename {src => Sources/libMultiMarkdown}/scanners.c (100%) rename {src => Sources/libMultiMarkdown}/scanners.h (100%) rename {src => Sources/libMultiMarkdown}/scanners.re (100%) rename {src => Sources/libMultiMarkdown}/stack.c (100%) rename {src => Sources/libMultiMarkdown}/stack.h (100%) rename {src => Sources/libMultiMarkdown}/token.c (100%) rename {src => Sources/libMultiMarkdown}/token_pairs.c (100%) rename {src => Sources/libMultiMarkdown}/token_pairs.h (100%) rename {src => Sources/libMultiMarkdown}/transclude.c (100%) rename {src => Sources/libMultiMarkdown}/transclude.h (100%) rename {src => Sources/libMultiMarkdown}/uthash.h (100%) rename {src => Sources/libMultiMarkdown}/writer.c (100%) rename {src => Sources/libMultiMarkdown}/writer.h (100%) create mode 100644 Sources/mmd-swift/main.swift rename {src => Sources/multimarkdown}/argtable3.c (100%) rename {src => Sources/multimarkdown}/argtable3.h (100%) rename {src => Sources/multimarkdown}/main.c (100%) diff --git a/.gitignore b/.gitignore index ff8594a..cab1836 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,7 @@ test/parser_test.c test/parser_test.h test/parser_test.out test/a.out + +/.build +/Packages +/mmd-swift.xcodeproj \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 211f591..b1d22b0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,7 +40,9 @@ project (${My_Project_Title}) # ================= # Search for included files here -include_directories( ${PROJECT_SOURCE_DIR}/src ) +include_directories( ${PROJECT_SOURCE_DIR}/Sources/libMultiMarkdown) +include_directories( ${PROJECT_SOURCE_DIR}/Sources/libMultiMarkdown/include) +include_directories( ${PROJECT_SOURCE_DIR}/Sources/multimarkdown) include_directories( ${PROJECT_SOURCE_DIR}/test ) include_directories(${PROJECT_BINARY_DIR}) @@ -170,46 +172,44 @@ configure_file ( # src_files are the primary files, and will be included in doxygen documentation set(src_files - src/argtable3.c - src/beamer.c - src/char.c - src/d_string.c - src/html.c - src/latex.c - src/lexer.c - src/memoir.c - src/mmd.c - src/object_pool.c - src/parser.c - src/rng.c - src/scanners.c - src/stack.c - src/token.c - src/token_pairs.c - src/transclude.c - src/writer.c + Sources/libMultiMarkdown/beamer.c + Sources/libMultiMarkdown/char.c + Sources/libMultiMarkdown/d_string.c + Sources/libMultiMarkdown/html.c + Sources/libMultiMarkdown/latex.c + Sources/libMultiMarkdown/lexer.c + Sources/libMultiMarkdown/memoir.c + Sources/libMultiMarkdown/mmd.c + Sources/libMultiMarkdown/object_pool.c + Sources/libMultiMarkdown/parser.c + Sources/libMultiMarkdown/rng.c + Sources/libMultiMarkdown/scanners.c + Sources/libMultiMarkdown/stack.c + Sources/libMultiMarkdown/token.c + Sources/libMultiMarkdown/token_pairs.c + Sources/libMultiMarkdown/transclude.c + Sources/libMultiMarkdown/writer.c ) # Primary header files, also for doxygen documentation set(header_files - src/argtable3.h - src/beamer.h - src/char.h - src/d_string.h - src/html.h - src/latex.h - src/lexer.h - src/libMultiMarkdown.h - src/memoir.h - src/mmd.h - src/object_pool.h - src/scanners.h - src/stack.h - src/token.h - src/token_pairs.h - src/transclude.h - src/uthash.h - src/writer.h + Sources/libMultiMarkdown/beamer.h + Sources/libMultiMarkdown/char.h + Sources/libMultiMarkdown/include/d_string.h + Sources/libMultiMarkdown/html.h + Sources/libMultiMarkdown/latex.h + Sources/libMultiMarkdown/lexer.h + Sources/libMultiMarkdown/include/libMultiMarkdown.h + Sources/libMultiMarkdown/memoir.h + Sources/libMultiMarkdown/mmd.h + Sources/libMultiMarkdown/object_pool.h + Sources/libMultiMarkdown/scanners.h + Sources/libMultiMarkdown/stack.h + Sources/libMultiMarkdown/include/token.h + Sources/libMultiMarkdown/token_pairs.h + Sources/libMultiMarkdown/transclude.h + Sources/libMultiMarkdown/uthash.h + Sources/libMultiMarkdown/writer.h ) set (scripts @@ -294,7 +294,7 @@ else() # Process source files to look for tests to run add_custom_command ( OUTPUT ${PROJECT_BINARY_DIR}/AllTests.c - COMMAND sh ${PROJECT_SOURCE_DIR}/test/make-tests.sh ${PROJECT_SOURCE_DIR}/src/*.c > ${PROJECT_BINARY_DIR}/AllTests.c + COMMAND sh ${PROJECT_SOURCE_DIR}/test/make-tests.sh ${PROJECT_SOURCE_DIR}/Sources/libMultiMarkdown/*.c > ${PROJECT_BINARY_DIR}/AllTests.c ) enable_testing() @@ -392,8 +392,8 @@ else () endif () -ADD_PUBLIC_HEADER(libMultiMarkdown src/libMultiMarkdown.h) -ADD_PUBLIC_HEADER(libMultiMarkdown src/d_string.h) +ADD_PUBLIC_HEADER(libMultiMarkdown Sources/libMultiMarkdown/include/libMultiMarkdown.h) +ADD_PUBLIC_HEADER(libMultiMarkdown Sources/libMultiMarkdown/include/d_string.h) # remove the extra "lib" from "liblibFOO" SET_TARGET_PROPERTIES(libMultiMarkdown PROPERTIES PREFIX "") @@ -401,8 +401,9 @@ SET_TARGET_PROPERTIES(libMultiMarkdown PROPERTIES PREFIX "") # Create a command-line app? # if (NOT DEFINED TEST) add_executable(multimarkdown - src/d_string.c - src/main.c + Sources/libMultiMarkdown/d_string.c + Sources/multimarkdown/main.c + Sources/multimarkdown/argtable3.c ) # # Link the library to the app? diff --git a/Makefile b/Makefile index 5be146f..3c9d966 100644 --- a/Makefile +++ b/Makefile @@ -49,6 +49,16 @@ xcode-debug: $(XCODE_DEBUG_BUILD_DIR) cd $(XCODE_DEBUG_BUILD_DIR); \ cmake -G Xcode -DTEST=1 .. +# Build Swift debug variant +.PHONY : swift +swift: $(BUILD_DIR) + swift build -c debug --build-path ${BUILD_DIR} -Xcc -fbracket-depth=264 + +# Build Swift release variant +.PHONY : swift-release +swift-release: $(BUILD_DIR) + swift build -c release --build-path ${BUILD_DIR} -Xcc -fbracket-depth=264 -Xcc -DNDEBUG=1 + # Cross-compile for Windows using MinGW on *nix .PHONY : windows windows: $(BUILD_DIR) diff --git a/Package.swift b/Package.swift new file mode 100644 index 0000000..c042eac --- /dev/null +++ b/Package.swift @@ -0,0 +1,9 @@ +import PackageDescription + +let package = Package( + name: "mmd-swift", + targets: [ + Target(name: "mmd-swift", dependencies: ["libMultiMarkdown"]) + ], + exclude: ["tests", "Tests", "Sources/multimarkdown"] +) diff --git a/src/beamer.c b/Sources/libMultiMarkdown/beamer.c similarity index 100% rename from src/beamer.c rename to Sources/libMultiMarkdown/beamer.c diff --git a/src/beamer.h b/Sources/libMultiMarkdown/beamer.h similarity index 100% rename from src/beamer.h rename to Sources/libMultiMarkdown/beamer.h diff --git a/src/char.c b/Sources/libMultiMarkdown/char.c similarity index 100% rename from src/char.c rename to Sources/libMultiMarkdown/char.c diff --git a/src/char.h b/Sources/libMultiMarkdown/char.h similarity index 100% rename from src/char.h rename to Sources/libMultiMarkdown/char.h diff --git a/src/char_lookup.c b/Sources/libMultiMarkdown/char_lookup.c similarity index 100% rename from src/char_lookup.c rename to Sources/libMultiMarkdown/char_lookup.c diff --git a/src/d_string.c b/Sources/libMultiMarkdown/d_string.c similarity index 100% rename from src/d_string.c rename to Sources/libMultiMarkdown/d_string.c diff --git a/src/html.c b/Sources/libMultiMarkdown/html.c similarity index 100% rename from src/html.c rename to Sources/libMultiMarkdown/html.c diff --git a/src/html.h b/Sources/libMultiMarkdown/html.h similarity index 100% rename from src/html.h rename to Sources/libMultiMarkdown/html.h diff --git a/src/i18n.h b/Sources/libMultiMarkdown/i18n.h similarity index 100% rename from src/i18n.h rename to Sources/libMultiMarkdown/i18n.h diff --git a/src/d_string.h b/Sources/libMultiMarkdown/include/d_string.h similarity index 100% rename from src/d_string.h rename to Sources/libMultiMarkdown/include/d_string.h diff --git a/src/libMultiMarkdown.h b/Sources/libMultiMarkdown/include/libMultiMarkdown.h similarity index 100% rename from src/libMultiMarkdown.h rename to Sources/libMultiMarkdown/include/libMultiMarkdown.h diff --git a/src/token.h b/Sources/libMultiMarkdown/include/token.h similarity index 100% rename from src/token.h rename to Sources/libMultiMarkdown/include/token.h diff --git a/src/latex.c b/Sources/libMultiMarkdown/latex.c similarity index 100% rename from src/latex.c rename to Sources/libMultiMarkdown/latex.c diff --git a/src/latex.h b/Sources/libMultiMarkdown/latex.h similarity index 100% rename from src/latex.h rename to Sources/libMultiMarkdown/latex.h diff --git a/src/lexer.c b/Sources/libMultiMarkdown/lexer.c similarity index 100% rename from src/lexer.c rename to Sources/libMultiMarkdown/lexer.c diff --git a/src/lexer.h b/Sources/libMultiMarkdown/lexer.h similarity index 100% rename from src/lexer.h rename to Sources/libMultiMarkdown/lexer.h diff --git a/src/lexer.re b/Sources/libMultiMarkdown/lexer.re similarity index 100% rename from src/lexer.re rename to Sources/libMultiMarkdown/lexer.re diff --git a/src/memoir.c b/Sources/libMultiMarkdown/memoir.c similarity index 100% rename from src/memoir.c rename to Sources/libMultiMarkdown/memoir.c diff --git a/src/memoir.h b/Sources/libMultiMarkdown/memoir.h similarity index 100% rename from src/memoir.h rename to Sources/libMultiMarkdown/memoir.h diff --git a/src/mmd.c b/Sources/libMultiMarkdown/mmd.c similarity index 100% rename from src/mmd.c rename to Sources/libMultiMarkdown/mmd.c diff --git a/src/mmd.h b/Sources/libMultiMarkdown/mmd.h similarity index 100% rename from src/mmd.h rename to Sources/libMultiMarkdown/mmd.h diff --git a/src/object_pool.c b/Sources/libMultiMarkdown/object_pool.c similarity index 100% rename from src/object_pool.c rename to Sources/libMultiMarkdown/object_pool.c diff --git a/src/object_pool.h b/Sources/libMultiMarkdown/object_pool.h similarity index 100% rename from src/object_pool.h rename to Sources/libMultiMarkdown/object_pool.h diff --git a/src/parser.c b/Sources/libMultiMarkdown/parser.c similarity index 100% rename from src/parser.c rename to Sources/libMultiMarkdown/parser.c diff --git a/src/parser.h b/Sources/libMultiMarkdown/parser.h similarity index 100% rename from src/parser.h rename to Sources/libMultiMarkdown/parser.h diff --git a/src/parser.out b/Sources/libMultiMarkdown/parser.out similarity index 100% rename from src/parser.out rename to Sources/libMultiMarkdown/parser.out diff --git a/src/parser.y b/Sources/libMultiMarkdown/parser.y similarity index 100% rename from src/parser.y rename to Sources/libMultiMarkdown/parser.y diff --git a/src/rng.c b/Sources/libMultiMarkdown/rng.c similarity index 100% rename from src/rng.c rename to Sources/libMultiMarkdown/rng.c diff --git a/src/scanners.c b/Sources/libMultiMarkdown/scanners.c similarity index 100% rename from src/scanners.c rename to Sources/libMultiMarkdown/scanners.c diff --git a/src/scanners.h b/Sources/libMultiMarkdown/scanners.h similarity index 100% rename from src/scanners.h rename to Sources/libMultiMarkdown/scanners.h diff --git a/src/scanners.re b/Sources/libMultiMarkdown/scanners.re similarity index 100% rename from src/scanners.re rename to Sources/libMultiMarkdown/scanners.re diff --git a/src/stack.c b/Sources/libMultiMarkdown/stack.c similarity index 100% rename from src/stack.c rename to Sources/libMultiMarkdown/stack.c diff --git a/src/stack.h b/Sources/libMultiMarkdown/stack.h similarity index 100% rename from src/stack.h rename to Sources/libMultiMarkdown/stack.h diff --git a/src/token.c b/Sources/libMultiMarkdown/token.c similarity index 100% rename from src/token.c rename to Sources/libMultiMarkdown/token.c diff --git a/src/token_pairs.c b/Sources/libMultiMarkdown/token_pairs.c similarity index 100% rename from src/token_pairs.c rename to Sources/libMultiMarkdown/token_pairs.c diff --git a/src/token_pairs.h b/Sources/libMultiMarkdown/token_pairs.h similarity index 100% rename from src/token_pairs.h rename to Sources/libMultiMarkdown/token_pairs.h diff --git a/src/transclude.c b/Sources/libMultiMarkdown/transclude.c similarity index 100% rename from src/transclude.c rename to Sources/libMultiMarkdown/transclude.c diff --git a/src/transclude.h b/Sources/libMultiMarkdown/transclude.h similarity index 100% rename from src/transclude.h rename to Sources/libMultiMarkdown/transclude.h diff --git a/src/uthash.h b/Sources/libMultiMarkdown/uthash.h similarity index 100% rename from src/uthash.h rename to Sources/libMultiMarkdown/uthash.h diff --git a/src/writer.c b/Sources/libMultiMarkdown/writer.c similarity index 100% rename from src/writer.c rename to Sources/libMultiMarkdown/writer.c diff --git a/src/writer.h b/Sources/libMultiMarkdown/writer.h similarity index 100% rename from src/writer.h rename to Sources/libMultiMarkdown/writer.h diff --git a/Sources/mmd-swift/main.swift b/Sources/mmd-swift/main.swift new file mode 100644 index 0000000..f8c3781 --- /dev/null +++ b/Sources/mmd-swift/main.swift @@ -0,0 +1,25 @@ +/// Trivial example of using libMultiMarkdown within a Swift +/// project. Needs a lot of work to be functional. + +import libMultiMarkdown + + +token_pool_init() + + +let text = "This is a *test* string" +let output = d_string_new("") +let format = Int16(FORMAT_HTML.rawValue) + +let e = mmd_engine_create_with_string(text, 0) + + +mmd_engine_parse_string(e) +mmd_export_token_tree(output, e, format) +token_pool_drain() + + +let str = String(cString: output!.pointee.str!) +print(str) + +token_pool_free() diff --git a/src/argtable3.c b/Sources/multimarkdown/argtable3.c similarity index 100% rename from src/argtable3.c rename to Sources/multimarkdown/argtable3.c diff --git a/src/argtable3.h b/Sources/multimarkdown/argtable3.h similarity index 100% rename from src/argtable3.h rename to Sources/multimarkdown/argtable3.h diff --git a/src/main.c b/Sources/multimarkdown/main.c similarity index 100% rename from src/main.c rename to Sources/multimarkdown/main.c -- 2.50.1