Skip to content

Commit

Permalink
Add target specific definitions, options and header files
Browse files Browse the repository at this point in the history
  • Loading branch information
beutlich committed Jan 17, 2024
1 parent 4b5eaf7 commit 4e8d4a8
Showing 1 changed file with 103 additions and 34 deletions.
137 changes: 103 additions & 34 deletions Modelica/Resources/BuildProjects/CMake/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,37 +11,78 @@ endif()

project(Modelica_Standard_Library_Tables C)

# Check for include files and functions
option(MODELICA_DEBUG_TIME_EVENTS "Trace time events of CombiTimeTable" OFF)
option(MODELICA_SHARE_TABLE_DATA "Store shared table arrays (read from file) in a global hash table" ON)
option(MODELICA_COPY_TABLE_DATA "Deep-copy table arrays (passed as array)" ON)
option(MODELICA_DUMMY_FUNCTION_USERTAB "Add a dummy usertab function" OFF)

# Check for include attributes, files, functions
include(CheckCSourceCompiles)
include(CheckIncludeFile)
include(CheckFunctionExists)
include(CheckSymbolExists)

check_include_file("locale.h" HAVE_LOCALE_H)
if (NOT HAVE_LOCALE_H)
add_definitions(-DNO_LOCALE)
endif()
check_include_file("pthread.h" HAVE_PTHREAD_H)
if (NOT HAVE_PTHREAD_H AND NOT WIN32)
add_definitions(-DNO_MUTEX)
endif()
check_include_file("stdarg.h" HAVE_STDARG_H)
if (HAVE_STDARG_H)
add_definitions(-DHAVE_STDARG_H)
endif()

check_include_file("dirent.h" HAVE_DIRENT_H)
if (NOT HAVE_DIRENT_H AND NOT WIN32)
add_definitions(-DNO_FILE_SYSTEM)
endif()
check_include_file("time.h" HAVE_TIME_H)
if (NOT HAVE_TIME_H)
add_definitions(-DNO_TIME)
endif()
check_include_file("unistd.h" HAVE_UNISTD_H)
if (HAVE_UNISTD_H)
add_definitions(-DHAVE_UNISTD_H)
check_c_source_compiles(
"
#include <unistd.h>
int main(void) {getpid(); return 0;}
"
HAVE_GETPID
)
if (NOT HAVE_GETPID)
add_definitions(-DNO_PID)
endif()
endif()

