Skip to content

Commit

Permalink
Making gcc snippets in docs/abi/ more copy-paste friendly.
Browse files Browse the repository at this point in the history
By using environment variables for the `-L` (lib) and `-I` (include)
arguments, the entire `gcc` invocation can be copy-pasted without
modification so long as `INCLUDE_DIR` and `LIB_DIR` are set correctly.

This **does not** solve the issue of the `$ ` and `> ` prefix on each line,
which is another annoying impediment to copy-paste-ability.
  • Loading branch information
dhermes committed Jan 20, 2020
1 parent 602deed commit 0766649
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 43 deletions.
96 changes: 60 additions & 36 deletions docs/abi/curve.rst
Expand Up @@ -88,12 +88,14 @@ Procedures
:options: +NORMALIZE_WHITESPACE
:windows-skip:
$ INCLUDE_DIR=.../libbezier-release/usr/include
$ LIB_DIR=.../libbezier-release/usr/lib
$ gcc \
> -o example \
> example_compute_length.c \
> -I .../libbezier-release/usr/include \
> -L .../libbezier-release/usr/lib \
> -Wl,-rpath,.../libbezier-release/usr/lib \
> -I "${INCLUDE_DIR}" \
> -L "${LIB_DIR}" \
> -Wl,-rpath,"${LIB_DIR}" \
> -lbezier \
> -lm -lgfortran
$ ./example
Expand Down Expand Up @@ -164,12 +166,14 @@ Procedures
:options: +NORMALIZE_WHITESPACE
:windows-skip:
$ INCLUDE_DIR=.../libbezier-release/usr/include
$ LIB_DIR=.../libbezier-release/usr/lib
$ gcc \
> -o example \
> example_elevate_nodes_curve.c \
> -I .../libbezier-release/usr/include \
> -L .../libbezier-release/usr/lib \
> -Wl,-rpath,.../libbezier-release/usr/lib \
> -I "${INCLUDE_DIR}" \
> -L "${LIB_DIR}" \
> -Wl,-rpath,"${LIB_DIR}" \
> -lbezier \
> -lm -lgfortran
$ ./example
Expand Down Expand Up @@ -279,12 +283,14 @@ Procedures
:options: +NORMALIZE_WHITESPACE
:windows-skip:
$ INCLUDE_DIR=.../libbezier-release/usr/include
$ LIB_DIR=.../libbezier-release/usr/lib
$ gcc \
> -o example \
> example_evaluate_curve_barycentric.c \
> -I .../libbezier-release/usr/include \
> -L .../libbezier-release/usr/lib \
> -Wl,-rpath,.../libbezier-release/usr/lib \
> -I "${INCLUDE_DIR}" \
> -L "${LIB_DIR}" \
> -Wl,-rpath,"${LIB_DIR}" \
> -lbezier \
> -lm -lgfortran
$ ./example
Expand Down Expand Up @@ -357,12 +363,14 @@ Procedures
:options: +NORMALIZE_WHITESPACE
:windows-skip:
$ INCLUDE_DIR=.../libbezier-release/usr/include
$ LIB_DIR=.../libbezier-release/usr/lib
$ gcc \
> -o example \
> example_evaluate_hodograph.c \
> -I .../libbezier-release/usr/include \
> -L .../libbezier-release/usr/lib \
> -Wl,-rpath,.../libbezier-release/usr/lib \
> -I "${INCLUDE_DIR}" \
> -L "${LIB_DIR}" \
> -Wl,-rpath,"${LIB_DIR}" \
> -lbezier \
> -lm -lgfortran
$ ./example
Expand Down Expand Up @@ -444,12 +452,14 @@ Procedures
:options: +NORMALIZE_WHITESPACE
:windows-skip:
$ INCLUDE_DIR=.../libbezier-release/usr/include
$ LIB_DIR=.../libbezier-release/usr/lib
$ gcc \
> -o example \
> example_evaluate_multi.c \
> -I .../libbezier-release/usr/include \
> -L .../libbezier-release/usr/lib \
> -Wl,-rpath,.../libbezier-release/usr/lib \
> -I "${INCLUDE_DIR}" \
> -L "${LIB_DIR}" \
> -Wl,-rpath,"${LIB_DIR}" \
> -lbezier \
> -lm -lgfortran
$ ./example
Expand Down Expand Up @@ -532,12 +542,14 @@ Procedures
:options: +NORMALIZE_WHITESPACE
:windows-skip:
$ INCLUDE_DIR=.../libbezier-release/usr/include
$ LIB_DIR=.../libbezier-release/usr/lib
$ gcc \
> -o example \
> example_full_reduce.c \
> -I .../libbezier-release/usr/include \
> -L .../libbezier-release/usr/lib \
> -Wl,-rpath,.../libbezier-release/usr/lib \
> -I "${INCLUDE_DIR}" \
> -L "${LIB_DIR}" \
> -Wl,-rpath,"${LIB_DIR}" \
> -lbezier \
> -lm -lgfortran
$ ./example
Expand Down Expand Up @@ -613,12 +625,14 @@ Procedures
:options: +NORMALIZE_WHITESPACE
:windows-skip:
$ INCLUDE_DIR=.../libbezier-release/usr/include
$ LIB_DIR=.../libbezier-release/usr/lib
$ gcc \
> -o example \
> example_get_curvature.c \
> -I .../libbezier-release/usr/include \
> -L .../libbezier-release/usr/lib \
> -Wl,-rpath,.../libbezier-release/usr/lib \
> -I "${INCLUDE_DIR}" \
> -L "${LIB_DIR}" \
> -Wl,-rpath,"${LIB_DIR}" \
> -lbezier \
> -lm -lgfortran
$ ./example
Expand Down Expand Up @@ -704,12 +718,14 @@ Procedures
:options: +NORMALIZE_WHITESPACE
:windows-skip:
$ INCLUDE_DIR=.../libbezier-release/usr/include
$ LIB_DIR=.../libbezier-release/usr/lib
$ gcc \
> -o example \
> example_locate_point_curve.c \
> -I .../libbezier-release/usr/include \
> -L .../libbezier-release/usr/lib \
> -Wl,-rpath,.../libbezier-release/usr/lib \
> -I "${INCLUDE_DIR}" \
> -L "${LIB_DIR}" \
> -Wl,-rpath,"${LIB_DIR}" \
> -lbezier \
> -lm -lgfortran
$ ./example
Expand Down Expand Up @@ -798,12 +814,14 @@ Procedures
:options: +NORMALIZE_WHITESPACE
:windows-skip:
$ INCLUDE_DIR=.../libbezier-release/usr/include
$ LIB_DIR=.../libbezier-release/usr/lib
$ gcc \
> -o example \
> example_newton_refine_curve.c \
> -I .../libbezier-release/usr/include \
> -L .../libbezier-release/usr/lib \
> -Wl,-rpath,.../libbezier-release/usr/lib \
> -I "${INCLUDE_DIR}" \
> -L "${LIB_DIR}" \
> -Wl,-rpath,"${LIB_DIR}" \
> -lbezier \
> -lm -lgfortran
$ ./example
Expand Down Expand Up @@ -882,12 +900,14 @@ Procedures
:options: +NORMALIZE_WHITESPACE
:windows-skip:
$ INCLUDE_DIR=.../libbezier-release/usr/include
$ LIB_DIR=.../libbezier-release/usr/lib
$ gcc \
> -o example \
> example_reduce_pseudo_inverse.c \
> -I .../libbezier-release/usr/include \
> -L .../libbezier-release/usr/lib \
> -Wl,-rpath,.../libbezier-release/usr/lib \
> -I "${INCLUDE_DIR}" \
> -L "${LIB_DIR}" \
> -Wl,-rpath,"${LIB_DIR}" \
> -lbezier \
> -lm -lgfortran
$ ./example
Expand Down Expand Up @@ -975,12 +995,14 @@ Procedures
:options: +NORMALIZE_WHITESPACE
:windows-skip:
$ INCLUDE_DIR=.../libbezier-release/usr/include
$ LIB_DIR=.../libbezier-release/usr/lib
$ gcc \
> -o example \
> example_specialize_curve.c \
> -I .../libbezier-release/usr/include \
> -L .../libbezier-release/usr/lib \
> -Wl,-rpath,.../libbezier-release/usr/lib \
> -I "${INCLUDE_DIR}" \
> -L "${LIB_DIR}" \
> -Wl,-rpath,"${LIB_DIR}" \
> -lbezier \
> -lm -lgfortran
$ ./example
Expand Down Expand Up @@ -1057,12 +1079,14 @@ Procedures
:options: +NORMALIZE_WHITESPACE
:windows-skip:
$ INCLUDE_DIR=.../libbezier-release/usr/include
$ LIB_DIR=.../libbezier-release/usr/lib
$ gcc \
> -o example \
> example_subdivide_nodes_curve.c \
> -I .../libbezier-release/usr/include \
> -L .../libbezier-release/usr/lib \
> -Wl,-rpath,.../libbezier-release/usr/lib \
> -I "${INCLUDE_DIR}" \
> -L "${LIB_DIR}" \
> -Wl,-rpath,"${LIB_DIR}" \
> -lbezier \
> -lm -lgfortran
$ ./example
Expand Down
8 changes: 5 additions & 3 deletions docs/abi/status.rst
Expand Up @@ -124,12 +124,14 @@ status module
:options: +NORMALIZE_WHITESPACE
:windows-skip:

