From: Fletcher T. Penney Date: Sat, 25 Feb 2017 21:02:04 +0000 (-0500) Subject: ADDED: Add support for Swift Package Maker; CHANGED: Restructure source directory X-Git-Tag: 0.4.0-b^2~26 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3d7935f34f9cabae48b7bebc692b610bdee74d4d;p=multimarkdown ADDED: Add support for Swift Package Maker; CHANGED: Restructure source directory --- 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