check_function_exists(memcpy HAVE_MEMCPY)
check_symbol_exists(memcpy "string.h" HAVE_MEMCPY)
if (HAVE_MEMCPY)
add_definitions(-DHAVE_MEMCPY)
endif()
check_c_source_compiles(
"
#include <stdlib.h>
static void f(void) __attribute__ ((visibility(\"hidden\")));
int main(void) {return 0;}
"
HAVE_ATTRIBUTE_VISIBILITY_HIDDEN
)
if (HAVE_ATTRIBUTE_VISIBILITY_HIDDEN)
add_definitions(-DHAVE_HIDDEN)
endif()

# UNIX configurations...
if (UNIX)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -Wno-attributes -fno-delete-null-pointer-checks")
endif()

# Set installation prefix
set(MSL_RESOURCES_DIR "${PROJECT_SOURCE_DIR}/../..")
get_filename_component(ABSOLUTE_MSL_RESOURCES_DIR "${MSL_RESOURCES_DIR}" ABSOLUTE)
set(CMAKE_INSTALL_PREFIX "${ABSOLUTE_MSL_RESOURCES_DIR}" CACHE PATH "Library installation prefix path (don't change)" FORCE)
set(MODELICA_RESOURCES_DIR "${PROJECT_SOURCE_DIR}/../..")
get_filename_component(ABSOLUTE_MODELICA_RESOURCES_DIR "${MODELICA_RESOURCES_DIR}" ABSOLUTE)
set(CMAKE_INSTALL_PREFIX "${ABSOLUTE_MODELICA_RESOURCES_DIR}" CACHE PATH "Library installation prefix path (don't change)" FORCE)

# Include directories...
include_directories("${ABSOLUTE_MSL_RESOURCES_DIR}/C-Sources/zlib")
include_directories("${ABSOLUTE_MODELICA_RESOURCES_DIR}/C-Sources/zlib")

# ModelicaUtilities.h include...
if (DEFINED MODELICA_UTILITIES_INCLUDE)
Expand Down Expand Up @@ -117,42 +158,56 @@ endif()

# Source files...
set(EXTC_SOURCES
"${MSL_RESOURCES_DIR}/C-Sources/ModelicaFFT.c"
"${MSL_RESOURCES_DIR}/C-Sources/ModelicaInternal.c"
"${MSL_RESOURCES_DIR}/C-Sources/ModelicaRandom.c"
"${MSL_RESOURCES_DIR}/C-Sources/ModelicaStrings.c"
"${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaFFT.c"
"${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaFFT.h"
"${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaInternal.c"
"${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaInternal.h"
"${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaRandom.c"
"${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaRandom.h"
"${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaStrings.c"
"${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaStrings.h"
"${MODELICA_RESOURCES_DIR}/C-Sources/gconstructor.h"
"${MODELICA_RESOURCES_DIR}/C-Sources/stdint_msvc.h"
"${MODELICA_RESOURCES_DIR}/C-Sources/stdint_wrap.h"
"${MODELICA_RESOURCES_DIR}/C-Sources/uthash.h"
"${MODELICA_RESOURCES_DIR}/C-Sources/win32_dirent.c"
"${MODELICA_RESOURCES_DIR}/C-Sources/win32_dirent.h"
"${MODELICA_UTILITIES_INCLUDE}/ModelicaUtilities.h"
)

set(TABLES_SOURCES
"${MSL_RESOURCES_DIR}/C-Sources/ModelicaStandardTables.c"
"${MSL_RESOURCES_DIR}/C-Sources/ModelicaStandardTablesUsertab.c"
"${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaStandardTables.c"
"${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaStandardTables.h"
"${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaStandardTablesUsertab.c"
"${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaMatIO.h"
"${MODELICA_RESOURCES_DIR}/C-Sources/gconstructor.h"
"${MODELICA_RESOURCES_DIR}/C-Sources/stdint_msvc.h"
"${MODELICA_RESOURCES_DIR}/C-Sources/stdint_wrap.h"
"${MODELICA_RESOURCES_DIR}/C-Sources/uthash.h"
"${MODELICA_UTILITIES_INCLUDE}/ModelicaUtilities.h"
)

set(MATIO_SOURCES
"${MSL_RESOURCES_DIR}/C-Sources/ModelicaMatIO.c"
"${MSL_RESOURCES_DIR}/C-Sources/snprintf.c"
"${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaMatIO.c"
"${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaMatIO.h"
"${MODELICA_RESOURCES_DIR}/C-Sources/read_data_impl.h"
"${MODELICA_RESOURCES_DIR}/C-Sources/safe-math.h"
"${MODELICA_RESOURCES_DIR}/C-Sources/snprintf.c"
"${MODELICA_RESOURCES_DIR}/C-Sources/stdint_msvc.h"
"${MODELICA_RESOURCES_DIR}/C-Sources/zlib/zlib.h"
"${MODELICA_UTILITIES_INCLUDE}/ModelicaUtilities.h"
)

set(IO_SOURCES
"${MSL_RESOURCES_DIR}/C-Sources/ModelicaIO.c"
"${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaIO.c"
"${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaIO.h"
"${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaMatIO.h"
"${MODELICA_UTILITIES_INCLUDE}/ModelicaUtilities.h"
)

set(ZLIB_SOURCES
"${MSL_RESOURCES_DIR}/C-Sources/zlib/adler32.c"
"${MSL_RESOURCES_DIR}/C-Sources/zlib/compress.c"
"${MSL_RESOURCES_DIR}/C-Sources/zlib/crc32.c"
"${MSL_RESOURCES_DIR}/C-Sources/zlib/deflate.c"
"${MSL_RESOURCES_DIR}/C-Sources/zlib/gzclose.c"
"${MSL_RESOURCES_DIR}/C-Sources/zlib/gzlib.c"
"${MSL_RESOURCES_DIR}/C-Sources/zlib/gzread.c"
"${MSL_RESOURCES_DIR}/C-Sources/zlib/gzwrite.c"
"${MSL_RESOURCES_DIR}/C-Sources/zlib/infback.c"
"${MSL_RESOURCES_DIR}/C-Sources/zlib/inffast.c"
"${MSL_RESOURCES_DIR}/C-Sources/zlib/inflate.c"
"${MSL_RESOURCES_DIR}/C-Sources/zlib/inftrees.c"
"${MSL_RESOURCES_DIR}/C-Sources/zlib/trees.c"
"${MSL_RESOURCES_DIR}/C-Sources/zlib/uncompr.c"
"${MSL_RESOURCES_DIR}/C-Sources/zlib/zutil.c"
file(GLOB ZLIB_SOURCES
"${MODELICA_RESOURCES_DIR}/C-Sources/zlib/*.c"
"${MODELICA_RESOURCES_DIR}/C-Sources/zlib/*.h"
)

# Libraries...
Expand All @@ -162,6 +217,20 @@ add_library(ModelicaMatIO STATIC ${MATIO_SOURCES})
add_library(ModelicaIO STATIC ${IO_SOURCES})
add_library(zlib STATIC ${ZLIB_SOURCES})

if (MODELICA_DEBUG_TIME_EVENTS)
target_compile_definitions(ModelicaStandardTables PUBLIC -DDEBUG_TIME_EVENTS=1)
endif()
if (MODELICA_SHARE_TABLE_DATA)
target_compile_definitions(ModelicaStandardTables PUBLIC -DTABLE_SHARE=1)
endif()
if (NOT MODELICA_COPY_TABLE_DATA)
target_compile_definitions(ModelicaStandardTables PUBLIC -DNO_TABLE_COPY=1)
endif()
if (MODELICA_DUMMY_FUNCTION_USERTAB)
target_compile_definitions(ModelicaStandardTables PUBLIC -DDUMMY_FUNCTION_USERTAB=1)
endif()
target_compile_definitions(ModelicaMatIO PUBLIC -DHAVE_ZLIB=1)

# Installation...
install(TARGETS ModelicaStandardTables ModelicaMatIO ModelicaIO zlib
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
Expand Down

0 comments on commit 4e8d4a8

Please sign in to comment.