aboutsummaryrefslogtreecommitdiff
path: root/source/tools/host/CMakeLists.txt
blob: 4acadcc2c8047835a1063154c9ca4646616c8110 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
cmake_minimum_required(VERSION 2.8)
set(SYSROOT_DIR ../../../deps/sysroot/bin)
set(TOOLCHAIN_PREFIX ${CMAKE_SOURCE_DIR}/${SYSROOT_DIR})
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}/gcc)
set(CMAKE_LINKER ${TOOLCHAIN_PREFIX}/ld)
set(CMAKE_CXX_COMPILER false)
set(CMAKE_CXX_LINK_EXECUTABLE false)
set(CMAKE_RC_COMPILER_INIT false)
project(host-tools C)
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_RULE_MESSAGES OFF)

set(CMAKE_C_FLAGS "-Wall -std=gnu99 -g -D_GNU_SOURCE=1 -D_NO_COMPAT=1 -D_NO_UTILS=1 -D_HOST_TOOLS=1")

set(MILLER_DEFAULT_SRCDIR ${CMAKE_SOURCE_DIR}/../.. CACHE INTERNAL "" FORCE)
set(MILLER_DEFAULT_HDRDIR ${CMAKE_SOURCE_DIR}/../../../include CACHE INTERNAL "" FORCE)
set(MILLER_DEFAULT_TOOLSDIR ${CMAKE_SOURCE_DIR}/.. CACHE INTERNAL "" FORCE)

message(STATUS "CMAKE_C_COMPILER: ${CMAKE_C_COMPILER}")
message(STATUS "CMAKE_LINKER: ${CMAKE_LINKER}")
message(STATUS "CMAKE_C_LINK_EXECUTABLE: ${CMAKE_C_LINK_EXECUTABLE}")

if (NOT MILLER_SRCDIR)
  message(AUTHOR_WARNING "MILLER_SRCDIR: missing, using default ${MILLER_DEFAULT_SRCDIR}")
  set(MILLER_SRCDIR ${MILLER_DEFAULT_SRCDIR})
else()
  message(STATUS "MILLER_SRCDIR: ${MILLER_SRCDIR}")
endif()

if (NOT MILLER_TOOLSDIR)
  message(AUTHOR_WARNING "MILLER_TOOLSDIR: missing")
  set(MILLER_TOOLSDIR ${MILLER_DEFAULT_TOOLSDIR})
else()
  message(STATUS "MILLER_TOOLSDIR: ${MILLER_TOOLSDIR}")
endif()

if (NOT MILLER_HDRDIR)
  message(AUTHOR_WARNING "MILLER_HDRDIR: missing")
  set(MILLER_HDRDIR ${MILLER_DEFAULT_HDRDIR})
else()
  message(STATUS "MILLER_HDRDIR: ${MILLER_HDRDIR}")
endif()

if (NOT MILLER_HDRDIR_CREATED)
  message(FATAL_ERROR "MILLER_HDRDIR_CREATED: missing")
endif()

if (NOT LOADER_ENDMARKER)
  message(FATAL_ERROR "LOADER_ENDMARKER: missing")
else()
  message(STATUS "LOADER_ENDMARKER: ${LOADER_ENDMARKER}")
endif()

if (NOT PYTHON_INCDIR)
  message(FATAL_ERROR "PYTHON_INCDIR: missing")
else()
  message(STATUS "PYTHON_INCDIR: ${PYTHON_INCDIR}")
endif()

message(STATUS "INSTALL_DEST: ${INSTALL_DEST}")


set(CRYPT_SRC ${MILLER_SRCDIR}/aes.c ${MILLER_SRCDIR}/crypt.c ${MILLER_SRCDIR}/utils.c hdr_crypt.c)
set(STRINGS_SRC ${MILLER_SRCDIR}/crypt_strings.c ${MILLER_SRCDIR}/crypt.c ${MILLER_SRCDIR}/utils.c ${MILLER_TOOLSDIR}/helper.c)


add_executable(hdr_crypt-host ${CRYPT_SRC})
target_include_directories(hdr_crypt-host PRIVATE ${MILLER_HDRDIR} ${MILLER_TOOLSDIR})


add_executable(strings-host ${STRINGS_SRC})
target_include_directories(strings-host PRIVATE ${MILLER_HDRDIR} ${MILLER_HDRDIR_CREATED} ${MILLER_TOOLSDIR})
target_compile_definitions(strings-host PRIVATE _PRE_RELEASE=1 _STRINGS_BIN=1)


add_library(pyloader SHARED ${MILLER_TOOLSDIR}/helper.c pyloader.c)
target_include_directories(pyloader PRIVATE ${PYTHON_INCDIR} ${MILLER_HDRDIR} ${MILLER_TOOLSDIR})
target_compile_definitions(pyloader PRIVATE _USE_PYTHON=1 _LOADER_ENDMARKER=${LOADER_ENDMARKER})
set_target_properties(pyloader PROPERTIES PREFIX "")
set_target_properties(pyloader PROPERTIES COMPILE_FLAGS "-fPIC -O2 -shared -Wextra -Wno-unused-parameter")


add_library(pycrypt SHARED ${MILLER_SRCDIR}/utils.c ${MILLER_SRCDIR}/crypt.c ${MILLER_SRCDIR}/aes.c ${MILLER_TOOLSDIR}/helper.c pycrypt.c)
target_include_directories(pycrypt PRIVATE ${PYTHON_INCDIR} ${MILLER_HDRDIR} ${MILLER_TOOLSDIR})
target_compile_definitions(pycrypt PRIVATE _USE_PYTHON=1)
set_target_properties(pycrypt PROPERTIES PREFIX "")
set_target_properties(pycrypt PROPERTIES COMPILE_FLAGS "-fPIC -O2 -shared -Wextra -Wno-unused-parameter -Wno-sign-compare")


macro(host_tools_install target destdir)
  set(${target}_FILE "${destdir}/${target}")

  add_custom_command(OUTPUT ${${target}_FILE} /force-run
    COMMAND ${CMAKE_COMMAND} -E copy_if_different "$<TARGET_FILE:${target}>" "${${target}_FILE}"
  )
  add_custom_target(${target}-install
    ALL
    DEPENDS ${target} ${${target}_FILE}
  )
  add_dependencies(${target}-install ${target})
endmacro()

host_tools_install(hdr_crypt-host ${INSTALL_DEST})
host_tools_install(pyloader ${INSTALL_DEST})
host_tools_install(pycrypt ${INSTALL_DEST})
host_tools_install(strings-host ${INSTALL_DEST})