From 79d0eddbe599eb17340903c869e6ce8d4b76844b Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Tue, 25 Jul 2017 15:03:32 +0000 Subject: [PATCH] fc-mod-cpp.mk: Add fc-mod-cpp.mk Still contains lots of cruft, but already works against FreeCAD-devel package Signed-off-by: Jan Lindemann --- make/fc-mod-cpp.mk | 65 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 make/fc-mod-cpp.mk diff --git a/make/fc-mod-cpp.mk b/make/fc-mod-cpp.mk new file mode 100644 index 00000000..81ecc477 --- /dev/null +++ b/make/fc-mod-cpp.mk @@ -0,0 +1,65 @@ +#FC_BASE_DIR = $(HOME)/rpmbuild/BUILD/FreeCAD-git +#FC_PREFIX = $(HOME)/rpmbuild/BUILDROOT/FreeCAD-0.17_pre_4961_g526ead1c7-20170725.x86_64.test +FC_PREFIX = +FC_MODULE_BASENAME ?= $(notdir $(shell pwd)) +FC_PY_API_XML = $(wildcard *.xml) +FC_INIT_PY ?= $(wildcard Init.py InitGui.py) +FC_GENERATED_CPP = $(patsubst %.xml,%.cpp,$(FC_PY_API_XML)) +FC_GENERATED_H = $(patsubst %.xml,%.h,$(FC_PY_API_XML)) +FC_GENERATED_O = $(patsubst %.xml,%.o,$(FC_PY_API_XML)) +FC_GENERATED = $(FC_GENERATED_H) $(FC_GENERATED_CPP) $(FC_GENERATED_O) +FC_OBJ = $(patsubst %.cpp,%.o,$(filter-out $(FC_GENERATED_CPP),$(wildcard *.cpp))) +FC_MODULE = $(FC_MODULE_BASENAME).so + +#FC_GENERATE_PY=$(FC_BASE_DIR)/src/Tools/generate.py +#FC_GENERATE_PY = $(FC_PREFIX)/usr/bin/fc-generate.py +FC_GENERATE_PY = $(FC_PREFIX)/usr/lib64/FreeCAD/Tools/generate.py + +FC_INSTALL_LIBDIR = $(ENV_PREFIX)/usr/lib64/FreeCAD/lib +FC_INSTALL_PYDIR = $(ENV_PREFIX)/usr/lib64/FreeCAD/Mod/$(FC_MODULE_BASENAME) +FC_INSTALLED_MODULE = $(FC_INSTALL_LIBDIR)/$(FC_MODULE) +FC_INSTALLED_PYTHON = $(addprefix $(FC_INSTALL_PYDIR)/,$(FC_INIT_PY)) +FC_INSTALL_DIRS = $(sort $(FC_INSTALL_LIBDIR) $(FC_INSTALL_PYDIR)) +FC_INSTALLED = $(FC_INSTALLED_MODULE) $(FC_INSTALLED_PYTHON) + +#INCLUDE += -I$(FC_BASE_DIR)/src -I$(FC_BASE_DIR)/build/src +INCLUDE += -I$(FC_PREFIX)/usr/include/FreeCAD +INCLUDE += $(shell pkg-config --cflags python QtCore) -I/usr/include/oce +#LIBFLAGS += -L$(FC_BASE_DIR)/build/lib -lFreeCADApp -lFreeCADBase +LIBFLAGS += -L$(FC_PREFIX)/usr/lib64/FreeCAD/lib -lFreeCADApp -lFreeCADBase +LIBFLAGS += $(shell pkg-config --libs python QtCore) + +#/usr/bin/c++ -fPIC -Wall -Wextra -Wno-write-strings -fpermissive -std=c++11 -D_OCC64 -g -DFC_DEBUG -Wl,--no-undefined -shared -Wl,-soname,Image.so -o ../../../../Mod/Image/Image.so CMakeFiles/Image.dir/ImageBase.cpp.o CMakeFiles/Image.dir/ImagePlane.cpp.o CMakeFiles/Image.dir/PreCompiled.cpp.o CMakeFiles/Image.dir/AppImage.cpp.o -Wl,-rpath,/home/jan/rpmbuild/BUILD/FreeCAD-git/build/lib: ../../../../lib/libFreeCADApp.so ../../../../lib/libFreeCADBase.so -lpython2.7 -lxerces-c -lz -lutil -ldl -lboost_filesystem -lboost_program_options -lboost_regex -lboost_signals -lboost_system -lboost_thread -lboost_chrono -lboost_date_time -lboost_atomic -lQtXml -lQtCore + +#include $(MODDIR)/make/so.mk +include $(MODDIR)/make/defs.mk + +all: $(FC_MODULE) +clean: clean.generated clean.local +install: $(FC_INSTALLED) + +%Imp.o: %.h + +%.h: %.xml + python $(FC_GENERATE_PY) $< + +%.o: %.cpp + $(CPP) $(BUILD_CPPFLAGS) -c $< -o $@ + +$(FC_MODULE): $(FC_OBJ) + $(LD) -shared $(BUILD_LDFLAGS) $^ -o $@ + +clean.generated: + rm -f $(FC_GENERATED) + +clean.local: + rm -f $(FC_MODULE) *.o *.done + +create-dirs.done: + $(INSTALL) -d -m $(LIBDIRMODE) -o $(LIBDIROWNER) -g $(LIBDIRGROUP) $(FC_INSTALL_DIRS) + +$(FC_INSTALL_PYDIR)/%.py: %.py create-dirs.done + $(INSTALL) -m $(PYMODMODE) -o $(PYMODOWNER) -g $(PYMODGROUP) $< $@ + +$(FC_INSTALL_LIBDIR)/%.so: %.so + $(INSTALL) -m $(LIBMODE) -o $(LIBOWNER) -g $(LIBGROUP) $< $@