$ INCLUDE_DIR=.../libbezier-release/usr/include
$ LIB_DIR=.../libbezier-release/usr/lib
$ gcc \
> -o example \
> example_status.c \
> -I .../libbezier-release/usr/include \
> -L .../libbezier-release/usr/lib \
> -Wl,-rpath,.../libbezier-release/usr/lib \
> -I "${INCLUDE_DIR}" \
> -L "${LIB_DIR}" \
> -Wl,-rpath,"${LIB_DIR}" \
> -lbezier \
> -lm -lgfortran
$ ./example
Expand Down
15 changes: 11 additions & 4 deletions tests/utils.py
Expand Up @@ -96,6 +96,9 @@ def _find_gcc():
def build_and_run_c(filename):
"""Build and run a C example from ``docs/abi/``."""
bezier_include, bezier_lib = bezier_locate()
print(f"$ INCLUDE_DIR={bezier_include}")
print(f"$ LIB_DIR={bezier_lib}")

docs_abi_directory = repo_relative("docs", "abi")
invoke_shell = make_invoke_shell(docs_abi_directory)

Expand All @@ -104,16 +107,20 @@ def build_and_run_c(filename):
"$ gcc \\",
"> -o example \\",
f"> {filename} \\",
f"> -I {bezier_include} \\",
f"> -L {bezier_lib} \\",
f"> -Wl,-rpath,{bezier_lib} \\",
'> -I "${INCLUDE_DIR}" \\',
'> -L "${LIB_DIR}" \\',
'> -Wl,-rpath,"${LIB_DIR}" \\',
"> -lbezier \\",
"> -lm -lgfortran",
]
)
print(build_pretty)
gcc_bin = _find_gcc()
build_pretty = build_pretty.replace("$ gcc", f"$ {gcc_bin}")
build_pretty = (
build_pretty.replace("$ gcc", f"$ {gcc_bin}")
.replace("${INCLUDE_DIR}", bezier_include)
.replace("${LIB_DIR}", bezier_lib)
)
invoke_shell(_strip_shell(build_pretty))

run_pretty = "$ ./example"
Expand Down

0 comments on commit 0766649

Please sign in to comment.