Browse Source

Here is an example python extension using code generation (synth_shed)

master
heck 5 years ago
parent
commit
dece2c13db
  1. 38
      gen/examples/ext/synth_shed/Makefile
  2. 18
      gen/examples/ext/synth_shed/Makefile.conf
  3. 3
      gen/examples/ext/synth_shed/gen/Makefile
  4. 2
      gen/examples/ext/synth_shed/gen/config.json
  5. 14
      gen/examples/ext/synth_shed/synth_shed.cc
  6. 5
      gen/examples/synth_shed/Makefile.conf

38
gen/examples/ext/synth_shed/Makefile

@ -0,0 +1,38 @@
include Makefile.conf
TARGET_MODULE=synth_shed.so
# C++
CXX=clang
CXXFLAGS+=-std=c++11 -g
# Sources
SRCS+=$(wildcard *.cc)
OBJS+=$(SRCS:.cc=.o)
#Compile
CXXFLAGS+=$(INCLUDES) -I$(PREFIX)/include
#Link
LDFLAGS+=-undefined dynamic_lookup $(LIBS_PATH) $(LIBS)
$(info -----BUILD INFO----)
$(info SRCS $(SRCS))
$(info OBJS $(OBJS))
.PHONY: all gen module clean
all: gen module
gen:
$(MAKE) -C gen
module: $(TARGET_MODULE)
$(TARGET_MODULE) : $(OBJS)
$(CXX) $(LDFLAGS) -o $@ $^
clean:
$(MAKE) -C gen clean
rm -f $(TARGET_MODULE)
rm -f $(OBJS)

18
gen/examples/ext/synth_shed/Makefile.conf

@ -0,0 +1,18 @@
# pyBind11
PREFIX=/Users/heck/local-default
# YML2
YML2_PATH=$(HOME)/src/pepbase/default/yml2
YML2_PROC=$(YML2_PATH)/yml2proc $(YML2_OPTS)
YML2_OPTS=--encoding=utf8
# GEN-CID
GEN_CID_DIR=../../../../gen_cid/
# C Python headers
INCLUDES+=-I/opt/local/Library/Frameworks/Python.framework/Versions/3.8/include/python3.8
# example lib
INCLUDES+=-I../../lib/synth_shed
LIBS+=-lsynth_shed
LIBS_PATH+=-L../../lib/synth_shed/

3
gen/examples/synth_shed/Makefile → gen/examples/ext/synth_shed/gen/Makefile

@ -1,9 +1,8 @@
include Makefile.conf
include ../Makefile.conf
YML2_FILE=py_module.yml2
CC_FILE=py_module.cc
.PHONY = yml cc
all: yml cc

2
gen/examples/synth_shed/config.json → gen/examples/ext/synth_shed/gen/config.json

@ -1,6 +1,6 @@
{
"module_name": "synth_shed",
"header_filename": "../../src/synth_shed/synth_shed.h",
"header_filename": "../../../../examples/lib/synth_shed/synth_shed.h",
"libclang_path": "/opt/local/libexec/llvm-9.0/lib/libclang.dylib",
"variables": [
],

14
gen/examples/ext/synth_shed/synth_shed.cc

@ -0,0 +1,14 @@
#include <string>
#include <iostream>
#include <pybind11/pybind11.h>
#include <pybind11/detail/common.h>
#include "synth_shed.h"
using namespace std;
PYBIND11_MODULE(synth_shed, m) {
#include "gen/py_module.cc"
}

5
gen/examples/synth_shed/Makefile.conf

@ -1,5 +0,0 @@
YML2_PATH=$(HOME)/src/pepbase/default/yml2
YML2_PROC=$(YML2_PATH)/yml2proc $(YML2_OPTS)
YML2_OPTS=--encoding=utf8
GEN_CID_DIR=../../gen_cid/
Loading…
Cancel
Save