Skip to content

feat: add partial support for WASI #75

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: gfm
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -42,7 +42,6 @@ include(FindAsan)
if(CMARK_THREADING)
set(THREADS_PREFER_PTHREAD_FLAG YES)
include(FindThreads)
add_compile_definitions(CMARK_THREADING)
endif()
include(GNUInstallDirs)

@@ -76,6 +75,8 @@ endif()
add_compile_definitions($<$<CONFIG:Debug>:CMARK_DEBUG_NODES>)
# FIXME(compnerd) why do we not use `!defined(NDEBUG)`?
add_compile_definitions($<$<CONFIG:Debug>:DEBUG>)
# Use CMake's generated headers instead of the Swift package prebuilt ones
add_compile_definitions(CMARK_USE_CMAKE_HEADERS)

add_compile_options($<$<AND:$<CONFIG:PROFILE>,$<COMPILE_LANGUAGE:C>>:-pg>)

6 changes: 2 additions & 4 deletions Package.swift
Original file line number Diff line number Diff line change
@@ -11,12 +11,9 @@ import PackageDescription
// link time.
let cSettings: [CSetting] = [
.define("CMARK_GFM_STATIC_DEFINE", .when(platforms: [.windows])),
.define("CMARK_THREADING"),
]
#else
let cSettings: [CSetting] = [
.define("CMARK_THREADING"),
]
let cSettings: [CSetting] = []
#endif

