build system switch to cmake

Remove old build system at the same time

Change-Id: Ifdffe1fcd4cfece05f036d8de6e7cb74aca65f62
This commit is contained in:
Dominique Martinet
2018-06-04 10:39:03 +09:00
parent 4bdd9cf512
commit 2a63c962fc
63 changed files with 945 additions and 8357 deletions

View File

@@ -0,0 +1,83 @@
include_directories(
"${CMAKE_CURRENT_BINARY_DIR}"
"${PROJECT_BINARY_DIR}"
"${IHK_FULL_SOURCE_DIR}/linux/include"
"${CMAKE_CURRENT_SOURCE_DIR}/arch/${ARCH}/include"
"${CMAKE_CURRENT_SOURCE_DIR}"
"${CMAKE_CURRENT_SOURCE_DIR}/arch/${ARCH}"
"${PROJECT_BINARY_DIR}/ihk/linux/include"
)
add_library(libmcexec STATIC arch/${ARCH}/archdep.S)
SET_TARGET_PROPERTIES(libmcexec PROPERTIES OUTPUT_NAME mcexec)
set_property(TARGET libmcexec PROPERTY POSITION_INDEPENDENT_CODE ON)
add_executable(mcexec mcexec.c)
target_link_libraries(mcexec
libmcexec ihklib ${LIBRT} ${LIBNUMA} $<$<BOOL:ENABLE_QLMPI>:${LIBMPI}> pthread)
target_include_directories(mcexec PUBLIC "${KERNEL_DIR}")
set_property(TARGET mcexec PROPERTY POSITION_INDEPENDENT_CODE ON)
set_property(TARGET mcexec PROPERTY LINK_FLAGS "-fPIE -pie")
add_executable(eclair eclair.c arch/${ARCH}/arch-eclair.c)
target_link_libraries(eclair ${LIBBFD})
add_library(sched_yield SHARED libsched_yield.c)
target_link_libraries(sched_yield dl)
set_property(TARGET sched_yield PROPERTY VERSION 1.0.0)
if (ENABLE_QLMPI)
target_link_libraries(mcexec ${MPI_C_LIBRARIES})
target_include_directories(mcexec PRIVATE ${MPI_INCLUDE_PATH})
add_library(qlmpi qlmpilib.c)
target_link_libraries(qlmpi ${MPI_C_LIBRARIES})
target_include_directories(qlmpi PRIVATE ${MPI_INCLUDE_PATH})
add_library(qlfort libqlfort.c)
target_link_libraries(qlfort dl ${MPI_C_LIBRARIES})
target_include_directories(qlfort PRIVATE ${MPI_INCLUDE_PATH})
add_executable(ql_server ql_server.c)
add_executable(ql_talker ql_talker.c)
add_executable(ql_mpiexec_start ql_mpiexec_start.c md5.c)
target_link_libraries(ql_mpiexec_start pthread)
add_executable(ql_mpiexec_finalize ql_mpiexec_start.c md5.c)
set_target_properties(ql_mpiexec_finalize PROPERTIES COMPILE_DEFINITIONS
QL_MPIEXEC_FINALIZE)
target_link_libraries(ql_mpiexec_finalize pthread)
install(TARGETS ql_server ql_talker ql_mpiexec_start ql_mpiexec_finalize
DESTINATION "${CMAKE_INSTALL_BINDIR}")
install(TARGETS qlmpi qlfort
DESTINATION "${CMAKE_INSTALL_LIBDIR}")
endif()
if (ENABLE_UTI)
add_library(mck_syscall_intercept SHARED arch/${ARCH}/archdep_c.c)
target_link_libraries(mck_syscall_intercept ${LIBSYSCALL_INTERCEPT})
set_target_properties(mck_syscall_intercept PROPERTIES INSTALL_RPATH_USE_LINK_PATH TRUE)
install(TARGETS mck_syscall_intercept
DESTINATION "${CMAKE_INSTALL_LIBDIR}")
endif()
add_library(ldump2mcdump SHARED ldump2mcdump.c)
configure_file(vmcore2mckdump.in vmcore2mckdump @ONLY)
configure_file(mcexec.1in mcexec.1 @ONLY)
install(TARGETS mcexec eclair
DESTINATION "${CMAKE_INSTALL_BINDIR}")
install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/vmcore2mckdump"
DESTINATION "${CMAKE_INSTALL_BINDIR}")
install(TARGETS sched_yield ldump2mcdump
DESTINATION "${CMAKE_INSTALL_LIBDIR}")
install(FILES "../include/ihklib_rusage.h"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/mckernel")
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/mcexec.1"
DESTINATION "${CMAKE_INSTALL_MANDIR}/man1")

View File

@@ -1,133 +0,0 @@
# Makefile.in COPYRIGHT FUJITSU LIMITED 2015-2018
CC=@CC@
MCC=mpicc
BINDIR=@BINDIR@
SBINDIR=@SBINDIR@
prefix=@prefix@
exec_prefix=@exec_prefix@
LIBDIR=@libdir@
MANDIR=@MANDIR@
MCKERNEL_INCDIR=@MCKERNEL_INCDIR@
MCKERNEL_LIBDIR=@MCKERNEL_LIBDIR@
KDIR ?= @KDIR@
ARCH=@ARCH@
CFLAGS=-Wall -O -I. -I$(VPATH)/arch/${ARCH} -I${IHKDIR} -I@abs_builddir@/../../../ihk/linux/include -I$(VPATH)/arch/${ARCH}/include
LDFLAGS=@LDFLAGS@
CPPFLAGS_SYSCALL_INTERCEPT=@CPPFLAGS_SYSCALL_INTERCEPT@
LDFLAGS_SYSCALL_INTERCEPT=@LDFLAGS_SYSCALL_INTERCEPT@
RPATH=$(shell echo $(LDFLAGS)|awk '{for(i=1;i<=NF;i++){if($$i~/^-L/){w=$$i;sub(/^-L/,"-Wl,-rpath,",w);print w}}}')
VPATH=@abs_srcdir@
TARGET=mcexec libsched_yield ldump2mcdump.so
@uncomment_if_ENABLE_MEMDUMP@TARGET+=eclair
LIBS=@LIBS@
IHKDIR ?= $(VPATH)/../../../ihk/linux/include/
MCEXEC_LIBS=-lmcexec -lrt -lnuma -pthread -L@abs_builddir@/../../../ihk/linux/user -lihk -Wl,-rpath,$(MCKERNEL_LIBDIR)
ENABLE_QLMPI=@ENABLE_QLMPI@
WITH_SYSCALL_INTERCEPT=@WITH_SYSCALL_INTERCEPT@
ifeq ($(ENABLE_QLMPI),yes)
MCEXEC_LIBS += -lmpi
TARGET+= libqlmpi.so ql_server ql_mpiexec_start ql_mpiexec_finalize ql_talker libqlfort.so
endif
ifeq ($(WITH_SYSCALL_INTERCEPT),yes)
TARGET += syscall_intercept.so
endif
ifeq ($(ARCH), arm64)
CFLAGS += $(foreach i, $(shell seq 6 120), $(addprefix -DPOSTK_DEBUG_ARCH_DEP_, $(i)))
CFLAGS += $(foreach i, $(shell seq 6 110), $(addprefix -DPOSTK_DEBUG_TEMP_FIX_, $(i)))
# get HOST-kernel memory settings
HOST_DIR=@KDIR@
HOST_CONFIG=$(HOST_DIR)/.config
HOST_KERNEL_64K_PAGES=$(shell grep -E "^CONFIG_ARM64_64K_PAGES=y" $(HOST_CONFIG) | sed 's|CONFIG_ARM64_64K_PAGES=||g')
HOST_KERNEL_VA_BITS=$(shell grep -E "^CONFIG_ARM64_VA_BITS=" $(HOST_CONFIG) | sed 's|CONFIG_ARM64_VA_BITS=||g')
ifeq ($(HOST_KERNEL_64K_PAGES), y)
CFLAGS += -DCONFIG_ARM64_64K_PAGES
endif
CFLAGS += -DCONFIG_ARM64_VA_BITS=$(HOST_KERNEL_VA_BITS)
endif
all: $(TARGET)
mcexec: mcexec.c libmcexec.a
$(CC) -I${KDIR} $(CFLAGS) $(EXTRA_CFLAGS) $(LDFLAGS) -DLIBDIR=\"$(LIBDIR)\" -fPIE -pie -L. $(MCEXEC_LIBS) -o $@ $^ $(EXTRA_OBJS) $(RPATH)
# POSTK_DEBUG_ARCH_DEP_34, eclair arch depend separate.
ifeq ($(ARCH), arm64)
eclair: eclair.c arch/$(ARCH)/arch-eclair.c
$(CC) -I.. -I. -I./arch/$(ARCH)/include -I$(VPATH)/.. -I$(VPATH) $(CFLAGS) -o $@ $^ $(LIBS) -ldl -lz
else
eclair: eclair.c arch/$(ARCH)/arch-eclair.c
$(CC) -I.. -I$(VPATH) -I$(VPATH)/arch/$(ARCH)/include $(CFLAGS) -o $@ $^ $(LIBS)
endif
ldump2mcdump.so: ldump2mcdump.c
$(CC) $(CFLAGS) $(LDFLAGS) -shared -fPIC -o $@ $<
libsched_yield: libsched_yield.c
$(CC) -shared -fPIC -Wl,-soname,sched_yield.so.1 -o libsched_yield.so.1.0.0 $^ -lc -ldl
syscall_intercept.so: syscall_intercept.c libsyscall_intercept_arch.a
$(CC) $(CPPFLAGS_SYSCALL_INTERCEPT) -g -O2 $(LDFLAGS_SYSCALL_INTERCEPT) -lsyscall_intercept -fpic -shared -L. -lsyscall_intercept_arch $^ -o $@
libsyscall_intercept_arch.a::
+(cd arch/${ARCH}; $(MAKE))
libmcexec.a::
+(cd arch/${ARCH}; $(MAKE))
libqlmpi.so: qlmpilib.c
$(MCC) $(CFLAGS) $(LDFLAGS) -shared -fPIC -o $@ $<
libqlfort.so: libqlfort.c
$(MCC) $(CFLAGS) $(LDFLAGS) -shared -fPIC -o $@ $< -ldl
ql_server: ql_server.c
$(CC) $(CFLAGS) -o $@ $^
ql_mpiexec_start: ql_mpiexec_start.o md5.o
$(CC) $^ $(CFLAGS) -pthread -o $@
ql_mpiexec_finalize.o: ql_mpiexec_start.c
$(CC) $(CFLAGS) -DQL_MPIEXEC_FINALIZE -c -o $@ $<
ql_mpiexec_finalize: ql_mpiexec_finalize.o md5.o
$(CC) $^ $(CFLAGS) -pthread -o $@
ql_talker: ql_talker.o
$(CC) $^ $(CFLAGS) -o $@
clean::
(cd arch/${ARCH}; $(MAKE) clean)
$(RM) $(TARGET) *.o
.PHONY: all clean install
install::
(cd arch/${ARCH}; $(MAKE) install)
mkdir -p -m 755 $(BINDIR)
install -m 755 mcexec $(BINDIR)
mkdir -p -m 755 $(MCKERNEL_LIBDIR)
install -m 755 ldump2mcdump.so $(MCKERNEL_LIBDIR)
install -m 755 libsched_yield.so.1.0.0 $(MCKERNEL_LIBDIR)
mkdir -p -m 755 $(MANDIR)/man1
install -m 644 mcexec.1 $(MANDIR)/man1/mcexec.1
ifeq ($(ENABLE_QLMPI),yes)
install -m 644 ../include/qlmpilib.h $(MCKERNEL_INCDIR)
install -m 755 libqlmpi.so $(MCKERNEL_LIBDIR)
install -m 755 libqlfort.so $(MCKERNEL_LIBDIR)
install -m 755 ql_server $(SBINDIR)
install -m 755 ql_mpiexec_start $(BINDIR)
install -m 755 ql_mpiexec_finalize $(BINDIR)
install -m 755 ql_talker $(SBINDIR)
endif
ifeq ($(WITH_SYSCALL_INTERCEPT),yes)
install -m 755 syscall_intercept.so $(MCKERNEL_LIBDIR)
endif
@uncomment_if_ENABLE_MEMDUMP@install -m 755 eclair $(BINDIR)
@uncomment_if_ENABLE_MEMDUMP@install -m 755 vmcore2mckdump $(BINDIR)

View File

@@ -1,24 +0,0 @@
# Makefile.in COPYRIGHT FUJITSU LIMITED 2017-2018
CC=@CC@
AR=ar
BINDIR=@BINDIR@
KDIR ?= @KDIR@
CFLAGS=-Wall -O -I.
VPATH=@abs_srcdir@
TARGET=../../libmcexec.a
LIBS=@LIBS@
all: $(TARGET)
../../libmcexec.a: archdep.o
$(AR) cr ../../libmcexec.a archdep.o
archdep.o: archdep.c archdep.S
$(CC) -c -I${KDIR} $(CFLAGS) $(EXTRA_CFLAGS) -fPIE -pie -pthread $^
clean:
$(RM) $(TARGET) *.o
.PHONY: all clean install
install:

View File

@@ -1,30 +0,0 @@
# Makefile.in COPYRIGHT FUJITSU LIMITED 2017-2018
CC=@CC@
AR=ar
BINDIR=@BINDIR@
KDIR ?= @KDIR@
CFLAGS=-Wall -O -I.
VPATH=@abs_srcdir@
TARGET=../../libmcexec.a ../../libsyscall_intercept_arch.a
LIBS=@LIBS@
all: $(TARGET)
../../libmcexec.a: archdep.o
$(AR) cr ../../libmcexec.a archdep.o
archdep.o: archdep.S
$(CC) -c -I${KDIR} $(CFLAGS) $(EXTRA_CFLAGS) -fPIE -pie -pthread $<
../../libsyscall_intercept_arch.a: archdep_c.o
$(AR) cr ../../libsyscall_intercept_arch.a archdep_c.o
archdep_c.o: archdep_c.c
$(CC) -c -I${KDIR} $(CFLAGS) $(EXTRA_CFLAGS) -fPIE -pie -pthread $<
clean:
$(RM) $(TARGET) *.o
.PHONY: all clean install
install:

View File

@@ -8,7 +8,7 @@
* Copyright (C) 2015 RIKEN AICS
*/
#include "../config.h"
#include "config.h"
#include <bfd.h>
#include <fcntl.h>
#include <inttypes.h>

View File

@@ -3,7 +3,7 @@
#ifndef HEADER_USER_COMMON_ECLAIR_H
#define HEADER_USER_COMMON_ECLAIR_H
#include "../config.h"
#include "config.h"
#include <stdio.h>
#include <inttypes.h>
#include <arch-eclair.h>

View File

@@ -2001,7 +2001,7 @@ static void ld_preload_init()
memset(envbuf, 0, PATH_MAX);
if (enable_uti) {
LD_PRELOAD_PREPARE("syscall_intercept.so");
LD_PRELOAD_PREPARE("libmck_syscall_intercept.so");
LD_PRELOAD_APPEND;
}
@@ -2249,7 +2249,7 @@ int main(int argc, char **argv)
if (opendev() == -1)
exit(EXIT_FAILURE);
#ifndef WITH_SYSCALL_INTERCEPT
#ifndef ENABLE_UTI
if (enable_uti) {
__eprintf("ERROR: uti is not available when not configured with --with-syscall_intercept=<path>\n");
exit(EXIT_FAILURE);

View File

@@ -15,7 +15,7 @@
#include <fcntl.h>
#include <errno.h>
#include <pthread.h>
#include "../../config.h"
#include "config.h"
#include "../include/qlmpi.h"
#include "../include/md5.h"