Compare commits
19 Commits
nix-err-da
...
2d299d4ced
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2d299d4ced | ||
|
|
cea8ba3354 | ||
|
|
66b9e70c8c | ||
|
|
472eb1c70d | ||
|
|
2b84809d84 | ||
|
|
4858c3ee2e | ||
|
|
8583f117cc | ||
|
|
3d72958712 | ||
|
|
371d2b7f97 | ||
|
|
93bee37b83 | ||
|
|
d36bbad5a8 | ||
|
|
5a701a3632 | ||
|
|
170685f6c8 | ||
|
|
82961432f9 | ||
|
|
15c587d65a | ||
|
|
7cfdb25174 | ||
|
|
8a16c6695e | ||
|
|
ab69702910 | ||
|
|
5e2d2b89c8 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,3 +1,4 @@
|
||||
lib
|
||||
include
|
||||
result*
|
||||
dist-newstyle
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
`nix build` or `nix run` to build lib or run the example
|
||||
|
||||
to do it manually, run `./generate.sh` to generate `lib/` before `cabal build` or `cabal run`
|
||||
|
||||
@@ -4,10 +4,10 @@ packages:
|
||||
source-repository-package
|
||||
type: git
|
||||
location: https://github.com/well-typed/hs-bindgen.git
|
||||
tag: 933d11d771ff13b6a3b851cb0ec9bc3632626f2f
|
||||
tag: f99ed4ddfc7808b3eb28bbf089612b6a52983685
|
||||
subdir: hs-bindgen-runtime
|
||||
source-repository-package
|
||||
type: git
|
||||
location: https://github.com/well-typed/hs-bindgen.git
|
||||
tag: 933d11d771ff13b6a3b851cb0ec9bc3632626f2f
|
||||
tag: f99ed4ddfc7808b3eb28bbf089612b6a52983685
|
||||
subdir: c-expr-runtime
|
||||
|
||||
38
flake.lock
generated
38
flake.lock
generated
@@ -5,11 +5,11 @@
|
||||
"nixpkgs-lib": "nixpkgs-lib"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1763759067,
|
||||
"narHash": "sha256-LlLt2Jo/gMNYAwOgdRQBrsRoOz7BPRkzvNaI/fzXi2Q=",
|
||||
"lastModified": 1769996383,
|
||||
"narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "2cccadc7357c0ba201788ae99c4dfa90728ef5e0",
|
||||
"rev": "57928607ea566b5db3ad13af0e57e921e6b12381",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -25,43 +25,43 @@
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1765888948,
|
||||
"narHash": "sha256-rgGAUQVfJ0sKXm9bzh7XIJUHh/JkEsz/LX6k8aCKeD4=",
|
||||
"lastModified": 1770911191,
|
||||
"narHash": "sha256-fePV3+4uHg1tQH83rUO/7gQOGexHdaxyVkO2X3HkOA0=",
|
||||
"owner": "well-typed",
|
||||
"repo": "hs-bindgen",
|
||||
"rev": "fd74e8fa4216eccd67069ec9d8637b57000ffc83",
|
||||
"rev": "087884c110948e7bd67bec0ae8004e5396f63241",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "well-typed",
|
||||
"repo": "hs-bindgen",
|
||||
"rev": "fd74e8fa4216eccd67069ec9d8637b57000ffc83",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"libclang-bindings-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1765293798,
|
||||
"narHash": "sha256-fZvyZo5emD1W5LwrIg2zTUYE9StRh3xF8TcuXjzKIAk=",
|
||||
"lastModified": 1770274896,
|
||||
"narHash": "sha256-JnxJBo2L4URFD8JbpjnPG/ej/xKFe7y5ZpjnvIztwAM=",
|
||||
"owner": "well-typed",
|
||||
"repo": "libclang",
|
||||
"rev": "b8305bd9c3e8e8f63d6f415553388be7f233ef45",
|
||||
"rev": "155642a4a4a9f0414a058a8f08f39aa6c7bb57ed",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "well-typed",
|
||||
"repo": "libclang",
|
||||
"rev": "155642a4a4a9f0414a058a8f08f39aa6c7bb57ed",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1764947035,
|
||||
"narHash": "sha256-EYHSjVM4Ox4lvCXUMiKKs2vETUSL5mx+J2FfutM7T9w=",
|
||||
"lastModified": 1770169770,
|
||||
"narHash": "sha256-awR8qIwJxJJiOmcEGgP2KUqYmHG4v/z8XpL9z8FnT1A=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a672be65651c80d3f592a89b3945466584a22069",
|
||||
"rev": "aa290c9891fa4ebe88f8889e59633d20cc06a5f2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -73,11 +73,11 @@
|
||||
},
|
||||
"nixpkgs-lib": {
|
||||
"locked": {
|
||||
"lastModified": 1761765539,
|
||||
"narHash": "sha256-b0yj6kfvO8ApcSE+QmA6mUfu8IYG6/uU28OFn4PaC8M=",
|
||||
"lastModified": 1769909678,
|
||||
"narHash": "sha256-cBEymOf4/o3FD5AZnzC3J9hLbiZ+QDT/KDuyHXVJOpM=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"rev": "719359f4562934ae99f5443f20aa06c2ffff91fc",
|
||||
"rev": "72716169fe93074c333e8d0173151350670b824c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -88,11 +88,11 @@
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1765772535,
|
||||
"narHash": "sha256-aq+dQoaPONOSjtFIBnAXseDm9TUhIbe215TPmkfMYww=",
|
||||
"lastModified": 1770843696,
|
||||
"narHash": "sha256-LovWTGDwXhkfCOmbgLVA10bvsi/P8eDDpRudgk68HA8=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "09b8fda8959d761445f12b55f380d90375a1d6bb",
|
||||
"rev": "2343bbb58f99267223bc2aac4fc9ea301a155a16",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "nixpkgs/nixpkgs-unstable";
|
||||
hs-bindgen.url = "github:well-typed/hs-bindgen/fd74e8fa4216eccd67069ec9d8637b57000ffc83";
|
||||
hs-bindgen.url = "github:well-typed/hs-bindgen";
|
||||
self.submodules = true;
|
||||
};
|
||||
outputs = {
|
||||
@@ -26,7 +26,9 @@
|
||||
libXi,
|
||||
xrandr,
|
||||
# shell deps
|
||||
clang,
|
||||
hs-bindgen-cli,
|
||||
tree,
|
||||
}:
|
||||
mkDerivation {
|
||||
pname = "hs-rgfw";
|
||||
@@ -44,9 +46,9 @@
|
||||
libXi
|
||||
xrandr
|
||||
];
|
||||
preBuild = ''
|
||||
preConfigure = ''
|
||||
set -x
|
||||
export PATH=${hs-bindgen-cli}/bin:\$PATH
|
||||
export PATH=${clang}/bin:${hs-bindgen-cli}/bin:${tree}/bin:$PATH
|
||||
./generate.sh
|
||||
set +x
|
||||
'';
|
||||
|
||||
45
generate.sh
45
generate.sh
@@ -1,8 +1,49 @@
|
||||
echo "# copying header..."
|
||||
|
||||
mkdir -p lib/include
|
||||
cp rgfw/RGFW.h lib/include/RGFW.h
|
||||
|
||||
echo "# creating flags for hs-bindgen-cli..."
|
||||
|
||||
export CFLAGS=$(pkg-config --cflags x11 xcursor xrandr xi gl xrender xext xfixes)
|
||||
HBC_ARGS=""
|
||||
|
||||
for token in $CFLAGS; do
|
||||
case "$token" in
|
||||
-I* ) HBC_ARGS="$HBC_ARGS $token" ;;
|
||||
-D* ) HBC_ARGS="$HBC_ARGS --define-macro ${token#-D}" ;;
|
||||
* ) HBC_ARGS="$HBC_ARGS --clang-option $token" ;;
|
||||
esac
|
||||
done
|
||||
|
||||
echo "# creating c file from header..."
|
||||
|
||||
# other macro definitions should be defined with ghc-options: -copt-D in *.cabal
|
||||
cat > lib/RGFW.c <<EOF
|
||||
#define RGFW_IMPLEMENTATION
|
||||
#include "RGFW.h"
|
||||
EOF
|
||||
|
||||
echo "# generating library RGFW.Generated..."
|
||||
|
||||
# --unsafe _unsafe \
|
||||
# --pointer _pointer \
|
||||
set -x
|
||||
hs-bindgen-cli preprocess \
|
||||
-Irgfw \
|
||||
-Ilib/include \
|
||||
--unique-id andromeda.hs-rgfw \
|
||||
--create-output-dirs \
|
||||
--overwrite-files \
|
||||
--single-file \
|
||||
--safe _safe \
|
||||
--hs-output-dir lib \
|
||||
--module RGFW.Generated \
|
||||
--clang-option=-DRGFW_OPENGL \
|
||||
--define-macro=RGFW_OPENGL \
|
||||
--define-macro=RGFW_EXPORT \
|
||||
$HBC_ARGS \
|
||||
RGFW.h
|
||||
set +x
|
||||
|
||||
echo "# generated filetree:"
|
||||
|
||||
tree lib
|
||||
|
||||
@@ -12,15 +12,28 @@ common warnings
|
||||
|
||||
library
|
||||
import: warnings
|
||||
-- hs-bindgen-cli uses --single-file flag, so no other modules
|
||||
exposed-modules: RGFW.Generated
|
||||
build-depends:
|
||||
, base
|
||||
, primitive
|
||||
, c-expr-runtime
|
||||
, hs-bindgen-runtime
|
||||
include-dirs: rgfw
|
||||
pkgconfig-depends:
|
||||
, gl
|
||||
, x11
|
||||
, xcursor
|
||||
, xrandr
|
||||
, xi
|
||||
include-dirs: lib/include
|
||||
hs-source-dirs: lib
|
||||
default-language: Haskell2010
|
||||
default-extensions: FlexibleInstances
|
||||
-- options for RGFW passed here
|
||||
ghc-options:
|
||||
-optc-DRGFW_OPENGL
|
||||
-optc-DRGFW_EXPORT
|
||||
c-sources: lib/RGFW.c
|
||||
|
||||
executable hs-rgfw
|
||||
import: warnings
|
||||
@@ -36,6 +49,6 @@ executable hs-rgfw
|
||||
, xcursor
|
||||
, xrandr
|
||||
, xi
|
||||
include-dirs: rgfw
|
||||
include-dirs: lib/include
|
||||
hs-source-dirs: src
|
||||
default-language: Haskell2010
|
||||
|
||||
2
rgfw
2
rgfw
Submodule rgfw updated: 83d945ae89...a971541830
@@ -1,3 +1,5 @@
|
||||
module Main where
|
||||
|
||||
main :: IO ()
|
||||
main = putStrLn "Hello World"
|
||||
main = do
|
||||
putStrLn "Hello World"
|
||||
|
||||
Reference in New Issue
Block a user