Skip to content
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

Compile Flag Issues #8

Open
kojix2 opened this issue Mar 27, 2022 · 0 comments
Open

Compile Flag Issues #8

kojix2 opened this issue Mar 27, 2022 · 0 comments

Comments

@kojix2
Copy link
Collaborator

kojix2 commented Mar 27, 2022

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant