Skip to content

Compile Flag Issues #8

Description

@kojix2

I grew up with Ruby as my first language; I know very little about C and lower layers. So it is difficult to accurately describe the problem. Still, I will write as much as I know.

The compile flags for GR.cr are copied from the original Dr. Makino implementation.

@[Link(ldflags: "-L `echo $GRDIR`/lib -lGR -Wl,-rpath,`echo $GRDIR`/lib")]

I used Crystal's macro to add a conditional branch for when the environment variable GRDIR is set and when it is not.

{% if env("GRDIR") %}
  @[Link(ldflags: "-L `echo $GRDIR/lib` -lGR -Wl,-rpath,`echo $GRDIR/lib`")]
{% else %}
  @[Link("gr")] # pkg-config
{% end %}

Here are some factors to consider.

  • OS
    • mac OS
    • Ubuntu
  • GR Framework
    • Official binary
    • homebrew
    • apt (OBS)
  • Crystal
    • crystal build
    • crystal i

I use Ubuntu and APT. In this case, GRDIR must be specified before execution. PKG_CONFIG_PATH must be set for pkg-config to detect APT (OBS) packages. I believe that is done correctly. On the other hand, when using Crystal's interpreter, it does not work when GRDIR is set. pkg-config works fine.

Why? I don't know but I think this has something to do with -rpath ?.

Oddly enough, on macOS + homebrew, pkg-config seems to work as expected even if GRDIR is not set. I have not tried crystal i on macOS.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions