2022-12-04 18:54:57 +01:00
|
|
|
# This is part of WHY2
|
|
|
|
# Copyright (C) 2022 Václav Šmejkal
|
|
|
|
|
|
|
|
# This program is free software: you can redistribute it and/or modify
|
|
|
|
# it under the terms of the GNU General Public License as published by
|
|
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
|
|
# (at your option) any later version.
|
|
|
|
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
# GNU General Public License for more details.
|
|
|
|
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
|
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
|
2022-05-20 19:06:26 +02:00
|
|
|
# Compiler Settings
|
|
|
|
CC=cc
|
2022-12-04 18:59:50 +01:00
|
|
|
CFLAGS=-Wall -Wextra -Werror -Wcomment -Wformat -Wformat-security -Wmain -Wnonnull -Wunused -std=gnu11 -O2
|
2022-05-20 19:06:26 +02:00
|
|
|
|
|
|
|
# Source Code
|
2022-11-18 16:10:20 +01:00
|
|
|
SRC_CORE=./src/core/lib/*.c
|
|
|
|
SRC_CORE_APP=./src/core/app/*.c
|
2022-11-18 16:30:55 +01:00
|
|
|
SRC_LOGGER=./src/logger/lib/*.c
|
2022-11-18 16:20:01 +01:00
|
|
|
|
2022-11-17 14:04:03 +01:00
|
|
|
INCLUDE_DIR=./include
|
2022-11-18 16:16:11 +01:00
|
|
|
INCLUDE_CORE=$(INCLUDE_DIR)/*.h
|
2022-11-18 16:20:01 +01:00
|
|
|
INCLUDE_LOGGER=$(INCLUDE_DIR)/logger/*.h
|
|
|
|
|
2022-11-18 16:28:57 +01:00
|
|
|
TEST_CORE=./src/core/lib/test/main.c
|
2022-11-18 16:26:56 +01:00
|
|
|
LIBS_CORE=-ljson-c -lcurl -lgit2
|
2022-05-20 19:06:26 +02:00
|
|
|
|
2022-11-18 17:43:53 +01:00
|
|
|
TEST_LOGGER=./src/logger/lib/test/main.c
|
2022-11-18 16:32:02 +01:00
|
|
|
LIBS_LOGGER=-lwhy2
|
|
|
|
|
2022-05-20 19:06:26 +02:00
|
|
|
# Output Files
|
|
|
|
PROJECT_NAME=why2
|
|
|
|
OUTPUT=out
|
2022-11-18 19:52:57 +01:00
|
|
|
LOGS=logs
|
2022-11-18 17:39:00 +01:00
|
|
|
|
2022-11-18 17:39:50 +01:00
|
|
|
OUTPUT_TEST_CORE=$(OUTPUT)/$(PROJECT_NAME)-core-test
|
2022-05-20 19:06:26 +02:00
|
|
|
OUTPUT_APP=$(OUTPUT)/$(PROJECT_NAME)-app
|
|
|
|
|
2022-11-18 17:41:20 +01:00
|
|
|
OUTPUT_TEST_LOGGER=$(OUTPUT)/$(PROJECT_NAME)-logger-test
|
|
|
|
|
2022-05-20 19:06:26 +02:00
|
|
|
# Install Files
|
|
|
|
INSTALL_INCLUDE=/usr/include
|
|
|
|
INSTALL_LIBRARY=/usr/lib
|
|
|
|
INSTALL_BIN=/usr/bin
|
|
|
|
|
|
|
|
# Misc
|
|
|
|
DOLLAR=$
|
|
|
|
|
|
|
|
##########
|
|
|
|
|
2022-06-28 17:45:39 +02:00
|
|
|
noTarget: # Do not use this, please <3
|
|
|
|
@echo Hey you... You have to enter your target, too. Use \'install\' target for installing $(PROJECT_NAME)-core.
|
|
|
|
|
2022-11-18 16:19:21 +01:00
|
|
|
installHeaderCore:
|
2022-11-18 16:16:11 +01:00
|
|
|
for file in $(INCLUDE_CORE); do install -m 755 -D $(DOLLAR)file -t $(INSTALL_INCLUDE)/$(PROJECT_NAME); done
|
2022-11-18 13:03:50 +01:00
|
|
|
ln -sf $(INSTALL_INCLUDE)/$(PROJECT_NAME)/$(PROJECT_NAME).h $(INSTALL_INCLUDE)/$(PROJECT_NAME).h
|
2022-06-11 16:30:19 +02:00
|
|
|
|
2022-11-18 16:23:23 +01:00
|
|
|
installHeaderLogger:
|
|
|
|
for file in $(INCLUDE_LOGGER); do install -m 755 -D $(DOLLAR)file -t $(INSTALL_INCLUDE)/$(PROJECT_NAME)/logger; done
|
|
|
|
|
2022-11-18 16:24:47 +01:00
|
|
|
buildLibCore:
|
2022-11-18 17:24:30 +01:00
|
|
|
$(MAKE) clean
|
2022-11-18 16:10:20 +01:00
|
|
|
$(CC) $(CFLAGS) -fPIC -c $(SRC_CORE)
|
2022-11-18 16:26:56 +01:00
|
|
|
$(CC) $(CFLAGS) -shared -o lib$(PROJECT_NAME).so *.o $(LIBS_CORE)
|
2022-11-18 16:01:41 +01:00
|
|
|
|
2022-11-18 16:33:07 +01:00
|
|
|
buildLibLogger:
|
2022-11-18 17:24:30 +01:00
|
|
|
$(MAKE) clean
|
2022-11-18 16:33:07 +01:00
|
|
|
$(CC) $(CFLAGS) -fPIC -c $(SRC_LOGGER)
|
|
|
|
$(CC) $(CFLAGS) -shared -o lib$(PROJECT_NAME)-logger.so *.o $(LIBS_LOGGER)
|
|
|
|
|
2022-11-18 16:25:17 +01:00
|
|
|
installLibCore: buildLibCore
|
2022-11-17 14:04:03 +01:00
|
|
|
install -m 755 ./lib$(PROJECT_NAME).so $(INSTALL_LIBRARY)/lib$(PROJECT_NAME).so
|
2022-06-01 17:40:52 +02:00
|
|
|
|
2022-11-18 16:25:33 +01:00
|
|
|
installAppCore: app
|
2022-05-20 19:06:26 +02:00
|
|
|
install -m 755 $(OUTPUT_APP) $(INSTALL_BIN)/$(PROJECT_NAME)
|
|
|
|
|
2022-11-18 16:34:10 +01:00
|
|
|
installLibLogger: buildLibLogger
|
|
|
|
install -m 755 ./lib$(PROJECT_NAME)-logger.so $(INSTALL_LIBRARY)/lib$(PROJECT_NAME)-logger.so
|
|
|
|
|
2022-11-18 16:40:25 +01:00
|
|
|
testCore:
|
2022-11-18 17:39:00 +01:00
|
|
|
$(CC) $(CFLAGS) -g $(TEST_CORE) -o $(OUTPUT_TEST_CORE) -l$(PROJECT_NAME)
|
2022-05-20 19:06:26 +02:00
|
|
|
|
2022-11-18 17:43:26 +01:00
|
|
|
testLogger:
|
2022-11-18 18:00:15 +01:00
|
|
|
$(CC) $(CFLAGS) -g $(TEST_LOGGER) -o $(OUTPUT_TEST_LOGGER) -l$(PROJECT_NAME)-logger
|
2022-11-18 17:43:26 +01:00
|
|
|
|
2022-05-20 19:06:26 +02:00
|
|
|
app:
|
2022-11-18 16:10:20 +01:00
|
|
|
$(CC) $(CFLAGS) $(SRC_CORE_APP) -o $(OUTPUT_APP) -l$(PROJECT_NAME)
|
2022-05-20 19:06:26 +02:00
|
|
|
|
|
|
|
clean:
|
2022-11-18 19:53:26 +01:00
|
|
|
rm -rf $(OUTPUT)/* $(LOGS)/* *.o *.so
|
2022-06-01 17:32:27 +02:00
|
|
|
|
2022-11-18 16:23:46 +01:00
|
|
|
installHeader: installHeaderCore installHeaderLogger
|
2022-11-18 17:24:30 +01:00
|
|
|
install: installHeader installLibCore installLibLogger installAppCore clean
|
2022-11-18 17:45:18 +01:00
|
|
|
installTest: install testCore testLogger
|
2022-07-29 17:33:37 +02:00
|
|
|
all: install
|