Commit b7563a5a authored by Mark Meredith's avatar Mark Meredith
Browse files

Build with GNU Makefile

parent f170819a
Loading
Loading
Loading
Loading
Loading
+36 −4
Original line number Diff line number Diff line
@@ -24,7 +24,10 @@ build-img:
  needs: ['build-img']
  script:
    - conan install -if build -g cmake_find_package catch2/2.13.7@
    - if [ "$ENABLE_CSG" == "ON" ]; then conan install -if build -g cmake_find_package cgal/5.2.1@; fi
    - |
      if [ "$ENABLE_CGAL" == "ON" ]; then
        conan install -if build -g cmake_find_package cgal/5.2.1@
      fi
    - conan install -if build -g cmake_find_package taocpp-pegtl/3.2.1@

    - cmake -S.
@@ -32,7 +35,7 @@ build-img:
            -GNinja
            -DCMAKE_MODULE_PATH=$PWD/build
            -DCMAKE_BUILD_TYPE=Debug
            -DCSG_CGAL_ENABLED=${ENABLE_CSG}
            -DCSG_CGAL_ENABLED=${ENABLE_CGAL}
    - cmake --build build --target unit_tests_csg
    - cd build
    - ctest
@@ -41,12 +44,12 @@ build-img:

test:cgal:
  variables:
    ENABLE_CSG: "ON"
    ENABLE_CGAL: "ON"
  <<: *cmake_def

test:no_cgal:
  variables:
    ENABLE_CSG: "OFF"
    ENABLE_CGAL: "OFF"
  <<: *cmake_def

.test:spack: &spack_def
@@ -69,3 +72,32 @@ spack:no_cgal:
  variables:
    NO_CSG: "~cgal"
  <<: *spack_def

.test:gnumake: &gnumake_def
  stage: test
  variables:
    BUILD: ${CI_PROJECT_DIR}/build
    BOOST_HOME: ${BUILD}/boost
    CATCH2_HOME: ${BUILD}/catch2
    CGAL_HOME: ${BUILD}/cgal
    PEGTL_HOME: ${BUILD}/taocpp-pegtl
  image: $CI_REGISTRY_IMAGE:latest
  needs: ['build-img']
  script:
    - conan install -if build -g deploy catch2/2.13.7@
    - |
      if [ "$ENABLE_CGAL" == "ON" ]; then
        conan install -if build -g deploy cgal/5.2.1@
      fi
    - conan install -if build -g deploy taocpp-pegtl/3.2.1@
    - make install DESTDIR=the_destination
  tags:
    - docker

gnumake:cgal:
  variables:
    ENABLE_CGAL: "ON"
  <<: *gnumake_def

gnumake:no_cgal:
  <<: *gnumake_def

GNUmakefile

0 → 100644
+62 −0
Original line number Diff line number Diff line
###
### Makefile for building libcsgeb.a with GNU Make.
### Only works with GCC compiler
### Expects to find paths for dependencies defined in: BOOST_HOME, CATCH2_HOME, CGAL_HOME, PEGTL_HOME
###



TARGET ?= libcsgeb.a
BUILD_DIR ?= ./build

SRCFILENAMES := csg.cpp \
	levelset_2d.cpp \
	levelset_3d.cpp \
	matrix_functions.cpp \
	parser.cpp \
	exception.cpp \
	$(if $(ENABLE_CGAL),cgal_helper_polygon.cpp,) \
	$(if $(ENABLE_CGAL),cgal_helper_polyhedron.cpp,)

SRCS := $(SRCFILENAMES:%=./src/csg/%)
OBJS := $(SRCS:%=$(BUILD_DIR)/%.o)
DEPS := $(OBJS:.o=.d)

INC_DIRS := src include
INC_DIRS += $(BOOST_HOME)/include
INC_DIRS += $(CATCH2_HOME)/include
INC_DIRS += $(CGAL_HOME)/include
INC_DIRS += $(PEGTL_HOME)/include

INC_FLAGS := $(addprefix -I,$(INC_DIRS))

CPPFLAGS ?= $(INC_FLAGS) -MMD -MP

ifdef $(ENABLE_CGAL)
	CPPFLAGS += -DUSE_CGAL
endif

$(TARGET): $(OBJS)
	@ar rcs $(TARGET) $(OBJS)

$(BUILD_DIR)/$(TARGET): $(OBJS)
	$(CXX) $(OBJS) -o $@ $(LDFLAGS)

$(BUILD_DIR)/%.cpp.o: %.cpp
	$(MKDIR_P) $(dir $@)
	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -std=c++17 -c $< -o $@

.PHONY: install
install: $(TARGET)
	@$(MKDIR_P) $(DESTDIR)/lib $(DESTDIR)/include
	install -m 0755 $< $(DESTDIR)/lib
	install -m 0755 include/*.hpp $(DESTDIR)/include

.PHONY: clean
clean:
	$(RM) -r $(BUILD_DIR)


-include $(DEPS)

MKDIR_P ?= mkdir -p