let package = Package(
@@ -41,6 +38,7 @@ let package = Package(
exclude: [
"scanners.re",
"libcmark-gfm.pc.in",
"config.h.in",
"CMakeLists.txt",
],
cSettings: cSettings
4 changes: 2 additions & 2 deletions api_test/harness.c
Original file line number Diff line number Diff line change
@@ -54,7 +54,7 @@ void INT_EQ(test_batch_runner *runner, int got, int expected, const char *msg,
}
}

#ifndef _WIN32
#if !defined(_WIN32) && !defined(__wasi__)
#include <unistd.h>

static char *write_tmp(char const *header, char const *data) {
@@ -79,7 +79,7 @@ void STR_EQ(test_batch_runner *runner, const char *got, const char *expected,
va_end(ap);

if (!cond) {
#ifndef _WIN32
#if !defined(_WIN32) && !defined(__wasi__)
char *got_fn = write_tmp("actual\n", got);
char *expected_fn = write_tmp("expected\n", expected);
char buf[1024];
1 change: 1 addition & 0 deletions bin/main.c
Original file line number Diff line number Diff line change
@@ -4,6 +4,7 @@
#include <stdlib.h>
#include <string.h>

#include "cmark-gfm_config.h"
#include "cmark-gfm.h"
#include "node.h"
#include "cmark-gfm-extension_api.h"
4 changes: 4 additions & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in
${CMAKE_CURRENT_BINARY_DIR}/config.h)

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libcmark-gfm.pc.in
${CMAKE_CURRENT_BINARY_DIR}/libcmark-gfm.pc @ONLY)

@@ -68,6 +71,7 @@ install(FILES
include/chunk.h
include/cmark_ctype.h
include/cmark-gfm.h
include/cmark-gfm_config.h
include/cmark-gfm-extension_api.h
include/cmark-gfm_version.h
include/export.h
1 change: 1 addition & 0 deletions src/blocks.c
Original file line number Diff line number Diff line change
@@ -13,6 +13,7 @@

#include "cmark_ctype.h"
#include "syntax_extension.h"
#include "cmark-gfm_config.h"
#include "parser.h"
#include "cmark-gfm.h"
#include "node.h"
1 change: 1 addition & 0 deletions src/buffer.c
Original file line number Diff line number Diff line change
@@ -7,6 +7,7 @@
#include <stdlib.h>
#include <string.h>

#include "cmark-gfm_config.h"
#include "cmark_ctype.h"
#include "buffer.h"

1 change: 1 addition & 0 deletions src/commonmark.c
Original file line number Diff line number Diff line change
@@ -5,6 +5,7 @@
#include <stdlib.h>
#include <string.h>

#include "cmark-gfm_config.h"
#include "cmark-gfm.h"
#include "node.h"
#include "buffer.h"
14 changes: 14 additions & 0 deletions src/config.h.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#ifndef CMARK_CONFIG_H
#define CMARK_CONFIG_H

#ifdef __cplusplus
extern "C" {
#endif

#cmakedefine01 CMARK_THREADING

#ifdef __cplusplus
}
#endif

#endif
1 change: 1 addition & 0 deletions src/html.c
Original file line number Diff line number Diff line change
@@ -5,6 +5,7 @@
#include <string.h>

#include "cmark_ctype.h"
#include "cmark-gfm_config.h"
#include "cmark-gfm.h"
#include "houdini.h"
#include "scanners.h"
1 change: 1 addition & 0 deletions src/include/buffer.h
Original file line number Diff line number Diff line change
@@ -6,6 +6,7 @@
#include <string.h>
#include <limits.h>
#include <stdint.h>
#include "cmark-gfm_config.h"
#include "cmark-gfm.h"

#ifdef __cplusplus
29 changes: 29 additions & 0 deletions src/include/cmark-gfm_config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#ifndef CMARK_CONFIG_H
#define CMARK_CONFIG_H

#ifdef CMARK_USE_CMAKE_HEADERS
// if the CMake config header exists, use that instead of this Swift package prebuilt one
// we need to undefine the header guard, since config.h uses the same one
#undef CMARK_CONFIG_H
#include "config.h"
#else

#ifdef __cplusplus
extern "C" {
#endif

#ifndef CMARK_THREADING
#if defined(__wasi__) && !defined(_REENTRANT)
#define CMARK_THREADING 0
#else
#define CMARK_THREADING 1
#endif
#endif

#ifdef __cplusplus
}
#endif

#endif /* not CMARK_USE_CMAKE_HEADERS */

#endif /* not CMARK_CONFIG_H */
2 changes: 1 addition & 1 deletion src/include/houdini.h
Original file line number Diff line number Diff line change
@@ -2,7 +2,7 @@
#define CMARK_HOUDINI_H

#include <stdint.h>

#include "cmark-gfm_config.h"
#include "buffer.h"

#ifdef __cplusplus
1 change: 1 addition & 0 deletions src/include/inlines.h
Original file line number Diff line number Diff line change
@@ -4,6 +4,7 @@
#include <stdbool.h>
#include <stdlib.h>

#include "cmark-gfm_config.h"
#include "references.h"

#ifdef __cplusplus
1 change: 1 addition & 0 deletions src/include/module.modulemap
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
module cmark_gfm {
header "cmark-gfm.h"
header "cmark-gfm_config.h"
header "cmark-gfm-extension_api.h"
header "buffer.h"
header "chunk.h"
6 changes: 4 additions & 2 deletions src/include/mutex.h
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
#ifndef CMARK_MUTEX_H
#define CMARK_MUTEX_H

#include "cmark-gfm_config.h"

#include <stdbool.h>

#ifdef CMARK_THREADING
#if CMARK_THREADING

#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) || defined(__wasi__)
#include <unistd.h>
#endif

1 change: 1 addition & 0 deletions src/include/syntax_extension.h
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@

#include "cmark-gfm.h"
#include "cmark-gfm-extension_api.h"
#include "cmark-gfm_config.h"

#include <stdbool.h>

1 change: 1 addition & 0 deletions src/inlines.c
Original file line number Diff line number Diff line change
@@ -4,6 +4,7 @@
#include <string.h>

#include "cmark_ctype.h"
#include "cmark-gfm_config.h"
#include "node.h"
#include "parser.h"
#include "references.h"
1 change: 1 addition & 0 deletions src/iterator.c
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@
#include <stdbool.h>
#include <stdlib.h>

#include "cmark-gfm_config.h"
#include "node.h"
#include "cmark-gfm.h"
#include "iterator.h"
1 change: 1 addition & 0 deletions src/latex.c
Original file line number Diff line number Diff line change
@@ -4,6 +4,7 @@
#include <stdlib.h>
#include <string.h>

#include "cmark-gfm_config.h"
#include "cmark-gfm.h"
#include "node.h"
#include "buffer.h"
1 change: 1 addition & 0 deletions src/man.c
Original file line number Diff line number Diff line change
@@ -4,6 +4,7 @@
#include <stdlib.h>
#include <string.h>

#include "cmark-gfm_config.h"
#include "cmark-gfm.h"
#include "node.h"
#include "buffer.h"
1 change: 1 addition & 0 deletions src/node.c
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@
#include <stdlib.h>
#include <string.h>

#include "cmark-gfm_config.h"
#include "mutex.h"
#include "node.h"
#include "syntax_extension.h"
1 change: 1 addition & 0 deletions src/registry.c
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@
#include <stdlib.h>
#include <string.h>

#include "cmark-gfm_config.h"
#include "cmark-gfm.h"
#include "mutex.h"
#include "syntax_extension.h"
1 change: 1 addition & 0 deletions src/xml.c
Original file line number Diff line number Diff line change
@@ -4,6 +4,7 @@
#include <stdlib.h>
#include <string.h>

#include "cmark-gfm_config.h"
#include "cmark-gfm.h"
#include "node.h"
#include "buffer.h"