1
0
mirror of https://github.com/TREX-CoE/qmckl.git synced 2024-06-30 00:44:52 +02:00
qmckl/src/create_makefile.sh

96 lines
1.6 KiB
Bash
Raw Normal View History

2020-10-16 13:58:05 +02:00
#!/bin/bash
2020-11-05 12:57:39 +01:00
INPUT=$1
2020-10-16 13:58:05 +02:00
OUTPUT=Makefile.generated
# Tangle org files
2020-11-05 12:57:39 +01:00
emacs \
$INPUT \
--batch \
-f org-babel-tangle \
--kill
2020-10-16 13:58:05 +02:00
# Create the list of *.o files to be created
OBJECTS=""
for i in $(ls qmckl_*.c) ; do
FILE=${i%.c}
OBJECTS="${OBJECTS} ${FILE}.o"
done >> $OUTPUT
for i in $(ls qmckl_*.f90) ; do
FILE=${i%.f90}
OBJECTS="${OBJECTS} ${FILE}.o"
done >> $OUTPUT
2020-10-17 00:28:49 +02:00
TESTS=""
2020-10-21 19:50:18 +02:00
for i in $(ls test_qmckl_*.c) ; do
2020-10-26 16:51:16 +01:00
FILE=${i%.c}.o
2020-10-17 00:28:49 +02:00
TESTS="${TESTS} ${FILE}"
done >> $OUTPUT
2020-10-26 16:51:16 +01:00
TESTS_F=""
for i in $(ls test_qmckl_*.f90) ; do
FILE=${i%.f90}.o
TESTS_F="${TESTS_F} ${FILE}"
done >> $OUTPUT
2020-10-16 13:58:05 +02:00
# Write the Makefile
cat << EOF > $OUTPUT
CC=$CC
2020-10-21 19:50:18 +02:00
CFLAGS=$CFLAGS -I../munit/
2020-10-16 13:58:05 +02:00
FC=$FC
FFLAGS=$FFLAGS
OBJECT_FILES=$OBJECTS
2020-10-17 00:28:49 +02:00
TESTS=$TESTS
2020-10-26 16:51:16 +01:00
TESTS_F=$TESTS_F
2020-10-16 13:58:05 +02:00
2020-10-22 00:50:07 +02:00
LIBS=$LIBS
2020-10-16 13:58:05 +02:00
libqmckl.so: \$(OBJECT_FILES)
\$(CC) -shared \$(OBJECT_FILES) -o libqmckl.so
%.o: %.c
\$(CC) \$(CFLAGS) -c \$*.c -o \$*.o
2020-11-05 12:57:39 +01:00
%.o: %.f90 qmckl_f.o
2020-10-16 13:58:05 +02:00
\$(FC) \$(FFLAGS) -c \$*.f90 -o \$*.o
2020-10-26 16:51:16 +01:00
test_qmckl: test_qmckl.c libqmckl.so \$(TESTS) \$(TESTS_F)
2020-10-17 00:28:49 +02:00
\$(CC) \$(CFLAGS) -Wl,-rpath,$PWD -L. \
2020-10-26 16:51:16 +01:00
../munit/munit.c \$(TESTS) \$(TESTS_F) -lqmckl \$(LIBS) test_qmckl.c -o test_qmckl
2020-10-17 00:28:49 +02:00
2020-10-21 19:50:18 +02:00
test: test_qmckl
./test_qmckl
2020-10-17 00:28:49 +02:00
.PHONY: test
2020-10-16 13:58:05 +02:00
EOF
for i in $(ls qmckl_*.c) ; do
FILE=${i%.c}
echo "${FILE}.o: ${FILE}.c " *.h
done >> $OUTPUT
for i in $(ls qmckl_*.f90) ; do
FILE=${i%.f90}
echo "${FILE}.o: ${FILE}.f90"
done >> $OUTPUT
2020-10-21 19:50:18 +02:00
for i in $(ls test_qmckl_*.c) ; do
FILE=${i%.c}
echo "${FILE}.o: ${FILE}.c qmckl.h"
done >> $OUTPUT
2020-10-17 00:28:49 +02:00
2020-10-26 16:51:16 +01:00
for i in $(ls test_qmckl*.f90) ; do
FILE=${i%.f90}
echo "${FILE}.o: ${FILE}.f90"
done >> $OUTPUT