Skip to content

Instantly share code, notes, and snippets.

@Kerollmops
Created June 4, 2015 12:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Kerollmops/42327326395e6cecbd4f to your computer and use it in GitHub Desktop.
Save Kerollmops/42327326395e6cecbd4f to your computer and use it in GitHub Desktop.
jboulet
# **************************************************************************** #
# #
# ::: :::::::: #
# Makefile :+: :+: :+: #
# +:+ +:+ +:+ #
# By: crenault <crenault@student.42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2015/05/09 18:00:27 by crenault #+# #+# #
# Updated: 2015/05/28 14:58:35 by crenault ### ########.fr #
# #
# **************************************************************************** #
# glfw
GLFW_FOLD = glfw
GLFW_CHECK = $(GLFW_FOLD)/.git
GLFW_LIB = glfwlib
GLFW_FLAGS = -L$(GLFW_LIB)/lib -lglfw3
# libft
FT_FOLD = libft
FT_CHECK = $(FT_FOLD)/.git
FT_LIB = $(FT_FOLD)/libft.a
FT_FLAGS = -L$(FT_FOLD) -lft
# cMatrixHelper
CMH_FOLD = cMatrixHelper
CMH_CHECK = $(CMH_FOLD)/.git
CMH_LIB = $(CMH_FOLD)/libcmh.a
CMH_FLAGS = -L$(CMH_FOLD) -lcmh
# submodules
SUBMODULES = $(GLFW_CHECK) $(FT_CHECK) $(CMH_CHECK)
# libraries
LIBRARIES = $(GLFW_LIB) $(FT_LIB) $(CMH_LIB)
# compiler
CC = clang
# file type
FT = c
# flags
FLAGS = -Wall -Wextra -Werror
FLAGS += -O3
FLAGS += -g
# binary flags (add libraries)
BIN_FLAGS = $(FLAGS) $(GLFW_FLAGS) $(FT_FLAGS) $(CMH_FLAGS)
BIN_FLAGS += -framework Cocoa -framework OpenGL
BIN_FLAGS += -framework IOKit -framework CoreVideo
# executable
NAME = scop
# to compile files
SRC = src/main.c
SRC += src/genv.c
SRC += src/bmp.c
SRC += src/helpers.c
SRC += src/matrix/view.c
SRC += src/opengl/init.c
SRC += src/opengl/input_events.c
SRC += src/opengl/log.c
SRC += src/opengl/loadprog.c
SRC += src/object/creation.c
SRC += src/object/info.c
SRC += src/object/modif.c
SRC += src/object/average.c
SRC += src/object/destruct.c
SRC += src/object/parsing/base.c
SRC += src/object/parsing/vertice.c
SRC += src/object/parsing/vertice_average.c
SRC += src/object/parsing/face.c
SRC += src/object/parsing/facenorm.c
SRC += src/object/parsing/facetypes.c
SRC += src/object/alloc.c
SRC += src/object/alloc2.c
SRC += src/object/linking.c
SRC += src/object/transform.c
# header files
HDR = include/helpers.h
HDR += include/genv.h
HDR += include/mat4_view.h
HDR += include/opengl/init.h
HDR += include/opengl/log.h
HDR += include/object/creation.h
HDR += include/object/parsing.h
HDR += include/object/alloc.h
HDR += include/object/transform.h
# objects files
OBJS = $(SRC:.$(FT)=.o)
# main rule
all: $(NAME)
# rebuild your bin
re: fclean $(NAME)
# reclone submodule and rebuild
rere: ffclean $(NAME)
$(NAME): $(SUBMODULES) $(LIBRARIES) $(OBJS)
@$(CC) -o $@ $(OBJS) $(BIN_FLAGS)
@echo $@ "updated!"
# making o files
%.o: %.$(FT) $(HDR)
@$(CC) -o $@ -c $< $(FLAGS)
@echo $< "updated!"
# submodules
$(SUBMODULES):
@git submodule init
@git submodule update
@echo $@ "updated!"
# lib glfw
$(GLFW_LIB):
@cd $(GLFW_FOLD) && cmake -DCMAKE_INSTALL_PREFIX=../$(GLFW_LIB) .
@make install -C $(GLFW_FOLD)
@echo $@ "updated!"
# lib libft
$(FT_LIB):
@make -C $(FT_FOLD)
@echo $@ "updated!"
# lib libft
$(CMH_LIB):
@rm -rf $(CMH_FOLD)/$(FT_FOLD)
@cd $(CMH_FOLD) && ln -s ../$(FT_FOLD) $(FT_FOLD)
@make -C $(CMH_FOLD)
@echo $@ "updated!"
#
.PHONY: all re rere clean fclean ffclean cleansubs
# clean o files
clean:
@rm -rf $(OBJS)
# clean submodules
cleansubs:
@rm -rf $(PI_RESS_LOCAL_DIR)
@make clean -C $(GLFW_FOLD)
@make clean -C $(FT_FOLD)
@make clean -C $(CMH_FOLD)
# clean exec file and library
fclean: clean
@rm -rf $(GLFW_LIB)
@make fclean -C $(FT_FOLD)
@make fclean -C $(CMH_FOLD)
@rm -rf $(NAME)
# get empty and clean repo (without libs)
ffclean: fclean cleansubs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment