From 9ce05e8aaf68e493a613a46beadc2cd22acb5903 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Tue, 9 Mar 2021 19:35:16 +0000 Subject: [PATCH] Add cmake file for cross compiling using DJGPP. --- setter/CMakeLists.txt | 4 +-- setter/src/dos/CMakeLists.txt | 15 ++++++++++++ setter/src/linux/CMakeLists.txt | 2 +- setter/src/unix/CMakeLists.txt | 2 +- setter/toolchains/djgpp.cmake | 43 +++++++++++++++++++++++++++++++++ 5 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 setter/src/dos/CMakeLists.txt create mode 100644 setter/toolchains/djgpp.cmake diff --git a/setter/CMakeLists.txt b/setter/CMakeLists.txt index 1ef75a4..1a42865 100644 --- a/setter/CMakeLists.txt +++ b/setter/CMakeLists.txt @@ -1,12 +1,12 @@ cmake_minimum_required(VERSION 2.20) + project(setter C) set(CMAKE_C_STANDARD 90) add_subdirectory(src) -message(${CMAKE_C_COMPILER_VERSION}) - +add_subdirectory(src/dos) add_subdirectory(src/unix) add_subdirectory(src/linux) diff --git a/setter/src/dos/CMakeLists.txt b/setter/src/dos/CMakeLists.txt new file mode 100644 index 0000000..3873272 --- /dev/null +++ b/setter/src/dos/CMakeLists.txt @@ -0,0 +1,15 @@ +if(NOT DOS) + return() +endif() + +project(fssetter-dos + DESCRIPTION "Filesystem test creator for DOS" + LANGUAGES C) + +set(PLATFORM_SOURCES attr.c deleted.c dirdepth.c filename.c files.c frag.c links.c os.c perms.c rsrcfork.c sparse.c time.c volume.c xattr.c) + +set(EXECUTABLE_NAME "fssetter") + +add_executable(${EXECUTABLE_NAME} ${PLATFORM_SOURCES}) + +target_link_libraries(${EXECUTABLE_NAME} core) \ No newline at end of file diff --git a/setter/src/linux/CMakeLists.txt b/setter/src/linux/CMakeLists.txt index c44c682..8935df6 100644 --- a/setter/src/linux/CMakeLists.txt +++ b/setter/src/linux/CMakeLists.txt @@ -1,4 +1,4 @@ -if(NOT "${CMAKE_SYSTEM_NAME}" MATCHES "Linux") +if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Linux") return() endif() diff --git a/setter/src/unix/CMakeLists.txt b/setter/src/unix/CMakeLists.txt index 7c8019b..26e0326 100644 --- a/setter/src/unix/CMakeLists.txt +++ b/setter/src/unix/CMakeLists.txt @@ -1,4 +1,4 @@ -if(NOT "${CMAKE_SYSTEM_NAME}" MATCHES "Linux") +if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Linux") return() endif() diff --git a/setter/toolchains/djgpp.cmake b/setter/toolchains/djgpp.cmake new file mode 100644 index 0000000..1f980de --- /dev/null +++ b/setter/toolchains/djgpp.cmake @@ -0,0 +1,43 @@ +set(CMAKE_SYSTEM_NAME Generic) + +set(DOS 1) +set(DJGPP 1) + +set(CMAKE_STATIC_LIBRARY_PREFIX "") +set(CMAKE_STATIC_LIBRARY_SUFFIX ".lib") +set(CMAKE_SHARED_LIBRARY_PREFIX "") +set(CMAKE_SHARED_LIBRARY_SUFFIX ".dll") +set(CMAKE_IMPORT_LIBRARY_PREFIX "") +set(CMAKE_IMPORT_LIBRARY_SUFFIX ".lib") +set(CMAKE_EXECUTABLE_SUFFIX ".exe") +set(CMAKE_LINK_LIBRARY_SUFFIX ".lib") +set(CMAKE_DL_LIBS "") + +set(CMAKE_FIND_LIBRARY_PREFIXES "") +set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib") + +set(CMAKE_CROSSCOMPILING 1) +set(CMAKE_CROSSCOMPILING_EMULATOR dosbox) + +# specify the cross compiler +set(CMAKE_C_COMPILER i686-pc-msdosdjgpp-gcc) +set(CMAKE_CXX_COMPILER i686-pc-msdosdjgpp-g++) + +# where is the target environment +set(CMAKE_FIND_ROOT_PATH /usr/i686-pc-msdosdjgpp) + +# search for programs in the build host directories +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +# for libraries and headers in the target directories +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + +# Make sure Qt can be detected by CMake +set(QT_BINARY_DIR /usr/i686-pc-msdosdjgpp/bin /usr/bin) +set(QT_INCLUDE_DIRS_NO_SYSTEM ON) + +# These are needed for compiling lapack (RHBZ #753906) +set(CMAKE_Fortran_COMPILER i686-pc-msdosdjgpp-gfortran) +set(CMAKE_AR:FILEPATH i686-pc-msdosdjgpp-ar) +set(CMAKE_RANLIB:FILEPATH i686-pc-msdosdjgpp-ranlib)