| 1 | # To use this file, first run "makemake" and then run "make". |
|---|
| 2 | # (makemake is part of the JX distribution) |
|---|
| 3 | |
|---|
| 4 | # Useful directories |
|---|
| 5 | |
|---|
| 6 | JX_ROOT := ../.. |
|---|
| 7 | |
|---|
| 8 | CODEDIR := ./code |
|---|
| 9 | JCOREDIR := ${JX_ROOT}/include/jcore |
|---|
| 10 | JXDIR := ${JX_ROOT}/include/jx |
|---|
| 11 | JTREEDIR := ${JX_ROOT}/include/jtree |
|---|
| 12 | JTOOLBARDIR := ${JX_ROOT}/include/jtoolbar |
|---|
| 13 | |
|---|
| 14 | JLIBDIR := ${JX_ROOT}/lib |
|---|
| 15 | JCORELIBDIR := ${JX_ROOT}/libjcore |
|---|
| 16 | JXLIBDIR := ${JX_ROOT}/libjx |
|---|
| 17 | JTREELIBDIR := ${JX_ROOT}/libjtree |
|---|
| 18 | JTOOLBARLIBDIR := ${JX_ROOT}/libjtoolbar |
|---|
| 19 | ACELIBDIR := ${JX_ROOT}/ACE |
|---|
| 20 | |
|---|
| 21 | # Directories to search for header files |
|---|
| 22 | |
|---|
| 23 | SEARCHDIRS := -I- \ |
|---|
| 24 | -I${CODEDIR} \ |
|---|
| 25 | -I${JCOREDIR} \ |
|---|
| 26 | -I${JXDIR} \ |
|---|
| 27 | -I${JTREEDIR} \ |
|---|
| 28 | -I${JTOOLBARDIR} |
|---|
| 29 | |
|---|
| 30 | # other constants |
|---|
| 31 | |
|---|
| 32 | PROG_NAME := myprog |
|---|
| 33 | PROG_SIGNATURE := myprog |
|---|
| 34 | PROG_VERSION := 1.0.0 |
|---|
| 35 | PROG_STRING_FILES := strings/* |
|---|
| 36 | |
|---|
| 37 | # makemake variables |
|---|
| 38 | |
|---|
| 39 | # This is augmented by each *_constants file |
|---|
| 40 | J_STRING_FILES := ${PROG_STRING_FILES} |
|---|
| 41 | |
|---|
| 42 | include ${JX_ROOT}/include/make/jx_constants |
|---|
| 43 | include ${JX_ROOT}/include/make/jtree_constants |
|---|
| 44 | include ${JX_ROOT}/include/make/jtoolbar_constants |
|---|
| 45 | include ${JX_ROOT}/include/make/jx_config |
|---|
| 46 | |
|---|
| 47 | DEPENDFLAGS := ${J_COMPILER_DEPEND_FLAGS} \ |
|---|
| 48 | ${J_COMPILE_DEBUG} ${SEARCHDIRS} |
|---|
| 49 | |
|---|
| 50 | # library dependencies |
|---|
| 51 | |
|---|
| 52 | ifdef J_BUILD_SHARED_LIB |
|---|
| 53 | LIB_DEPS := ${JLIBDIR}/libjcore-${JX_LIB_VERSION}.so \ |
|---|
| 54 | ${JLIBDIR}/libjx-${JX_LIB_VERSION}.so \ |
|---|
| 55 | ${JLIBDIR}/libjtree-${JTREE_LIB_VERSION}.so \ |
|---|
| 56 | ${JLIBDIR}/libjtoolbar-${JTOOLBAR_LIB_VERSION}.so |
|---|
| 57 | else |
|---|
| 58 | LIB_DEPS := ${JLIBDIR}/libjcore-${JX_LIB_VERSION}.a \ |
|---|
| 59 | ${JLIBDIR}/libjx-${JX_LIB_VERSION}.a \ |
|---|
| 60 | ${JLIBDIR}/libjtree-${JTREE_LIB_VERSION}.a \ |
|---|
| 61 | ${JLIBDIR}/libjtoolbar-${JTOOLBAR_LIB_VERSION}.a |
|---|
| 62 | endif |
|---|
| 63 | |
|---|
| 64 | # make variables |
|---|
| 65 | |
|---|
| 66 | LOADLIBES := ${J_STD_LIBS} |
|---|
| 67 | LDFLAGS := |
|---|
| 68 | |
|---|
| 69 | ##### |
|---|
| 70 | |
|---|
| 71 | .PHONY : default |
|---|
| 72 | default: libs ${PROG_NAME} |
|---|
| 73 | |
|---|
| 74 | .PHONY : Makefiles |
|---|
| 75 | Makefiles: |
|---|
| 76 | |
|---|
| 77 | # |
|---|
| 78 | # string data |
|---|
| 79 | # |
|---|
| 80 | |
|---|
| 81 | .PHONY : strings |
|---|
| 82 | strings: |
|---|
| 83 | compile_jstrings ${J_STRING_FILES} \ |
|---|
| 84 | --code kMyDefaultStringData ${CODEDIR}/myStringData.h |
|---|
| 85 | |
|---|
| 86 | .PHONY : stringdb |
|---|
| 87 | stringdb: |
|---|
| 88 | compile_jstrings ${J_STRING_FILES} --db ${PROG_SIGNATURE}_us |
|---|
| 89 | |
|---|
| 90 | ${PROG_NAME}:: strings |
|---|
| 91 | |
|---|
| 92 | # |
|---|
| 93 | # required libraries |
|---|
| 94 | # |
|---|
| 95 | |
|---|
| 96 | .PHONY : libs |
|---|
| 97 | libs: |
|---|
| 98 | @cd ${JCORELIBDIR}; ${MAKE} |
|---|
| 99 | @cd ${JXLIBDIR}; ${MAKE} |
|---|
| 100 | @cd ${JTREELIBDIR}; ${MAKE} |
|---|
| 101 | @cd ${JTOOLBARLIBDIR}; ${MAKE} |
|---|
| 102 | |
|---|
| 103 | .PHONY : touch |
|---|
| 104 | touch:: |
|---|
| 105 | @cd ${JCORELIBDIR}; ${MAKE} TOUCHSTRING=${TOUCHSTRING} touch |
|---|
| 106 | @cd ${JXLIBDIR}; ${MAKE} TOUCHSTRING=${TOUCHSTRING} touch |
|---|
| 107 | @cd ${JTREELIBDIR}; ${MAKE} TOUCHSTRING=${TOUCHSTRING} touch |
|---|
| 108 | @cd ${JTOOLBARLIBDIR}; ${MAKE} TOUCHSTRING=${TOUCHSTRING} touch |
|---|
| 109 | |
|---|
| 110 | # |
|---|
| 111 | # install binaries |
|---|
| 112 | # |
|---|
| 113 | |
|---|
| 114 | .PHONY : jxinstall |
|---|
| 115 | jxinstall: ${PROG_NAME} |
|---|
| 116 | @strip ${call EXE, ${PROG_NAME}} |
|---|
| 117 | ifneq (${J_WANT_INSTALL},0) |
|---|
| 118 | @mv ${PROG_NAME} ${JX_INSTALL_ROOT}/ |
|---|
| 119 | endif |
|---|
| 120 | |
|---|
| 121 | .PHONY : jxuninstall |
|---|
| 122 | jxuninstall: |
|---|
| 123 | @${RM} ${JX_INSTALL_ROOT}/${PROG_NAME} |
|---|
| 124 | |
|---|
| 125 | # |
|---|
| 126 | # source distribution |
|---|
| 127 | # |
|---|
| 128 | |
|---|
| 129 | SRC_TAR_FILE := ${PROG_NAME}_source-${PROG_VERSION}.tar.gz |
|---|
| 130 | SRC_FILE_DIR := ${JX}/programs/${PROG_NAME} |
|---|
| 131 | |
|---|
| 132 | .PHONY : source |
|---|
| 133 | source: |
|---|
| 134 | @cd ${J_DISTR_TAR_DIR}; \ |
|---|
| 135 | tar -czf ${SRC_TAR_FILE} ${filter-out %.o %~, \ |
|---|
| 136 | ${shell cd ${J_DISTR_TAR_DIR}; echo \ |
|---|
| 137 | ${addprefix ${SRC_FILE_DIR}/, \ |
|---|
| 138 | README LICENSE FAQ Make.* *.fd \ |
|---|
| 139 | code/* ${PROG_STRING_FILES} rpm/* } }} |
|---|
| 140 | |
|---|
| 141 | # |
|---|
| 142 | # debugging version |
|---|
| 143 | # |
|---|
| 144 | |
|---|
| 145 | DEBUG_LOADLIBES := -L${JLIBDIR} \ |
|---|
| 146 | -Xlinker -Bstatic \ |
|---|
| 147 | ${ljtoolbar} ${ljtree} ${ljx} ${ljcore} ${J_ACE_LIBS} \ |
|---|
| 148 | -Xlinker -Bdynamic \ |
|---|
| 149 | ${J_X11_LIBS} ${J_GCC_LIBS} |
|---|
| 150 | |
|---|
| 151 | .PHONY : debug |
|---|
| 152 | debug: libs |
|---|
| 153 | @cd ${ACELIBDIR}; ${MAKE} static |
|---|
| 154 | @${RM} ${PROG_NAME} |
|---|
| 155 | @${MAKE} "LOADLIBES=${DEBUG_LOADLIBES}" ${PROG_NAME} |
|---|